我想我可能忽略了关于 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 -1 | wc -l
,这意味着:将文件列表(其中每个文件名都打印在新行中)发送到 wc 的输入,其中-l
将计算输入的行数。这是有道理的。
我决定简单地尝试一下,ls | wc -l
并且对它也给了我正确数量的文件感到非常惊讶。我想知道为什么会发生这种情况,因为ls
没有选项的命令将文件名打印在一行上。
我在 Windows 上使用 Putty 连接到我的 ubuntu 16.04 服务器上的 bash shell。
这就是我在 Putty 中的样子sudo fdisk -l
:
但是当我尝试将输出通过管道传输到 时less
,颜色没有显示:
我试过sudo fdisk -l | less -R
and sudo fdisk -l | less -r
,但输出看起来与原始输出不同。
我怎样才能让输出less
看起来一样?