File Redirect
本网站相关文章:
- 文件-基本操作集
- 文件-过滤
- 文件-find
- 文件-grep
- 文件-locate
- 文件-lsof
- 文件-redirect
- 文件-regex
- 文件-rsync
- 文件-sed
- 文件-tar
- 文件-xargs
基础知识
重定向常见语法有如下基类:
- 输入重定向:
<
- 输出重定向:
>
- 输出追加:
>>
- 输入输出:
<>
- 关闭文件描述符:
&-
一些常见的设备文件
1 | /dev/fd/{num} 该目录下存在任何有效整数,表示该文件描述符已经被复制,例如0被复制到stdin |
平常脚本编写过程中经常使用到 0, 1, 2 描述符, 描述符在使用过程中有一些特殊的语法:
- 对 descriptor 的引用语法:
&[descriptor num]
, 例如2>&1
实际上就是将标准输出重定向到标准错误中 - 若未指定 descriptor, 则默认为 stdout
重定向分类
- 输入重定向
格式为fd<file 或者fd<<END
, 功能: 打开 file 指向的文件以便读取,并将其作为文件描述符 fd, 默认 fd 为 stdin, 例如:
1 | # a. 统计文件个数, 注意这里默认将fd隐藏了 |
注意, 如果 fd 非默认值则 fd 和<
之间不能有空格, 这种格式要求适用于下面的所有类型.
- 输出重定向
格式为fd>file, fd>>file, fd>|file
, 功能: 输出重定向或者追加到指定的文件中, 默认 fd 为 stdout, 例如:
1 | # a. 输出重定向, 注意, 不能写成1 >output.txt, 否则会识别成: 1 1>output.txt |
输出和错误输出重定向
格式:&>单词 或者 >&单词,优先使用第一种,但一般使用第二种
说明:等价于: >单词 2>&1
注意:从等价可以看出当前用法是一个特殊情况, 其中使用 descriptor 重定向到其他描述符时需要在目标描述符前加&
引用某个描述符的值: &1
输出和错误输出重定向的追加
格式:&>>单词
等价于: >>单词 2>&1
复制输入文件描述符
1 | 格式:[n]<&单词 |
说明:如果单词为-,表示关闭文件描述符 n,如果单词没有指定任何值,发生错误,默认 n 为 stdin
复制输出文件描述符
格式:[n]>&单词
说明:如果没有指定 n,默认为 stdout,特殊情况>&,见上面的输出和错误输出重定向,单词可以不是数字
转移文件描述符
1 | 格式:[n]<&数字- |
输入输出描述符
1 | 格式:[n]<>单词 |
命令行简单操作
1 | # 输出和错误重定向重定向一个文件 |
创建文件描述符
1 | # 常常用作临时存放0/1/2的容器 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 狂想写作本!
评论