Ich habe viele Befehle, die ich routinemäßig ausführen muss, oft mit der geringsten Abweichung.
Im Moment bin ich sie alle in die Speicherung .bash_history
und Nutzung CTRL- Rden Zugriff auf sie, aber ich frage mich , ob es einen besseren Weg. Wonach ich suche:
- Einfaches Hinzufügen eines neuen Befehls
- Einfaches Suchen und erneutes Ausführen eines gewünschten Befehls
- Vermeiden Sie unerwünschte Befehle in Vorschlägen
Leider ist bash_history bei der dritten Anforderung nicht so stark: Wenn ich ein paar tue cd
und ls
, füllt es die Verlaufsdatei schnell. Ich habe kürzlich erfahren, HIST_SIZE
dass Sie den Verlauf konfigurieren können, um Duplikate oder bestimmte Befehle zu vermeiden, aber bevor Sie all dies konfigurieren, wollte ich sicherstellen, dass dies der beste Weg ist.
shell
command-history
Konerak
quelle
quelle
alias
vielleicht nützlicher. z.B.alias gfc="git fetch origin"
Antworten:
Ich finde die folgenden readline Befehle sehr nützlich
(Seien Sie sich bewusst, dass sie sich von den üblichen
reverse-search-history
unterscheidenforward-search-history
, gebunden an Ctrl- R, Ctrl- S).Ich habe diese Befehle im Zusammenhang mit Ctrl- Upund Ctrl- dem DownEinfügen der folgenden Zeilen in
~/.inputrc
:So funktionieren sie: Schreiben Sie einige Zeichen des Befehlsanfangs, drücken Sie Ctrl-, Upund der nächstältere Befehl, der mit diesem Präfix beginnt, wird angezeigt. Drücken Sie erneut, um den nächsten Befehl anzuzeigen, und so weiter. Wenn Sie zufrieden sind, drücken Sie, nachdem Sie möglicherweise den Befehl geändert haben, Enterum ihn auszuführen.
quelle
"\e[B": history-search-forward
und"\e[A": history-search-backward
HISTFILESIZE
und / oderHISTSIZE
(zsh unterstützt nurHISTSIZE
, bash unterstützt beide), um sicherzustellen, dass Ihr Puffer ausreichend groß ist. Die SO Frage bash HISTSIZE vs. HISTFILESIZE? kann weiter beleuchten.Ein weiterer Tipp: Manchmal benutze ich Kommentare, um einen Befehl mit einem Lesezeichen zu versehen:
dann:
quelle
$_bookmark
. Es könnte argumentiert werden, dass dies ein schrecklicher Hack ist, der die Tatsache ausnutzt, dass nicht vorhandene Variablen zu nichts expandieren, aber es funktioniert mit dem Vorbehalt, dass Leerzeichen nicht erlaubt sind (verwenden Sie stattdessen _s).Obwohl der Umfang sehr begrenzt ist, möchte ich auf diese beiden Erweiterungsplatzhalter hinweisen:
ist eine Platzhaltererweiterung für den letzten Befehl. Nützlich, wenn Sie vergessen haben,
sudo
vor dem Befehl zu setzen .wiederholt den letzten Parameter. Nützlich, wenn Sie mit einen anderen Befehl wiederholen möchten
a/very/long/path/name/you/do/not/want/to/type/again
quelle
Benutze 'alias'
alias
ist ein großartiges Werkzeug dafür.Wenn Sie einen Alias verwenden, ist er genau so, als ob Sie ihn eingegeben hätten, und daher recht flexibel. Zum Beispiel können Sie es mit Rohren verwenden:
Sie sollten in der Lage sein, "leichte Variationen" vorzunehmen, indem Sie alle Flags übergeben, die Sie nicht bereits angegeben haben.
quelle
Ich erstelle minimale Shell-Skripte für meine häufigen Befehle und gebe ihnen kurze Namen. Sie werden alle am selben Ort gespeichert, der hinzugefügt wird
PATH
.Auf diese Weise kann ich über eine Verknüpfung auf sehr komplexe Befehle zugreifen und anders als bei einer Verknüpfung
alias
die veränderlichen Teile meiner Aufgabe in Befehlszeilenargumente umwandeln.quelle
Ich verwalte eine Kopie von .bash_history in Git . Um dies zu vereinfachen, habe ich gesetzt
in .bashrc und die folgenden (für den allgemeinen Gebrauch geänderten) Befehle in einem Bereinigungsskript
was ich laufe, bevor ich Zeilen hinzufüge
git gui
. Da die Verlaufsdatei mit jedem Befehl geändert wird, habe ich auch einen speziellen Befehl zum Aktualisieren dieses bestimmten Repositorys:quelle
HISTCONTROL=ignorespace
, was manchmal wichtig ist, um die Geschichte nicht zu überfrachten.Unter all den anderen Antworten, die hier die Geschichte betreffen.
ich setze
in ~ / .bash_profile
Zusätzlich zu den anderen Kommentaren zu: history
Ein weiteres nützliches Feature ...
Beginn eines Rückrufs mit
ruft den letzten Befehl auf, der mit den ersten Buchstaben begonnen hat
z.B:
Sie haben nicht erwähnt, ob Sie eine GUI oder nur eine Befehlszeile verwenden. Wenn Sie eine grafische Benutzeroberfläche verwenden, können Sie mit einem der permanenten Zwischenablage-Manager häufig verwendete Befehle, Benutzer-IDs, Kennwörter, URLs usw. kopieren und einfügen.
quelle
!find<ESC>CTRL-E
funktioniert, aber ich bezweifle, dass ich mich morgen daran erinnern kann. Was ist das ESC CTRL-E?Das Erlernen der Verwendung Ctrl-Rund Ctrl-Sdie einfache Suche nach den Befehlen, nach denen Sie im Verlauf suchen, sowie das Auffinden der Umgebungsvariablen HISTCONTROL, mit der Duplikate ignoriert und die Site der Bash-Verlaufsdatei geändert werden können.
Normalerweise mache ich viele, Ctrl-Rgefolgt von Ctrl-Eund ändere einige Parameter, wenn ich einen gefundenen Befehl überspringe, indem ich Ctrl-Rzu oft einen drücke, um ihn Ctrl-Szu retten.
quelle
Ich bevorzuge es immer, zuletzt verwendete Befehle und deren Ausgabe zu speichern.
quelle
Zusätzlich zu den guten Antworten oben kann AutoKey erstaunlich hilfreich sein, wenn Sie zufällig eine GUI verwenden, die auf KDE oder Gnome basiert.
Sie können Phrasen erstellen, die durch Eingeben einiger Zeichen oder Drücken eines Hotkeys ausgelöst werden. Diese Phrasen werden dann ersetzt oder zu Ihrer Eingabe hinzugefügt.
Es unterstützt auch in Python geschriebene Skripte, mit denen Sie fast alles machen können, wenn Sie Python kennen. Ich kenne Python noch nicht, aber ich bekomme bereits einige sehr einfache Skripte, um nette Dinge zu tun.
Alles scheint von Ihrer Tastatur zu kommen, daher funktioniert es mit jeder Anwendung, die Tastatureingaben akzeptiert - und mit Ihrem Desktop selbst.
Es gibt viele Optionen, die steuern, wie und wo diese Dinge aktiviert werden, sodass einige nur in Ihrer Konsole und andere nur in einem anderen Fenster funktionieren. Sie können auch festlegen, dass Phrasen ausgeführt werden, sobald Sie die Zeichenfolge eingeben, die sie auslöst, oder warten, bis Sie ihnen das OK geben.
quelle
Wie andere gesagt haben, ist Alias dein Freund. Für etwas kompliziertere Dinge (wenn Sie Argumente irgendwo zwischen Anweisungen benötigen) verwende ich Funktionen in meiner .zshrc, wie:
das funktioniert wie locate (ich benutze es, wenn db aus irgendeinem Grund nicht verfügbar ist). Oder
für einen Ersatz von Killall.
quelle
Zusätzlich zur Verwendung Cntl-Rzum Zurückblicken in habe
.bash_history
ich auch eine README-Datei in dem~/develop
Verzeichnis, in das ich lange Befehle wiegit
/ geschrieben habesvn
, damit ich später darauf zurückgreifen kann, wenn ich es brauche. Ebenso plane ich, eine~/install/README
Datei zu haben, in der alle allgemeinen Paketnamen abgelegt werden, die ich normalerweise nach der Installation einer neuen Version von Linux / Ubuntu installiere. Die Idee ist also, eine README-Datei in jedem Verzeichnis zu haben, z. B. Video, Audio, ... und die allgemeinen Befehle / Tipps, die Sie in einem späteren Zeitpunkt möglicherweise benötigen.quelle