如何在终端中启动命令,就好像我打开终端并输入命令
我花了很多时间打开终端并在终端中输入命令。如何在终端中启动命令,就好像我打开终端并输入命令
$ gnome-terminal
(change mouse focus to new terminal)
$ reset && clear && tail -F ~/file_that_grows
每隔一段时间,我都会发现自己要去那个窗口,用control-C来杀死进程,然后重新启动它。事实上,我通常会将复位& & ....位更改为更加可打字的东西,如rctf。
如何自动化过程的第一个位?目前为止我能做的最好的是
gnome-terminal --title rctf -e 'tail -F ~/.bashrc'
但是,这有很多问题。首先〜不会扩大,所以找不到文件。其次,当命令结束时,终端退出。
有什么办法可以自动启动一个终端,就好像我打开它然后键入了一些东西? (如果您可以在历史记录中获得命令,可以使用向上箭头重新启动该命令)。
如果你不介意在一个文件中存储你的命令,你可以在bash
滥用--rcfile
选项。例如,使用下面的脚本来存储您的命令(S):
[[email protected]]$ cat $HOME/.term-rcfile
. ~/.bashrc # chain in the standard rc file
tail -F ~/.bashrc # command to run
那么你可以这样做:
xterm -e "bash --rcfile $HOME/.term-rcfile -i"
还应为GNOME终端工作:
gnome-terminal -e "bash --rcfile $HOME/.term-rcfile -i"
“(额外的点,如果你可以在历史中获得命令,以便它可以重新启动向上箭头 )。“
我看不出如何自动做到这一点,但如果你运行:
history -r ~/.term-rcfile
一旦你在新的终端(或当你想/需要),从条目文件将被追加到您的历史记录(不运行它们),然后您将可以像访问正常历史记录一样访问它们。
使用$ HOME变量而不是代字号。
gnome-terminal --title rctf -e "tail -F $HOME/.bashrc"
对于交互式程序,我使用:
xterm -e 'sh -c "vi $HOME/foo.txt; sh"'
的sh -c
意味着,在我的命令字符串变量取代 和sh
末意味着我完成 后用shell启动vi
而不是关闭终端窗口。
对于像tail
非交互式程序,只能通过按CTRL-C 发送信号情报的过程中停下来,我用的是壳trap
内置,以确保一个 外壳运行,如果用户按下CTRL-C,而不是关闭终端窗口:
xterm -e sh -c 'trap sh SIGINT; tail -f $HOME/foo.txt'
这就是我想要的vi,但是使用尾部时,Ctrl-C杀死程序也会杀死xterm。 (使用xterm -e'sh -c“tail -F〜/ .bashrc; sh”') –
很久以前,但仍然很有趣我想在插入特殊的USB设备后打开gnome-terminal 。我在我的sh-file中导出了显示,它是从udev规则中调用的,并且在其中我发布了gnome-terminal。但是我希望这是只有脚本,在新的终端上打印一些信息并通过阅读等待用户的输入。 Interactive.It在我没有参数的情况下产生gnome-terminal时起作用,传递title不会做任何事情,x和e只是立即关闭窗口。什么可能是一个正确的方法? – icbytes