获取SSH单行命令显示颜色

Ada*_*ber 7 linux ssh bash command-line colors

我想在 SSH 单行命令上启用彩色文本输出,但我似乎无法让它在 OS X、Ubuntu 14.10 或 OpenSUSE 12.2 上运行。

如果我通过 ssh 进入服务器并ls --color=auto在提示符中键入,它工作得很好,以不同颜色显示目录、符号链接和常规文件,但是,如果我将命令放在同一系统上的 ssh 单行中:ssh user@host "ls --color=auto",输出没有颜色。

打字echo $TERM告诉我xterm-256color是否将它放在单行语句中。

这主要用于远程构建上的颜色编码错误和警告,但最好为所有内容启用它。

有什么建议吗?

Ken*_*ter 11

ssh user@host "ls --color=auto"
Run Code Online (Sandbox Code Playgroud)

ls仅在写入终端时输出颜色。当您指定ssh要在远程主机上运行的命令时,默认情况下 ssh 不会分配 TTY(终端接口)。因此,当您运行上述命令时,ssh 不会在远程系统上分配终端,ls 会看到它没有写入终端,并且不会输出颜色。

您可以使用-t选项运行 ssh以使其分配一个终端。以下应打印颜色:

ssh -t user@host "ls --color=auto"
Run Code Online (Sandbox Code Playgroud)

如果ssh以非交互方式运行,并且自己的本地输出不会进入终端,那么它将忽略单个-t标志。在这种情况下,您可以-t多次指定强制 ssh 在远程系统上分配 TTY:

ssh -tt user@host "ls --color=auto"
Run Code Online (Sandbox Code Playgroud)