diff --git a/.local/bin/shcwd b/.local/bin/shcwd new file mode 100755 index 0000000..7f6becc --- /dev/null +++ b/.local/bin/shcwd @@ -0,0 +1,21 @@ +#!/bin/sh +# Get the current working directories of all running SHELLs. + +# The `pgrep` line can be replaced with following code block (resulting in two +# while-loops) if only child processes of certain programs (e.g. terminal and +# tmux instances) should be matched. +# +# pgrep --full "^($TERMINAL|tmux)( |$)" \ +# | cut -d' ' -f1 \ +# | while read -r line; do +# pgrep -P "$line" +# done \ + +# NOTE: when using the full path not all shell instances are matched +pgrep "$(basename $SHELL)" \ + | cut -d' ' -f1 \ + | while read -r line; do + pwdx "$line" 2>/dev/null + done \ + | cut -d' ' -f2- \ + | sort -u