3 ms·
How does (N[-1]) get resolved?
by epogrebnyak 3y ago
How does (N[-1]) get resolved?
- arp242 3y ago(N) sets the NULL_GLOB option for that pattern: % print doesnt-exist* zsh: no matches found: doesnt-exist* % print doesnt-exist*(N) (doesn't print anything, pattern is just ignored) ([n]) is array indexing to get entry n; -1 gets the last entry: % print a* a-1 a-2 a-3 % print a*([-1]) a-3 % print a*([1]) a-1 Globbing is automatically sorted by name. So putting that together, things like this: ~/.local/share/gem/ruby/*/bin(N[-1]) # Ruby will use the latest Ruby version in ~/.local/share/gem/ruby, and it won't error out if it doesn't exist (so I can freely copy this around even to machines without Ruby, or remove Ruby, etc).
- epogrebnyak 3y agoThanks for explaining, looks very clever. Is this syntax part of bash?
- arp242 3y agoNo, bash has nothing like this. It's all very specific to zsh. They're called "glob qualifiers" if you want to find out more.
- deleted 3y ago[deleted]