linux - 如何预填充命令行输入

标签 linux bash

我正在运行一个 bash 脚本,我想在执行脚本后用一些命令预填充命令行。唯一的条件是脚本当时不能运行。

我需要的是...

  1. 运行脚本
  2. 在脚本停止后在我的命令行中预填文本

有可能吗?我所尝试的只是使用

模拟 bash 脚本
read -e -i "$comm" -p "[$USER@$HOSTNAME $PWD]$ " input
command $input

但我正在寻找更直接的东西。

最佳答案

您需要使用 TIOCSTI ioctl。下面是一个示例 C 程序,展示了它是如何工作的:

#include <sys/ioctl.h>

main()
{
    char buf[] = "date";
    int i;
    for (i = 0; i < sizeof buf - 1; i++)
      ioctl(0, TIOCSTI, &buf[i]);
    return 0;
}

编译并运行它,“日期”将被缓冲为标准输入的输入,您的 shell 将在程序退出后读取它。您可以将其组合成一个命令,让您可以将任何内容填充到输入流中,并在您的 bash 脚本中使用该命令。

关于linux - 如何预填充命令行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10866005/

相关文章:

bash - 为什么在可执行文件或脚本名称之前需要 ./(点斜杠) 才能在 bash 中运行它?

bash - 检查是否 SSH 提示输入密码

linux - 别名在 Linux 机器上不起作用

c++ - 如何使用 boost::call_once 在 Linux 上用 C++ 设计单例类?

bash - 有条件地运行脚本在 travis.yml 中不起作用,为什么?

bash - 如何从 Cygwin 调用 bat/cmd 文件并继承变量?

linux - 哪个版本的 XMLSec 可用于 SUSE 11 和 12?

linux - 将 linux 内核信号量初始化为负数是否合法?

linux - 发送超过 25000 份简讯 smtp

linux - 为什么我在 shell 中读取 fifo 时出错?