
Da ich aus der FreeBSD-Welt komme, möchte ich, dass sich das Linux-Terminal wie das von FreeBSD verhält, insbesondere die Version 9.1. Grundsätzlich cd
können Sie, wenn Sie in das Terminal tippen und die Aufwärtspfeiltaste drücken, alle Befehle im Verlauf durchsuchen, beginnend mit, cd
wodurch Sie viel Zeit sparen.
Ich weiß nicht, wie ich diese Funktion in Linux, Debian oder CentOS aktivieren kann, da ich sonst das Ganze eintippen muss. Kann mir bitte jemand helfen?
Antwort1
Fügen Sie Folgendes hinzu ~/.inputrc
:
# Press up-arrow for previous matching command
"\e[A":history-search-backward
# Press down-arrow for next matching command
"\e[B":history-search-forward
Erläuterung
~/.inputrc
ist die Konfigurationsdatei fürGNU Readline. Viele Shells, einschließlich bash
und tcsh
verwenden readline zum Bearbeiten der Befehlszeile. Die beiden obigen Zeilen weisen readline an, seine Verlaufssuchfunktion aufzurufen, wenn die Escape-Sequenzen für die Aufwärtspfeiltaste ( \e[A
) und die Abwärtspfeiltaste ( \e[B
) gefunden werden.
Antwort2
Was passiert ist, dass FreeBSD und Linux standardmäßig unterschiedliche Shells verwenden. FreeBSD verwendet standardmäßigtcsh, das früher bessere interaktive Funktionen als Bash hatte (aber Bash hat aufgeholt), aberdeutlich schlechtere Scripting-Funktionen.
Der einfachste Weg, die gewohnte Umgebung wiederherzustellen, besteht darin, Ihre Shell unter Linux auf tcsh umzustellen. Vorausgesetzt, tcsh ist systemweit installiert (wenn nicht, bitten Sie Ihren Systemadministrator, es zu installieren), führen Sie es aus, chsh -s tcsh
um Ihre Standard-Shell zu ändern.
Alternativ können Sie Bash so einrichten, dass Sie diesen gewohnten Befehl haben. Standardmäßig navigieren die Pfeile Upund Downzwischen allen Befehlen im Verlauf, nicht nur zwischen denen, die mit dem von Ihnen eingegebenen Präfix beginnen. Um dies auf das gewohnte Verhalten zu ändern, fügen Sie die folgenden Zeilen in die Initialisierungsdatei von Bash ein, die sich .bashrc
in Ihrem Home-Verzeichnis befindet. Führen Sie . ~/.bashrc
eine neue Shell aus oder starten Sie sie, um die Initialisierungsdatei erneut zu lesen.
bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'
Die Escape-Sequenzen sind das, was Ihr Terminal an die Shell sendet, wenn Sie eine Pfeiltaste drücken. Upkann je nach Terminal \eOA
(Escape, O
, A
) oder sein, und das Gleiche gilt für .\e[A
Down
Standardmäßig bietet Bash verschiedene Tastenkombinationen zum Durchsuchen des Befehlsverlaufs. Sie können Ctrl+ drücken Rund dann einige Zeichen eingeben, um nach einem Befehl zu suchen, der diese Teilzeichenfolge irgendwo in der Zeile enthält. Drücken Sie Ctrl+ S, um vorwärts statt rückwärts zu gehen. Die Suche ist inkrementell (d. h. während der Eingabe); Alt+ Pund Alt+ Nermöglichen eine nicht inkrementelle Suche.
Anstelle von bash und tcsh können Sie auf zsh umsteigen, dashat einige nette Funktionen, die in anderen Shells nicht zu finden sind. Zsh hat standardmäßig Ctrl+ Rund
Ctrl+, genau wie Bash. Um und zu erhalten , wie Sie es in tcsh hatten, fügen Sie die folgenden Zeilen ein :SUpDown~/.zshrc
bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward
Wenn Sie überall dieselbe Shell verwenden möchten, können Sie unter FreeBSD auch bash oder zsh verwenden, sofern der Port installiert ist (fragen Sie auch hier Ihren Systemadministrator).
Antwort3
tcsh
ist für die meisten Linux-Distributionen verfügbar. Versuchen Sie, das tcsh
Paket zu installieren und es dann auszuführen, chsh -s /bin/tcsh
um es zu Ihrer Standard-Shell zu machen.