我想让 bash 脚本在文件描述符(FD)打开时将附加信息输出到大于或等于 3 的文件描述符(FD)。为了测试 FD 是否打开,我设计了以下技巧:
if (printf '' 1>&3) 2>&-; then
# File descriptor 3 is open
else
# File descriptor 3 is not open
fi
Run Code Online (Sandbox Code Playgroud)
这足以满足我的需求,但我很好奇是否有更惯用的方法来测试 FD 是否有效。我特别是约是否存在所述的映射感兴趣fcntl(1)系统调用到外壳命令,这将允许FD标志的检索(O_WRONLY和 O_RDWR测试的FD是否可写,和O_RDONLY和 O_RDWR测试的FD是否可读)。
有没有办法创建一个类似于这样的文件系统对象:
mknod files p
cat file1 file2 ... fileN > files
Run Code Online (Sandbox Code Playgroud)
但是这样就可以找到它,就好像它是一个普通文件一样?
假设我有一个包含 CRLF 行结尾的任意文本输入:
$ curl -sI http://unix.stackexchange.com | head -4
HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Length: 80551
Content-Type: text/html; charset=utf-8
$ curl -sI http://unix.stackexchange.com | head -4 | hexdump -C
00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d |HTTP/1.1 200 OK.|
00000010 0a 43 61 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 |.Cache-Control: |
00000020 70 75 62 6c 69 63 2c 20 6d …Run Code Online (Sandbox Code Playgroud)