输入输出重定向
Linux输入和输出在终端的成为标准输入和输出。
类型 | 描述 |
---|---|
标准输入重定向(STDIN,文件描述符为0) | 默认从键盘输入,也可从其他文件或命令中输入 |
标准输出重定向(STDOUT,文件描述符为1) | 默认输出到屏幕 |
错误输出重定向(STDERR,文件描述符为2) | 默认输出到屏幕 |
# 标准输出
[root@qiandu ~]# ll anaconda-ks.cfg
-rw-------. 1 root root 1211 May 4 22:43 anaconda-ks.cfg
# 错误输出
[root@qiandu ~]# ll anaconda-ks.cfg1
ls: cannot access anaconda-ks.cfg1: No such file or directory
文件输入重定向
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止 |
命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
[root@qiandu ~]# cat < test2.txt
Hello world,
How are you,
I am fine
[root@qiandu ~]# cat << test
> 1234
> test
1234
[root@qiandu ~]# cat < test2.txt > test3.txt
[root@qiandu ~]# cat test*.txt
Hello world,
How are you,
I am fine
Hello world,
How are you,
I am fine
文件输出重定向
符号 | 作用 |
---|---|
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2>&1 或 命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
[root@qiandu ~]# ls test2.txt > test2.txt
[root@qiandu ~]# ls test3 2> test3.txt
[root@qiandu ~]# cat test*.txt
test2.txt
ls: cannot access test3: No such file or directory
[root@qiandu ~]# echo "Hello world" > test2.txt
[root@qiandu ~]# echo "Hello world2" >> test2.txt
[root@qiandu ~]# cat test2.txt
Hello world
Hello world2
[root@qiandu ~]# ls test2 2>> test3.txt
[root@qiandu ~]# cat test3.txt
ls: cannot access test3: No such file or directory
ls: cannot access test2: No such file or directory
[root@qiandu ~]# echo "This is a test" &> test2.txt
[root@qiandu ~]# ls XXX &>> test2.txt
[root@qiandu ~]# cat test2.txt
This is a test
ls: cannot access XXX: No such file or directory
管道命令符
管道命令符(任意门)把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入,其书写方式为:命令A | 命令B
[root@qiandu ~]# grep "/sbin/nologin" /etc/passwd | wc -l
33