有时我想运行一个命令,作为该命令的参数,我想提供位于文件系统层次结构深处的文件夹中的多个文件,例如:
command /this/is/a/long/path/foobar /this/is/a/long/path/quux
我希望我可以使用括号扩展,并且确实可以这样做:
command /this/is/a/long/path/{foobar,quux}
但是,文件名可能很长,我想使用文件名完成(TAB 键),但它似乎在括号内不起作用,有什么想法吗?
答案1
一个小解决方法:在 Bash 中,[Ctrl]+u
从命令行开头到光标处删除,并将其放入内存中,然后将[Ctrl]+y
其“拉”(粘贴)回去。
因此假设您想要运行该命令ls
并将其作为参数文件提供./deep/below/directory/
,您可以:
1)首先输入长目录名,前面加一个空格(这将节省以后的几个击键):(
./deep/below/directory/
您可以[Tab]
根据需要使用),然后输入[Ctrl]+u
,这将删除它并将其保存在内存中(注意:如果是相对路径,则必须在目录名开头使用'./',否则 bash 不会在命令行开头自动完成目录名)
2)然后输入命令(及其选项),后跟空格:例如: ls -alFtr
3)使用[Ctrl]+y
在这里提取长目录名,然后输入您要查找的文件名的开头,并[tab]
像平常一样使用自动完成其名称(剪切的目录名仍然在内存中,可以重复使用)
4) 根据需要重复步骤 3) 多次
5)[Enter]
输入的时间很长,但使用起来更快^^,试试看!