我将使用java中的processbuilder类启动与cygwin捆绑在一起的ssh实用程序。一切正常。我通过ssh连接到linux服务器,可以运行命令并读取输出。
但是,每当返回输出时,只有在登录到服务器并运行命令(例如directory listingls)后,才会返回如下内容:

InputStream: root@myserver:/scripts/common# ls
InputStream: [00m[00mA1-4.yaml[00m                            [01;32mscip-1.2.0.linux.x86_64.gnu.opt.qso[00m
InputStream: [00madditional_files.txt[00m                 [01;32mscip-1.2.0.linux.x86_64.gnu.opt.spx[00m

据我所知,这只是发生在文件列表命令。例如,当我运行其他命令如time等时,它显示正常输出。
你能建议在文件名后面附加这些随机字符是什么吗?
我甚至试过使用utf8编码,但没有改变。当我使用命令行直接登录时,我看不到这些结果。但是,该命令行以彩色值显示文件名。是否添加了一些非ascii的附加信息?

最佳答案

使用命令ls --color=none可以解决这个问题。
这是因为默认情况下ls命令返回的文件名附加了不同的颜色代码值。This link gives more information
下图描述了lsls --color=none之间的区别:

09-27 02:47