【鸟哥 Linux 10.5】数据流重导向


【鸟哥 Linux 10.5】数据流重导向

什么是数据流重导向?

  • 执行命令的时候会用标准输入读取必需数据,如果程序运行正确,使用标准输出输出结果,如果程序运行错误,使用标准错误输出输出错误。

  • 使用数据流重导向去分流不同的数据。

使用数据流重导向来分流不同输出

  • 必须使用特殊字符来标识不同的流。
  1. 标准输入(stdin),代码为0,使用<或者<<

  2. 标准输出(stdout),代码为1,使用>或者>>(实际上是1>或者1>>,这里的1可以省略)

  3. 标准错误输出(stderrout),代码为2,使用2>或者2>>

输出重定向的例子

ll / 1>> ~/rootfile # 将ll / 标准输出追加到~/rootfile中
ll / >> ~/rootfile # 将ll / 标准输出追加到~/rootfile中

ll / 2> ~/rootfile # 将ll / 标准错误输出覆盖到~/rootfile中

# 将find /home -name .bashrc 标准输出覆盖到list_right中
# 将find /home -name .bashrc 标准错误输出覆盖到list_error中
find /home -name .bashrc > list_right 2> list_error

# 将多个输出重定向到同一个文件
# 将find / -name .bashrc 标准输出覆盖到list文件中
# 将find / -name .bashrc 标准错误输出重定向到标准输出(1号)中,由于标准输出已经重定向到list中了,所以标准错误输出也会输出到list文件中
find / -name .bashrc 1> list 2>&1
  • 上例中2>&1是指将标准错误输出重定向到标准输出,那么当然也可以反过来使用1>&2将标准输出重定向到标准错误输出

/dev/null黑洞文件

  • 吃掉所有重定向到文件的数据流

输入的重定向

  • 来看一个cat快速创建文件的例子:

# 使用cat来快速建立文件
cat > catfile # 执行之后输入需要写入文件的内容,^d结束
  • 以下内容截取自cat命令的manpage
DESCRIPTION
       Concatenate FILE(s) to standard output.

       With no FILE, or when FILE is -, read standard input.
  • 当cat不接收文件的时候,会接收stdin作为输出,将这些输出重定向到catfile中,相当于通过键盘输入快速创建了一个文本文件。

  • 再来看一个例子:
#使用文件来快速创建相同内容的文件
cat > catfile < ~/.bashrc
  • 以上脚本表达了以下意思:
  1. cat的标准输出被重定向到catfile中
  2. cat的标准输入被重定向到~/.bashrc中
  3. 综合来说,cat接收~/.bashrc的文件内容作为输入,并将内容输出到catfile中。

  • 最后一个例子:
# 通过<<指定文件结束符
cat > catfile << "eof" # 这下不需要^d了,输完所有内容,输入一个eof即可结束

命令执行的逻辑分隔符

指令 说明
cmd1 && cmd2 cmd1执行正确,才执行cmd2
cmd1 | cmd2
cmd1;cmd2 cmd1和cmd2无关联的执行
  • 需要注意的是,上述指令执行正确与否的判断都是根据$?这个回传值来的

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/281009.html

(0)
上一篇 2022年8月17日
下一篇 2022年8月17日

相关推荐

发表回复

登录后才能评论