2016-05-12 14 views
-1

In Linux habe ich eine Datei mit dem Namen test2 in meinem Verzeichnis, das ich mit dem Touch-Befehl erstellt habe.Unterschied zwischen diesen beiden Befehlen (w & w/out "") und warum?

Wenn ich den Befehl ausführen

find . –name “*test*” -ls 

Es macht mir keinen Fehler, aber wenn ich

find . –name *test* -ls 
laufen

Es gab mir einen Fehler

Fund: Pfade muss dem Ausdruck vorausgehen: test2 Verwendung: find [-H] [-L] [-P] [-Olevel] [-D Hilfe | Baum | Suche | Statistik | Preise | opt | exec] [Pfad ...] [Ausdruck ]

Warum ist das?

Antwort

1

*test* wird glob expanded by your shell (in mehr als ein Token).

Während keine Glob Expansion in "*test*" passiert, weil die umliegenden " Symbole Globbing verhindern.

0

Ihre Schale abfängt *test* und auf der Suche nach Dateien und Verzeichnisse im aktuellen Verzeichnis, das diesen Ausdruck übereinstimmen, vor es die erweiterte Liste find gibt. find erwartet nur eine einzelne Zeichenfolge an dieser Stelle, während die erweiterte Liste 0 oder viele Zeichenfolgen sein kann.

Mit Anführungszeichen ignoriert die Shell die Sternchen und übergibt die rohe Zeichenfolge *test* an find, die dann diese Sternchen als Platzhalter verwendet, wie Sie erwarten würden.

Verwandte Themen