数据流重定向

1. 数据流重定向(redirect) : 将某个命令执行后应该出现在屏幕上的信息保存到指定的地方.

2. 数据流类别

  • 标准输入(standard input )  stdin : 代码为0, 使用<或<<
  • 标准输出(standard output) stout : 代码为1, 使用>或>> 指的是命令执行所回传的正确的信息.
  • 标准错误输出(standard error output) stderr : 代码为2, 使用2>或2>>   指的是命令执行失败后, 所回传的错误信息.

一般,标准输出和标准错误输出都是默认输出到屏幕上.

3. 实例讲解:

命令: ls > 1.txt  

  • 若没有1.txt这个文件,系统将会自动创建;
  • 若存在1.txt,系统将会先将文件内容清空,然后再将数据写入.

命令: ls >> 1.txt

      与上面的区别是不会覆盖1.txt原本存储的内容,会将新信息写入到文件原有信息的后面.  

命令: ls 1> out.txt 2> error.txt

      将ls的输出正确信息写入到out.txt , 错误信息写入到error.txt .注意2>中间没有空格.

命令: cat > catfile  产生名叫catfile的文件,并紧接着在屏幕上输入文件存储内容;

命令: cat > catfile < 1.txt

       "<"将原本由键盘输入的数据改由文件内容来替代.

命令:  ls -al catfile 1.txt
-rw-rw-r-- 1 jcc jcc 224  4月  4 15:13 1.txt
-rw-rw-r-- 1 jcc jcc 224  4月  4 15:33 catfile

查看catfile和1.txt的文件信息, 发现这2个文件大小一模一样,和cp复制效果一样.

注意: "<<" 代表的是结束的意思;

命令: cat > catfile << "eof"
> djh
> kdf
> eof
当键盘输入eof时,系统自动终止文件内容的写入, "eof"并不会写入文件中.而不需要使用ctrl+d来强制退出.

4. 特殊用法

(1)/dev/null  垃圾桶黑洞设备

    已经知道错误信息会产生,想要将此错误信息忽略掉而不显示或存储, 可以使用以下用法: ls 1> out.txt 2> /dev/null  . 这个/dev/null将会吃掉所有导向这个设备的信息;

(2) 将正确的输出信息和错误的输出信息输入到一个文件中

  命令1:  ls 1> out.txt 2>&1  (常用)

  命令2: ls &> output.txt

  错误: ls 1> out.txt 2> out.txt   两条数据同时写入一个文件,此时两条数据会交叉写入文件中,造成次序的错乱.


你可能感兴趣的:(数据流重定向)