Hello, Did you use peco or fzf with your past one-liner ( https://github.com/peco/peco, https://github.com/junegunn/fzf)? They are very nice filtering tools. For reference, here is my dirty script with peco, https://github.com/Nobutarou/passpeco. You can find "wc-demo/dir-demo2/0-current" by just typing "wc- demo2 cur"
Regards, Nobuyuki 2018年4月5日木曜日、Trey Mitchell<[email protected]>さんは書きました: > Due to the nature of our environment it's sometimes necessary to iterate > through a bunch of old passwords before finding the one I need. > So I wanted to be able to list more than one password in a directory at a > time. I was previously using shell one-liners to accomplish this but > finally got around to just adding the functionality. It may not make sense > for anyone else, but I figured I'd submit it anyway on the off chance that > someone else found it useful. > > Example: > > Given this structure > $ pass wc-demo/ > wc-demo/ > ├── 0-current > ├── 1-old > ├── dir-demo1 > │ ├── 0-current > │ └── 1-old > └── dir-demo2 > ├── 0-current > └── 1-old > > All of these work: > $ pass wc-demo/* > wc-demo/0-current: > pass1 > > wc-demo/1-old: > pass2 > > $ pass wc-demo/dir* > wc-demo/dir-demo1 > ├── 0-current > └── 1-old > wc-demo/dir-demo2 > ├── 0-current > └── 1-old > > $ pass wc-demo/dir*/* > wc-demo/dir-demo1/0-current: > pass2 > > wc-demo/dir-demo1/1-old: > oldpass > > wc-demo/dir-demo2/0-current: > pass#1 > > wc-demo/dir-demo2/1-old: > A@|FVz}W=w1A@ZkzXD*2WxA2X > > $ pass wc-demo/dir-demo1/* > wc-demo/dir-demo1/0-current: > pass2 > > wc-demo/dir-demo1/1-old: > oldpass > > All existing functionality is preserved. > > Let me know if you want me to revise or clean up the code in any way. > > From abe2089d0d5e76145fec26953a900da695c52d72 Mon Sep 17 00:00:00 2001 > From: Trey Mitchell <[email protected]> > Date: Fri, 30 Mar 2018 19:06:30 -0500 > Subject: [PATCH] Added wild-card capability to the show command. > > --- > src/password-store.sh | 71 ++++++++++++++++++++++++++++++ > ++++----------------- > 1 file changed, 48 insertions(+), 23 deletions(-) > > diff --git a/src/password-store.sh b/src/password-store.sh > index eac5404..aa69ac0 100755 > --- a/src/password-store.sh > +++ b/src/password-store.sh > @@ -358,33 +358,58 @@ cmd_show() { > [[ $err -ne 0 || ( $qrcode -eq 1 && $clip -eq 1 ) ]] && die > "Usage: $PROGRAM $COMMAND [--clip[=line-number],-c[line-number]] > [--qrcode[=line-number],-q[line-number]] [pass-name]" > > local path="$1" > - local passfile="$PREFIX/$path.gpg" > check_sneaky_paths "$path" > - if [[ -f $passfile ]]; then > - if [[ $clip -eq 0 && $qrcode -eq 0 ]]; then > - $GPG -d "${GPG_OPTS[@]}" "$passfile" || exit $? > - else > - [[ $selected_line =~ ^[0-9]+$ ]] || die "Clip > location '$selected_line' is not a number." > - local pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" > | tail -n +${selected_line} | head -n 1)" > - [[ -n $pass ]] || die "There is no password to put > on the clipboard at line ${selected_line}." > - if [[ $clip -eq 1 ]]; then > - clip "$pass" "$path" > - elif [[ $qrcode -eq 1 ]]; then > - qrcode "$pass" "$path" > + local passfiles="$PREFIX/$path.gpg" > + local ARRAY=($passfiles) > + > + if [[ $clip -eq 1 && ${#ARRAY[@]} -gt 1 ]]; then > + die "Clip makes no sense in multi record context." > + fi > + > + for passfile in $passfiles; do > + local passpath=${passfile#$PREFIX\/} > + local passpath=${passpath%\.gpg} > + local passdir=${passfile%\.gpg} > + local passdirlong=($(ls -d $passdir 2>/dev/null)) > + local passdirshort=${passdirlong#$PREFIX\/} > + if [[ -f $passfile ]]; then > + if [[ $clip -eq 0 && $qrcode -eq 0 ]]; then > + if [ ${#ARRAY[@]} -gt 1 ]; then > + printf "$passpath:\n" > + $GPG -d "${GPG_OPTS[@]}" > "$passfile" || exit $? > + printf "\n" > + else > + $GPG -d "${GPG_OPTS[@]}" > "$passfile" || exit $? > + fi > + else > + [[ $selected_line =~ ^[0-9]+$ ]] || die > "Clip location '$selected_line' is not a number." > + local pass="$($GPG -d "${GPG_OPTS[@]}" > "$passfile" | tail -n +${selected_line} | head -n 1)" > + [[ -n $pass ]] || die "There is no > password to put on the clipboard at line ${selected_line}." > + if [[ $clip -eq 1 ]]; then > + clip "$pass" "$path" > + elif [[ $qrcode -eq 1 ]]; then > + if [ ${#ARRAY[@]} -gt 1 ]; then > + printf "$passpath:\n" > + fi > + qrcode "$pass" "$passpath" > + fi > fi > - fi > - elif [[ -d $PREFIX/$path ]]; then > - if [[ -z $path ]]; then > - echo "Password Store" > + elif [[ -d ${passdirlong[0]} ]]; then > + if [[ -z $path ]]; then > + echo "Password Store" > + tree -C -l --noreport "$PREFIX" | tail -n > +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of > line, but keep colors > + else > + for dir in "${passdirlong[@]}"; do > + echo ${dir#$PREFIX\/} > + tree -C -l --noreport "$dir" | tail -n +2 > | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of > line, but keep colors > + done > + fi > + elif [[ -z $path ]]; then > + die "Error: password store is empty. Try \"pass > init\"." > else > - echo "${path%\/}" > + die "Error: $path is not in the password store." > fi > - tree -C -l --noreport "$PREFIX/$path" | tail -n +2 | sed > -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, > but keep colors > - elif [[ -z $path ]]; then > - die "Error: password store is empty. Try \"pass init\"." > - else > - die "Error: $path is not in the password store." > - fi > + done > } > > cmd_find() { > -- > 2.14.1 > > > > -- > Trey Mitchell > Wolfram Research, Inc > Systems Administrator, Dev/Ops > 217-398-0700 > _______________________________________________ > Password-Store mailing list > [email protected] > https://lists.zx2c4.com/mailman/listinfo/password-store >
_______________________________________________ Password-Store mailing list [email protected] https://lists.zx2c4.com/mailman/listinfo/password-store
