繁体   English   中英

如何在终端中启动命令,就像我打开终端并输入命令一样

[英]how do I start a command in a terminal as if I'd opened the terminal and typed the command

我花了很多时间打开终端并输入命令。

$ 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'

但是这有各种各样的问题。 首先〜没有扩展,所以找不到文件。 其次,当命令结束时,终端退出。

有没有办法自动启动一个终端,就像我打开它然后输入一些东西一样? (如果您可以在历史记录中获取命令以便可以使用向上箭头重新启动,则可以获得额外分数)。

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

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

sh -c表示我的命令字符串中的变量被替换,而末尾的sh表示在我用vi结束而不是关闭终端窗口之后启动shell。

对于像tail这样只能通过按CTRL-C将SIGINT发送到进程来停止的非交互式程序,我使用内置的shell trap来确保如果用户按下CTRL-C而不是关闭终端窗口:

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

如果您不介意将命令存储在文件中,则可以滥用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

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

使用$ HOME变量而不是波形符。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM