我花了很多时间打开终端并输入命令。
$ 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'
但是这有各种各样的问题。首先〜没有扩展,所以找不到文件。其次,当命令结束时,终端退出。
有没有办法自动启动一个终端,就像我打开它然后输入一些东西一样? (如果您可以在历史记录中获取命令以便可以使用向上箭头重新启动,则可以获得额外分数。)
答案 0 :(得分:3)
对于交互式程序,我使用:
xterm -e 'sh -c "vi $HOME/foo.txt; sh"'
sh -c
表示我的命令字符串中的变量被替换
并且最后的sh
表示我完成后启动了一个shell
使用vi
而不是关闭终端窗口。
对于像tail
这样的非交互式程序,只能通过按CTRL-C来停止
要将SIGINT发送到进程,我使用内置的trap
shell来确保a
如果用户按下CTRL-C而不是关闭终端窗口,则运行shell:
xterm -e sh -c 'trap sh SIGINT; tail -f $HOME/foo.txt'
答案 1 :(得分:3)
如果您不介意将命令存储在文件中,则可以滥用--rcfile
中的bash
选项。例如,使用以下脚本存储命令:
[me@home]$ 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-terminal:
gnome-terminal -e "bash --rcfile $HOME/.term-rcfile -i"
“(如果您可以在历史记录中获取命令以便可以使用向上箭头重新启动,则为额外点数。)
我无法看到如何自动执行此操作,但如果您的运行:
history -r ~/.term-rcfile
一旦你进入新的终端(或者你想要/需要的话),文件中的条目将被附加到你的历史记录中(不运行它们),然后你可以像普通的历史条目一样访问它们。
答案 2 :(得分:1)
使用$ HOME变量代替波浪号。
gnome-terminal --title rctf -e "tail -F $HOME/.bashrc"