55 lines
1.4 KiB
Bash
55 lines
1.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Funktion zur Auswahl mit fuzzel oder choose
|
|
select_item() {
|
|
local prompt="$1"
|
|
local input="$2"
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
echo "$input" | choose -p "$prompt"
|
|
else
|
|
echo "$input" | fuzzel -d -p "$prompt"
|
|
fi
|
|
}
|
|
|
|
# Funktion zum Bereinigen des ausgewählten Textes
|
|
clean_text() {
|
|
local text="$1"
|
|
if [[ "$text" == *": "* ]]; then
|
|
echo "$text" | sed 's/^[^:]*: //'
|
|
else
|
|
echo "$text"
|
|
fi
|
|
}
|
|
|
|
# Funktion zum Kopieren in die Zwischenablage
|
|
copy_to_clipboard() {
|
|
local text="$1"
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
echo -n "$text" | pbcopy
|
|
else
|
|
echo -n "$text" | wl-copy
|
|
fi
|
|
}
|
|
|
|
# Wähle einen Eintrag aus der Liste
|
|
pass_name=$(select_item "Wähle einen Eintrag:" "$(rbw list)")
|
|
|
|
# Wenn ein Eintrag ausgewählt wurde
|
|
if [[ $pass_name != "" ]]; then
|
|
# Hole alle Details des Eintrags
|
|
details=$(rbw get "$pass_name" --full)
|
|
|
|
# Zeige Details an und lasse den Benutzer eine Zeile auswählen
|
|
selected_detail=$(select_item "Details für $pass_name:" "$details")
|
|
|
|
# Wenn eine Zeile ausgewählt wurde
|
|
if [[ $selected_detail != "" ]]; then
|
|
# Bereinige den ausgewählten Text
|
|
cleaned_text=$(clean_text "$selected_detail")
|
|
|
|
# Kopiere den bereinigten Text in die Zwischenablage
|
|
copy_to_clipboard "$cleaned_text"
|
|
|
|
echo "Bereinigter Text wurde in die Zwischenablage kopiert."
|
|
fi
|
|
fi
|