LinuxShell之八转向的用法

作者:网络    软件教程库   2020-05-16

一、文件代码

“转向”的意思是说:原本应由标准输入(如键盘)读取数据的,改由其它文件读取;原本应把结果显示在标准输出(如屏幕)的,改输出到其它文件。在这个过程中会涉及到文件代码(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
#exec7a.txt
#cat7
hello,world!


二、操作文件

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

1、开启文件

语法:fd文件

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

用例:exec 6test.txt

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

2、关闭文件

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

关闭转向输入文件

语法:fd-

用例:6-

关闭转向输出文件

语法:fd-

用例:exec 5-

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

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

两种方式:

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

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

用例:

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

cat 6 等同于cat 06,将文件代码6的内容,转向至标准输入,而由cat把内容显示出来。

exec 50 复制标准输入(0),存成文件代码5,即建立文件代码0的连接,简单说就是做标准输入的备份。

exec 05 5- 将存储在文件代码5的标准输入还原,并关闭文件代码5。


三、转向的用法

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

1、转向输入

语法:fd文件

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

用例:

wc -l /etc/passwd #左方省略fd,默认fd为0,指的就是标准输入转向:

exec 6 /etc/passwd #左方文件代码不空;

wc -l 6 #当一次输入回车的时候,会输出passwd行数,再按一次回车则为空

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!‘ 16#将echo输出的内容存储在文件代码6

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

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

3、转向附加

语法:fd文件

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

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

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

‘文件 21‘和 作用一样。


本文出自 “welcome to linux world” 博客,请务必保留此出处http://linuxnote.blog.51cto.com/9876511/1641252

linux shell之八 转向的用法

原文地址:http://linuxnote.blog.51cto.com/9876511/1641252

软件教程库 该篇文章地址:https://www.itjcku.com/9999/1091449.html

阅读全部内容


Tags:转向用法

返回首页



推荐内容

Java中有关null的9件事

java中有关 null 的9件事 对于java程序员来说,null是令人头痛的东西。时常会受到空指针异常(np ...

LDAP账号同步和Windows域集成验证

#65279;#65279; paradise.ezla.com.tw/files/article/html/32/32 ...

在同一个sql语句中如何写不同条件的count数量(转)

select sum(case when (t.条件字段=‘00‘) then 1 else 0 ...

详解MessageBox(),MsgBox函数的正确使用

//或者使用chr(13),chr(10)效果一样 msgbox aamp;chr(13)amp;bamp;chr( ...

swift学习笔记5

五、集合 数组 1、泛型 arraylt;类型gt; 2、简化[类型] var myar:arraylt;stringg ...

约在CBD,吃饭

午饭当然是外卖。 cbd上班的同仁们不用约,都去了一间叫大食堂的餐厅。 它在商业街繁华地段的二楼,有1000平米。你不知 ...

headFirst学习笔记之十:状态模式(5.2)

1.如何从状态图得到真正的代码: (1)找出所有状态:没有25分钱,有25分钱,糖果售罄,售出糖果。 (2)创建一个实例 ...

zabbixPHPdatabasessupportoffFail

zabbix初始化检查安装环境不通过: php databases support off fail --未找到所 ...

JS中字符串,数组常见操作

字符串mdash;mdash;mdash;》数组 abc =gt; ["a","b","c"]直接使用split方法 ...

IOS简单的动画自定义方法(旋转、移动、闪烁等)

#define kdegreestoradian(x) (m_pi * (x) /180.0) #define kra ...

swift学习笔记3-4

再牛逼的梦想,也抵不住你傻逼似的坚持! 我跑啊跑啊,为的就是赶上那个被寄予厚望的自己。 三、运算符+表达式 swift允 ...

Trie树初学

#includelt;cstdiogt; #includelt;cstringgt; #includelt;cstdli ...

Android--状态栏高度

干货 classlt;gt; c = null; object obj = null; field field = n ...

//hdu2222//AC自动机初学

// hdu2222 // #includelt;cstdiogt; #includelt;cstringgt; #in ...

黑书笔记

就从p77开始记好了.(稍微扩容) p77 排序. 1.香农信息论 基于比较的排序不可能突破o(nlogn)的复杂度限制 ...

//codeforces471D//kmp初学

// codeforces 471d // #includelt;cstdiogt; #includelt;cstrin ...

搭建基于域名虚拟主机

修改主配置文件 # cd /etc/httpd/conf.d/ # vim vhost.conf lt;virtu ...

Mysql5.6.24zip解压缩版配置及修改默认编码方法

win64位下载地址: http://dev.mysql.com/downloads/file.phpid=456319 ...

图片的预加载和按需加载

图片预加载 lt;!doctype htmlgt; lt;htmlgt; lt;headgt; lt;meta htt ...

iPhone/iPad程序怎么禁止自动休眠

//禁止自动休眠可以通过这一句话搞定:[uiapplication sharedapplication].idletim ...

普林斯顿《算法II》第一周学习笔记UndirectedGraph

普林斯顿的算法课是cousera上评价挺高的一门课,课程的教学语言用的是java,课程中的算法都会被封装成类的形式,对于 ...

headFirst学习笔记之九:迭代器与组合模式(5.1)

1.任务: 大新闻!对象村餐厅和对象村煎饼屋合并了!可以在同一个地方吃早饭和午饭了hohoho(有什么好开森的对象村的小 ...

IOSapplicationWillResignActive

一、挂起当有电话进来或者锁屏,这时你的应用程会挂起,在这时,uiapplicationdelegate委托会收到通知,调 ...

哥我要向前看了

七年前的五一节前的那个周六,我遇到生命中一个重要的人。虽然相处短暂,好梦不长,但是回忆丰满,念念不忘。 七年后的五一节, ...

GoldSmith第二章

uhf:特高频 300m-3000mhz shf:超高频 3g-30g 所有发射与接收的信号都是实信号(因为调制器的振荡 ...

动态规划总结【模板】

最长递增子序列 给定一个序列,找到最长子序列的长度,使得子序列中的所有元素被排序的顺序增加。 1.求最长递增子序列的 ...

HDUACM1103Flo'sRestaurant

分析:借助stl的min_element实现。每次更新最先被占用的桌子,具体见注释。 #includelt;iostre ...

【翻译自mos文章】Oracledb12c中,每次日志切换时,会改变alert_sid.log的权限

12c中,每次日志切换时,会改变alert_sid.log的权限 来源于: alert log file‘s perm ...

poj1988(并查集)

题意:有30000个木块,编号从1到30000,然后有两种操作m a b,把木块a所在的堆块放到木块b所在的堆块上,操作 ...

org.hibernate.exception.GenericJDBCException:Couldnotopenconnection

1、错误描述 org.hibernate.exception.genericjdbcexception: could ...


本网站部分内容来自互联网,版权归原作者所有,文章内容仅代表原作者个人观点。如有侵权请联系我们删除 电子邮件 itjcku@foxmail.com