乐趣区

关于linux:Linux中Shell重定向

【Linux 常用命令速查手册】关注【入门小站】,后盾回复「1001」自取。

在 shell 脚本中,默认状况下,总是有三个文件处于关上状态,规范输出(键盘输入)、规范输入(输入到屏幕)、规范谬误(也是输入到屏幕),它们别离对应的文件描述符是 0,1,2。

  • & 是一个描述符,如果 1 或 2 前不加 &,会被当成一个一般文件。
  • > 默认为规范输入重定向,与 1> 雷同
  • 1>&2 意思是把规范输入重定向到规范谬误.
  • 2>&1 意思是把规范谬误输入重定向到规范输入。
  • &>filename 意思是把规范输入和规范谬误输入都重定向到文件 filename 中.
  • >&21>&2 也就是把后果输入到和规范谬误一样

/dev/null是一个文件,这个文件比拟非凡,所有传给它的货色它都抛弃掉

规范输入和谬误输入

> ls
rumenz.txt

> ls rumenz.txt 1.txt
ls: 1.txt: No such file or directory
rumenz.txt
  • 因为 1.txt 不存在, 所以 ls: 1.txt: No such file or directory 就是谬误输入就是 2。
  • rumenz.txt文件是存在的, 所以 rumenz.txt 就是规范输入。就是 1。

把上述的规范输入和谬误输入重定向到文件

> ls rumenz.txt 1.txt 1>out.log 2>err.log
> cat out.log
rumenz.txt
> rumenz cat err.log
ls: 1.txt: No such file or directory
  • out.log存的是规范输入
  • err.log存的是谬误输入

案例剖析

> ls rumenz.txt 1.txt > out.txt
ls: 1.txt: No such file or directory
> cat out.txt
rumenz.txt

因为只重定向了规范输入, 所以 out.txt 文件只有规范输入

> ls rumenz.txt 1.txt > out.log 1>&2
ls: cannot access 1.txt: No such file or directory
rumenz.txt
> cat out.log

> out.log将规范输入重定向到文件, 然而 1>&2 将规范输入重定向到了谬误输入, 所以 out.log 外面什么也没有.

> ls rumenz.txt 1.txt > out.txt 2>&1
> cat out.txt 
ls: cannot access 1.txt: No such file or directory
rumenz.txt

> out.log将规范输入重定向到文件, 然而 2>&1 将谬误输入重定向到规范输入, 所以 out.log 外面既有失常的输入也有谬误的输入.

/dev/null

/dev/null: 示意 的是一个黑洞,通常用于抛弃不须要的数据输入,或者用于输出流的空文件

> rm -f $(find / -name rumenz) &> /dev/null

原文链接:https://rumenz.com/rumenbiji/…
微信公众号: 入门小站

【Linux 常用命令速查手册】关注【入门小站】,后盾回复「1001」自取。

退出移动版