Bash 在新终端中打印cowsay
我想运行一个名为tuxsay的脚本,它结合了fortune和cowsay,让tux说一些智慧的话。我在by.bash_别名中创建了一个别名,称之为tuxsay并执行脚本Bash 在新终端中打印cowsay,bash,shell,terminal,spawn,Bash,Shell,Terminal,Spawn,我想运行一个名为tuxsay的脚本,它结合了fortune和cowsay,让tux说一些智慧的话。我在by.bash_别名中创建了一个别名,称之为tuxsay并执行脚本 FORTUNE= $(fortune) cowsay -f tux $FORTUNE 然后,我有一个脚本,它将生成一个新的终端,我希望它输出我的第一个脚本的结果,然后允许我在终端中工作,类似于 xterm-e“tuxsay&” 那么,我如何使用cowsay生成一个新的终端,然后允许我在其中工作呢 具体说明:我有一个启动脚本,它
FORTUNE= $(fortune)
cowsay -f tux $FORTUNE
然后,我有一个脚本,它将生成一个新的终端,我希望它输出我的第一个脚本的结果,然后允许我在终端中工作,类似于
xterm-e“tuxsay&”
那么,我如何使用cowsay生成一个新的终端,然后允许我在其中工作呢
具体说明:我有一个启动脚本,它将生成我通常使用的应用程序,我希望它生成一个终端,运行我的tuxsay脚本,然后允许我工作。我在Ubuntu 12.04 LTS上运行dwm 6.0,为什么不把你的命令添加到你的
.bashrc
文件中呢?然后,它将在每次启动新的交互式shell时运行。您可以测试$TERM
变量是否包含“xterm”,并使输出以该变量为条件。e、 g.在.bashrc
的末尾添加以下行:
[[ "$TERM" =~ xterm ]] && tuxsay
更新
虽然我认为以上可能仍然是最有用的一般答案,但我注意到了更多的事情:
是bash别名。bash别名只能在bash本身中理解,但是当您将命令传递给tuxsay
时,该命令将直接由xterm执行,而不涉及任何bash。系统将无法找到并执行名为“tuxsay”的文件,并将失败xterm-e
- 如果从bash执行,
字符将把tuxsay命令(别名)放在后台,但这在这里并没有真正的帮助。您需要的是在tuxsay完成后启动一个新的shell&
- 小心使用
。我在基于Redhat的系统上注意到,放置在该文件中的别名不起作用,因为.bash\u别名
文件没有来源。()所以它看起来像是.bash\u alias
默认来源于基于Ubuntu的系统,但对其他系统没有任何保证。bash_别名
xterm -e 'cowsay -f tux $(fortune); bash'
这将传递复合命令cowsay-f tux$(fortune);bash
到xterm。这个复合命令由两个命令组成:首先执行cowsay
操作,然后启动bash
您还可以将这两个命令放在shell脚本中,并将shell脚本传递给xterm。尝试现有命令时会发生什么?我也不认为有理由使用
&
,因为我假设tuxsay
只会打印您的消息并返回。xterm-e
不会生成任何东西,但是如果它只有一个命令,它会生成一个新的xterm。变量赋值中等号两边都不允许有空格:FORTUNE=$(FORTUNE)
,但仍然无法生成终端