В Bash и подобных оболочках cd -
изменяет текущий каталог на ранее посещенный. Часто это очень удобно. Интересно, есть ли похожее сокращение для копирования или перемещения файлов, например:
~/project-a/ $ cd ../project-b
~/project-b/ $ cp Makefile LICENSE - # this won't work, hence the question
Я также буду рад zsh
конкретным ответам.
решение1
Если в вашей оболочке есть cd -
, то, скорее всего, в ней будет либо специальная переменная $OLDPWD
, либо ярлык ~-
для каталога, в котором вы находились ранее.
cp Makefile LICENSE "$OLDPWD/"
cp Makefile LICENSE ~-
cat ~-/Makefile
Действительно, язык оболочки POSIX (на котором построены ksh/bash/zsh)указываеткоторое cd -
должно быть равно cd "$OLDPWD"
.
решение2
Вы всегда можете использоватьобратные кавычки оболочки.
Они действуют как подоболочка: команда в обратных кавычках выполняется первой, а ее вывод помещается в качестве аргумента основной команды.
~/folderA$ cd ../folderB
~/folderB$ cp Makefile `cd -`
# gets expended to "cp Makefile ~/folderA"