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)