如何在终端提示符下输入命令而不执行

如何在终端提示符下输入命令而不执行

我知道你可以简单地输入你想要运行的内容:

func()
{
    cd scripts
    ./excellent/script
}

但是,我想做的是将其./excellent/script放入我的命令行中而不输入。这样,当我运行时,func它会将我需要的东西放在那里并等待,直到我准备好;认为演示:

$ func
$ ./excellent/script

答案1

这样基本就可以实现了。真正发生的情况是,命令行提示符只是一个假提示符,但无论您输入什么,它都会立即执行,因此它也可能是一个真正的命令提示符。

func() {
    cd scripts
    read -e -p '$ ' -i './excellent/script' command
    eval $command
}

如果您的提示比 更复杂$,为了使其看起来正确,您可能需要在该行之前删除-p '$ '并添加一行echo -ne "[whatever] "或类似内容read

答案2

如果您使用 readline(例如,使用 bash),您可以将按键绑定到一个分配文本值的简单函数:

bind -x '"\C-T": READLINE_LINE=./excellent/script'

一旦您点击 ,这只会用给定的文本破坏当前的命令行(输入)Controlt。这个想法的缺点是,如果您想要准备多个示例,则键盘快捷键会耗尽。

灵感来自莫斯维的 在这里回答

相关内容