web-dev-qa-db-ja.com

SSHワンライナーコマンドを取得して色を表示する

SSHワンライナーコマンドで色付きのテキスト出力を有効にしたいのですが、OS X、Ubuntu 14.10、またはOpenSUSE12.2では機能しないようです。

サーバーにSSHで接続して、次のように入力すると、ls --color=autoプロンプトでは、ディレクトリ、シンボリックリンク、および通常のファイルをさまざまな色で表示して問題なく動作しますが、同じシステムのsshワンライナーにコマンドを配置した場合:ssh user@Host "ls --color=auto"、出力は色付けされていません。

入力echo $TERM私にxterm-256colorワンライナーステートメントに入れるかどうか。

これは主にリモートビルドでの色分けエラーと警告のためですが、すべてに対して有効にしておくと便利です。

何かアドバイス?

7
Adam Naber
ssh user@Host "ls --color=auto"

lsは、端末に書き込んでいるときにのみ色を出力します。リモートホストで実行するsshのコマンドを指定すると、sshはデフォルトでTTY(ターミナルインターフェイス)を割り当てません。したがって、上記のコマンドを実行すると、sshはリモートシステムに端末を割り当てず、lsは端末に書き込んでいないことを確認し、色を出力しません。

-tオプションを指定してsshを実行し、端末を割り当てることができます。以下は色を印刷する必要があります。

ssh -t user@Host "ls --color=auto"

sshが非対話的に実行されており、独自のローカル出力が端末に送信されない場合、単一の-tフラグは無視されます。この場合、-tを複数回指定して、sshにリモートシステムにTTYを割り当てるように強制できます。

ssh -tt user@Host "ls --color=auto"
11
Kenster

Lsの場合は、色を強制するために--color=alwaysを使用することをお勧めします。また、他のアプリで色を使用するには、色付けはサポートされていますが、--color=valueはサポートされていません。また、ssh <Host> -t "TERM=${TERM} <command>"を試すこともできます。