java – 有趣的Shell输出:[01; 32mtestfile.txt [00m而不是testfile.txt
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 有趣的Shell输出:[01; 32mtestfile.txt [00m而不是testfile.txt,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2205字,纯文字阅读大概需要4分钟。
内容图文
问题:我在使用ChannelShell时发送的命令得到了“有趣”的字符输出,我想知道如何获得您在PuTTY会话中看到的常规输出.
通过“有趣”我的意思是我应该看到这个:
testfile.txt
我看到了这个:
[01;32mtestfile.txt[00m
这类似于this question中的问题,除了答案不能满足我的需要.答案是在ChannelShell上调用setPty(false),完??全删除“伪终端”,但我需要实时获取ChannelShell的输出.这是我正在做的一个例子:
ChannelShell channel = (ChannelShell) session.openChannel("shell");
channel.setOutputStream(new PrintStream(
new ByteArrayOutputStream(), true, "UTF-8") {
@Override
public void write(byte[] b, int off, int len) {
super.write(b, off, len);
String output = new String(b, off, len);
System.out.print(output);
sendNextCommand(output); //Execution of the next command depends on the output here, this is why I need it to not have the funny characters.
}
});
PipedInputStream in = new PipedInputStream();
channelInput = new PipedOutputStream(in);
channel.setInputStream(in);
channel.connect();
while(!channel.isClosed() && channelWaitRetries++ < MAX_CHANNEL_WAIT_RETRIES) {
//Wait for additional output... Sort of a timeout deal. Kind of a hack...
sleep(2500); //Calls Thread.sleep. I just don't want the try/catch here.
System.out.println("Channel not yet closed. Retried " + channelWaitRetries + " of " + MAX_CHANNEL_WAIT_RETRIES);
}
sendNextCommand方法是进行检查以查看输出是否与下一个要执行的命令需要显示的内容相匹配的方法.所以基本上,当我看到这样的东西:[user @ server~] $然后执行这个:ls应该返回这个:testfile.txt但是它返回这个:[01; 32mtestfile.txt [00m(注意:我可以复制并粘贴第一个字符,但它是一个char代码为27的盒子,我认为它是一个转义字符.
现在我通常只是逃避这种事情,但我宁愿把它做??得恰到好处,而且似乎还有很多变种.所以我在这里.我希望你能帮忙:)
注意:我是通过我的IDE机器运行这个(eclipse rip-off),但我已经尝试过调试,变量输出实际上显示了“有趣”的字符.我也尝试在JOptionPane.messageDialog中显示它,以确保它不仅仅是IDE而且它仍然有字符.谢谢!
解决方法:
是的,这些是ANSI转义序列,在ls的情况下,用于控制颜色.
ls有一个–color = never选项,可以解决特定的ls问题.
这是在所有命令上发生的,还是仅仅是某些命令?
调用ChannelShell.setPtyType(“dumb”)也可以帮助(未经测试).您可能需要摆弄以找到禁用转义序列的终端类型.
你是不是使用内置的Java方法来检查目录内容的任何特殊原因?
内容总结
以上是互联网集市为您收集整理的java – 有趣的Shell输出:[01; 32mtestfile.txt [00m而不是testfile.txt全部内容,希望文章能够帮你解决java – 有趣的Shell输出:[01; 32mtestfile.txt [00m而不是testfile.txt所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。