赞
踩
通道(文件描述符)
编号 | 通道名称 | 描述 | 默认链接 | 用法 |
---|---|---|---|---|
0 | stdin | 标准输入 | 键盘 | 仅读取 |
1 | stdout | 标准输出 | 终端 | 仅写入 |
2 | stderr | 标准错误 | 终端 | 仅写入 |
3+ | filename | 其他文件 | 无 | 读取和/或写入 |
输出重定向操作符
用法 | 说明 | 图示 |
---|---|---|
>filename | 重定向stdout以覆盖文件 | |
>>filename | 重定向stdout以附加到文件 | |
2>filename | 重定向stdout以覆盖文件 | |
2>>filename | 重定向stdout以附加到文件 | |
2>/dev/null | 将stderr重定向到/dev/null,从而将它丢弃 | |
>filename 2>&1 | 重定向stdout和stderr以覆盖同一个文件 | |
&>filename | 重定向stdout和stderr以覆盖同一个文件 | |
>>filename 2>&1 | 重定向stdout和stderr以附加到同一个文件 | |
&>>filename | 重定向stdout和stderr以附加到同一个文件 |
在实际使用过程中,重定向通常与其他指令组合使用,用以保存其他指令的执行结果。
[root@root: ~/Desktop/file]$ data > data.txt //获取机器时间并保存
[root@root: ~/Desktop/file]$ tail -n 100 file1.txt > file2.txt //获取file1.txt的最后100行保存到file2.txt
[root@root: ~/Desktop/file]$ cat file1.txt file2.txt file3.txt > file_all.txt //合并file1.txt file2.txt file3.txt的内容并保存至file_all.txt
[root@root: ~/Desktop/file]$ echo "this is a new file" >> file.txt //向文件中进行写入
[root@root: ~/Desktop/file]$ diff file1.txt file2.txt >> diff_info.txt //比较file1.txt file2.txt并将结果保存到diff_info.txt
[root@root: ~/Desktop/file]$ ./run.sh &> run_log.txt //运行run.sh,并将运行中产生的标准输出和错误保存至run_log.txt
[root@root: ~/Desktop/file]$ find /etc -name passwd >> passwd_list.txt //在/etc文件夹下查找文件名带有passwd的文件并保存查找结果到passwd_list.txt
管道组合less指令使用,会使第一个命令的结果在终端上以一次一屏的方式显示输出。
例:
[root@root: ~/Desktop/file]$ ls -l /user/bin | less
管道组合tee指令使用,可以保存命令的输出到文件并且同时输出到终端。
例:
[root@root: ~/Desktop/file]$ ls -l /user/bin | tee file.txt
可以通过管道来重定向标准错误,但是不能使用合并重定向运算符( &> 和 &>> )执行此操作,仅可以使用( 2>&1 和 2>>&1 )执行此操作。
例:
错误用法:
[root@root: ~/Desktop/file]$ls -l /usr/bin/ &> | less
-bash: syntax error near unexpected tok en '|'
[root@root: ~/Desktop/file]$ls -l /usr/bin/ &>> | less
-bash: syntax error near unexpected tok en '|'
正确用法:
[root@root: ~/Desktop/file]$ls -l /usr/bin/ 2>&1 | less
[root@root: ~/Desktop/file]$ls -l /usr/bin/ 2>>&1 | less
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。