如何解决使用 plink.exe 时如何获取 ls 命令以在列中输出结果
在 cmd
中使用 plink ssh 我的 MacOS 和 ls
目录。但是,结果在单列中。因为列表很长但名称很短,所以我试图在 3 或 4 列中显示结果,就像 ls
默认在终端中所做的那样。使用 plink 时我无法做到这一点。
我尝试过的几个选项:
plink.exe -ssh -l <username> -pw <password> <IP> "ls /Users/Dir/"
plink.exe -ssh -l <username> -pw <password> <IP> "ls -c /Users/Dir/"
plink.exe -ssh -l <username> -pw <password> <IP> "ls /Users/Dir/ > Results.txt"
plink.exe -ssh -l <username> -pw <password> <IP> "column Results.txt"
使用带有 CMD 的 plink 的当前结果
Folder 1
folder 2
folder 3
folder 4
folder 5
folder 6
希望使用带有 CMD 的 plink 获得此结果
folder 1 folder 2 folder 3
folder 4 folder 5 folder 6
folder 7 folder 8 folder 9
解决方法
当您在没有终端的会话中使用命令时,它们往往会以机器可读的确定性格式生成输出。
对于 ls
,这意味着每行一个文件,没有着色等。
当您从命令行使用 plink
(或 OpenSSH ssh
)执行命令时,它不会为会话分配伪终端。因此,ls
(和其他命令)的行为与您体验的一样。
如果您希望命令像在终端中一样运行,请在其命令行中添加 -t
switch 以强制使用伪终端。
plink.exe -t -ssh -l <username> -pw <password> <IP> "ls /Users/Dir/"
尽管如果您的目标是解析输出,请不要这样做,因为格式可能会随着环境的变化而改变,并且您的代码会中断。您还可以获得许多其他副作用,例如 ANSI 转义码、分页等。您最好坚持使用默认格式。
关于使用 Plink 执行命令的更多通用问题:
Script via Plink in .bat behaves differently
通过使用 winGnu 中的“pr”找到了解决此问题的方法。切换 plink 命令将结果输出到 PC 上的文件和 pr 将其列在 cmd 中。
mode con:cols=180 lines=100
echo. > Results.txt
plink.exe -t -ssh -l <username> -pw <pass> <IP> "ls /Users/Dir/" > Results.txt
pr -3 -t -w180 Results.txt
del Results.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。