如何在shell脚本的命令提示符下输入文本而不执行命令?

blc*_*223 1 linux bash shell

有没有办法在命令提示符下输出shell脚本而不发出命令?

背景:我每天多次SSH到特定的机器,大约80%的时间,我登录后立即输入相同的三个命令.我只想把这些命令在我.bashrc,但20%的时间,我希望发出这些命令.我想知道是否有一些我可以放入的命令.bashrc会自动将一个字符串放在我的命令行中,这样当我登录时我会看到:

$ cd some/dir && ./some_script.sh
Run Code Online (Sandbox Code Playgroud)

然后我可以按80%的时间输入,或者只是在20%的时间内清除文本.

sha*_*uga 6

我知道这不是你问的,但为什么不用alias来缩短你的命令呢?

$ alias a='cd some/dir && ./some_script.sh'
Run Code Online (Sandbox Code Playgroud)

由于您经常使用此功能,因此可以将其添加到.bashrc文件中,这样您就不必每次都设置别名.
登录后您可以输入a

$ a
Run Code Online (Sandbox Code Playgroud)


che*_*ner 6

(受Abdul Rehman的回答启发.)

把它作为文件的最后一行.bashrc:

read -e -p "(Control-C to cancel) $ " -i "cd some/dir && ./some_script.sh" && eval "$REPLY"
Run Code Online (Sandbox Code Playgroud)
  • read -e 允许您使用Readline输入字符串进行编辑.
  • 所述-p提供伪提示此一次性命令.
  • -i提供的信息可以编辑或按回车键接受默认的字符串.

如果按Enter键,则read设置值REPLY和退出状态为0,导致eval执行以下操作.(通常,eval这不是一个好用的命令;但是,在这里你会得到一个交互式shell,所以这里没有太大的风险.)如果你键入Control- C而是read退出状态1并且eval不执行以下操作,离开你在命令提示符下.