如何链接命令,即使一个命令的输出成为另一个命令的输入?
basename | dirname /dev/null
预期输出:
dev
实际输出:
usage: basename string [suffix]
basename [-a] [-s suffix] string [...]
/dev
还尝试了以下但它也没有用:
dirname /dev/null | basename
如何链接命令,即使一个命令的输出成为另一个命令的输入?
basename | dirname /dev/null
预期输出:
dev
实际输出:
usage: basename string [suffix]
basename [-a] [-s suffix] string [...]
/dev
还尝试了以下但它也没有用:
dirname /dev/null | basename
它应该是:
尽管对于无法保证路径组件不会以 开头的任意文件路径,
-
您需要添加一些--
s 来标记选项的结尾:$(...)
可用于运行命令并收集输出以用作另一个程序的命令行参数。请注意,由于从命令输出中
$(...)
删除了所有尾随的换行符,以上内容仍然不适用于任意文件路径;在上面的示例中,目录名以换行符结尾的那些。解决这个问题虽然可能,但非常痛苦,以至于通常会忽略该问题。在 zsh shell 中,可以使用 csh 样式修饰符来获取没有问题的文件的
t
ail (basename) 或ead (dirname):h
这些修饰符也可用于
vim
. 它们在 中也可用bash
,但仅用于历史扩展,而不是像 csh 或 zsh 中那样的参数扩展。