sshで色付きの端末を取得する方法は?


53

sshを介してリモートホストに接続すると、すべてが単一のフォント/色になります。私はローカルで行うような色を持ちたいです。例えば、実行可能ファイルは緑、シンボリックリンクは青です。


接続しているUbuntuサーバーですか?
ステファノパラッツォ

@ stefano-palazzo:Debianへ。
ディマ

回答:


35

サーバー上のxtermであったため、何かがおかしかったと思いました .bashrc

本当に!ls --color=autoTTYに接続している場合にのみ機能します。すべてをリモートホスト上で単純--colorに変更し.bashrc、すべてがきれいな色になりました。


42
--color = autoを配置した場所を指定するとこの回答に大いに役立ちます。サーバー上の.bashrc?どのコマンドですか?
rfay

8
これはまだ関連のある古い質問なので、Ubuntuシステムで追加したかったのです。デフォルトの.bashrcには、どの用語が色を許可するかを定義するcaseステートメントがあります。.bashrcで「case "$ TERM $" in」行が見つかった場合、「xterm)color_prompt = yes ;;」を追加します 色も有効にします。また、「force_color_prompt = yes」行のコメントを外して、常にグローバルに有効にすることもできます。
マイクE

2
私のためにそれを修正したのは、マイクEのコメントでした
フランクシュライバー

3
よくわかりません。「すべてを単に--colorに変更する」とはどういう意味ですか?例を見ることができますか?
-still_dreaming_1

1
ローカルホスト、リモートホスト、またはその両方について話しているのですか?
アダム

19

これは私のために働いた:

ssh -t my_host my_command

-tキーでした。説明した


これは完全に機能し、1回限りのタスクに非常に便利です。ありがとう!
-XtraSimplicity

私が行ったとき、私は色付けを失っsu -プロンプトssh接続でコマンド
dubisを

10

色はすでに設定され~/.bashrcているようで、問題はsshがbashrcファイルを使用しないことです。以下を追加することにより、sshセッションでbashrcを使用できます~/.bash_profile

if [ -f ~/.bashrc ]; then
      . ~/.bashrc
fi

1
これは私にとってはうまくいき、それを実現するためのシンプルで効率的な方法でした!
フリス


4

私の場合、欠落している部分には、ls、grepなどの色が付けられていました。これは、.bashrcファイルにエイリアスを追加することで追加できます。

alias ls='ls --color=auto'
alias grep='grep --color=auto'


2

~./bashrc設定を変更しようとしました(ローカルサーバーとリモートサーバーの両方)が機能しなかったようです。

それ~/.bashrcから、ssh経由でリモートサーバーに接続しても、リモートサーバーは実行されないことに気付きました。そこで、リモートサーバーのputtinng ~/.bashrc実行するリモートサーバーを作成しif [ -f ~/.bashrc ]; then . ~/.bashrc fiました~/.bash_profilehttps://stackoverflow.com/questions/820517/bashrc-at-ssh-loginに基づく)。

そのため、このソリューションでは、~/bashrcファイルを直接変更する必要はありませんでしたが~/bash_profile、リモートサーバーのファイルを変更して、リモートサーバーのファイルを実行する必要がありました~/bashrc


Ubuntuはデフォルトで.profileはなくを使用し.bash_profile、デフォルトで.profileはsourceを使用します.bashrc
ムル

それは正しいです。しかし.profile、ssh経由でログインするとデフォルトで実行されますか?
chris544

はい。を使用して上書きしなかった場合、ログインシェルとして起動する.bash_profileとbashが実行.profileされます。また、SSHはログインシェルとしてbashを起動します。
ムル

存在する~/.profile場合は読み取られないのは正しいことです~/.bash_profile。しかし~/.bash_profile、デフォルトではUbuntuに存在しませんか?
chris544

私の最初のコメントをもう一度見てください。いいえ、そうではありません。Ubuntuはを使用し.profileます。
ムル

2

直接ログインしている間は色が正常に機能しforce_color_prompt=yesたため、ファイル内の行のコメントを外しました~/.bashrc

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

(Ubuntu 18.04 LTS)


賛成、これは最も簡単な解決策のようです。
snwflk

1

私の状況では、最近インストールchef-localして、に行を追加するように要求されました.bash_profile。サインインすると、.bashrcが読み込まれたため、ロードされなくなりました.bash_profile

私がやったことは、行を追加することでした.bash_profile

source .bashrc
export PATH="/opt/chefdk/embedded/bin:$PATH"

ログアウトしてからログインし直して、色付きの端末を手に入れました。


0

そこに私のための答えが含まれていることが上記の「マイクE」からコメントがあるが、読むためだけでなく、難しいです、それはあなたが使用していない場合は、彼が何を意味するのかを把握する一種難しいのである.bashrc多くを-と私ドン」 t。

少しねじ込んだ後~/.bashrc、sshでログインしていたマシンで次の行を変更することで、目的の結果が得られました。

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

に:

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
    xterm) color_prompt=yes;;
esac

最初の行の「色」の後に「| xterm」を追加したり、sshが「xterm-color」の代わりに「xterm」を使用してそれを変更した理由を掘り下げてそれを変更できたと思いますが、これはうまくいきます他にやることがあります。


0

プロキシ経由で接続すると、色が失われていたTERM=dumbので修正しました。

ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"

1
もしそうするつもりなら、最初の接続にも端末を割り当てる必要があります。
ムル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.