我使用golang的ssh包搭建了一个ssh客户端,我将终端模式设置如下:
// Set up terminal modes
modes := ssh.TerminalModes{
ssh.ECHO: 0, // disable echoing
ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud
ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud
}
// Request pseudo terminal
if err := session.RequestPty("xterm", 80, 40, modes); err != nil {
log.Fatalf("request for pseudo terminal failed: %s", err)
}
它的工作正常,但有一个小问题,当我使用“ls”命令时,它会返回带有颜色代码的名称,如下所示:
[root@localhost ~]# ls
ls
anaconda-ks.cfg [0m[01;34mpeter[0m
[01;32mbuild.sh[0m [01;34mredis64[0m
我发现读取文件名时很困难,有没有方法可以去掉名称周围的颜色代码?谢谢。
ls
命令不显示颜色:ls --color=never
? - undefinedterminal.Terminal
的Escape
字段和vt100EscapeCodes
。那可能是一个解决方案。 - undefinedxterm
终端。也许可以选择其他终端类型? - undefinedRequestPty
中设置的终端ID以及服务器上如何解释(或不解释)它。例如,如果在服务器上有一个shell初始化脚本,无论$TERM
是什么,都会设置ls
输出颜色,那么更改终端ID将不会改变任何事情(哦,是的,在服务器上,$TERM
是用您在RequestPty
中传递的终端ID进行初始化的)。所以,除非您真的想要交互式的东西,我会选择@Volker的解决方案。 - undefined