读取shell命令输出的最佳方法

前端之家收集整理的这篇文章主要介绍了读取shell命令输出的最佳方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Vim中,读取 shell命令输出的最佳(可移植和快速)方法是什么?此输出可能是二进制的,因此包含空值,并且(不)具有重要的尾随换行符.我看到当前的解决方

>使用system().问题:不适用于NULL.
>使用:阅读!问题:不会保存尾随换行符,试图智能检测输出格式(dos / unix / mac).
>使用!重定向到临时文件,然后readfile(,“b”)来读取它.问题:两次调用fs,shellredir选项也默认重定向stderr,它应该不那么可移植(这里提到’shellredir’,因为它可能被设置为有效值).
>使用system()并通过xxd过滤输出.问题:非常慢,最不便携(对于管道没有相当于’shellredir’).

还有其他想法吗?

您正在使用文本编辑器.如果您关心NUL,尾随EOL和(可能)冲突的编码,您还需要使用十六进制编辑器吗?

如果我需要对操作进行这样的控制,我确实使用了xxd路由

:se binary

您似乎错过的一个不错的选择是插入模式表达式寄存器插入:

C-r=system('ls -l')@H_403_23@Enter

对于字符编码业务,这可能是也可能不是更聪明/更少侵入性,但如果它对您来说足够重要,您可以尝试一下.

或者您可以使用Perl或Python支持来有效地使用popen

粗略的想法:

:perl open(F,"ls /tmp/ |"); my @lines = (<F>); $curbuf->Append(0,@lines)
原文链接:https://www.f2er.com/bash/384889.html

猜你在找的Bash相关文章