在桌面目录中键入“ ls”时,为什么会有多余的空间?


27

出于好奇,我想知道是否在键入lsDesktop目录时是否有多余空间的原因。比较...

~/Desktop$ ls
 file1 file2 file3

...至...

~/Documents$ ls
file1 file2 file3

请注意,当我ls在桌面上键入内容时,在该行的开头(不是文件名的一部分)会得到一个额外的空格。在行的开头,找不到其他示例位置可以在其中获得额外的空间。有人知道吗?有什么原因吗?

注意:我正在使用Ubuntu Bionic Beaver LTS版本以及它附带的默认终端。


我没有这个 如果我创建的文件仅包含一个空格作为名称(touch " "),则前面会有两个空格。
pLumo

6
ls -la改为运行或find -type f -printf "file: -%P-\n"提供输出。可能有一个带有不可打印字符的文件。文件的\lsdir
颜色

尝试前两个建议时,我看不到任何带有不可打印字符的文件。我尝试\ ls时仍然有空格,但使用dir时却没有空格...
Bart

35
显示您的实际输出。
与莫妮卡

Answers:


85

当目录中的文件名需要'它们时(例如带有空格或其他特殊字符的文件名),将显示多余的空格。

~/mytmp$ ls
 a           'file(abc)'         proyecto3.csv   test         Test.sh
 b           'file(ab,c?).mp4'   rootfile        Test1.txt    Test.zip
 F26         'file(abc?).mp4'    scr             Test2.test   vowels
 Feb          guess              script          Test2.txt
'Feb 26 xx'   hw                 something       test.rar

删除“奇怪”文件后,我得到:

~/mytmp$ ls
a    guess  proyecto3.csv  script     test        Test2.txt   Test.sh
b    hw     rootfile       something  Test1.txt   test.rar    Test.zip
F26  loop   scr            speak      Test2.test  testscript  vowels

谢谢您的解释-对我来说这听起来很正确。令我烦恼的是,该行开头的多余空格不必一定要在具有特殊字符的文件前面。但是我想这样做是为了使终端中的显示更加清晰。再次感谢
Bart

53

我敢肯定file1 file2 file3这不是您的屏幕上显示的确切内容。您忽略了可能很相关的宝贵信息(实际文件名)。

我的假设是您的文件名包含空格或其他特殊字符。

较新版本的coreutils ls引用此类文件名,通常使用单引号引起来。另外,如果至少有一个文件需要这样的引用,它将在所有其他文件名前面添加一个空格,以便如果它们恰好位于彼此之间,则它们“很好地”对齐,即单引号(撇号)是忽略对齐。

有关更多详细信息,请参见--quoting-style-N手册ls,以及其信息页面中的“格式化文件名”部分以获取更多详细信息。你可能会考虑例如混叠lsls -N

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.