在 Linux 中运行命令时打开一个新的专用终端

在 Linux 中运行命令时打开一个新的专用终端

我想在 Linux 中输入用户定义命令时打开一个新终端。例如,当我tcpdump在终端中输入命令时,这将为 tcpdump 打开一个新的会话终端。

因此,在新打开的终端中,为了捕获数据包,我只需写入-i eth0而不是tcpdump -i eth0。新终端将在内部执行命令tcpdump

那么这些可能吗?

答案1

我假设您想在 (Linux) 桌面上的新终端窗口中运行该命令。大多数终端仿真器似乎都有-e运行命令的选项,因此您可以执行以下操作:

urxvt -e $SHELL -c 'read -p "Options: " OPTS; tcpdump $OPTS' &

urxvtatermxtermKonsole您正在使用的任何终端仿真器进行替换。

如果您希望窗口在命令完成后保持打开状态,则必须采取额外步骤(urxvt有此选项-hold,但其他终端仿真器没有)。

答案2

你可以使用以下方式获得一个很好的解释器界面右包裹(您可能可以通过发行版的包管理器进行安装)。

while rlwrap -o -P "tcpdump " -C tcpdump sh; do :; done

这将为您提供一个 shell,其中命令行的开头已经有“tcpdump”。它还将保留您之前使用该命令运行的命令的历史记录。

运行exit 1以退出 shell。

您可以使用 Ansgar Wiechers 的方法在新终端窗口中运行该命令。

答案3

你可以尝试 Terminator,然后按命令拆分窗口,或者修改我编写的脚本以按服务器拆分 ssh,按命令拆分需要做一些工作,但所有可能https://github.com/vahidhedayati/termssh

相关内容