¿Es posible crear un acceso directo para un comando bash que también incluya variables?

¿Es posible crear un acceso directo para un comando bash que también incluya variables?

Por ejemplo, ¿es posible crear un atajo para

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

¿De modo que uno podría simplemente escribir tarpb VARIABLE_1 VARIABLE_2? ¿O sólo es posible mediante secuencias de comandos?

Respuesta1

Hay un camino intermedio, el uso de funciones. En su .bashrc, podría definir una función para hacer esto:

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

$1y $2son el primer y segundo parámetro pasados ​​a la función.

Después de reiniciar tu shell (o recargar tu .bashrc), puedes usar la función como un comando normal:

tarbp input output

(Ubuntu incluso completa bash en esto)

información relacionada