GNU“ls”的命令不outputing同一通过管[重复](GNU 'ls' com

2019-10-19 06:12发布

这个问题已经在这里有一个答案:

  • 为什么管道时确实LS给不同的输出 3个回答

当我执行命令ls我的系统上,我得到以下的输出:

System:~ user# ls
asd  goodfile  testfile  this is a test file

然而,当我管ls到另一个程序(如catgawk ),下面是输出:

System:~ user# ls | cat
asd
goodfile
testfile
this is a test file

我如何获得ls阅读终端的尺寸和输出同样在管,因为它直接打印到终端的时候呢?


这个问题已经解决了。

由于我使用bash,我用下面的实现所需的输出:

System:~ user# ls -C -w "$(tput cols)" | cat

Answer 1:

使用ls -C再次得到柱状输出。

ls检测到其输出不是终端,它假定其输出被由想要解析它一些其它工艺处理时,将其切换为-1 (单条目每行)模式,使其更容易解析。 使其在列格式化时,它的直接输出到一个终端如,用-C切换回列模式。

(请注意,也可能必须使用--color如果你关心的彩色输出,其也通常被输出到管抑制。)



Answer 2:

也许-x “由行而不是按列列表项中”有可能-w “假定屏幕宽度,而不是当前值”是你所需要的。



Answer 3:

当输出去的管道或非末端,输出格式是这样ls -1 。 如果你想柱状输出,使用ls -C代替。

究其原因,差异在于,它通常更容易解析1行的每个文件输出的shell脚本。



Answer 4:

由于我使用bash,我用下面的实现所需的输出:

System:~ user# ls -C -w "$(tput cols)" | cat


文章来源: GNU 'ls' command not outputing the same over a pipe [duplicate]
标签: shell gnu ls