Bootstrap

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转存一份到文件内并将同样的数据继续送到屏幕上去处理显示。这样,除了可以让我们同时分析一份数据并记录下来之外,还可以作为处理一份数据的中间暂存盘记录只用。

另:在很多认证考试中有考察。