Параметры установки доступ в мульти-команды встроенного псевдоним/


Я пытаюсь создать псевдоним для команды, которая переименовывает папку, а затем закрывает ее:

alias txz='of=$1; nf=$of$(date -I); mv $of $nf; tar cJvf $nf.txz $nf --remove-files'

Вызов с помощью

txz test_folder

Я получаю ошибки

mv: missing destination file operand after ‘2014-05-14’
Try 'mv --help' for more information.
tar: 2014-05-14: Cannot stat: No such file or directory
test_folder/
test_folder/1
test_folder/2
tar: Exiting with failure status due to previous errors

Из-за нескольких команд. Если есть только одна команда (нет ;), $1 работает.

Есть ли какой-нибудь способ решить эту проблему?

Ps: вот команда для создания тестовой папки:

mkdir test_folder; touch test_folder/1 test_folder/2
1 2

1 ответ:

Лучше сделать его функцией, как это, поскольку псевдонимы не имеют поддержки позиционных параметров, таких как $1, $2 и т. д.:

txz() {
   of="$1"
   nf="$of"$(date -I)
   mv "$of" "$nf"
   tar cJvf "$nf.txz" "$nf" --remove-files
}

Или сделать в одну строку:

txz() { of="$1"; nf="$of"$(date -I); mv "$of" "$nf"; tar cJvf "$nf.txz" "$nf" --remove-files; }