PowerShell 的写入输出、回显和输出重定向会在输出中插入过多的字符
我正在编写一个程序
,该程序输出一系列十六进制数字,就像 xxd -ps 命令一样。 该输出旨在转换为二进制文件,例如使用xxd -ps -r
。 当我尝试在 PowerShell 中的十六进制输出上调用 xxd -ps -r 时,我没有获得所需的二进制文件,xxd 的输出为空。
问题
经过一番调查,我发现 PowerShell 的 Write-Output,它是别名 echo 和输出重定向 '>' — 它们都在输出中插入了过多的字符,如“\00”和其他一些字符。
问题
如何摆脱这种行为并使 Powershell 不再破坏命令之间的数据流?
测试
我希望 Powershell 的行为就像旧的 cmd 一样:
ps>java -cp HelloWorld > hello.txt
ps>xxd -ps hello.txt > hello.hex
ps>xxd -ps -r hello.hex
ps>HelloWorld
ps>
当前最后一个命令的输出为空。
我很好,
现在我将用java编写自己的十六进制到二进制转换器,这对我的项目来说没问题,甚至更好,但我想我将来最终会偶然发现这个问题,所以我想做好准备。
The story
I'm writing a program that outputs a sequence of hex digits like does xxd -ps
command.
This output is intended to be converted into a binary file, e.g. with xxd -ps -r
.
When I try to invoke xxd -ps -r
on my hex output in PowerShell I don't get the desired binary, xxd's output is empty.
The problem
After some investigation I've revealed that PowerShell's Write-Output, it's alias echo and output redirection '>' — all they insert excessive characters like '\00' and some others into output.
The question
How to get rid of this behavior and wean Powershell from corrupting data flows between commands?
The test
I would like Powershell to behave like the good old cmd:
ps>java -cp HelloWorld > hello.txt
ps>xxd -ps hello.txt > hello.hex
ps>xxd -ps -r hello.hex
ps>HelloWorld
ps>
Currently the last command has empty output.
I'm ok
Now I will write my own hex to binary converter in java, which is ok for my project, even better, but I think I will eventually stumble upon this problem in the future so I want to be prepared.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我过去发现过类似的事情。如果数据是二进制的,则重定向会因换行符而产生损坏的输出。感谢这篇好文章< /a>.
I've found something similar in the past. If the data is binary, redirection produces a corrupted output due to newline characters. I've resolved thanks to this good article.