2016-09-22 27 views
1

我想写一个BASH脚本来输出一个部分完成的命令,然后我可以添加参数,然后按ENTER键然后运行。我希望这能够在BASH中完全实现。Bash:建立一个新的命令而不执行

例如

~> ./test.sh 
~> ls -al <CURSOR POSITION HERE> 

我发现,收盘时唯一的变量是PROMPT_COMMAND变量,它设置在内部test.sh为“LS -al”,那么将立即执行,一旦剧本已退出。

有没有办法停止立即执行,所以我可以添加,比如说* .log?

+0

我不知道如何[如何预填命令行输入(http://stackoverflow.com/questions/10866005/how-to-prefill-command-line-input )是重复的。那里的答案是用C写的,而不是Bash。 – wjandrea

+2

@wjandrea这是完全相同的问题,如果有的话,应该在那里添加一个新的答案。 “重复”不涉及答案。现在我们已经在两个不同的地方结束了对同一问题的两个有效答案。 –

回答

2

如何

read -e -p"$PWD> " -i"ls -al " cmd; eval "$cmd" 
+0

是的 - 这正是我以后的感谢! –

+1

但请注意,这将在新的shell中运行命令,而不是当前的shell。 – chepner

+0

@chepner:好的我修改了使用'eval'的建议。 –