从https://www.gnu.org/s/bash/manual/html_node/Redirections.html
在执行命令之前,可以使用 shell 解释的特殊符号来重定向其输入和输出。重定向允许命令'文件句柄可以复制、打开、关闭、引用不同的文件,并且可以更改命令读取和写入的文件。也可以使用重定向来修改文件句柄在当前的 shell 执行环境中。
然而,链接中的以下文本显示重定向对文件描述符(整数)进行操作。
文件句柄和文件描述符是不同的。从https://en.wikipedia.org/wiki/File_descriptor#OverviewFILE
,文件句柄是C标准库中的数据结构。文件描述符是 Unix 和类 Unix 操作系统中的对象。
bash手册中引用中的“文件句柄”是什么意思?
答案1
Bash 文档使用术语“文件句柄”作为“文件描述符”的同义词。
程序不需要使用 C 标准库进行 I/O。显然,如果他们这样做,他们可以使用从文件描述符之一fdopen()
获取(指向)结构。FILE
答案2
(在Linux系统中)如果你写:
ls -l /proc/$$/fd
它将写入打开的 fd(文件描述符)列表:
lrwx------ 1 user user 64 dic 8 00:06 0 -> /dev/pts/12
lrwx------ 1 user user 64 dic 8 00:06 1 -> /dev/pts/12
lrwx------ 1 user user 64 dic 8 00:06 2 -> /dev/pts/12
lrwx------ 1 user user 64 dic 8 00:06 255 -> /dev/pts/12
那些是也称为“文件句柄”。
如您所见,数字是 0,1,2。它们与 stdin(0)、stdout(1)、stderr(2) 相同。
因此,重定向适用于这些号码(如 >&2),并且可以创建一些新号码(如 >&18)。
这些文件描述符也可以通过其他一些旧名称访问,例如:/dev/stdout、/dev/fd1 或其他一些名称。
维基百科有一个合理的良好描述