取得 SSH 一行指令來顯示顏色

取得 SSH 一行指令來顯示顏色

我想在 SSH 單行命令上啟用彩色文字輸出,但我似乎無法讓它在 OS X、Ubuntu 14.10 或 OpenSUSE 12.2 上運作。

如果我 ssh 進入伺服器並在提示符中鍵入ls --color=auto,它會正常工作,以不同的顏色顯示目錄、符號連結和常規文件,但是,如果我將命令放在同一系統上的 ssh 單行中:ssh user@host "ls --color=auto",輸出沒有著色。

打字echo $TERM可以告訴我xterm-256color是否將其放入一行語句中。

這主要用於遠端建置上的顏色編碼錯誤和警告,但最好能夠為所有內容啟用它。

有什麼建議嗎?

答案1

ssh user@host "ls --color=auto"

ls僅在寫入終端時輸出顏色。當您指定在遠端主機上執行的命令時ssh,ssh 預設不會指派 TTY(終端介面)。因此,當您執行上述命令時,ssh 不會在遠端系統上分配終端,ls 會發現它沒有寫入終端,並且不會輸出顏色。

您可以執行 ssh 並-t選擇使其分配終端。應列印以下顏色:

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

如果ssh以非互動方式運行,並且自己的本地輸出不會發送到終端,那麼它將忽略單個-t標誌。在這種情況下,您可以-t多次指定以強制 ssh 在遠端系統上指派 TTY:

ssh -tt user@host "ls --color=auto"

答案2

我建議--color=always在 ls 的情況下使用,以強制顏色。並且要在其他支援著色但不支援 的應用程式中使用顏色--color=value,您也可以嘗試ssh <host> -t "TERM=${TERM} <command>"

相關內容