第三章 管道符、重定向与环境变量
1. 输入输出重定向
输出重定向:>、 >>(追加),输出到屏幕或者导入到指定文件;
输入重定向:<、<<(分界符),把文件信息导入到命令中;
三个关键数字及意义:
标准输入重定向( STDIN,文件描述符为 0):默认从键盘输入,也可从其他文件或命
令中输入。标准输出重定向( STDOUT,文件描述符为 1):默认输出到屏幕。
错误输出重定向( STDERR,文件描述符为 2):默认输出到屏幕
【注意】:
- > 表示覆盖清空原有文件;>>在文件尾追加;
- 正常输出1可省略,如:cat result.txt 1> new.txt;
- 对于错误输出,2不可省略,如:cat result.log 2> new.log(当log不存在是必须用2重定向)
- 对于不区分正确输出和错误输出,采用 &>
【总结】:
1> : 代表标准正确输出,即如果命令的执行结果是正确,则执行输出
2> : 代表标准错误输出,即如果命令的执行结果是错误,则执行输出
&>: 代表标准正确输出+标准错误输出
1 | &1 # 表示将错误输出到屏幕,注意区分2>1是输出到“1”文件 |
附录:输入重定向用得比较少,如:wc -l < trace.txt # 统计文件行数
表 1 输入重定向中用到的符号及其作用
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止 |
命令 < 文件 1 > 文件 2 | 将文件 1 作为命令的标准输入并将标准输出到文件 2 |
2. 管道命令符
“|”:把前一个命令原本要输出到屏幕的标准正常数据,作为后一个命令的标准输入。可多层嵌套。
直接通过用例说明:
1 | ls -l /etc/ | more # 目录太长,结合more来翻页查看 |
经常会有grep / awk / xargs搭配管道命令符一起使用。
3. 通配符、转义符、环境变量
1. 通配符
- (*) : 0个或多个
- (?): 单个字符
- [abc] : 三个字符中任意一个
- [0-9]、[a-z] 、[A-Z]: 数字配置或字母匹配
2. 转义符
4个常见转义符:
- 反斜杠( \):使反斜杠后面的一个变量变为单纯的字符串。
- 单引号( ‘’):转义其中所有的变量为单纯的字符串。
- 双引号( “”):保留其中的变量属性,不进行转义处理。
- 反引号( ``):把其中的命令执行后返回结果。
$SHELL: 变量取值
$$ : 返回当前进程ID号
3. 环境变量
1 | alias rm=`rm -i` # 自定义指令 |
表 2 Linux OS重要的环境变量表
变量名称 | 作用 |
---|---|
HOME | 用户的主目录(即家目录) |
SHELL | 用户在使用的 Shell 解释器名称 |
HISTSIZE | 输出的历史命令记录条数 |
HISTFILESIZE | 保存的历史命令记录条数 |
邮件保存路径 | |
LANG | 系统语言、语系名称 |
RANDOM | 生成一个随机数字 |
PS1 | Bash 解释器的提示符 |
PATH | 定义解释器搜索用户执行命令的路径 |
EDITOR | 用户默认的文本编辑器 |
【注意】:同一个变量名,不同的用户可以具有不同的值;
使用export WORKDIR,可以将命令提升为全局变量,这样其他用户也可以使用。
写入指令文件,可使 alias 永久生效.
1 | vim /root/.bashrc |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cloud-Weblog!