我如何在terminal中启动一个命令,就像打开terminal并input命令一样

我花了很多时间打开terminal并在其中input命令。

$ gnome-terminal (change mouse focus to new terminal) $ reset && clear && tail -F ~/file_that_grows 

每隔一段时间,我都会发现自己要去那个窗口,用control-C来杀死进程,然后重新启动它。 实际上,我通常会将重置&& ….位replace为更加可打字的内容,比如rctf。

我怎样才能使stream程的第一步自动化? 我能做到的最好的是

 gnome-terminal --title rctf -e 'tail -F ~/.bashrc' 

但是这有很多问题。 首先〜不扩大,所以没有find文件。 其次,当命令结束时,terminal退出。

有没有办法自动启动一个terminal,就像我打开它,然后键入一些东西? (如果您可以在历史logging中获得命令,可以使用向上箭头重新启动该命令)。

如果您不介意将您的命令存储在文件中,则可以在bash滥用--rcfile选项。 例如,使用以下脚本来存储您的命令:

 [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 

一旦你在新的终端(或者你想要/需要的时候),文件中的条目将被附加到你的历史记录中(不需要运行它们),然后你就可以像访问正常的历史条目一样访问它们。

对于交互式程序,我使用:

  xterm -e 'sh -c "vi $HOME/foo.txt; sh"' 

sh -c意味着我的命令字符串中的变量被替换,最后的sh意味着我用vi完成后启动一个shell,而不是关闭终端窗口。

对于只能通过按CTRL-C向进程发送SIGINT来停止的非交互式程序,我使用内置的shell trap来确保在用户按下CTRL-C时运行一个shell,而不是关闭终端窗口:

  xterm -e sh -c 'trap sh SIGINT; tail -f $HOME/foo.txt' 

使用$ HOME变量而不是代字号。

 gnome-terminal --title rctf -e "tail -F $HOME/.bashrc"