BSD的sh和csh的重定向操作符全解

预先的知识一:        
        noclobber 禁止覆盖变量,设定 $noclobber 预设变量改变输出重定向特性
   
  1. 变量设定语法 set noclobber
  2.     取消变量设定语法 unset noclobber
复制代码

    这个 noclobber 变量,它的功能便是停止重定向符号“>”的覆盖(overwiting)已存在文件以及符号“>>”要将字符写入一个不存在的文件时,自动产生该文件的特性。
        
        仅用两个例子让读者明白,设定后的实际使用状况。
        例子一:
      
  1. % ps axu > testfile
  2.         % set noclobber
  3.         % echo "test set noclobber" > testfile
  4.         testfile: File exists.
  5.         % echo "test set noclobber" >! testfile
  6.         %
复制代码


        例子二:
      
  1. % set noclobber
  2.         % cat /etc/passwd >> nopass
  3.         nopass: No such file or directory
  4.         % cat /etc/passwd >>! nopass
  5.         %
复制代码


预先的知识二:        
        输入输出位置文件句柄:
        STDIN(标准输入/Standard Input)                0
        STDOUT(标准输出/Standard output)        1
        STDERR(标准错误/Standard error)                2

>file                  csh, sh          
        将 STDOUT(标准输出/Standard output) 重定向到文件
         (command > file)

>>file                 csh, sh         
        将 STDOUT(标准输出/Standard output) 字符串加到文件内容之后
         (command >> file)

<file                 csh, sh         
        将文件重定向到 STDIN(标准输入/Standard Input) 作为命令的输入
         (command < file)

<<word                 csh, sh         
        读取在线输入直到word(结束输入时,结束行输入word), 并做输入内容的变量替换
         (command <<word)

<<\word         csh, sh         
        读取在线输入直到word(结束输入时,结束行输入word), 不做输入内容的变量替换
         (command <<\word)

<<-word         sh                         
        读取在线输入直到word(结束输入时,结束行输入word), 忽略TABS(制表符)
         (command <<-word)

>>!file         csh                 
        将 STDOUT(标准输出/Standard output) 字符串追加到文件内容之后,当设定 $noclobber 时,可重写文件。
         (command >>! file)

>!file                 csh                 
        将 STDOUT(标准输出/Standard output) 重定向到新文件,当设定 $noclobber 时,可重写文件。
         (command >! file)

>&file                 csh                 
        将 STDOUT(标准输出/Standard output) 及 STDERR(标准错误/Standard error) 重定向到文件
         (command >& file)

>>&                csh                        
        将 STDOUT(标准输出/Standard output) 及 STDERR(标准错误/Standard error) 字符串追加到文件内容之后
         (command >>& file)

<&digit         sh                         
        切换 STDIN(标准输入/Standard Input) 到文件句柄
         (command >cmd.log 2<&1)

<&-                 sh                         
        关闭 STDIN(标准输入/Standard Input)
         (command <&-)

>&digit         sh                         
        切换 STDOUT(标准输出/Standard output) 到文件句柄
         (command >cmd.log 2>&1)

>&-                 sh                         
        关闭 STDOUT(标准输出/Standard output)
         (command >&-)

>&!                csh                        
        将 STDOUT(标准输出/Standard output) 及 STDERR(标准错误/Standard error) 重定向到文件,当设定 $noclobber 时,可重写文件。
         (command >&! file)

>>&!                csh                        
        将 STDOUT(标准输出/Standard output) 及 STDERR(标准错误/Standard error) 字符串加到文件内容之后,当设定 $noclobber 时,可重写文件。
         (command >>&! file)


转载于:https://my.oschina.net/coolmoo/blog/260986

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值