mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-23 03:03:57 +08:00
4612343d6e
This adds a path builtin to deal with paths. It offers the following subcommands: filter to go through a list of paths and only print the ones that pass some filter - exist, are a directory, have read permission, ... is as a shortcut for filter -q to only return true if one of the paths passed the filter basename, dirname and extension to print certain parts of the path change-extension to change the extension to a different one (as a string operation) normalize and resolve to canonicalize the paths in various flavors sort to sort paths, also only using the basename or dirname as a key The definition of "extension" here was carefully considered and should line up with how extensions are actually used - ~/.bashrc doesn't have an extension, but ~/.conf.d does (".d"). These subcommands all compose well - they can read from arguments or stdin (like string), they can use null-delimited input or output (input is autodetected - if a NULL happens in the first PATH_MAX bytes it switches automatically). It is both a failglob exception (so like set if a glob passed to it fails it just doesn't get any arguments for it instead of triggering an error), and passes output to command substitution buffers explicitly split (like string split0) so newlines are easy to handle. |
||
---|---|---|
.. | ||
completions | ||
functions | ||
groff | ||
tools | ||
__fish_build_paths.fish.in | ||
config.fish | ||
lynx.lss |