c++ - 在后台 C++ 程序/bash 脚本中捕获 linux 命令的输出

标签 c++ linux bash background output

我想创建将在后台运行的 c++ 程序或 bash 脚本,例如每当我使用所选命令时

pwd 它将捕获该命令的输出,比方说 ~Desktop/folder1 并将该输出更改为 You are in ~Desktop/文件夹 1。因此,结果将是用户在使用命令 pwd 后只会看到 You are in ~Desktop/folder1

Pwd 命令只是示例,我想修改其他命令的输出,如 ls、ps 等。

我希望该脚本在所有终端中都能正常工作,也就是说,如果我打开另一个终端,它仍会捕获该终端中所选命令的输出。

问题:

甚至可以编写可以执行此类操作的 c++ 程序或 bash 脚本吗?

最佳答案

您可以将 shell 函数定义放入您的 bash 环境配置脚本中,这将具有您描述的效果。例如,

~/.bash_profile:

# ...

pwd() {
  echo You are in $(command pwd)
}

export -f pwd

注意使用 command 命令来避免 shell 函数 pwd 中的递归。另请注意 export -f 将函数导出到子进程。对于要覆盖的每个命令,您都需要这样的代码段。

根据您的系统和配置,将它们放在 ~/.bashrc 中可能更合适。或者,如果您希望它适用于每个用户,那么您可以将它们放在系统范围的 bash 配置脚本之一中。但是请注意,用户将能够覆盖它。

关于c++ - 在后台 C++ 程序/bash 脚本中捕获 linux 命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37258218/

相关文章:

c++ - 来自 ISO C++ draft (n3290) : 3. 4.3.2/1 命名空间成员的一点

c++ - 在 C++ 中使用 strtok 解析命令行参数

linux - linux ubuntu/bin/sh : curl: not found? 上的脚本错误

linux - 在 Linux 中登录时可以使用 control、shift 或其他特殊组合键作为密码吗?

linux - Awk:如何用新行构建一个字符串变量?

c++ - 如何将局部变量传递给 lambda 函数?

c++ - 将包含 int 的字符串读取到数组的最快方法是什么

c - linux 在哪里存储我的系统日志?

c++ - UART 上的串行数据被损坏

bash - 是否可以在不关闭输入流的情况下将输入流的前导字节复制到另一个文件?