実際の実行タスクのベストプラクティスをフィルタリングするためのより多くのIQを提供します。

実際の実行タスクのベストプラクティスをフィルタリングするためのより多くのIQを提供します。

チェックインすると画面現在実行中のジョブ(ctrl / a + ")について、次のようになります。

 Num Name                                                                                                                
   0 -bash  
   1 -bash  
   2 -bash  

...これは正しいです。通常、私のすべての画面ウィンドウでbashが実行されています。しかし、これは私が見たいものではありません。このウィンドウで実際に実行されたコマンドを見たいです。 ssh-ing、rsync-ing、ビルドスクリプトの実行など、何でも構いません。

 Num Name                                                                                                                
   0 ssh to@this 
   1 rsync this./ [email protected]:/path
   2 make world

今私が考える最善の考えは、新しいコマンドを実行するたびにbashが何とか画面プロセスと会話し、その瞬間に何が起こっているのかを理解する必要があるということです。たとえば、Unixパイプのデータグラムメッセージです。おそらくこれは達成するのは簡単ではないでしょう。

少なくとも似たようなものを手に入れることができますか?

答え1

短い答え:

  • 次の行を追加します。$HOME/.bashrc4

    case "$TERM" in
        screen*) PROMPT_COMMAND='printf "\ek\e\\\\"'
    esac
    
  • 次の行を追加$HOME/.screenrc

    shelltitle '$ | bash'
    

説明する:

screen"<search pattern>|<window name>"ウィンドウ名と<ESC>k<ESC>\プロンプトの一部としてシーケンスを設定することでアクティブになるシェル固有の経験的な方法があります。2

<ESC>k<ESC>\画面は、前のコマンド名を消去して次のコマンドを準備するために使用されます。シェルから改行文字を受け取ると、プロンプトの終わりを検索します。screen一致する文字列の後の最初の単語を取得し、コマンド名として使用します。

プロンプトの一部としてPROMPT_COMMAND='printf "\ek\e\\\\"'設定するために使用されます。サブコマンド(ここでは機能しません)を<ESC>k<ESC>\使用して追加して、メインウィンドウのタイトルを設定します。shelltitletitle

shelltitle '<end of prompt>|<default window name>'

到着$HOME/.screenrc2 5

新しい設定をロードしたら、実行windowlist中のコマンドを表示する必要があります。


2.screen動的タイトル:https://www.gnu.org/software/screen/manual/html_node/Dynamic-Titles.html#Dynamic-Titles
4. 類似の投稿:https://superuser.com/questions/244299/gnu-screen-how-to-update-dynamically-the-title-of-a-window
5.例shelltitlehttps://www.gnu.org/software/screen/manual/html_node/Title-Screenrc.html
追加:
3. 情報PROMPT_COMMAND:https://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html

関連情報