Ich verwende häufig den open -a
Befehl im Terminal, um Anwendungen über ssh zu öffnen. Wie kann ich den Namen einer Anwendung automatisch vervollständigen lassen?
terminal
auto-complete
Daviesgeek
quelle
quelle
open -a /Applications/Textedit.app foo.txt
(ich nehme an, das ist, was du versuchst zu tun). Wenn Sie Tab nach dem Drücken/A
von/Applications
und dann wieder Tab nach dem/Te
von/Textedit.app
dann sollte , dass beide Teile für Sie automatisch vervollständigt , wie Sie gehen. Nicht ideal, gebe ich zu, aber vielleicht doch besser. Dies benutzte Bash.Antworten:
Dritte Version, bei der jetzt die Groß- und Kleinschreibung nicht mehr beachtet werden muss und innerhalb von Anführungszeichen gearbeitet werden muss.
quelle
DVD Player
. Irgendwelche Ideen, was ist los? Sieht aus wie ein Tab anstelle eines Leerzeichens ...IFS=$'\n'
. Wie auch immer, ich habe die Antwort erneut bearbeitet.mdfind
Idee. Gute Arbeit an der Optimierung und Korrekturen.CoreServices
sind wahrscheinlich persönliche Vorlieben. Was ist der Grund dafürnospace
? Wenn es nur 1 Programm gibt, möchte ich sofort mit dem Öffnen der Datei fortfahren. Nur persönliche Vorlieben? Haben Sie eine Idee zu dem verbleibenden Zitatproblem? AFAICT, das ist das einzige, was für eine richtige Lösung übrig bleibt.-a
Flagge am Ende, also denke ich,-o nospace
ist es nur eine persönliche Präferenz. Vielleicht sollten wir Brett Terpstra anpingen oder etwas, um dieses Nerdfest zu beenden ...Fügen Sie Ihrem
.bash_profile
oder Folgendes hinzu.bashrc
und starten Sie eine neue Sitzung:Es muss nichts installiert werden. Dies funktioniert
bash
sofort.Programmnamen werden nur dann automatisch
-a
vervollständigt, wenn die vorherige Option aktiviert ist und ansonsten das Standardverhalten anzeigt, z. B. eine Liste aller Dateien im aktuellen Verzeichnis zurückgeben oder das aktuelle Pfadpräfix vervollständigen.Die Ergebnisse werden aus generiert. Dies
system_profiler SPApplicationsDataType
ist der einfachste Weg, um alle Anwendungen zu erhalten, die so auf Ihrem System gestartet werden können. Die Liste wird verarbeitet, um nur die Programmnamen zurückzugeben, die Leerzeichen enthalten und sich von den Paketnamen unterscheiden können (auch wenn das.app
Suffix ignoriert wird ).Verwendung: Geben Sie ein
open -a
, gefolgt von einem Leerzeichen, gefolgt vonTab
oderEsc
(zweimal auf meinem System, nicht sicher, ob es überall ist).Beispiel mit allen Hilfsanwendungen für meinen Scanner:
Nachteile und Probleme dieser Lösung:
Es gibt Unmengen von Programmen auf Ihrem System, die Sie möglicherweise nicht kennen, wie alles in
/System/Library/CoreServices
. Möglicherweise möchten Sie nicht alle auflisten. OTOH, es ist wirklich einfach zu sehen und zBCharacterPalette
oderKeyboardViewer
so zu starten . * Konfigurieren Sie diemdfind
Aufrufe entsprechend dem-onlyin
Argument.Es ist ein bisschen langsam, wegenJetzt nutzt mansystem_profiler SPApplicationsDataType
. Möglicherweise müssen Sie ein oder zwei Sekunden warten, bis der Abschluss angezeigt wird.mdfind
um schnell die Programme zu bekommen. Vielen Dank @LriEs kann mit Leerzeichen in Anwendungsnamen und in Anführungszeichen eingeschlossenen Programmnamen umgehen, ist aber ziemlich verrückt. Das Anführungszeichen muss das erste Zeichen sein: Solange
Scan" to "P
es in gültig istbash
, wird es von diesem Programm nicht erkannt. Die Vervollständigung funktioniert auch nach einem Leerzeichen nicht (z. B.Scan\ to
). Verwenden Sie in solchen Fällen Anführungszeichen ("Scan to
). Unterstützung für entkam Räumen ist nur gut abgeschlossenDVD
zuDVD\ Player
.quelle
mdfind 'kMDItemKind==Application'
schneller? Wenncompletion-ignore-case
aktiviert, sollte grep wahrscheinlich auch Groß- und Kleinschreibung ignorieren.Programmierbare Autovervollständigung zur Rettung! Habe allerdings viel von der Bash Completion Homepage kopiert , was sich für eine Menge Autovervollständigungszauber auf jeden Fall lohnt. In diesem Fall benötigen Sie nur die letzte Funktion (
_open
) und den Initialisierungsbefehl von unten.Fügen Sie Folgendes hinzu zu
.bashrc
:quelle
.bashrc
. Wie kann ich es nun zur automatischen Vervollständigung bringen? Was muss ich tun, um es automatisch zu vervollständigen? (Sorry, ich kann den Code nicht lesen)DVD Player.app
). Listet auch Verzeichnisse auf/Applications
(wieiWork 09
, als separate EinträgeiWork
und09
), jedoch nicht die darin enthaltenen Programme.Dies ist in der Zsh-Shell standardmäßig aktiviert , sofern Sie die Vervollständigung selbst aktiviert haben. Zsh ist in OS X enthalten.
Alles, was Sie tun müssen, ist,
autoload -Uz compinit; compinit
Ihre ~ / .zshrc einzugeben oder die Vervollständigung über das Konfigurationsmenü für die erste Ausführung zu aktivieren.Zsh ist eigentlich größtenteils eine Obermenge von Bash, daher sollten Sie nichts Neues lernen müssen. Sogar Ihre Skripte werden wahrscheinlich funktionieren!
quelle