Использование команды basename в сценариях Bash

Popular:
УЛУЧШИТЕ НАСТРОЙКУ СЕРВЕРА! ПОДКЛЮЧИТЕ AVA И ЗАПУСТИТЕ С 15% СКИДКОЙ
ИСПОЛЬЗУЙ ПРОМО

Использование команды basename в сценариях Bash

В сценариях Bash одной из самых распространенных задач является манипуляция путями к файлам – особенно когда из полного пути нужно извлечь только имя файла. Именно здесь на помощь приходит команда basename. Несмотря на кажущуюся простоту, basename имеет мощные возможности при правильном использовании в более сложных сценариях, инструментах автоматизации, хостингах и средах CI/CD.

Что такое basename?

Команда basename удаляет путь к каталогу и, по желанию, расширение файла, оставляя только базовое имя (последний компонент пути к файлу).

🔧 Основной синтаксис:

✅ Простые примеры:

Зачем использовать basename в сценариях?

Вот лишь несколько примеров реальных потребностей в сценариях:

Практические примеры использования сценариев Bash

📁 1. Переход по файлам с ведением журнала

Этот скрипт перебирает файлы .log, извлекает имя без расширения и записывает каждое действие в журнал. basename упрощает работу с именами файлов без сложной нарезки строк.

📂 2. Использование basename для динамических путей к файлам

Допустим, вы получаете полные пути из пользовательского ввода или от другого процесса:

Использование basename в скрипте обеспечивает гибкость при работе с динамическими путями к файлам, особенно в таких средах, как Linux VPS, где журналы, файлы конфигурации и резервные копии могут находиться в разных каталогах. Это делает ваш скрипт надежным независимо от того, передается ли ему полный путь, например /var/log/syslog, или относительный файл, например ./config.txt.

🧪 3. Комбинирование basename и dirname

Используйте их вместе, чтобы выделить элементы пути:

Удаление расширений файлов с помощью basename

Если вы хотите удалить известные расширения:

⚠️ Примечание: Это работает только при точном совпадении суффикса. Так что .txt работает, а .TXT или .tar.gz – нет, если они не указаны явно.

Для нескольких расширений используйте basename вместе с другими инструментами:

Или:

basename vs Расширение параметров

Хотя basename интуитивно понятен, он порождает подпроцесс. Для скриптов, критичных к производительности, или больших циклов предпочтите чистые альтернативы Bash:

Bash Native Equivalent:

Удалите расширение с помощью встроенного Bash:

✅ Быстрее, чем вызов внешнего basename.

Пример: Переименование файлов в массовом порядке

Допустим, вы хотите снабдить все файлы .jpg префиксом с сегодняшней датой:

Здесь используется basename для сохранения оригинальных имен с добавлением пользовательской строки.

Использовать базовое имя “$0” для интросов сценариев