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

Stella981
• 阅读 122

预先的知识一:

        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)

点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Stella981 Stella981
1年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
Stella981 Stella981
1年前
Django 学习 之 模板(html)与配置静态文件
一.模板(html)1.模板语法之变量:语法为{{}}在Django模板中遍历复杂数据结构的关键是句点字符,语法:{{var\_name}}var\_name是一个变量名称,需要和views文件retu
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_34035044 helloworld_34035044
7个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue