Używanie polecenia basename w skryptach Bash

popularne
ZAAWANSUJ SWOJĄ KONFIGURACJĘ SERWERA! APLIKUJ AVA I URUCHOM Z 15% ZNIŻKI
UŻYJ KODU PROMOCYJNEGO:

Używanie polecenia basename w skryptach Bash

W skryptach Bash jedną z najczęstszych zadań jest manipulacja ścieżkami plików—szczególnie gdy chcesz wyodrębnić tylko nazwę pliku z pełnej ścieżki. W tym miejscu przychodzi polecenie basename. Choć wydaje się proste, basename ma potężne zastosowania, gdy jest używane poprawnie w bardziej złożonych skryptach, narzędziach automatyzacji, usługach hostingowych i środowiskach CI/CD.

Czym jest basename?

Polecenie basename usuwa ścieżkę katalogu i opcjonalnie usuwa rozszerzenie pliku, pozostawiając tylko nazwę podstawową (ostatni element ścieżki pliku).

🔧 Podstawowa składnia:

✅ Proste przykłady:

Dlaczego używać basename w skryptach?

Oto kilka przykładów rzeczywistych potrzeb skryptowych:

Praktyczne przypadki użycia w skryptach Bash

📁 1. Iterowanie po plikach z rejestrowaniem

Ten skrypt iteruje po plikach .log, wyodrębnia nazwę bez rozszerzenia i rejestruje każdą akcję. basename upraszcza obsługę nazw plików bez skomplikowanego krojenia ciągów.

📂 2. Używanie basename dla dynamicznych ścieżek plików

Załóżmy, że otrzymujesz pełne ścieżki z wejścia użytkownika lub innego procesu:

Używanie basename w swoim skrypcie zapewnia elastyczność podczas pracy z dynamicznymi ścieżkami plików, szczególnie w środowiskach takich jak Linux VPS, gdzie dzienniki, pliki konfiguracyjne i kopie zapasowe mogą znajdować się w różnych katalogach. To sprawia, że twój skrypt jest odporny niezależnie od tego, czy przekazano mu pełną ścieżkę, taką jak /var/log/syslog, czy względny plik, taki jak ./config.txt.

🧪 3. Łączenie basename z dirname

Użyj ich razem, aby izolować elementy ścieżki:

Usuwanie rozszerzeń plików za pomocą basename

Jeśli chcesz usunąć znane rozszerzenia:

⚠️ Uwaga: To działa tylko wtedy, gdy sufiks dokładnie pasuje. Więc .txt działa, ale .TXT lub .tar.gz nie zadziała, chyba że zostanie to wyraźnie określone.

Dla wielu rozszerzeń połącz basename z innymi narzędziami:

Lub:

basename vs Rozszerzenie parametrów

Chociaż basename jest intuicyjne, uruchamia podproces. Dla skryptów krytycznych dla wydajności lub dużych pętli, preferuj czyste Bash alternatywy:

Rodzajowy odpowiednik Bash:

Usuń rozszerzenie za pomocą natywnego Bash: