bash – 为什么`ls |猫`!=`ls`?

为什么这两个命令之间的输出存在差异:
ls | cat
ls

一个似乎是用换行符分隔文件名.

这也适用于命令suc has ls> outfile和类似的东西.

我在Mac OSX上,如果这有任何区别.

ls命令检查其标准输出文件类型.如果它检测到“tty”,则会发出多列输出.如果它检测到任何其他文件类型(如磁盘文件或管道),则会发出单列输出.

Tty是电传打字机的缩写.在过去,您将使用实际的电传打字机与Unix系统进行交互.因此,如果标准输出是电传打字机,那么ls将产生针对人类优化的输出.否则,它将产生针对程序优化的输出.

随着运行交互式shell的其他方式(如telnet会话和窗口系统)的出现,Unix作者创建了伪电传类型或“pty”,这是一种纯软件“装置”,它假装是电传打字机.一个程序(如telnet服务器,ssh服务器或终端窗口)可以使用pty使另一个程序(shell)认为它正在与电传打字通信.

您可以使用-C标志强制ls发出多列输出.您可以使用-1(数字一)标志强制单列输出.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...