我想在 Linux 中输入用户定义命令时打开一个新终端。例如,当我tcpdump
在终端中输入命令时,这将为 tcpdump 打开一个新的会话终端。
因此,在新打开的终端中,为了捕获数据包,我只需写入-i eth0
而不是tcpdump -i eth0
。新终端将在内部执行命令tcpdump
。
那么这些可能吗?
答案1
我假设您想在 (Linux) 桌面上的新终端窗口中运行该命令。大多数终端仿真器似乎都有-e
运行命令的选项,因此您可以执行以下操作:
urxvt -e $SHELL -c 'read -p "Options: " OPTS; tcpdump $OPTS' &
urxvt
用aterm
、xterm
或Konsole
您正在使用的任何终端仿真器进行替换。
如果您希望窗口在命令完成后保持打开状态,则必须采取额外步骤(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