我在用着控制台 2推出系统管理工具在 Windows 中的 Bash shell。当我ssh
在服务器(SLES 或 RHLE 服务器)上执行ls
或使用时vi
,我没有得到任何颜色。但是,如果我使用油灰。我没有在 Console 2、Bash 或 PuTTY 中进行任何颜色自定义,并且服务器上的颜色(据我所知)根本没有改变。
看完之后如果我 ssh 到服务器,iTerm2 会丢失“ls”颜色我试过了ls --color=always
,确实显示了一些颜色,但不是全部。它显示可执行文件和文件夹的颜色(在我的情况下分别为绿色和蓝色),但不显示 zip 文件(在我的情况下应该是红色)。同样,PuTTY 正确显示了这些。
对需要颜色的一堆命令进行别名化对我来说不是一个可行的解决方案,因为我经常访问几十台不同的服务器,而且这与其他管理员使用这些服务器的方式进行交互。
有任何想法吗?
答案1
我相信您正在寻找 LS_COLORS 环境变量。这篇文章写得很好:http://www.bigsoft.co.uk/blog/index.php/2008/04/11/configuring-ls_colors
答案2
Console2 是一个“真正的”控制台模拟器,但 PuTTY 通过管道运行应用程序。
这意味着,当 ssh 检测到“无控制台窗口”(管道)时,它会切换到使用 ANSI 转义序列来显示颜色。但是标准 Windows 控制台不支持转义,这就是为什么当 ssh 检测到它(以及相应的 Console2)时,它会认为 ANSI 不可用并切换到使用 win32 API,我认为那里的实现很差。
我知道有两种将 ANSI 引入 Windows 控制台的工具 -安西康以及我自己的康埃穆,但 msys 不知道它们并且无法检测 ANSI 功能。
然而,我对此有一些想法——如何欺骗某些应用程序它们在管道终端(PTY)中运行。