linux - 如何在不执行命令的情况下从 shell 脚本在命令提示符下输入文本?

标签 linux bash shell

有没有办法让 shell 脚本在命令提示符下输出文本而无需发出命令?

背景:我每天多次通过 SSH 连接到一台特定的机器,大约 80% 的时间,我一登录就输入相同的三个命令。我只是将这些命令放在我的 .bashrc 中,但有 20% 的时间,我不想想要发出这些命令。我想知道是否有一些命令可以放入 .bashrc 中,它会自动在我的命令行中放置一个字符串,这样当我登录时我会看到:

$ cd some/dir && ./some_script.sh

然后我可以在 80% 的时间内只按回车键,或者在另外 20% 的时间内清除文本。

最佳答案

(灵感来自 Abdul Rehman's 答案。)

将此作为 last 行放入 .bashrc 文件中:

read -e -p "(Control-C to cancel) $ " -i "cd some/dir && ./some_script.sh" && eval "$REPLY"
  • read -e 可让您使用 Readline 输入字符串进行编辑。
  • -p 为这个一次性命令提供伪提示。
  • -i 提供了一个默认字符串,您可以对其进行编辑或按 Enter 键接受。

如果您按下 Enter,read 会设置 REPLY 的值并以状态 0 退出,导致执行以下 eval。 (通常,eval 不是一个好用的命令;但是,无论如何,在这里您都会看到一个交互式 shell,所以这里没有太大的风险。)如果您键入 Control-C 相反,read 以状态 1 退出并且未执行以下 eval,让您留在命令提示符下。

关于linux - 如何在不执行命令的情况下从 shell 脚本在命令提示符下输入文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286740/

相关文章:

c - GCC 将字符串常量存储在哪里以及这些指针从何处映射?

linux - Wget如何将文件保存在特定位置

运行 MATLAB 的 Bash 脚本错误

linux - "Read"每行跳过最后一个字

linux - 如何阻止 objcopy 填充部分

linux - Grep nmap 输出

linux - bash 命令创建自定义命名文件

linux - 导出不通过另一个脚本工作

linux - Shell 变量扩展 - 使用 env 调用实用程序时的间接寻址

linux - 使用 cat 和 bash 加入文本文件