Was bedeutet ^ d in ls -l | grep ^ d?

13

Wenn ich es tue ls -l | grep ^d, listet nur Verzeichnisse im aktuellen Verzeichnis.

Was ich möchte , ist wissen , was funktioniert die caret ^in ^dbedeuten?

Gleiten
quelle
Weitere Informationen finden Sie in regulären Ausdrücken oder auf dieser Seite unter Verwendung regulärer Ausdrücke in grep: robelle.com/smugbook/regexpr.html
Trey Hunner
Das funktioniert, ist aber suboptimal. Überlegen Sie sich ls */stattdessen, welche Methode mit oder ohne die lange Auflistung ( ls -l) und ohne die Notwendigkeit grep(und damit etwas schneller) funktioniert und mit geringerer Wahrscheinlichkeit (als ls -l *) auf eine zu lange Argumentliste stößt (da sie nur Verzeichnisse in den Befehl einfügt) Linie). Natürlich find . -maxdepth 1 -type dist es sogar noch besser, da es Ihre Befehlszeile überhaupt nicht überfüllt.
Adam Katz

Antworten:

21

Andys Antwort ist richtig, wie in der Manpage zu sehen:

Verankerung

Das Caret ^ und das Dollarzeichen $ sind Metazeichen, die jeweils mit der leeren Zeichenfolge am Anfang und Ende einer Zeile übereinstimmen.

Der Grund dafür ist, dass das -lFlag lsdas Langlistenformat verwendet. Das erste, was in jeder Zeile angezeigt wird, sind die lesbaren Berechtigungen für die Datei, und das erste Zeichen davon ist entweder dfür ein Verzeichnis oder -für eine Datei

Michael Mrozek
quelle
14

Das ist ein Caret, keine Karotte. Es bedeutet "Beginn der Zeile". Das grep stimmt nur mit Zeilen überein, die mit "d" beginnen.

Andy Lester
quelle