Bash Shell 之stdin,stdout, stderr以及管道

名词:过滤器filter

    Shell的一大特点是:一个命令的输出可以作为另一个命令的输入,而这个命令的输出又会传递至另一个命令

    $ cmd1 | cmd2 | cmd3

   这些命令就称作“filter”, 使用的是“|”来连接filter,(标准输入和标准输出在什么时候起的作用呢?)

 

如:$ls -l | cat -n > out.txt

过程:ls -l的输出通过“|”传给cat -n, cat -n 是怎么接受这些数据的呢?

      cat -n通过标准输入(stdin)接收到输入的内容!加上行号后将输出重定向到文件out.txt

注:stdout中的内容,不做处理的话,直接打印到屏幕中

    cmd从stdin中接受数据,cmd的输出(即命令结果)在stdout中

还有两种取命令输出的方法:

1, 命令结果存放到某个变量中

     cmd_output=$(ls | cat -n)

     echo $cmd_output

2,   用“反引号”把命令输出存到变量中

    cmd_output=`ls | cat -n`

    echo $cmd_output

注:以上两种方式(使用子shell,反引用)将命令的输入读入一个变量中,可以将它放入双引号中,以保留空格和换行符(\n)

    cmd_output="$(ls | cat -n)"

    echo $cmd_output


你可能感兴趣的:(filter,过滤器,管道,定向)