Was, wenn überhaupt, ist das Äquivalent von bash select ... in ... do..done in fish?

403
Joel Maxuel

Ich hatte in bash eine Funktion verfeinert, die in ein beliebiges Verzeichnis unterhalb des aktuellen Arbeitsverzeichnisses wechselt, indem dieser Verzeichnisname als Parameter für die Funktion verwendet wird. Wenn mehrere Ergebnisse mit diesem Namen vorhanden sind, wird ein Menü angezeigt, in dem der Benutzer das gewünschte Ziel auswählen kann. Der Bash-Code lautet:

function cdb() { select dir in $(find -type d -name "$1" -not -path '*/\.*' -prune); do cd "$" && break; done  } 

Ein Beispiel für ein Spiel wäre:

android@cybaryme:~/octos$ cdb av 1) ./frameworks/av 2) ./system/bt/bta/av #? 1 android@cybaryme:~/octos/frameworks/av$ 

Ich benutze meistens Fisch und möchte diese Funktion auch dort haben. Aber für mein Leben kann ich den Auswahlbefehl oder dessen Äquivalent nicht finden. Möglicherweise dachte ich, dass "erledigt" den Job erledigen würde, aber ich war verwirrt darüber, wozu es dient.

Kann jemand Licht darauf werfen, was verfügbar ist? Oder vielleicht ein Beispiel für ein Perl-Skript, das die fehlenden Lücken ausgleichen kann?

1

1 Antwort auf die Frage

1
Kurtis Rader

Fisch hat keinen selectBefehl. Ich kann auch keinen Hinweis darauf finden, dass jemand beantragt hat, dass es hinzugefügt wird. Ein Beispiel, wie Sie das Äquivalent ausführen können, finden Sie in einigen Funktionen, die mit Fisch ausgeliefert werden, sowie meiner mcd-Funktion, die wahrscheinlich zum Kernpaket hinzugefügt wird. Beachten Sie, dass bei meiner Implementierung die Auswahl nach Ziffern oder Buchstaben möglich ist. Dies ist eine sehr nützliche Bequemlichkeit. Fühlen Sie sich frei, eine Verbesserungsanfrage zu öffnen .

Ich habe eine Ausgabe geöffnet, um die Implementierung von etwas wie dem Basisbefehl "select" zu erörtern: https://github.com/fish-shell/fish-shell/issues/4036 Kurtis Rader vor 6 Jahren 0