Вопрос или проблема
Мой pwd – /long_path/lots/of/subs/waydeep/
. Если я выполню cd -
, он вернет меня в /lastdirectory/long_pathway/very_deep/
.
Есть ли командa-сокращение терминала/CLI, чтобы скопировать file1.ex
из текущего рабочего каталога в последний рабочий каталог? (Это может выглядеть как cp file1.ex -/
.) Если бы я часто перемещал файлы между этими двумя, я мог бы создать символьную ссылку, но я хочу найти или создать более общее решение.
Если нет встроенной возможности для этого, как я мог бы добавить ее – скажем, в мою оболочку (bash)? Я спрашиваю, потому что этот вопрос возникает достаточно часто, и было бы полезно иметь готовое решение.
Сейчас использую Linux Mint 23.1 и Fedora 40, но вопрос общепринят для большинства/любых дистрибутивов, особенно используя терминал (и, возможно, bash).
Используйте встроенную переменную OLDPWD
.
cd /path/to/first/location
cd /path/to/second/location
cp "some file" "$OLDPWD"
.
Ответ или решение
Вопрос о том, существует ли встроенный способ копирования файла из текущего каталога в предыдущий каталог, интересует многих пользователей терминала, особенно тех, кто работает с системами на базе Linux. Рассмотрим, как решить эту задачу, опираясь на доступные инструменты и переменные оболочки.
Использование переменной OLDPWD
В Bash, который является одной из самых популярных оболочек на системах Linux, существует встроенная переменная OLDPWD
. Она автоматически хранит путь к предыдущему каталогу, в который вы перемещались с помощью команды cd
. Это позволяет легко обращаться к этому каталогу при работе с файлами.
Пример использования
Давайте рассмотрим пример. Предположим, вы находитесь в каталоге /long_path/lots/of/subs/waydeep/
и хотите скопировать файл file1.ex
в последний каталог, которым вы пользовались, например, это /lastdirectory/long_pathway/very_deep/
.
-
Сначала убедитесь, что вы находитесь в нужном каталоге:
pwd # вывод: /long_path/lots/of/subs/waydeep/
-
Перейдите в другой каталог (например, как вы делаете это обычно):
cd /lastdirectory/long_pathway/very_deep/
-
Теперь, для возвращения к предыдущему каталогу и копирования файла, выполните следующую команду:
cp /long_path/lots/of/subs/waydeep/file1.ex "$OLDPWD"
Дополнительные советы
-
Если вы часто копируете файлы между двумя каталогами, вы можете создать функцию в вашем файле конфигурации
.bashrc
или.bash_profile
для автоматизации этого процесса. Например:function cpl() { cp "$1" "$OLDPWD" }
Теперь, просто вызвав
cpl file1.ex
, вы сможете скопироватьfile1.ex
из текущего каталога в предыдущий каталог. -
Обратите внимание, что если вы измените текущий каталог после вызова команды
cd
, то переменнаяOLDPWD
будет обновлена, так что нужно использовать этот метод до любых изменений директории.
Заключение
Таким образом, используя переменную OLDPWD
, вы можете быстро и эффективно копировать файлы из текущего каталога в предыдущий. Этот метод не требует установки дополнительных инструментов и доступен в любой стандартной установке Bash. Применение таких простых решений значительно облегчает повседневную работу с файлами и директориями в терминале.
Если у вас есть дополнительные вопросы, не стесняйтесь задавать их.