Linux数据流重定向
数据流重定向概念
在 Linux 中,数据流重定向是一种将命令的输出或错误输出从一个地方(如屏幕)重定向到另一个地方(如文件或设备)的技术。
数据流重定向主要涉及三个部分:标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)。
1、标准输入是程序从其输入设备(如键盘)接收数据的通道。
2、标准输出指的是命令执行所返回的正确信息。
3、标准错误输出是命令执行失败返回的错误信息。
输入输出使用格式
标准输入(stdin):代码为0
,使用<
或<<
。
标准输出(stdout):代码为1
,使用>
或>>
。
标准错误输出(stderr):代码为2
,使用2>
或2>>
。
标准输出使用方法及示例
使用示例:
# 直接输出到屏幕上
ll /
# 可能返回以下内容
total 72
lrwxrwxrwx. 1 root root 7 Mar 7 2019 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jan 8 16:48 boot
drwxr-xr-x 2 root root 4096 Nov 5 2019 data
drwxr-xr-x 19 root root 3040 Feb 8 15:29 dev
drwxr-xr-x. 95 root root 12288 Feb 8 15:29 etc
drwxr-xr-x. 3 root root 4096 Feb 8 15:29 home
lrwxrwxrwx. 1 root root 7 Mar 7 2019 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Mar 7 2019 lib64 -> usr/lib64
drwx------. 2 root root 16384 Mar 7 2019 lost+found
# 输出信息至某个文件
ll / > /root/fileinfo
# 查看文件内容
cat /root/fileinfo
# 返回的内容与直接运行命令相同,表明信息被输出到文件中
total 72
lrwxrwxrwx. 1 root root 7 Mar 7 2019 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jan 8 16:48 boot
drwxr-xr-x 2 root root 4096 Nov 5 2019 data
drwxr-xr-x 19 root root 3040 Feb 8 15:29 dev
drwxr-xr-x. 95 root root 12288 Feb 8 15:29 etc
drwxr-xr-x. 3 root root 4096 Feb 8 15:29 home
lrwxrwxrwx. 1 root root 7 Mar 7 2019 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Mar 7 2019 lib64 -> usr/lib64
drwx------. 2 root root 16384 Mar 7 2019 lost+found
以示例中 /root/fileinfo 进行说明(同理也适用于错误信息):
- 文件若不存在,执行命令时系统会自动建立
- 文件若存在(示例中/root/fileinfo),以
>
执行命令时会先清空内容然后写入(即覆盖) - 文件若存在(示例中/root/fileinfo),以
>>
执行命令时会将信息追加在文件内容后(即累加)
文件及内容建立规则
- 文件若不存在,系统则自动建立
>
以覆盖的方式将正确的数据输出到指定文件上>>
以累加的方式将正确的数据输出到指定文件上2>
以覆盖的方式将错误的数据输出到指定文件上2>>
以累加的方式将错误的数据输出到指定文件上
/dev/null 特殊用途
/dev/null 是一个特殊的文件,被称为“空设备”或“空设备文件”。这个文件会丢弃所有写入到它的数据,就好像一个黑洞一样。当读取/dev/null时,它立即返回一个文件结束(EOF)标记。
在命令行操作中,/dev/null 常常被用来丢弃不需要的输出。例如运行一个命令,但是并不关心这个命令的输出,可以将输出重定向到 /dev/null,这样命令的输出就会被丢弃,不会显示在终端或者写入到其他文件。
命令示例:
# 输出的内容被丢弃
ll / > /dev/null
标准输入使用方法及示例
<
、<<
是用于将原本需要由键盘输入的数据,改为由文件内容来输入。
<
命令示例:
# 建立文件
vim 1.txt
# 输入内容
hello~
# 输入信息至文件testfile,内容则是由 1.txt 中的内容来输入
cat > testfile < /root/1.txt
# 查看文件testfile
cat testfile
# 可能返回以下内容
hello~
以上命令执行的结果为,testfile文件的内容由原本需要由键盘输入的数据,改为由指定文件1.txt的内容来输入。
<<
命令它允许定义多行的字符串,以下为使用方法及示例:
# 使用方法
command << EOF
这里是内容
可以多行
EOF
# command 表示命令
# EOF 表示输入结束
# 使用示例
cat > test_file << EOF
hello
OK
EOF
# 读取文件
cat test_file
# 可能返回以下内容
hello
OK
合理使用数据流重定向功能,可以保存输出结果、处理错误信息、分离正常输出和错误输出以及屏蔽不需要的输出,从而提高命令或程序的可靠性和可维护性。
版权声明:本文为原创文章,版权归 本站 所有,未经许可,不得转载。
本文地址:https://www.yiisu.vip/linux_redirect.html
如对本文有疑问可在评论区留言,博主会尽力解答,同时欢迎关注微信公众号“云计算课代表”。