与えられたプログラムから呼び出されると、スクリプトが標準出力を生成しないようにします。

与えられたプログラムから呼び出されると、スクリプトが標準出力を生成しないようにします。

私のgnome端末は、タイトルバーに現在のユーザーとホストを表示し、SSHを使用しているときにリモートユーザーとホストを表示したいと思います。

そのために、私は私のスクリプトの前にスクリプトを作成しまし~/bin/sshた。~/binPATH/usr/bin

#!/bin/bash
echo -ne "\033]0;${1}\007"
/usr/bin/ssh $@

これはかなりうまく機能します(予期しないパラメータの順序については堅牢ではありません)。 SSHセッションを終了した後も、ウィンドウのタイトルはうまく復元されます。

私の問題は、私が使用しようとしている他のプログラムがこのsshビルドによって妨げられることですstdoutgit fetch例えば、嘔吐\033]0;

ssh私の質問は:スクリプトの名前を維持しながら、stdout関連する場所にのみ提供するようにスクリプトをどのように改善できますか?

ウィンドウのタイトルを変更する必要があるかどうかを示す一種の変数が必要ですか?TERMviaを実行してもまだ定義されているので、うまくgitいかないようです。

文字列を別のストリームに送信できますか?

オプションを解析し、特定の条件では出力しないでくださいsshstdout

ベストアンサー1

標準出力がttyに接続されているかどうかをスクリプトで確認したいと思います。

このstackoverflowの質問を参照してください。Bashでisattyをチェックしてください。

#!/bin/bash

# set the terminal title, if I'm running in a terminal
if [[ -t 1 ]]; then echo -ne "\033]0;${1}\007"; fi

/usr/bin/ssh "$@"

常に引用しなければならないことに注意してください。"$@"

おすすめ記事