3

我正在使用 Java 中的 ProcessBuilder 类启动与 Cygwin 捆绑的 SSH 实用程序。一切正常。我通过 SSH 连接到 linux 服务器,可以运行命令并读取输出。

但是,无论何时返回输出,它仅在登录服务器并运行命令(例如目录列表)后才会发生ls,返回如下内容:

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

据我所知,它只发生在文件列表命令中。例如,当我运行其他命令(如时间等)时,它会显示正常输出。

您能建议将这些随机字符附加到文件名的原因是什么吗?

我什至尝试使用 UTF8 编码,但没有任何改变。当我使用命令行直接登录时,我看不到这些结果。但是,cmdline 以彩色值显示文件名。是否添加了一些不是 ASCII 的附加信息?

4

1 回答 1

1

使用命令ls --color=none 可以解决这个问题。

发生这种情况是因为默认情况下 ls 命令返回附加了不同颜色代码值的文件名。此链接提供了更多信息

ls下图描述了和之间的区别ls --color=none

在此处输入图像描述

于 2012-05-25T10:48:13.513 回答