![重命名终端标题&&使用别名运行应用程序](https://linux22.com/image/213793/%E9%87%8D%E5%91%BD%E5%90%8D%E7%BB%88%E7%AB%AF%E6%A0%87%E9%A2%98%26%26%E4%BD%BF%E7%94%A8%E5%88%AB%E5%90%8D%E8%BF%90%E8%A1%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
尝试创建一个重命名终端标题并运行应用程序的命令,我将这些命令添加到 .bash_aliases 文件中。我正在使用的重命名命令是:PS1='\[\e]0;test\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
如果我单独使用它并且在运行应用程序后它会按预期工作。但如果我使用这样的命令:
alias rpcs3="PS1='\[\e]0;test\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' && ./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage"
使用后一个命令,终端标题仅在应用程序关闭后更改,如下例所示:
关闭应用程序之前
关闭应用程序后
我应该怎么办?
答案1
该别名不起作用,因为 shell 提示符会等待程序完成。
解决此问题的方法是首先调用命令./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage
并在后台运行它:
alias rpcs3="./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage & PS1='\[\e]0;test\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '"
考虑到你的命令将在后台运行,当你按下时,Enter你将返回到 shell 提示符(标题将在之前设置,所以这不再有问题)。如果您想返回前台进程,./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage
您应该使用命令:fg
。要获取当前 shell 中哪些作业在后台运行,您可以使用内置的 command/shell jobs
。例如:
$> jobs -l
#Output
[1] Running gnome-calculator &
[2]- Running gnome-calculator &
[3]+ Running nautilus &
如果我想返回前台进程,nautilus
我可以使用:
fg 3
#You can also specify the `command name` instead of the ID.
在您的情况下,您可能只会在后台有一个进程(./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage
)。所以你可以简单地使用fg 1
.
答案2
您正在尝试使用提示来更改标题,这意味着只有当您的应用程序退出时标题才会更改。更好的方法可能是直接在脚本中更改标题:
#!/bin/sh
title='this is a test'
base='/PATH/TO/THE/ABSOLUTE/LOCATION/OF/rpcs3' # Fixme
[ -n "$TERM" ] && printf "\033]0;%s\007" "$title"
exec "$base/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage"
将此脚本放在您的路径中的某个位置(通常$HOME/bin
甚至是/usr/local/bin
)并使其可执行。然后您可以像调用任何其他程序一样调用它。例如,如果您调用了该文件,dorpcs3
那么这就是您运行的内容。
请注意,这不会在应用程序退出后重置标题,但默认的 shell 提示符会为您执行此操作。