GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Anpassen der Bash-Shell

Die Bash-Shell ist eine Befehlsverarbeitungsumgebung, die viele Systemadministratoren und Entwickler täglich verwenden. Es wurde erstmals 1989 entwickelt und war seit der Erstellung von Linux die Standard-Shell für viele Distributionen. In den meisten Fällen ist Bash oder „Bourne-again Shell“ das Framework, in dem Sie jedes Mal arbeiten, wenn Sie die Befehlszeile öffnen. Es hat auch seine eigene Skriptsprache und bietet eine riesige Anzahl von Hilfsmitteln für diejenigen, die die geistige Disziplin haben, sie zu lernen.

Warum sollten Sie Ihre Shell anpassen?

Die Bash-Shell bietet eine Menge Nutzen, ist aber kein perfektes System. Im Laufe der Jahre haben Befehlszeilen-Enthusiasten Fehler gefunden und Verbesserungen in verschiedenen Shells vorgenommen, und Bash ist keine Ausnahme. Es gibt unzählige Ergänzungen, die Sie an Bash vornehmen können. Alles von sinnvollen Funktionsänderungen bis hin zu Verknüpfungen und ästhetischen Änderungen nach Ihrem persönlichen Geschmack. Allerdings hat jeder seine eigene bevorzugte Ästhetik, also werde ich mich auf Änderungen an der Funktionalität konzentrieren.

Fangen Sie klein an

Der einfachste Weg, mit dem Anpassen Ihrer Shell zu beginnen, besteht darin, herauszufinden, wo die meiste Zeit Ihrer Befehlszeile verbracht wird. Verwenden Sie grep und netstat oft? Bewegen Sie sich unzählige Male pro Stunde im Dateisystem? Wenn ja, wie können Sie diese Aufgaben effizienter gestalten? Im ersten Artikel, den ich jemals für diese Seite geschrieben habe, habe ich über ein Automatisierungsskript namens AutoHotkey gesprochen. Leider läuft es nur unter Windows. Ich wurde von einem Leser herausgefordert, etwas zu finden, das er für Linux verwenden könnte, um die gleichen Aufgaben zu erledigen. Auch wenn es keine ordentlich verpackte Lösung für diese Herausforderung gibt, können Sie einen alias erstellen für modifizierte Befehle in Ihrer Shell mit dem gleichen Effekt. Dies kann zwar etwas zeitaufwändig sein, aber wenn Sie sich die Zeit nehmen, etwas über Aliasing zu lernen und eigene zu erstellen, werden Sie ein klügerer und effizienterer Systemadministrator sein.

Rick Greene, ein Mitglied der Enable Sysadmin-Community, hat einen seiner Lieblingsaliase geteilt, bei dem er mithilfe von sudo zur Root-Shell aufsteigt .

alias root="sudo su - root"

Effektiv arbeitet er als root Benutzer, während er seine Aktionen im System mit seinem eigenen Benutzerkonto-Passwort verfolgt. Die bevorzugte Methode hier wäre die Verwendung von sudo Befehl vor jeder Aktion, das Schöne an diesem Beispiel ist, dass Bash es jedem Benutzer ermöglicht, eine Lösung zu erstellen, die für ihn funktioniert! Sie können alias praktisch jeden Befehl in Ihrer Shell. Ich empfehle Ihnen, jetzt zu versuchen, ein paar eigene Aliase zu erstellen.

[ Informationen zum Erstellen von Aliassen unter Linux finden Sie in meinem vorherigen Artikel. ]

X> f(x)

Wenn Sie mathematisch veranlagt sind, wissen Sie bereits, wovon wir hier sprechen. Funktionen haben ihren Weg aus Ihren Albträumen im Klassenzimmer in Ihr Arbeitsleben gefunden! Die gute Nachricht hier ist, dass diese ziemlich einfach sind und sehr nützlich sein können. Sie ermöglichen uns eine Brücke zwischen Aliasing und ausgewachsenem Scripting. Der große Vorteil dabei ist, dass Sie mehrere Befehle miteinander verketten können. Schauen wir uns die Syntax zum Erstellen dieser Funktionen und ein praktisches Beispiel für die Verwendung an. Verwenden Sie zum Erstellen einer Funktion die folgende Syntax:

function_name () {command1; command2;}
#You MUST use a semicolon after each command, including the last. 

Wie würden wir das nutzen? Eines der besten Beispiele, die ich im Web gesehen habe, ist eine Funktion, mit der Sie ein neues Verzeichnis erstellen und dann sofort in dieses Verzeichnis wechseln können. Diese Funktion würde in etwa so aussehen:

mkd () {mkdir -p $1; cd $1;}

Wenn wir nun ein Verzeichnis namens func_test erstellen mit dem mkd Funktion können wir sehen, dass sie uns automatisch in das neue Verzeichnis platziert.

# mkd func_test
# pwd
# Home/user/func_test

Geschichte wiederholt sich? Nur wenn Sie wollen...

Bevor ich diesen Artikel schrieb, hatte ich mich an unsere Contributor-Community gewandt, um Feedback zu ihren bevorzugten Bash-Verbesserungen zu erhalten. Es gab ein gemeinsames Thema in allen Rückmeldungen, die ich erhielt. Die Leute wollen die Art und Weise ändern, wie Bash history arbeitet. Eine der hilfreichsten Änderungen, die ich gesehen habe, war die Möglichkeit, doppelte Einträge aus dem history zu entfernen .

Seth Kenlon von Opensource.com hat Folgendes aus seiner .bashrc gesendet Datei. Es erlaubt history um doppelte Einträge und Befehle zu ignorieren, die mit einem Leerzeichen beginnen.

"export HISTCONTROL=$HISTCONTROL:ignorespace:ignoredups"

Red Hatter Steve Newsted wies mich auf einen großartigen Thread auf StackExchange hin, in dem ein Benutzer den history von Bash ändern wollte sich alles von jedem Terminal auf seinem Rechner zu merken, während er diesen history hat von jedem Terminal auf dieser Maschine aus zugänglich sein. Sehen Sie sich die Kreativität der Antwort von suntzuisafterU. an Fügen Sie einfach Folgendes zu Ihrem ~/.bashrc hinzu Datei.

#Avoid duplicates
HISTCONTROL=ignoredups:erasedups  
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend

# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"

Nächste Schritte

Jetzt können Sie die Fülle an Änderungen, Optimierungen und Personalisierungen sehen, die in Bash verfügbar sind. Dieser Artikel kratzt nur an der Oberfläche dessen, was Sie innerhalb der Shell tun können. Geh raus und erkunde es selbst! Wenn Sie eine Bash-Favoritenerweiterung haben, können Sie diese gerne an das Team unter [email protected] senden. Ich würde gerne einige der kreativen Lösungen sehen, die unsere Leser einsetzen!

[ Benötigen Sie weitere Hilfe beim Einstieg in die Linux-Systemadministration? Nehmen Sie an einem Red Hat Systemadministrationskurs teil. ]


Linux
  1. Schnelle Verzeichnisnavigation in der Bash-Shell?

  2. Die Bash‘?

  3. Anpassen der Bash Shell:Fett/Farbe Der Befehl?

  4. Verstehen Sie die Bedeutung von `$_`?

  5. Funktionen in Shell-Variablen?

.bashrc vs. .bash_profile

Was ist die Shell unter Linux?

Die While-Schleife in Shell-Skripten

Bash fc-Befehl:Verwenden Sie die Bash-Shell ganz einfach wie ein Profi

Wie die BASH-Shell ihre Konfigurationsdateien unter Linux lädt

Was ist der Unterschied zwischen &> und >&in bash?