Shell 重定向

一直没搞懂 &> 和 <& 是表示什么意思。 今天自己总结一下,希望自己能理解它的真正含义。

重定向标准输入输出,切记 “1” 和 “>”之间没有空格

$ echo "hello world" 1> file
$ cat < file
hello world
$ echo "hello world" 2> file
hello world
$ cat < file
$

&表示什么意思

重定向可以用i>&j命令,表示把文件标识符i重新定向到j,你可以把"&"理解为"取地址"

$ echo "hello world 1>&2" 1>&2 > file
$ cat 0< file
hello world 1>&2
$

系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪,0对应stdin,1对应stdout, 2对应stderr。用复杂的例子说明一下更高级的用法:


$ echo 123456789 > file        把字符串写到文件filename中

$ cat file
123456789
$ exec 3<>file                 把文件file打开,并指定文件标识符为3

$ read -n 4 <&3                从文件中读4个字符,句柄已经指到第四个字符末尾

$ echo -n . >&3                在第5个字符处写一个点,覆盖第5个字符,-n表示不换行

$ exec 3>&-                    关闭文件标识符3

$ cat file
1234.6789
~$

现在cat filename文件的结果就成了 0123.56789

命令j<>filename表示把文件打开,并指明文件标识符为j 
"&-"表示关闭文件标识符

有关关闭文件标识符的操作请参考下面

n<&-        关闭输入文件标识符n
0<&-或<&-   关闭标准输入stdin
n>&-        关闭输出文件标识符n
1>&-或>&-   关闭标准输出stdout
时间: 2024-12-15 01:42:54

Shell 重定向的相关文章

linux shell 管道命令(pipe)使用及与shell重定向区别

linux shell 管道命令(pipe)使用及与shell重定向区别 看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了.这次我们看下管道命令了.shell管道,可以说用法就简单多了. 管道命令操作符是:"|",它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力.然后,传递给下一个命令,作为标准的输入 st

shell重定向调试信息

shell重定向调试信息 fulinux ************************************************************************************************************************************** 作        者:fulinux 转载声明:http://blog.csdn.net/fulinus/article/details/29912333 ****************

shell重定向介绍及使用

我们在写脚本或用脚本时,往往会发现 > /dev/null 2>&1 这类的命令.之前都是简单的了解一下,并没有深度消化,直到自己写脚本时,不认真写成了2>&1 >/dev/null,导致结果出问题.下面我通过网络给大家介绍一下: shell重定向介绍: 我们平时写的脚本或启动程序,某段代码会处理外部的输入,然后将调用传参指行命令结果输出到屏幕或指定的位置.在交互式的脚本中,输入来自用户的键盘和鼠标,结果输出到用户的屏幕或设备中.而对于某些后台运行的启动脚本或程序,

18 shell 重定向以及文件描述符

1.对重定向的理解 2.硬件设备和文件描述符 文件描述符到底是什么 3.Linux Shell 输出重定向 4.Linux Shell 输入重定向 5.结合Linux文件描述符谈重定向 6.Shell 对文件描述符的操作 7.改变当前shell环境的重定向目标 8.示例 1.对重定向的理解 Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 输入方向就是数据从哪里流向程序.标准输入方向是指数据从键盘流向程序,

shell 重定向以及文件描述符

1.对重定向的理解 Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 输入方向就是数据从哪里流向程序.标准输入方向是指数据从键盘流向程序,如果改变了它的方向,数据就从其它地方流入,这就是输入重定向. 输出方向就是数据从程序流向哪里.标准输出方向是指数据从程序流向显示器,如果改变了它的方向,数据就流向其它地方,这就是输出重定向. 2.硬件设备和文件描述符 计算机的硬件设备有很多,常见的输入设备有键盘.鼠标.麦

Shell重定向文件描述符

#!/bin/bash  最近在看shell,各种困惑,不过解决困惑的感觉还是很不错的.废话少说,linux中使用文件描述符来标识每个文件对象.文件描述符为一个非负整数,可以唯一标识会话中打开的文件.每个过程最多可以有9个文件描述符. linux使用的标准文件描述符: 标准输入STDIN就是0,标准输出STDOUT就是1,标准错误输出STDERR就是2.而我们也可以自己创建文件描述符3~8. 将今天看到的一段代码: 1    #!/bin/bash 2    exec  3>&1 3    

shell重定向

输入重定向 和输出重定向一样,Unix 命令也可以从文件获取输入,语法为: command < file 这样,本来需要从键盘获取输入的命令会转移到文件读取内容. 注意:输出重定向是大于号(>),输入重定向是小于号(<). 例如,计算 users 文件中的行数,可以使用下面的命令: $ wc -l users 2 users $ 也可以将输入重定向到 users 文件: $ wc -l < users 2 $ 注意:上面两个例子的结果不同:第一个例子,会输出文件名:第二个不会,因为

Linux管道指令(pipe)与shell 重定向的区别

多指令执行 符号 格式 作用 ; comd1;comd2  依次执行 && comd1 && comd2 comd1正确执行,commd2执行, comm1执行失败, commd2不执行 || comd1 || comd2  comm1执行失败,执行commd1 comm1执行成功,不执行commd2 管道 (|)与重定向(>, >>)的区别 管道命令操作符是:"|",它仅能处理经由前面一个指令传出的正确输出信息,也就是 standar

Shell重定向&&gt;file、2&gt;&amp;1、1&gt;&amp;2的区别

转自:http://www.360doc.com/content/13/0523/16/7044580_287544243.shtml shell上:0表示标准输入1表示标准输出2表示标准错误输出> 默认为标准输出重定向,与 1> 相同2>&1 意思是把 标准错误输出 重定向到 标准输出.&>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中 用例子说话: 1. grep da * 1>&2 2. rm -f $(find / -

shell 重定向与文件描述符

[解释] 重定向: 是动作,一种操作的action行为 文件描述符: 名词,文件的另一种表示,linux一切皆文件. [基础重定向形式] < 输入重定向 用途星级: ** << here-document  输入重定向 用途星级: *** > 输出重定向 用途星级: ***** >> 追加 用途星级: ***** 一.< 用法: cat 作为代表 cat功能:Concatenate FILE(s), or standard input, to standard o