web-dev-qa-db-ja.com

デスクトップディレクトリに「ls」と入力すると、余分なスペースが表示されるのはなぜですか?

好奇心から、デスクトップディレクトリにlsと入力すると、余分なスペースが必要なのかどうか疑問に思っていました。比較...

~/Desktop$ ls
 file1 file2 file3

...に...

~/Documents$ ls
file1 file2 file3

デスクトップでlsと入力すると、行の先頭に(ファイル名の一部ではなく)余分なスペースが表示されることに注意してください。行の先頭にこの余分なスペースができる場所の例は他にありません。他の誰かがこれを受け取りますか?理由はありますか?

注意:私はUbuntu Bionic Beaver LTSリリースとそれに付属するデフォルトのターミナルを使用しています。

27
Bart

余分なスペースは、ディレクトリ内に'が必要なファイル名がある場合に表示されます(例:スペースやその他の特殊文字を含むファイル名)。

~/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
85
muclux

画面にfile1 file2 file3正確に表示されているものではないと確信しています。簡単に関連する可能性がある貴重な情報(実際のファイル名)を省略しました。

私の想定では、スペースまたはその他の特殊文字を含むファイル名を持っています。

Coreutilsの新しいバージョンのlsは、このようなファイル名を引用します。通常は単一引用符で囲みます。さらに、そのような引用を必要とするファイルが少なくとも1つある場合は、他のすべてのファイル名の前にスペースを追加して、たまたま下にある場合に「うまく」整列するようにします。つまり、単一引用符(アポストロフィ)はアライメントでは無視されます。

詳細については、lsmanualページの--quoting-styleおよび-Nを参照してください。詳細については、infoページの「ファイル名のフォーマット」を参照してください。たとえば、 lsls -Nにエイリアスすることを検討してください。

53
egmont