端末とSSHの色を無効にする


11

私のローカルLinuxマシンは、このように色付けされたターミナル出力を持っています。

ここに画像の説明を入力してください

pfSense / BSDボックスにSSH接続すると、色が次のように変わります。

ここに画像の説明を入力してください

色付きのローカル端末出力がないマシンにSSHで接続し、そこからこのpfSense / FreeBSDボックスにSSHで接続しても、色付きの出力が有効になり、不要な色付きの出力の生成が始まります/

ローカルで変更できるものがあるので、ローカルマシンから、または中間マシンを介してpfSenseボックスにSSHで接続すると、クライアントはリモートカラー設定を無視します。理想的には、白黒、2トーンの標準的な背景とテキストの色のみを使いたいですか?


どの端末アプリケーションを使用していますか?
gertvdijk

1
ここではMint Linux 13を実行しています。XfceTerminal Emulator 0.4.8です。
jwbensley

私はこれがあなたが求めているものではないことを知っていますが、端末の設定を黒の背景に白(または薄い灰色)のテキストに変更することを検討しましたか?これは、ほとんどのものが動作するように設計されている基本的な配色です。または、リモートマシン(おそらく.bash_profile内)のプロンプト設定を変更して、より良い色にするか、まったく色を使わないようにすることもできます。
Random832

1
通常、私はTERM=xterm-mono ssh user@hostリモート環境でその設定を取得するようなことをします。
ott-- 2012

回答:


7

ttyがANSIエンコードされた制御シーケンスを送信して、端末に色を変更するよう指示するため、端末の色が表示されます。ほとんどの端末アプリケーションは、これを無視してすべてのテキストを1色で表示するように構成できます。

ではxterm-cmオプションを使用できます。Konsoleの場合、すべての色のマッピングを同じに変更できます。XFCE端末アプリケーションにも同様のオプションがある場合があります。


この回答は場合によっては役立つことがありますが、実際には回答ではありません。前述のように、「ttyはANSIエンコードされた制御シーケンスを送信して、端末に色を変更するように指示するため、端末の色が表示されます」。SSHはTTYを提供する場合があるため、SSHが色を無視することも可能であるはずです。これがどのように行われるかについての考えはありますか?
patrik

SSHは、実際にはttyを介してデータを妨害するようには設計されていません。SSHは、それを実行できるチャネルをセットアップします。そのチャネルを介してデータを変更する必要があるとは思いません。ただし、このようなチャネルのセットアップ時にクライアントからサーバーに渡される環境変数などのコンテキストとメタデータは提供されます。
gertvdijk

7

TERM変数を、互換性があるが色のサポートがないいくつかのエントリに変更すると、うまくいく場合があります。お気に入り:

TERM=xterm-old

基本的に、正数を返さないTERMFreeBSDシステムのtermcapまたはterminfoデータベースが知っている必要があり、TERM=the-term tput colorsGNU lsの場合dircolors -p | grep -x 'TERM the-term'は何も返さないものがあります。端末がカラーエスケープシーケンスをサポートしていると主張しているかどうかに関係なく、カラーエスケープシーケンスを出力するアプリケーションではまだ機能しない場合があります。

または、GNU screenを使用して、(zsh構文)のように色を無効にすることもできます。

screen -c =(printf %s\\n "termcapinfo * 'AF=\E[1m:AB=\E[7m'") ssh ...

これにより、前景色を設定しようとするたびに太字が可能になり、背景色を設定しようとするとすべて反転します。

結局のところ、FreeBSDは端末の背景が黒(または少なくとも暗い)であると想定しているということです。のxterm代わりにを使用する場合xfce-terminal、背景色と前景色、および/または個々の色を動的に変更して、異なるカラープロファイルを設定できます。これはエスケープシーケンスによって行われますが、xtermcontrolより簡単にするコマンドを使用することもできます。


試してみました-私にはうまくいきません。export TERM=vt100上記はls --colorまだ色付けされた出力を示しています。
gertvdijk

@gertvdijk良い点。GNU lsにはバグがあり、デフォルトvt100ではカラーをサポートする端末としてハードコードされているようです。私xterm-oldはその問題を起こさないように変更しましたが、FreeBSDにはterminfoエントリがないかもしれません。
ステファンChazelas

まあ、それは他のプログラムが同様に色を出力することを妨げません-すなわちbyobu。私はUbuntu 12.04を使用しています。
gertvdijk

1
@gertvdijk。私が言ったように。$TERMエスケープシーケンスをハードコーディングするのではなく、(cursesまたは他の端末APIを介して)およびtermcap / terminfoデータベースを使用する正常に動作するプログラムでのみ機能します。
ステファンChazelas

EOFの後に最終状態を変更する可能性があるすべてのエスケープシーケンスを削除するために何を使用できますか?
Janus Troelsen、2015

2

次のコマンドを入力して削除します。

$ ls --color=none

またはunaliasそれを削除するために使用します:

$ unalias ls

1
lsしかし、それは単にコンマ用ではないのですか?
jwbensley

lsは「ls --color = tty」のエイリアスです
Len

はい。知っている。しかし、私のすべての端末出力は、lsコマンドだけでなくカラー出力でもあります。そのため、以前のコメントのとおりls、カラー出力の生成を停止するだけではなく、他のすべてはまだカラー化されますか?
jwbensley

はい、ls部分のみ
Len

1
xtermを使用していますか?xterm -cm
Len

1

〜/ .bashrcを変更したくない場合は、次のようなものが確実に含まれていますexport PS2=.....+colors......

Linuxのコンソールでは、どちらか試すTERM=linux-m1bTERM=linux-m2のlinux-M2用のlinux-M1Bまたは「グリーン/ホワイト/ブラックとブルー」(ヴィンテージ!)のために、「グレー/ホワイト/ブラックや点心」としてモノクロを得るために...

Putty(Macユーザー向けのポートがあります)を使用してTERM=putty-m1bTERM=putty-m2代わりに...

これはあなたが必要としていることを正確に行います:そのために最近のterminfoデータベースが必要か、必要に応じてそこから取得します: wget http://canal.chez.com/linux.ti ; tic -x linux.ti

アレックス。PS:xterm-monoはもう存在していないようです。


-1

まず、デフォルトのエイリアスを確認します。

alias

alias ls-'ls --color=auto

が機能せず、迅速な回避策が必要な場合。これlsを試して、awkパイプしてください:

vi /usr/local/bin/list
#!/bin/bash
ls $1
exit

権限を設定し744ます。
このための1つの安全な場所は/usr/local/bin 、PATHにが含まれていることを確認すること/usr/local/binです。

再び裁量を使用します。

1つは、色はディレクトリにフラグをls="ls --color=auto"付けることを意味します...葉のみの名前を オフにするls -aFか、またはls -Fディレクトリ名にを追加します/。だから私はあなたが気づくことをお勧めします。あなたができるalias ls="ls -aF"alias ls="ls -F"


2
この回答は、元の質問に対する回答をどのように提供しますか?
jwbensley 2017年

Stack Overflowへようこそ!ツアーに参加することをお勧めします。
スティーブンラウフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.