Linux数据流重定向
指的是命令执行所回传的正确的信息,而可以理解为命令执行失败后,所回传的错误信息。 一般情况下,不管正确还是错误信息数据默认的是输出到屏幕上,所以屏幕上是很混乱的。可以通过数据流重定向将stdout和stderr分别传送到其他的文件或者设备去,而分别传送所用的特殊字符如下所示:
标准输出和标准错误输出
如果仅存在,则代表默认代码为1。
:以的方法将的数据输出到指定的文件或者设备上
:以的方法将的数据输出到指定的文件或者设备上
:以的方法将的数据输出到指定的文件或者设备上
:以的方法将的数据输出到指定的文件或者设备上
示例1:将stdout和stderr分别存到不同的文件中去。
find /home -name .bashrc > list_right 2> list_error
示例2:将错误的数据丢弃,屏幕上显示正确的数据
find /home -name .bashrc 2> /dev/null
/dev/null垃圾黑洞设备
示例3:将正确和错误的数据全部写入一个文件
find /home -name .bashrc >list 2>&1
或者
find /home -name .bashrc &> list
标准输入
意味着将原本需要由键盘输入的数据改由文件内容来替代。
示例1:利用命令来创建一个文件的简单流程,了解一下什么是
cat > catfile
1
2
3
<==此处按下ctrl+c或者ctrl+d来离开
示例2:利用替代键盘的输入来创建新文件的流程
cat > catfile < ~/.bashrc
--------------------------
ll catfile ~/.bashrc
-rw-r--r-- 1 root root 176 Sep 5 14:10 catfile
-rw-r--r--. 1 root root 176 Dec 29 2013 /root/.bashrc
# 注意到两个文件大小几一模一样,几乎是使用cp命令复制一份
理解了后,再来看。:。举例来讲,我要用cat直接将输入的信息输出到catfile中,且当由键盘输入eof时,本次输入就结束,可以按照如下方式进行:
cat > catfile << "eof"
>1
>2
>3
>eof <==输入该关键字后,立刻就结束输入而不需要输入ctrl + d/c
双向重定向tee
tee命令实现了手动跟踪命令的输出内容,同时又将输出的内容写入文件,确保之后可以用来参考。 例如:
last | tee last.list | cut -d ' ' -f1
# last: View the last logged in users.
# 该范例可以让我们将last的输出存一份到last.list文件中。
ls -l / | tee -a ~/homefile | more
# tee 后直接接文件会被覆盖,如果加以 -a 这个参数则能将信息累加
总结,可以让standard output转存一份到文件内并将同样的数据继续送到屏幕上去处理显示。这样,除了可以让我们同时分析一份数据并记录下来之外,还可以作为处理一份数据的中间暂存盘记录只用。
另:在很多认证考试中有考察。