0
awk '{print FILENAME, $0}' <(ls) # output: /dev/fd/4 file
awk '{print FILENAME, $0}' < <(ls) # output: - file
在上述单行程序中,第一个生成文件描述符,然后生成文件名,第二个生成hypen( - )字符,然后生成文件名。为什么会这样?了解Unix进程替换行为
awk '{print FILENAME, $0}' <(ls) # output: /dev/fd/4 file
awk '{print FILENAME, $0}' < <(ls) # output: - file
在上述单行程序中,第一个生成文件描述符,然后生成文件名,第二个生成hypen( - )字符,然后生成文件名。为什么会这样?了解Unix进程替换行为
你可以看到它是这样的:
awk '{print FILENAME, $0}' <(ls)
# is the same as
awk '{print FILENAME, $0}' output_of_ls_command
awk
会读tmp文件(由bash
创造,让我们将其命名为output_of_ls_command
(这是/dev/fd/4
你的情况))
awk '{print FILENAME, $0}' < <(ls)
# is the same as
awk '{print FILENAME, $0}' < output_of_ls_command
awk
会读取stdin(bash
)读取tmp文件,并将内容发送至awk
,FILENAME
是-
)