エイリアスを使用した端末のタイトル名の変更とアプリケーションの実行

エイリアスを使用した端末のタイトル名の変更とアプリケーションの実行

端末のタイトルの名前を変更し、アプリケーションを実行するコマンドを作成しようとしたときに、このコマンドを.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次のように実行されます。

アプリケーションの終了後にヘッダーはリセットされませんが、デフォルトのシェルプロンプトはこれを行います。

関連情報