linux 管道 重定向 环境变量

输入输出重定向

简单来讲,输入重定向就是将文件导入到命令中。输出重定向即将原本要输出到屏幕上的信息输出到指定文件中。

  • 标准输入重定向 STDIN 文件描述符为 0 默认从键盘输入
  • 标准输出重定向 STDOUT 文件描述符为 1 默认输出到屏幕
  • 错误输出重定向 STDERR 文件描述符为 2 默认输出到屏幕

STDIO

输入重定向中的符号及其作用

符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读取 知道遇见分界符
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2中

STDOUT

输入重定向中的符号及其作用

符号 作用
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1 或 命令 &>> 文件 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

管道

命令1 | 命令2

简单来讲即将前一个命令本来要输出到屏幕上的数据当作下一条命令的输入。如果使用重定向将标准输出重定向到文件中则不行。比如:

1
2
3
4
5
6
7
8
9
10
11
root@vultr:~/dd# ls
1 a file
root@vultr:~/dd# ls | wc -l
3
root@vultr:~/dd# ls >> res |wc -l
0
root@vultr:~/dd# cat res
1
a
file
res

通配字符

1
2
3
4
# * 零个或者多个任意字符
# ? 单个任意字符
# [0-9] 一个数字 或者指明数字 [123]
# [a-z] 一个字符 或者指明字符 [e]

转义字符

  • 反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
  • 单引号(’’):转义其中所有的变量为单纯的字符串。
  • 双引号(””):保留其中的变量属性,不进行转义处理。
  • 反引号(``):把其中的命令执行后返回结果。
1
echo `uname -a`