Можно ли создать сокращение для команды bash, которое также будет включать переменные?

Можно ли создать сокращение для команды bash, которое также будет включать переменные?

Например, возможно ли сделать ярлык для

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

так что можно было бы просто набрать tarpb VARIABLE_1 VARIABLE_2? Или это возможно только через скрипты?

решение1

Есть средний путь, использование функций. В вашем .bashrc, вы можете определить функцию, чтобы сделать это:

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

$1и $2являются первым и вторым параметрами, передаваемыми функции.

После перезапуска оболочки (или перезагрузки .bashrc) вы можете использовать функцию как обычную команду:

tarbp input output

(Ubuntu даже поддерживает автодополнение bash для этого)

Связанный контент