微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么`ls`每行列出多个文件,但`ls pipe / redirect`列表每行只有一个文件?

只是好奇,这是ls正常预期的行为:

user@host:~$ ls Codes Documents Music Pictures Templates Desktop Downloads Papers Public Videos

但是当我用pipe道/redirectls时,它的行为就像ls -1 :

user@host:~$ ls | cat Codes Desktop Documents Downloads Music Papers Pictures Public Templates Videos

为什么? (以及如何编写这样的程序,这样的标准输出和pipe道之间的差异输出?)

PS我也设置alias l='ls -F' ,这次pipe道/redirect不再是ls -1样式:

什么是./lks.sh:运行shell脚本时,Linux中的权限被拒绝?

在命令不执行

for循环在bash中获取多个variables在一个命令中使用它

bash(可能会使用perl / python):通过正则expression式过滤空格分隔的arg列表

尾倒/打印除最后n行之外的所有内容

user@host:~$ l | cat Codes/ Documents/ Music/ Pictures/ Templates/ Desktop/ Downloads/ Papers/ Public/ Videos/

不使用别名,它以ls -1样式执行命令,但是:

$ ls -F | cat Codes/ Desktop/ Documents/ Downloads/ Music/ Papers/ Pictures/ Public/ Templates/ Videos/

从另一个string的值中创build一个stringvariables名称

计划在Windows中运行bash shell脚本

查找和ls的通配

如何在linux / bash中提取二进制文件的文本部分?

有没有办法使用variables来获取指定的参数?

你可以从源头检查这一行:

if (format == long_format) format = (isatty (STDOUT_FILENO) ? many_per_line : one_per_line);

它使用isatty函数检查stdout指向一个tty,如果是则打印many_per_line否则打印many_per_line 。

下面是GNU ls如何做( ls.c ):

if (isatty (STDOUT_FILENO)) { format = many_per_line; } else { format = one_per_line; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐