Entfernen Sie die Auffüllbereiche im `ls'-Ergebnis von macOS

351
jihu

Wenn ich den Befehl lsunter macOS ausführte, werden die Ordnernamen mit der gleichen Länge angezeigt, wobei Leerzeichen für kurze Ordnernamen aufgefüllt werden: jihu@ksm1 Home $ ls bin code devel opt personal shared

Unter Linux sieht es viel besser aus: jihu@hqlin1 Home $ ls bin code devel opt personal shared

Gibt es Optionen, um die Auffüllbereiche von macOS zu entfernen? Auf beiden Systemen verwende ich bash.

0
Bash hat keinen Einfluss auf die Ausgabe externer Programme, sondern startet sie nur. grawity vor 5 Jahren 0
Nicht sicher über ls unter Linux, aber was Macs ls versucht, ist die Erstellung von "Spalten" der Ausgabe. Führen Sie `ls` in einem Ordner mit vielen Dateien aus, und Sie werden sehen, wie schön sich alles aneinander reiht. Sie haben recht, es sieht nicht gut aus, wenn der Abstand nur eine Zeile betrifft, aber versuchen Sie es mit einem großen Ordner und ich denke, Sie werden es mögen. Vielleicht ist Linux `ls` klug genug, um das Kolumnen-Ding zu machen, wenn es mehr als eine Zeile gibt, aber überspringen, wenn es nur eine Zeile gibt? jimtut vor 5 Jahren 0
@jimtut Ich denke, es liegt daran, dass GNU `ls` bereit ist, Leerzeichen (anstelle von und nicht nur Tabulatoren) zu verwenden, wenn eine säulenartige Ausgabe erreicht wird (siehe https://github.com/coreutils/coreutils/blob/master/src/ls). c # L4958) wohingegen BSD `ls` immer nur Tabs verwendet. Da Registerkarten normalerweise größer als ein Leerzeichen sind, ist die maximale Anzahl von Spalten, die mit BSD `ls` in eine Zeile eingefügt werden können, geringer. Anon vor 5 Jahren 0

1 Antwort auf die Frage

3
Anon

Wenn Sie sich das man lsauf macOS ansehen, möchten Sie vielleicht die -mOption, die Einträge mit Kommas trennt, oder die -1Option, wenn Sie mit jedem Eintrag in einer neuen Zeile in Ordnung sind. Ich vermute, du könntest es auch tun, ls -C | tr -s "\t" " "aber das fühlt sich etwas unbeholfen an ...

Eine extreme Lösung könnte darin bestehen, so etwas wie Homebrew für die Installation zu verwenden, coreutilsund dies würde Ihnen Zugriff auf gls(GNU, lsaber mit einem anderen Namen zur Vermeidung von Konflikten) geben, der vom selben Upstream stammt wie der, den lsSie unter Linux verwenden.