#!/bin/bash passstore_Verzeichnis=$( readlink -f ~/.password-store ) Verwendung() { >&2 echo 'Nach Passwort per Regex suchen.' >&2 echo '' >&2 printf 'Verwendung: %s [OPTIONS]\n' "$(basename "$0")" >&2 echo \ '#HELPTEXT# #' >&2 echo '' exit $1 } eval set -- "$( getopt -o h \ --long help \ --long version \ -n "$(basename "$0")" \ -- "$@" \ || echo "Verwendung" )" while true; do case "$1" in '-h'|'--help') Verwendung 0 ;; '--version') >&2 echo '#VERSION#' exit 0 ;; '--') shift break ;; *) >&2 printf 'FEHLER: Verstehe Option "%s" doch nicht!\n' "$1" exit 1 esac shift done if [ ! -d "${passstore_Verzeichnis}" ]; then >&2 printf 'Verzeichnis "%s" existiert nicht - ist pass initialisiert?\n' "${passstore_Verzeichnis}" exit 1 fi if [ $# -ne 0 ]; then >&2 printf 'FEHLER: Zu viele (%s) Argumente:\n' "$#" >&2 printf '"%s"\n' "$@" Verwendung 1 fi count=0 while [ ${count} -ne 1 ]; do read -p 'suche nach: ' Suche Ergebnisse='' for Versuch in 'name:' 'iname:' 'name:*' 'iname:*' 'path:*' 'ipath:*'; do if [ -n "${Ergebnisse}" ]; then break fi Ergebnisse=$( find "${passstore_Verzeichnis}" \ -type f \ -name '*.gpg' \ -${Versuch%%:*} "${Versuch#*:}${Suche}${Versuch#*:}" \ -printf '%P\n' ) done if [ -z "${Ergebnisse}" ]; then >&2 echo 'Ich habe nichts finden können.' exit 1 fi count=$(printf '%s\n' "${Ergebnisse}" | wc -l) if [ ${count} -ne 1 ]; then printf 'Es gab %s Übereinstimmungen:\n' "${count}" printf ' %s\n' ${Ergebnisse} fi done output=$( pass show "${Ergebnisse%.gpg}" ) printf '%s\n' "${output}" \ | sed ' s/^Username: // t d ' \ | xclip -i printf "." read dummy printf '%s\n' "${output}" \ | head -n1 \ | xclip -i printf "." read dummy echo '' \ | xclip -i