Linux命令执行技巧深度解析
1. 进程替换的工作原理
在Linux操作系统中,当打开一个磁盘文件时,系统会用一个整数(文件描述符)来表示该文件。进程替换通过运行一个命令,并将其输出与一个文件描述符关联起来,从而模拟一个文件。从访问该输出的程序的角度来看,输出就好像存储在磁盘文件中一样。
可以使用 echo 命令查看文件描述符:
$ echo <(ls)
/dev/fd/63
在这个例子中, <(ls) 的文件描述符是63,它在系统目录 /dev/fd 中被跟踪。
需要注意的是,标准输入(stdin)、标准输出(stdout)和标准错误(stderr)分别由文件描述符0、1和2表示,这就是为什么重定向标准错误使用 2> 语法的原因。
<(…) 表达式创建一个用于读取的文件描述符,而 >(…) 表达式创建一个用于写入的文件描述符,但在25年的使用中,作者从未需要用到后者。
进程替换是一个非POSIX特性,可能在你的shell中被禁用。要在当前shell中启用非POSIX特性,可以运行 set +o posix 。
2. 命令字符串化技术
每个命令本质上都是一个字符串,但有些命令的“字符串特性”更为明显。以下是几种构建字符串并将其作为命令运行的技术:
超级会员免费看
订阅专栏 解锁全文
402

被折叠的 条评论
为什么被折叠?



