端末のタイトルの名前を変更し、アプリケーションを実行するコマンドを作成しようとしたときに、このコマンドを.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
シェルプロンプトはプログラムが完了するのを待つため、このエイリアスは機能しません。
この問題に対する解決策は、まずコマンドを呼び出して./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シェルプロンプトに戻ります(タイトルは事前設定されているため、これ以上問題になりません)。フォアグラウンドプロセスに戻るには、./rpcs3/rpcs3-v0.0.25-14385-b639f3c8_linux64.AppImage
次のコマンドを使用する必要がありますfg
。現在のシェルのバックグラウンドでどのタスクが実行されているかを確認するには、組み込みコマンド/シェルを使用できます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.
あなたの場合は、バックグラウンドにプロセスが1つしかありません(./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
次のように実行されます。
アプリケーションの終了後にヘッダーはリセットされませんが、デフォルトのシェルプロンプトはこれを行います。