72 Stimmen

Versteckte Funktionen der Bash

Shell-Skripte werden oft als Klebstoff für die Automatisierung und einfache einmalige Aufgaben verwendet. Was sind Ihre bevorzugten "versteckten" Funktionen der Shell/Skriptsprache Bash?

  • Ein Merkmal pro Antwort
  • Geben Sie ein Beispiel und eine kurze Beschreibung der Funktion, nicht nur einen Link zur Dokumentation
  • Beschriften Sie das Merkmal mit einem fettgedruckten Titel in der ersten Zeile

Siehe auch:

24voto

Jaime Soriano Punkte 7219

Historische Befehle und Argumente zurückholen

Es ist möglich, selektiv auf frühere Befehle und Argumente zuzugreifen, indem man die ! Betreiber. Er ist sehr nützlich, wenn Sie mit langen Pfaden arbeiten.

Sie können Ihre letzten Befehle mit history .

Sie können die vorherigen Befehle mit !<n> unter n den Index des Befehls in history Bei negativen Zahlen wird ab dem letzten Befehl in der Geschichte rückwärts gezählt.

ls -l foo bar
touch foo bar
!-2

Sie können die vorherigen Argumente mit !:<n> , Null ist der Befehl, >= 1 sind die Argumente.

ls -l foo
touch !:2
cp !:1 bar

Und Sie können beides kombinieren mit !<n>:<m>

touch foo bar
ls -l !:1 !:2
rm !-2:1 !-2:2
!-2

Sie können auch Argumentbereiche verwenden !<n>:<x>-<y>

touch boo far
ls -l !:1-2

Andere ! besondere Modifikatoren sind:

  • * für alle Argumente

    ls -l foo bar
    ls !*
  • ^ für das erste Argument ( !:1 == !^ )

  • $ für das letzte Argument

    ls -l foo bar
    cat !$ > /dev/null

20voto

stephanea Punkte 1078

Ich mag die Funktion -x, mit der man sehen kann, was in seinem Skript vor sich geht.

bash -x script.sh

19voto

Alberto Zaccagni Punkte 29518

SECONDS=0; sleep 5 ; echo "that took approximately $SECONDS seconds"

SEKUNDEN

Jedes Mal, wenn dieser Parameter referenziert wird, wird die Anzahl der Sekunden seit dem Shell-Aufruf zurückgegeben. Wenn SECONDS. ein Wert zugewiesen wird ist der Wert, der bei nachfolgenden Verweise die Anzahl der Sekunden seit der Zuweisung plus dem Wert zugewiesen. Wenn SECONDS nicht gesetzt ist, verliert es verliert es seine besonderen Eigenschaften, auch wenn sie später zurückgesetzt wird.

17voto

danieljimenez Punkte 1340

Hier ist eines meiner Lieblingsstücke. Hier wird bei der Tabulatorvervollständigung nicht zwischen Groß- und Kleinschreibung unterschieden. Es ist wirklich großartig für die schnelle Eingabe von Verzeichnispfaden, besonders auf einem Mac, wo das Dateisystem standardmäßig nicht zwischen Groß- und Kleinschreibung unterscheidet. Ich setze dies in .inputrc in meinem Privatordner.

set completion-ignore-case on

16voto

Vinko Vrsalovic Punkte 252104

Die spezielle Variable random:

if [[ $(($RANDOM % 6)) = 0 ]]
    then echo "BANG"
else
    echo "Try again"
fi

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X