Інший підхід - створити власну команду, присвячену для цієї мети. Це можна зробити за допомогою функції, яка може виглядати так:
$ function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
Де: (1) mv-special - назва функції; (2) змінні $1та $2є аргументами у функції, яка буде використовуватися командами mvта cd; (3) $(echo $2-) додає символ wildcat до кінця рядка у var $2та фіксує поведінку, dirnameякщо змінна $2містить лише шлях; (4) $(dirname $(echo $2-)) буде фільтрувати лише шлях з $2.
Відповідно до цієї відповіді, функція може виглядати так:
$ function mv-special { mv $1 $2; cd ${2%/*}; }
Де: ${2%/*}буде фільтрувати лише шлях із $2.
Щоб бути доступною як команда, цю функцію потрібно експортувати :
$ export -f mv-special
Використання:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf
або:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/
Зверніть увагу, що для обох варіантів другий аргумент ( $2) повинен закінчуватися іменем файлу або косою рисою ( /).
Щоб наша нова команда була постійно доступною, визначення функції та команди експорту необхідно додати до ~/.bashrc:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
export -f mv-special
або:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd ${2%/*}; }
export -f mv-special

Спеціальна команда може бути виконана за допомогою виконуваного файлу скрипта, який розміщується в ~/binабо в /usr/sbin: Як я можу створити спеціальну команду терміналу (для запуску сценарію)? Але якщо чесно, я зіткнувся з проблемою з поведінкою cdв цьому сценарії.