文件描述符和重定向

概述一次文件描述符与重定向

文件描述符

1. 标准输入
可以理解为键盘的输入,用 0 表示
2. 标准输出
可以理解为显示器的显示,用 1 表示
3. 标准错误输出
可以理解为错误的输出,比如执行报错,用2表示

重定向

输出重定向

  1.  > 覆盖写
    • 案例 1,此命令会将结果重定向到`1.txt`文件里,而不会显示到屏幕
      ls / > ~/1.txt
    • 案例 2,此命令回车后会将键盘输入的内容覆盖写入`1.txt`,直到`Ctrl`+`D`结束
      cat > ~/1.txt
  2. >> 追加写
    • 案例 1,此命令会将结果追加到`1.txt`文件里,不会显示到屏幕,且不会丢失文件以前的内容
      ls / >> ~/1.txt
    • 案例 2,此命令回车后会将键盘输入的内容追加写入`1.txt`,直到`Ctrl`+`D`结束
      cat >> ~/1.txt
  3. 综合案例(结合文件描述符)
    • 案例 1,将正确输出和错误输出分开写入不同的文件
      find / --name bash > ~/std.txt 2> ~/err.txt
    • 案例 2,将正确输出和错误输出合并写入同一个文件
      find / --name bash > ~/output.txt 2>&1

输入重定向

  1. < 从文件中读取
    • 案例 1,将配置文件的备份恢复
      cat > pro.conf <pro.conf.bak
  2. << 作为一个截断符号
    • 案例 1,使用EOFF作为截断. 没有好的案例只是简单知道是什么.
      cat > 1.txt <<EOFF
      111
      22
      3
      EOFF

自问自答

  1. 为什么要学习它,它有什么用?
    • 实际场景会遇到这么一种情况,执行一个命令后输出内容太多啦,甚至看不清输入的内容,此时就可以把输出内容重定向到文件中;
    • 还有一种场景,后台执行的命令,执行有问题,需要查看日志,这时候也可以使用重定向到文件中;
    • 亦或是懒,有时候给`/etc/profile`追加一个环境变量,不想`vi`打开再关闭,也可以用到输出重定向
阅读剩余
THE END