相关疑难解决方法(0)

ls 的输出有换行符,但显示在一行上。为什么?

我想我可能忽略了关于 shell 的一个相对基本的观点。默认情况下,ls命令的输出用换行符分隔输出,但 shell 将输出显示在一行上。

任何人都可以向我解释这一点吗?我一直假设输出只是由空格分隔,但现在我看到输出由换行符分隔,我希望输出显示在单独的行上。

例子:

cpoweradm@debian:~/lpi103-4$ ls text*
text1  text2  text3
Run Code Online (Sandbox Code Playgroud)

od显示输出由换行符分隔:

cpoweradm@debian:~/lpi103-4$ ls text* | od -c
0000000   t   e   x   t   1  \n   t   e   x   t   2  \n   t   e   x   t
0000020   3  \n
0000022
Run Code Online (Sandbox Code Playgroud)

如果存在换行符,那么为什么输出不显示为:

text1 
text2
text3
Run Code Online (Sandbox Code Playgroud)

ls bash terminal od

65
推荐指数
2
解决办法
5万
查看次数

对于 ls 命令,less 中没有彩色输出

如果我运行,ls我会得到彩色输出,我发现它非常方便快速浏览文件类型。当我尝试通过管道将其less-r-R标记均匀时,颜色总是会丢失。我使用的是zsh5.0.7 版。有任何想法吗?谢谢。

编辑:我在 OS X 上。

osx ls less colors pipe

24
推荐指数
2
解决办法
7821
查看次数

ls 命令的操作因收件人而异

命令如何ls知道它的标准输出是什么?

ls根据目标标准输出的不同,操作似乎有所不同。例如,如果我这样做:

ls /home/matt/tmp 
Run Code Online (Sandbox Code Playgroud)

结果是:

a.txt b.txt c.txt
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做

ls /home/matt/tmp | cat
Run Code Online (Sandbox Code Playgroud)

结果是(即每个结果换行):

a.txt
b.txt
c.txt
Run Code Online (Sandbox Code Playgroud)

该进程为标准输出传递了一个文件描述符 1 对吗?它如何确定如何格式化结果?文件描述符是否显示信息?

command-line ls io-redirection tty

12
推荐指数
3
解决办法
954
查看次数

标签 统计

ls ×3

bash ×1

colors ×1

command-line ×1

io-redirection ×1

less ×1

od ×1

osx ×1

pipe ×1

terminal ×1

tty ×1