Ist es möglich, eine Verknüpfung für einen Bash-Befehl zu erstellen, die auch Variablen enthält?

Ist es möglich, eine Verknüpfung für einen Bash-Befehl zu erstellen, die auch Variablen enthält?

Ist es beispielsweise möglich, eine Verknüpfung zu erstellen für

tar cf - /VARIABLE_1 -P | pv -s $(du -sb /VARIABLE_1 | awk '{print $1}') | gzip > VARIABLE_2.tar.gz

so dass man einfach eingeben kann tarpb VARIABLE_1 VARIABLE_2? Oder ist das nur per Skript möglich?

Antwort1

Es gibt einen Mittelweg, nämlich die Verwendung von Funktionen. In Ihrem .bashrckönnen Sie eine Funktion definieren, die dies tut:

tarbp() {
  input=$1
  output=$2
  tar cf - /"${input}" -P | pv -s "$(du -sb /"${input}" | awk '{print $1}')" | gzip > "${output}".tar.gz
}

$1und $2sind der erste und zweite Parameter, die an die Funktion übergeben werden.

Nachdem Sie Ihre Shell neu gestartet (oder Ihre neu geladen .bashrc) haben, können Sie die Funktion wie einen normalen Befehl verwenden:

tarbp input output

(Ubuntu führt hierfür sogar eine Bash-Vervollständigung durch)

verwandte Informationen