Существует ли встроенный способ скопировать файл из текущего каталога в предыдущий каталог? [дубликат]

Вопрос или проблема

Мой 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/.

  1. Сначала убедитесь, что вы находитесь в нужном каталоге:

    pwd
    # вывод: /long_path/lots/of/subs/waydeep/
  2. Перейдите в другой каталог (например, как вы делаете это обычно):

    cd /lastdirectory/long_pathway/very_deep/
  3. Теперь, для возвращения к предыдущему каталогу и копирования файла, выполните следующую команду:

    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. Применение таких простых решений значительно облегчает повседневную работу с файлами и директориями в терминале.

Если у вас есть дополнительные вопросы, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...