Kann ich behalten? und .. aus. * Expansion?

1312
David Z

Ich finde es oft ärgerlich (oder schlimmer), wenn ich schreibe

command .* 

in bash und der Befehl gilt für das übergeordnete Verzeichnis und das aktuelle Verzeichnis. Gibt es eine Shell - Option oder eine andere Konfiguration I zwicken kann bash ausschließen zu machen .und ..aus dem Ausbau der .*?

9

2 Antworten auf die Frage

12
camh

In Bash in dieser Reihenfolge:

GLOBIGNORE=. shopt -u dotglob 

Wenn GLOBIGNORE eingestellt ist, wird. und .. werden automatisch ignoriert, Sie müssen sie also nicht in GLOBIGNORE einstellen, aber wenn Sie nichts anderes zu ignorieren haben, müssen Sie nichts festlegen.

Jedes Mal, wenn Sie GLOBIGNORE auf einen Wert ungleich Null setzen, wird die Option von bash aktiviert. Sie müssen sie anschließend deaktivieren dotglob. Andernfalls wird Bash erweitert *, um Dateien einzuschließen, die mit einem Punkt beginnen.

Cool, danke! Eigentlich hätte ich lieber `dotglob` eingeschaltet, also klingt das Einstellen von` GLOBIGNORE` perfekt. David Z vor 13 Jahren 0
Wenn GLOBIGNORE gesetzt ist, ignoriert Bash `.` und` ..`, aber nicht `foo / .` und` foo / .. `. Sie können `GLOBIGNORE =.: * /.: * / ..` verwenden, damit auch Pfadnamen verwendet werden können. user123444555621 vor 9 Jahren 0
3
Alexander Shcheblikin

Bei einem unbekannten System, bei dem ich zu wenig Zeit zum Überprüfen der verwendeten Einstellungen (wie GLOBIGNORE) habe, verwende ich das folgende narrensichere Muster:

command .??* 
  • Schnell zu tippen und garantiert auszuschließen .und ..unabhängig von der Umgebung.
Ich habe diesen Ansatz immer gemocht, aber seien Sie sich dessen bewusst, dass 1-Char-Dateien mit der Endung .a nicht übereinstimmen MestreLion vor 11 Jahren 1