pipe
307
标准输入默认是键盘,标准输出默认是屏幕
如果希望将命令的输出写入到文件中,可以在命令的后面键入>字符,后面跟着文件名称即可,例如:sort>names,这将新建names或者清空names的已有数据
如果希望将数据添加到已有数据的后面,可以用>>,也就是sort>>names
当将标准输出发送给文件时,称为重定向标准输出
如果不希望>命令替换已有文件,可以设置shell的noclobber选项,对于bash:
set -o noclobber
如果需要临时忽略noclobber,需要用>|来取代>,例如:sort>| names
可以使用<重定向标准输入
在unix进程中,每个输入源和输出目标都由一个唯一的数字标识,这个数字称为文件描述符。默认情况下,unix为每个进程提供3个预定义的而且大多时候已经够用。默认的文件描述符是0代表标准输入,1代表标准输出,2代表标准错误。因此在Bourne shell家族中,重定向标准输入的语法是0<,后面跟着输入文件的名称,标准输出语法是1>,标准错误语法是2>
标准输入和标准输出的文件描述符可以省略,标准错误不可省略
当输入bash时,会创建一个子shell,子shell继承父shell的环境,但是子shell对环境的改变不会传递回父shell
也可以用()括起来命令,表示在子shell中运行
在bash中,如果要将标准输出和标准错误重定向到同一位置,可以这样:
command x> outputfile y>&x
其中command是命令,x和y是文件描述符,outputfile是文件名
标准输入默认是键盘,标准输出默认是屏幕
如果希望将命令的输出写入到文件中,可以在命令的后面键入>字符,后面跟着文件名称即可,例如:sort>names,这将新建names或者清空names的已有数据
如果希望将数据添加到已有数据的后面,可以用>>,也就是sort>>names
当将标准输出发送给文件时,称为重定向标准输出
如果不希望>命令替换已有文件,可以设置shell的noclobber选项,对于bash:
set -o noclobber
如果需要临时忽略noclobber,需要用>|来取代>,例如:sort>| names
可以使用<重定向标准输入
在unix进程中,每个输入源和输出目标都由一个唯一的数字标识,这个数字称为文件描述符。默认情况下,unix为每个进程提供3个预定义的而且大多时候已经够用。默认的文件描述符是0代表标准输入,1代表标准输出,2代表标准错误。因此在Bourne shell家族中,重定向标准输入的语法是0<,后面跟着输入文件的名称,标准输出语法是1>,标准错误语法是2>
标准输入和标准输出的文件描述符可以省略,标准错误不可省略
当输入bash时,会创建一个子shell,子shell继承父shell的环境,但是子shell对环境的改变不会传递回父shell
也可以用()括起来命令,表示在子shell中运行
在bash中,如果要将标准输出和标准错误重定向到同一位置,可以这样:
command x> outputfile y>&x
其中command是命令,x和y是文件描述符,outputfile是文件名