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:

3voto

Steve Baker Punkte 4217

Numerische Ausdrücke im Stil von C:

let x="RANDOM%2**8"
echo -n "$x = 0b"
for ((i=8; i>=0; i--)); do
  let n="2**i"
  if (( (x&n) == n )); then echo -n "1"
  else echo -n "0"
  fi
done
echo ""

3voto

danieljimenez Punkte 1340

Diese Eigenschaften gehören ebenfalls zu meinen Favoriten.

export HISTCONTROL=erasedups
export HISTSIZE=1000

Die erste sorgt dafür, dass die Bash Befehle nicht mehr als einmal protokolliert, das verbessert wirklich history Nützlichkeit. Die andere erweitert die Größe des Verlaufs von der Standardeinstellung 100 auf 1000. Auf meinen Rechnern habe ich dies auf 10000 eingestellt.

3voto

camh Punkte 38167

Eine, die ich häufig verwende, ist !$, um auf das letzte Wort des letzten Befehls zu verweisen:

$ less foobar.txt
...
# I dont want that file any more
$ rm !$

2voto

Dennis Williamson Punkte 322329

Die Bash hat eine variable Umleitung:

$ foo=bar
$ baz=foo
$ echo ${!baz}
bar

2voto

Alok Singhal Punkte 87419

Ich habe einen Alias r='fc-s' und ich finde sie in einigen wenigen Fällen sehr nützlich. Um den letzten Befehl auszuführen, geben Sie einfach r und drücken Sie die Eingabetaste, und das war's. Das ist natürlich nicht sehr nützlich, weil der Pfeil nach oben das Gleiche tut. Aber Sie können verwenden r um den vorherigen Befehl mit Ersetzungen auszuführen. Angenommen, Ihr letzter Befehl war ein langer Befehl zum Kompilieren einer Datei:

$ gcc -c <file_name>.c <lots of options> -o <file_name>.o

Nun möchten Sie eine weitere Datei mit den gleichen Optionen kompilieren und eine entsprechende .o Datei:

$ r <file_name>=<new_file>

wird es tun. Sie müssen nicht die Pfeiltaste nach oben verwenden, zu den richtigen Stellen navigieren und sie dann jeweils manuell ersetzen. Dies kann mehrere Male wiederholt werden, so dass Sie dies als nächstes tun können:

$ r <new_file>=<other_file>

Natürlich gibt es für so etwas Makefiles, aber ich hoffe, ich habe gezeigt, dass der Alias nützlich ist.

Ich habe diesen Alias noch nicht oft gebraucht, aber es gab Zeiten, in denen ich froh war, dass ich diesen Alias habe!

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