diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2017-03-29 10:58:42 +1300 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2017-03-29 10:58:42 +1300 |
commit | ece8b924343c45cbb68c93917742dab523750975 (patch) | |
tree | 583b577baa60425302830af476910bd532881638 /sh | |
parent | Add gt() (go to) (diff) | |
download | dotfiles-ece8b924343c45cbb68c93917742dab523750975.tar.gz dotfiles-ece8b924343c45cbb68c93917742dab523750975.zip |
Add lgt()
Diffstat (limited to 'sh')
-rw-r--r-- | sh/shrc.d/lgt.sh | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/sh/shrc.d/lgt.sh b/sh/shrc.d/lgt.sh new file mode 100644 index 00000000..fbe43369 --- /dev/null +++ b/sh/shrc.d/lgt.sh @@ -0,0 +1,28 @@ +# Run loc(1df) with given arguments and then run gt() to get to the first +# argument found +lgt() { + + # Check argument count + if [ "$#" -eq 0 ] ; then + printf >&2 'lgt(): Need a search term\n' + return 2 + fi + + # Change the positional parameters from the loc(1df) arguments to the first + # result with a trailing slash + set -- "$( + loc "$@" | { + IFS= read -r target + printf '%s/' "$target" + } + )" + + # Strip the trailing slash + set -- "${1%/}" + + # If the subshell printed nothing, return with failure + [ -n "$1" ] || return + + # Run gt() with the new arguments + gt "$@" +} |