linux使用转向符输入密码,Linux Shell之八 转向的用法

一、文件代码

“转向”的意思是说:原本应由标准输入(如键盘)读取数据的,改由其它文件读取;原本应把结果显示在标准输出(如屏幕)的,改输出到其它文件。在这个过程中会涉及到文件代码(file descriptor)的概念。

所谓文件代码,是指操作系统赋予已开启文件一个编号(由0开始),作为追踪文件之用,如对这个文件进行读取或写入的操作,都使用文件代码来沟通。下边文件代码数字用fd来表示。

操作系统默认3个文件代码:0 标准输入、1 标准输出、2 标准错误

这3个文件在建立Shell环境时已开启,往后如果开启新文件,则分配2以上的号码。

< 代表转向输入,如果< 左边省略文件代码,则默认为0,指的就是标准输入。

> 代表转向输出,如果> 左边省略文件代码,则默认为1,指的就是标准输出。

这些转向语法大部分不能单独使用,必须跟Bash的命令一起运用,如exec、ls、read等,是属于指令结构的一部分。

本篇中的fd、n、m代表文件代码#echo ’hello,world!‘ > a.txt

#exec 7<>a.txt

#cat 

hello,world!

二、操作文件

这里要说明的"操作文件",是指运用转向的概念,开启文件、复制文件代码和关闭文件。

1、开启文件

语法:fd<>文件

用途:开启文件,指定代码为fd。使用这种方式开启的文件,可供读写。

用例:exec 6<>test.txt

使用exec执行转向,开启文件test.txt,并指定其代码文件为6

2、关闭文件

开启文件后,如果该文件不再使用,最好关闭文件,交回调用文件代码所占用的系统资源。这是一个很好的习惯。

关闭转向输入文件

语法:fd

用例:6

关闭转向输出文件

语法:fd>&-

用例:exec 5>&-

3、复制文件代码,建立文件链接

操作系统已开启的文件代码(0、1、2),为了不影响原有文件代码的作用,最好先复制一份,等操作结束再还原回去,称“复制代码”。

两种方式:

a、复制转向输入的文件代码m,存文件代码n,使n连接至m     n

b、复制转向输出的文件代码m,存成文件代码n,使n连接至m   n>&m

用例:

exec >&6   等同于exec 1>&6,将标准输出连接到文件代码6,因此,凡是出现在标准输出的内容,会转存至文件代码6

cat  

exec 5

exec 0

三、转向的用法

代码要紧邻符号,转向输入输出默认只能使用一次。

1、转向输入

语法:fd

用途:使用"文件"作为输入,指定它的文件代码为fd

用例:

wc -l < /etc/passwd  #

exec 6< /etc/passwd  #

wc -l

2、转向输出

语法:fd>文件

用途:使用文件做输出,指定文件代码为fd

如果文件不存在,会建立,如果存在,会清空。可以关闭文件默认操作set -o noclobber或set -C

用例:

>test.txt(创建空文件)      #>左方的省略fd,fd默认为1

:>test.txt                 #效果同上

ls > dirs.txt             #存储命令执行的输出

exec 6> out.txt            #开启文件out.txt作为输出

echo 'hello world!' 1>&6   #将echo输出的内容存储在文件代码6

fd>|文件 同fd>文件 但fd>|不理会noclobber选项,会强制覆盖、清空。

>|不管noclobber选项是否启用,只要文件存在,该内容一定会被清空。

3、转向附加

语法:fd>>文件

用途:使用方法同 fd>文件, 只是fd>>不会覆盖、不会清空,只是追加。

4、标准错误伴随标准输出做转向

语法:&>文件 或 >&文件 效果一样。

'>文件 2>&1'和 &>作用一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值