Linux就该这么学--第三章
- 输入输出重定向、管道、通配
• 标准输入重定向(stdin,0)
◇ 格式:
▪ 命令 < 文件:将文件作为命令的标准输入
▪ 命令 << 分界符:从标准输入中读入(键盘输入或者文件),直到遇见分界符才停止
▪ 命令 < 文件1 > 文件2:将文件1作为命令的标准输入,并将标准输出到文件2“
• 标准输出重定向(stdout,1)和错误输出重定向(stderr,2(2不能省略)):
◇ 格式:
▪ 命令 > 文件:将标准输出写入到文件
▪ 命令 >> 文件:将标准输出追加到文件
▪ 命令 2> 文件:将错如输出写入到文件
▪ 命令 2>> 文件:将错如输出追加到文件
▪ 命令 >> 文件 2>&1 ( 或 命令 &>> 文件):将标准输出与错误输出追加到文件
▪ 其他:
- <&- :关闭标准输入(键盘)
- >&- :关闭标准输出
- n<&-:表示将 n 号输入关闭
- n>&-:表示将 n 号输出关闭
- >&n:使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出
- <&n:标准输入复制自文件描述符 n
• 管道命令符:
◇ 例子:
▪ 修改用户密码:echo “linuxprobe” | passwd --stdin root
• 通配符:
◇ * 匹配0或者多个字符
◇ ? 匹配单个字符
◇ [0-9]或者[1,2,4,6,9]或者[abc] 匹配单个字符
- 转义字符、环境变量
• 转义字符:
◇ 反斜杠\ :使反斜杠后面的一个变量变为单纯的字符串
◇ 单引号" :转义其中所有的变量为单纯的字符串
(不能嵌套在双引号中使用)
[root@localhost ~]# echo "Price is '$$$'$PRICE"
Price is '2734$'5
◇ 双引号"" :保留其中的变量属性,不进行转义处理
◇ 反引号``(数字1键左边的键) :把其中的命令执行后返回结果
◇ 例子(PRICE=5):
▪ $$:显示当前程序的ID号码
▪
• 环境变量:
◇ alias 别名=命令:给命令起一个小名,使用“unalias 别名”取消
◇ type 命令名称:判断命令是外部命令
◇ export 变量名:将环境变量提升为全局变量,所有用户均可使用
◇ env 显示当前所有的环境变量
◇ 10个最重要的环境变量:
▪ HOME:用户的家目录
▪ SHELL:用户在使用的Shell解析器的名称
▪ HISTSIZE:输出的历史命令记录条数
▪ HISTFILESIZE:保存的历史命令记录条数
▪ MAIL:邮件保存路径
▪ LANG:系统语言、语系名称
▪ RANDOM:生成一个随机数字
▪ PS1:Bash解析器的提示符
▪ PATH:定义解析器搜索用户执行命令的路径
▪ EDITOR:用户默认的文本编辑器
◇ 相关文件:
▪ /etc/profile: 此文件为系统的每个用户设置环境信息,一般用于设置所有用户使用的全局变量。
▪ /etc/bashrc: 当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。
▪ 对单个用户生效:
- ~/.bash_profile 或 ~/.profile: 只对单个用户生效,当用户登录时该文件仅执行一次。用户可使用该文件添加自己使用的 shell 变量信息。
执行的顺序是:~/.bash_profile、 ~/.bash_login、 ~/.profile
- ~/.bashrc: 只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。
▪ 对所有用户生效:
- /etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关,系统是先执行/etc/environment,再执行/etc/profile。
◇ 简单修改环境变量(全局):
▪ vim /etc/profile
▪ 在文件的最后一行,添加安装路径path语句:(注意路径是phantomjs的安装路径)
export PATH=${PATH}:/usr/local/src/phantomjs/bin/
▪ 保存修改后的文件
:wq
▪ 使用命令使环境变量生效
source /etc/profile