Was macht das Caret in zsh?

7

Was macht das Caret ^in zsh? echo ^listet die Dateien im aktuellen Verzeichnis auf, wie z ls. Ich benutze grml .

Anscheinend ist es kein Alias ​​und which ^druckt das gleiche wie which $(ls). Auch command -v ^druckt nichts und gibt 1 zurück.

Kann ich davon ausgehen, dass es ^sich wie eine Variable verhält, die Dateien im aktuellen Verzeichnis enthält?

pasbi
quelle

Antworten:

8
$ PS1='%% ' zsh -f
% print ^
^
% setopt EXTENDED_GLOB
% print ^
...
% 

Sie müssen also EXTENDED_GLOBaktiviert haben, und daher ^ist das ein Glob, also zshexpn(1)finden wir nach dem Durchgraben

   ^x     (Requires EXTENDED_GLOB to be set.)  Matches anything except the
          pattern x.  This has a higher precedence than `/', so `^foo/bar'
          will  search  directories in `.' except `./foo' for a file named
          `bar'.

"Alles außer x" stimmt also mit allem überein, da Sie nichts mit einem leeren x ausgeschlossen haben.

Thrig
quelle