Answers:
只需使用echo
...将它放在您要扩展的命令前面即可。我经常使用它。
$ ls
one.txt
two.txt
three.dat
$ echo rm *.txt
rm one.txt two.txt
$ rm *.txt
您可以使用Home和Del快速添加/删除前面的echo
。
编辑
正如指出的意见,如果该命令不只是一个简单的命令(例如,如果它是一个这是不行的for
循环,使用管道|
,或&&
或其他任何类似的)。
echo cat * | someprogram
但您并未从此答案中想到。
您可以使用set -x
。
例如,考虑以下脚本:
$ cat script.sh
set -x
echo *
运行时,它会echo
在实际执行之前显示扩展语句:
$ bash script.sh
+ echo file1 file2 file3 script.sh
file1 file2 file3 script.sh
而且,正如Kundor所指出的,这也可以在命令行上交互地工作:
$ set -x
+ set -x
$ echo *
+ echo file1 file2 file3 script.sh
file1 file2 file3 script.sh
man bash
解释set -x
如下:
展开每个简单命令(对于命令,大小写命令,选择命令或对命令的算术)后,显示PS4的扩展值,然后显示该命令及其扩展的参数或关联的单词列表。
PS4
如上所示,其默认值是一个加号,后跟一个空格。
对于交互式外壳,在键入glob模式后按,Ctrl+x
然后按*
,将在扩展该glob模式的情况下编辑命令行。从bash手册页:
全局扩展词(
C-x *
)point之前的单词被视为路径名扩展的模式,并且插入了匹配文件名列表,以替换该单词。如果提供了数字参数,则在路径名扩展之前会附加一个星号。
您可能也对glob-list-expansions(Ctrl+x
,g
)感兴趣。
Ctrl+x, *
在键入后立即echo *
按Enter键?如果仍然无法使用,则可以修改~/.inputrc
glob-expand-word并将其绑定到其他内容。
Ctrl+x
然后按Shift+8
。您可以尝试选择是否可行Ctrl+x, g
,或者,正如我前面所说的,在.inputrc
文件中分配您自己的密钥。