Linux学习-管道与重定向

Shell

管道与重定向

  • 管道与管道符

    • 管道也是进程通信的方式之一
    • 管道符 “|”,将前一个命令执行的结果传递给后面的命令
      • ps | cat
      • echo 123 | ps
      • 管道符两边若是外部命令,则会建立子进程。若是使用内部命令,建议将命令封装在脚本之内再去执行。若无必要,避免在管道符内使用内部命令。
  • 子进程与子shell

    • 子Shell是由父Shell创建的进程,父Shell创建子Shell调用的是fork函数。
    • 内建命令不创建子Shell而外部命令创建子Shell。
    • 冒号用法:冒号可以表示永真(相当于TRUE关键字)如while :;do...done(while循环的条件始终为真);其次冒号可以清空一个文件,:>log将冒号重定向到文件,log文件内容被清空,所 以:>命名是常用的清空文件的命令;接着冒号最重要的用法是:不做任何事,只做参数展开。
    • 圆括号结构,能强制将其中的命令运行在子shell中
    • 子进程与子shell详解
  • 重定向符号

    • 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符
    • 输入重定向符号 "<"
      • read var < /path/to/a/file
    • 输出重定向符号
      • ">" 清空文件后再进行输入
      • ">>" 文件保持不变,在末尾追加输入
      • “2>” 将错误的信息进行输出到指定文件
      • “&>” 无论正确或错误的信息,都输出到指定文件;将stderr转换成stdout,使stderr和stdout都被重定向到同一个文件中
        • 例:$ cmd > alloutput.txt 2>&1 或者 $ cmd &> out.txt
    • 输入和输出重定向组合使用
      • cat > /path/a/file << EOF
      • I am #USER
      • EOF
  • 文件描述符

    • 0 —— stdin 标准输入
    • 1 —— stdout 标准输出
    • 2 —— stderr 标准错误
posted @ 2020-08-23 00:33  chenzy01  阅读(229)  评论(0编辑  收藏  举报