Thanks, this is far better. I also added a test.

---
 src/password-store.sh     | 4 ++--
 tests/t0020-show-tests.sh | 5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/password-store.sh b/src/password-store.sh
index 77f3eda..cb3d723 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -400,7 +400,7 @@ cmd_show() {
 		else
 			echo "${path%\/}"
 		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
+		tree -N -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
@@ -412,7 +412,7 @@ cmd_find() {
 	[[ $# -eq 0 ]] && die "Usage: $PROGRAM $COMMAND pass-names..."
 	IFS="," eval 'echo "Search Terms: $*"'
 	local terms="*$(printf '%s*|*' "$@")"
-	tree -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g'
+	tree -N -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g'
 }

 cmd_grep() {
diff --git a/tests/t0020-show-tests.sh b/tests/t0020-show-tests.sh
index a4b782f..81b87b4 100755
--- a/tests/t0020-show-tests.sh
+++ b/tests/t0020-show-tests.sh
@@ -15,6 +15,11 @@ test_expect_success 'Test "show" command with spaces' '
 	[[ $("$PASS" show "I am a cred with lots of spaces") == "BLAH!!" ]]
 '

+test_expect_success 'Test "show" command with unicode' '
+	"$PASS" generate 🏠 &&
+	"$PASS" show | grep -q '🏠'
+'
+
 test_expect_success 'Test "show" of nonexistant password' '
 	test_must_fail "$PASS" show cred2
 '

Reply via email to