Suche…


Einführung

Die Shell führt ein Programm als Antwort auf ihre Aufforderung aus. Wenn Sie einen Befehl eingeben, sucht die Shell nach dem Programm und führt es dann aus. Wenn Sie beispielsweise den Befehl ls eingeben, sucht die Shell nach dem Dienstprogramm / Programm namens ls und führt es dann in der Shell aus. Die Argumente und Optionen, die Sie mit den Dienstprogrammen angeben, können sich auf das Ergebnis auswirken. Die Shell wird auch als CLI oder Command Line Interface bezeichnet.

Standardshell ändern

Die meisten modernen Distributionen werden mit BASH ( B Ane A Gain SH Ell) vorinstalliert und als Standardshell konfiguriert.

Der Befehl (eigentlich eine ausführbare binäre, eine ELF) , die für den Wechsel in shells Linux verantwortlich ist chsh (CH ange sh ell).

Wir können zunächst mit Hilfe des Befehls chsh -l überprüfen, welche Shells auf unserem Computer bereits installiert und konfiguriert sind. Dadurch wird ein ähnliches Ergebnis ausgegeben:

[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

In einigen Linux-Distributionen ist chsh -l ungültig. In diesem Fall finden Sie die Liste aller verfügbaren Shells in der Datei / etc / shells. Sie können den Inhalt der Datei mit cat :

[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

Jetzt können wir unsere neue Standard-Shell auswählen, zB fish , und sie mit chsh -s konfigurieren.

[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password: 
Shell changed.

Jetzt müssen Sie nur noch einen Abmelde-Anmeldezyklus durchführen und die neue Standard-Shell genießen.

Wenn Sie die Standard-Shell für einen anderen Benutzer ändern möchten und über Administratorrechte auf dem Computer verfügen, können Sie dies durch die Verwendung von chsh als root . Vorausgesetzt, wir möchten die Standard-Shell von user_2 in fish ändern, verwenden wir denselben Befehl wie zuvor, aber mit dem Benutzernamen des anderen Benutzers, chsh -s /usr/bin/fish user_2 .

Um zu überprüfen, was die aktuelle Standard-Shell ist, können wir die Umgebungsvariable $SHELL anzeigen, die auf den Pfad zu unserer Standard-Shell verweist. Nach unserer Änderung würden wir erwarten, dass ein ähnliches Ergebnis erzielt wird.

 ~  echo $SHELL                                 
/usr/bin/fish

chsh Optionen:

-s shell

Legt die Shell als Login-Shell fest.

-l , --list-shells

Drucken Sie die Liste der in / etc / shells aufgelisteten Shells und beenden Sie das Programm.

-h , --help

Drucken Sie eine Nutzungsmeldung und beenden Sie das Programm.

-v , --version

Versionsinformationen drucken und beenden.

Grundlegende Shell-Dienstprogramme


Anpassen der Shell-Eingabeaufforderung

Die Standard-Eingabeaufforderung kann geändert werden, um sie anders und kurz auszusehen. Wenn das aktuelle Verzeichnis lang ist, wird die Standardeingabeaufforderung zu groß. In diesen Fällen ist die Verwendung von PS1 hilfreich. Ein kurzer und individueller Befehl, schön und elegant. In der nachstehenden Tabelle wurde PS1 mit einer Reihe von Argumenten verwendet, um verschiedene Formen von Shell-Eingabeaufforderungen anzuzeigen. Die Standard-Eingabeaufforderung sieht bruce@gotham ~ $ so aus: user@host ~ $ In meinem Fall sieht es so aus: bruce@gotham ~ $ . Es kann gemäß der folgenden Tabelle geändert werden:

Befehl Nützlichkeit
PS1 = '\ w $' ~ $ Shell-Eingabeaufforderung als Verzeichnisname. In diesem Fall lautet das Stammverzeichnis das Stammverzeichnis.
PS1 = '\ h $' gotham $ shell prompt als Hostname
PS1 = '\ u $' bruce $ shell prompt als Benutzername
PS1 = '\ t $' 22:37:31 $ Shell-Eingabeaufforderung im 24-Stunden-Format
PS1 = '@ $' 10:37 PM Shell-Eingabeaufforderung im 12-Stunden-Format
PS1 = '! $ ' 732 zeigt die Verlaufsnummer des Befehls anstelle der Shell-Eingabeaufforderung an
PS1 = "Dude $" dude $ zeigt die Shell-Eingabeaufforderung so an, wie Sie es möchten

Einige grundlegende Shellbefehle

Befehl Nützlichkeit
Ctrl-k schneiden / töten
Ctrl-y Ruck / Paste
Ctrl-a Der Cursor wird an den Zeilenanfang gesetzt
Ctrl-e Der Cursor wird zum Ende der Zeile gebracht
Ctrl-d löscht das Zeichen nach / am Cursor
Ctrl-l löscht den Bildschirm / das Terminal
Ctrl-u löscht alles zwischen Eingabeaufforderung und dem Cursor
Ctrl-_ macht das letzte in der Kommandozeile eingegebene Objekt rückgängig
Ctrl-c unterbricht / stoppt den Job / Prozess, der im Vordergrund ausgeführt wird
Ctrl-r Rückwärtssuche im Verlauf
~/.bash_history speichert die letzten 500 Befehle / Ereignisse, die in der Shell verwendet werden
history zeigt den Befehlsverlauf an
history | grep <key-word> Zeigt alle Befehle im Verlauf mit dem Schlüsselwort <Schlüsselwort> an (nützlich, wenn Sie sich an einen Teil des Befehls erinnern, der in der Vergangenheit verwendet wurde).

Erstellen Sie Ihren eigenen Befehlsalias

Wenn Sie müde sind, lange Befehle in bash zu verwenden, können Sie einen eigenen Befehlsalias erstellen.

Am besten können Sie dazu eine Datei namens .bash_aliases in Ihrem Home-Ordner ändern (oder erstellen, wenn sie noch nicht vorhanden ist). Die allgemeine Syntax lautet:

alias command_alias='actual_command'

Dabei ist actual_command der Befehl, den Sie umbenennen, und command_alias der neue Name, den Sie ihm gegeben haben. Zum Beispiel

alias install='sudo apt-get -y install'

ordnet den neuen Befehlsalias install dem aktuellen Befehl sudo apt-get -y install . Das heißt, wenn Sie install in einem Terminal verwenden, wird dies von bash als sudo apt-get -y install interpretiert.

Suchen Sie eine Datei auf Ihrem System

Mit bash können Sie eine Datei mit dem Befehl locate leicht finden. Angenommen, Sie suchen nach der Datei mykey.pem:

locate mykey.pem

Manchmal haben Dateien merkwürdige Namen, zum Beispiel haben Sie möglicherweise eine Datei wie random7897_mykey_0fidw.pem . Angenommen, Sie suchen nach dieser Datei, aber Sie erinnern sich nur an die Teile mykey und pem. Sie können den Befehl locate mit grep wie grep kombinieren:

locate pem | grep mykey

Das würde alle Ergebnisse bringen, die beide Stücke enthalten.

Beachten Sie, dass nicht bei allen Systemen das locate installiert ist und viele, bei denen es nicht aktiviert wurde. locate ist schnell und effizient, da es regelmäßig Ihr System durchsucht und die Namen und Speicherorte für jede Datei im Cache speichert. Wenn diese Datenerfassung jedoch nicht aktiviert ist, können Sie nichts darüber erfahren. Sie können mit updatedb die im Cache gespeicherten Daten zu Dateien aktualisieren auf Ihrem Dateisystem den Dateisystem - Scan , um manuell auslösen.

Sollten Sie keine Arbeits haben locate , können Sie auf dem zurückgreifen find Dienstprogramm:

find / -name mykey.pem -print

ist in etwa gleichbedeutend mit locate mykey.pem , muss jedoch jedes Mal, wenn Sie es ausführen, die Dateisysteme für die betreffende Datei locate mykey.pem , anstatt zwischengespeicherte Daten zu verwenden. Dies ist offensichtlich langsamer und weniger effizient, jedoch in Echtzeit. Der find Dienstprogramm kann viel mehr tun , als Dateien zu finden, aber eine vollständige Beschreibung seiner Fähigkeiten sprengt den Rahmen dieses Beispiels.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow