数据流重定向

20.11.30

数据流重定向

  • 标准输入  (stdin) :代码为 0 ,使用 < 或 << ;
  • 标准输出  (stdout):代码为 1 ,使用 > 或 >> ;
  • 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

  • 1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上;

  • 1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;

  • 2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上;

  • 2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上;

  • 0<:

      用 stdin 取代键盘的输入以创建新文件的简单流程
      [root@www ~]# cat > catfile < ~/.bashrc
      [root@www ~]# ll catfile ~/.bashrc
      -rw-r--r-- 1 root root 194 Sep 26 13:36 /root/.bashrc
      -rw-r--r-- 1 root root 194 Feb  6 18:29 catfile
      # 注意看,这两个文件的大小会一模一样!几乎像是使用 cp 来复制一般!
    
  • 0<<:

    [root@www ~]# cat > catfile << "eof" <==这里“eof”代表结束的输入字符
    > This is a test.
    > OK now stop
    > eof  <==输入这关键词,立刻就结束而不需要输入 [ctrl]+d 
    
    [root@www ~]# cat catfile  <==我要用 cat 直接将输入的信息输出到 catfile 中, 且当由键盘输入 eof 时,该次输入就结束
    This is a test.
    OK now stop     <==只有这两行,不会存在关键词那一行!
    
    • 屏幕输出的信息很重要,而且我们需要将他存下来的时候;
    • 背景运行中的程序,不希望他干扰屏幕正常的输出结果时;
    • 一些系统的例行命令 (例如写在 /etc/crontab 中的文件) 的运行结果,希望他可以存下来时;
    • 一些运行命令的可能已知错误信息时,想以『 2> /dev/null 』将他丢掉时;
    • 错误信息与正确信息需要分别输出时。

  • /dev/null 垃圾桶黑洞装置与特殊写法

    ls -a > /dev/null:将该命令输出内容丢到垃圾桶~


将命令的正确错误数据全部写入名为 list 的文件中
[dmtsai@www ~]$ find /home -name .bashrc > list 2> list  <==错误
[dmtsai@www ~]$ find /home -name .bashrc > list 2>&1     <==正确
[dmtsai@www ~]$ find /home -name .bashrc &> list   

命令运行的判断依据: ; , &&, ||

  • cmd ; cmd (不考虑命令相关性的连续命令下达)

  • 若前一个命令运行的结果为正确,在 Linux 底下会回传一个 $? = 0 的值

命令下达情况 说明
cmd1 && cmd2 1. 若 cmd1 运行完毕且正确运行($?=0),则开始运行 cmd2。 2. 若 cmd1 运行完毕且为错误 ($?≠0),则 cmd2 不运行。
cmd1 || cmd2 1. 若 cmd1 运行完毕且正确运行($?=0),则 cmd2 不运行。 2. 若 cmd1 运行完毕且为错误 ($?≠0),则开始运行 cmd2。

posted @ 2020-11-30 21:59  榕霖  阅读(138)  评论(0编辑  收藏  举报