[PATCH v2] add new dump command

Dusty Mabe dusty at dustymabe.com
Sat Feb 4 20:08:23 CET 2017


This dump command will decrypt all passwords and print them.
For example if we have the following password store:

$ pass ls
 Password Store
 └── www
     └── google.com
     └── att.com

Then `pass dump` would show

$ pass dump
[www/google.com]
mygooglepassword

[www/att.com]
myat&tpassword

I find this useful for piping the output into vim and then
searching the content for information I've stored.
---
 man/pass.1            |  3 +++
 src/password-store.sh | 14 ++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/man/pass.1 b/man/pass.1
index 71bfc7e..796f41d 100644
--- a/man/pass.1
+++ b/man/pass.1
@@ -166,6 +166,9 @@ is set to \fItrue\fP, then all commits will be signed using \fIuser.signingkey\f
 default git signing key. This config key may be turned on using:
 .B `pass git config --bool --add pass.signcommits true`
 .TP
+\fBdump\fP
+Decrypt all passwords and print them to stdout.
+.TP
 \fBhelp\fP
 Show usage message.
 .TP
diff --git a/src/password-store.sh b/src/password-store.sh
index 081057a..132bb43 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -282,6 +282,8 @@ cmd_usage() {
 	    $PROGRAM git git-command-args...
 	        If the password store is a git repository, execute a git command
 	        specified by git-command-args.
+	    $PROGRAM dump
+	        Decrypt all passwords and print them to stdout.
 	    $PROGRAM help
 	        Show this text.
 	    $PROGRAM version
@@ -380,6 +382,17 @@ cmd_show() {
 	fi
 }
 
+cmd_dump() {
+	local passfile
+	pushd $PREFIX > /dev/null
+	find * -type f -name '*.gpg' | while read passfile; do
+		echo "[${passfile%.gpg}]"
+		$GPG "${GPG_OPTS[@]}" -d "$passfile"
+		echo -e "\n"
+	done
+	popd > /dev/null
+}
+
 cmd_find() {
 	[[ -z "$@" ]] && die "Usage: $PROGRAM $COMMAND pass-names..."
 	IFS="," eval 'echo "Search Terms: $*"'
@@ -669,6 +682,7 @@ case "$1" in
 	rename|mv) shift;		cmd_copy_move "move" "$@" ;;
 	copy|cp) shift;			cmd_copy_move "copy" "$@" ;;
 	git) shift;			cmd_git "$@" ;;
+	dump) shift;			cmd_dump ;;
 	*)				cmd_extension_or_show "$@" ;;
 esac
 exit 0
-- 
2.7.4



More information about the Password-Store mailing list