На днях мы узнали, как выполнять cd и ls в одной команде.
Сегодня мы увидим еще один крутой совет по bash – cp или mv и cd в одной команде.
Смысл – мы собираемся скопировать или переместить файлы / каталоги из одного места в другое и мгновенно перейти в каталог назначения.
Конечно, мы можем сделать это с помощью однострочной команды.
Например, можно скопировать или переместить файлы / каталоги в другой каталог и перейти в каталог назначения с помощью команды:
cp source destination && cd destination
или
mv source destination && cd destination
Однако мы не собираемся делать это таким образом.
Мы будем использовать простую функцию bash, чтобы объединить команду cp или mv и команду cd и запустить ее как одну команду.
Этот прием должен работать на всех Unix-подобных системах, которые поддерживают BASH.
Как сделать cp или mv и cd одной командой
Откройте файл ~/.bashrc в вашем любимом редакторе:
$ nano ~/.bashrc
Добавьте следующие строки в конце файла:
#cp and cd in one command cpcd (){ if [ -d "$2" ];then cp $1 $2 && cd $2 else cp $1 $2 fi } #mv and cd in one command mvcd (){ if [ -d "$2" ];then mv $1 $2 && cd $2 else mv $1 $2 fi }
Сохраните и закройте файл.
Выполните следующую команду, чтобы изменения вступили в силу.
$ source ~/.bashrc
Теперь скопируйте или переместите файлы/каталоги из одного места в другое, и вы автоматически попадете в место назначения.
Давайте сделаем несколько примеров каталогов и файлов.
$ mkdir dir1 dir2
$ touch file1 file2
Теперь скопируйте file1 в dir1, используя команду:
$ cpcd file1 dir1
$ pwd /home/itisgood/dir1
Как видите, приведенная выше команда копирует file1 в dir1, а затем автоматически переходит в папку dir1.
Затем переместите file2 в dir2, используя команду:
$ cd
$ mvcd file2 dir2
$ pwd /home/itisgood/dir2
Эта команда копирует file2 в dir2, и он автоматически переходит в папку dir2.