mik*_*ana 25 bash file-descriptors
Security StackExchange 上的这个答案使用有趣的 bash 语法来生成内联文件:
openssl req -new -x509 -nodes -newkey ec:<(openssl ecparam -name secp384r1) -keyout cert.key -out cert.crt -days 3650
Run Code Online (Sandbox Code Playgroud)
这一点特别有趣:
<(openssl ecparam -name secp384r1)
Run Code Online (Sandbox Code Playgroud)
运行只是:
echo <(openssl ecparam -name secp384r1)
Run Code Online (Sandbox Code Playgroud)
我回来了 /dev/fd/63
所以这似乎用文件的内容创建了一个临时文件描述符。
这个叫什么?
ter*_*don 35
它被称为进程替换,是 bash、zsh 和 ksh(可能还有其他的,我不知道)的一个特性。它不是 POSIX,您不应该在可移植代码中使用它,但它非常有用。
这是 bash 手册的相关部分:
3.5.6 进程替换
在支持命名管道 (FIFO) 或命名打开文件的 /dev/fd 方法的系统上支持进程替换。它采用以下形式
Run Code Online (Sandbox Code Playgroud)<(list)
或者
Run Code Online (Sandbox Code Playgroud)>(list)
进程列表运行时其输入或输出连接到 FIFO 或 /dev/fd 中的某个文件。该文件的名称作为扩展的结果作为参数传递给当前命令。如果使用 >(list) 形式,写入文件将为列表提供输入。如果使用 <(list) 形式,则应读取作为参数传递的文件以获得 list 的输出。请注意,< 或 > 和左括号之间不能出现空格,否则该构造将被解释为重定向。
如果可用,进程替换与参数和变量扩展、命令替换和算术扩展同时执行。
归档时间: |
|
查看次数: |
1660 次 |
最近记录: |