SSHワンライナーコマンドで色付きのテキスト出力を有効にしたいのですが、OS X、Ubuntu 14.10、またはOpenSUSE12.2では機能しないようです。
サーバーにSSHで接続して、次のように入力すると、ls --color=auto
プロンプトでは、ディレクトリ、シンボリックリンク、および通常のファイルをさまざまな色で表示して問題なく動作しますが、同じシステムのsshワンライナーにコマンドを配置した場合:ssh user@Host "ls --color=auto"
、出力は色付けされていません。
入力echo $TERM
私にxterm-256color
ワンライナーステートメントに入れるかどうか。
これは主にリモートビルドでの色分けエラーと警告のためですが、すべてに対して有効にしておくと便利です。
何かアドバイス?
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"
Lsの場合は、色を強制するために--color=always
を使用することをお勧めします。また、他のアプリで色を使用するには、色付けはサポートされていますが、--color=value
はサポートされていません。また、ssh <Host> -t "TERM=${TERM} <command>"
を試すこともできます。