diff --git a/src/password-store.sh b/src/password-store.sh
index 2500253..2515eb3 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -5,6 +5,15 @@
 
 umask 077
 
+check_for_prog() {
+	if ! which $1 &>/dev/null; then
+		echo "Please install $1 first."
+		exit 1
+	fi
+}
+check_for_prog gpg2
+check_for_prog tree
+
 PREFIX="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
 ID="$PREFIX/.gpg-id"
 GIT_DIR="${PASSWORD_STORE_GIT:-$PREFIX}/.git"
@@ -35,7 +44,7 @@ Usage:
         Optionally reencrypt existing passwords using new gpg-id.
     $program [ls] [subfolder]
         List passwords.
-    $program [show] [--clip,-c] pass-name
+    $program [show] [--clip,-c] [--showpassname,-s] pass-name [pass-name2] [pass-nameX]
         Show existing password and optionally put it on the clipboard.
         If put on the clipboard, it will be cleared in 45 seconds.
     $program insert [--echo,-e | --multiline,-m] [--force,-f] pass-name
@@ -192,41 +201,51 @@ fi
 case "$command" in
 	show|ls|list)
 		clip=0
+		showpassname=false
+		column=cat
 
-		opts="$($GETOPT -o c -l clip -n "$program" -- "$@")"
+		opts="$($GETOPT -o c -o s -l clip -l showpassname -n "$program" -- "$@")"
 		err=$?
+		if [[ $err -ne 0 ]]; then
+			echo "Usage: $program $command [--clip,-c] [--showpassname,-s] [pass-name]"
+			exit 1
+		fi
+
 		eval set -- "$opts"
 		while true; do case $1 in
 			-c|--clip) clip=1; shift ;;
+			-s|--showpassname) showpassname=true; column="column -t"; shift ;;
 			--) shift; break ;;
 		esac done
 
-		if [[ $err -ne 0 ]]; then
-			echo "Usage: $program $command [--clip,-c] [pass-name]"
-			exit 1
-		fi
-
-		path="$1"
-		passfile="$PREFIX/$path.gpg"
-		if [[ -f $passfile ]]; then
-			if [[ $clip -eq 0 ]]; then
-				exec gpg2 -d $GPG_OPTS "$passfile"
-			else
-				pass="$(gpg2 -d $GPG_OPTS "$passfile" | head -n 1)"
-				[[ -n $pass ]] || exit 1
-				clip "$pass" "$path"
-			fi
-		elif [[ -d $PREFIX/$path ]]; then
-			if [[ -z $path ]]; then
-				echo "Password Store"
+		while [ -n "$1" ]; do
+			path="$1"
+			shift
+			passfile="$PREFIX/$path.gpg"
+			if [[ -f $passfile ]]; then
+				if [[ $clip -eq 0 ]]; then
+					if $showpassname; then
+						echo $path: $(gpg2 -d $GPG_OPTS "$passfile")
+					else
+						gpg2 -d $GPG_OPTS "$passfile"
+					fi
+				else
+					pass="$(gpg2 -d $GPG_OPTS "$passfile" | head -n 1)"
+					[[ -n $pass ]] || exit 1
+					clip "$pass" "$path"
+				fi
+			elif [[ -d $PREFIX/$path ]]; then
+				if [[ -z $path ]]; then
+					echo "Password Store"
+				else
+					echo "${path%\/}"
+				fi
+				tree -l --noreport "$PREFIX/$path" | tail -n +2 | sed 's/\.gpg$//'
 			else
-				echo "${path%\/}"
+				echo "$path is not in the password store."
+				exit 1
 			fi
-			tree -l --noreport "$PREFIX/$path" | tail -n +2 | sed 's/\.gpg$//'
-		else
-			echo "$path is not in the password store."
-			exit 1
-		fi
+		done | $column
 		;;
 	insert)
 		multiline=0
