Використання базового імені Command у Bash-скриптах
Використання базового імені Command у Bash-скриптах
У скриптах Bash однією з найпоширеніших задач є маніпулювання шляхами до файлів – особливо, коли вам потрібно витягти лише ім’я файлу з повного шляху. Саме для цього і потрібна команда basename. Незважаючи на те, що basename здається простою, вона має потужні можливості при правильному використанні в більш складних скриптах, інструментах автоматизації, хостингових сервісах і середовищах CI/CD.
Що таке basename?
Команда basename вилучає шлях до каталогу і, за бажанням, вилучає розширення файлу, залишаючи лише основну назву (останній компонент шляху до файлу).
🔧 Базовий синтаксис:
basename [path] [suffix]✅ Прості приклади:
basename /home/user/docs/report.pdf
basename /home/user/docs/report.pdf .pdf
Навіщо використовувати базове ім’я в скриптах?
Ось лише кілька прикладів реальних потреб скриптів:
Ведення журналів: Витягнути ім’я оброблюваного файлу журналу.
Архівація: Додати до стисненого архіву лише ім’я файлу.
Автоматизація: Обробляти пакети файлів і генерувати імена вихідних файлів.
Конвеєри: Витягувати імена файлів з кроками CI/CD.
Практичні приклади використання Bash-скриптів
📁 1. Циклічний перегляд файлів з логуванням
Цей скрипт циклічно переглядає .log-файли, витягує ім’я без розширення і записує кожну дію в журнал. basename спрощує обробку імен файлів без складного розбиття рядка на частини.
📂 2. Використання basename для динамічних шляхів до файлів
Припустимо, ви отримуєте повні шляхи від користувача або іншого процесу:
#!/bin/bash
input_path="$1"
filename=$(basename "$input_path")
echo "Ім'я файлу: $filename"
Використання базового імені в скрипті забезпечує гнучкість при роботі з динамічними шляхами до файлів, особливо в таких середовищах, як Linux VPS, де журнали, конфігураційні файли і резервні копії можуть знаходитися в різних директоріях. Це робить ваш скрипт надійним незалежно від того, чи передається повний шлях, наприклад, /var/log/syslog, чи відносний файл, наприклад, ./config.txt.
🧪 3. Поєднання базового імені з іменем каталогу
Використовуйте їх разом, щоб ізолювати елементи шляху:
#!/bin/bash
input_path="$1"
filename=$(basename "$input_path")
echo "The file name is: $filename"Видалення розширень файлів з базовим ім’ям
Якщо ви хочете видалити відомі розширення:
⚠️ Примітка: Це працює, тільки якщо суфікс точно збігається. Отже, .txt працює, але .TXT або .tar.gz не працюватимуть, якщо не вказано явно.
Для декількох розширень комбінуйте базову назву з іншими інструментами:
file="/tmp/data/archive.tar.gz"
filename=$(basename "$file")
clean_name=${filename%%.*}
echo "$clean_name"
# Output: archiveАбо:





