
ls -l
fügt oben in der Ausgabe eine Gesamtzeile (für die Gesamtzahl der Blöcke) hinzu. Gibt es eine direkte Möglichkeit, diese Zeile aus der Ausgabe zu unterdrücken? Ich weiß, dass ich die Ausgabe in einen anderen Befehl umleiten kann, um die erste Zeile zu löschen, aber ich frage mich, ob mir eine einfache Option fehlt, um diese Zeile überhaupt zu unterdrücken.
Antwort1
Nein, Sie vermissen keine einfache Option zum Löschen der total
Zeile, zumindest nicht, wenn der Inhalt eines Verzeichnisses aufgelistet wird (einschließlich des aktuellen, ohne Argumente). Bei GNU beispielsweise führen ls
die Optionen , -l
, -g
, und dazu -n
, dass die Zeile-o
-s
total
Angezeigt werden, ohne die Möglichkeit, es zu deaktivieren:
if (format == long_format || print_block_size)
{
const char *p;
char buf[LONGEST_HUMAN_READABLE + 1];
DIRED_INDENT ();
p = _("total");
DIRED_FPUTS (p, stdout, strlen (p));
DIRED_PUTCHAR (' ');
p = human_readable (total_blocks, buf, human_output_opts,
ST_NBLOCKSIZE, output_block_size);
DIRED_FPUTS (p, stdout, strlen (p));
DIRED_PUTCHAR ('\n');
}
Das ist eigentlichdurch POSIX vorgeschrieben.
Wenn Sie jedoch die aufzulistenden Dateien angeben und nicht ein Verzeichnis, ls
wird die Gesamtzahl nicht angezeigt. Die -d
Option bewirkt, dass Verzeichnisse als Dateien behandelt werden, was das gewünschte Ergebnis liefert, wie inKüsten:
ls -ld *
erzeugt die gleiche Ausgabe wie
ls -l
abzüglich der total
Zeile, solange Ihre Shell beim Expandieren *
( dotglob
) keine versteckten Dateien einbezieht und solange das aktuelle Verzeichnis nicht so viele Dateien enthält, dass das Expandieren *
die maximale Kommandozeilenlänge überschreitet.
Sie können auch ein Verzeichnis angeben ( ls -ld /path/to/directory/*
), aber im Gegensatz zu werden in der Ausgabe die Dateien mit dem angegebenen Pfad aufgelistet ls -l /path/to/directory
.