Używanie polecenia basename w skryptach Bash
Używanie polecenia basename w skryptach Bash
Podczas pracy ze skryptami Bash często trzeba wyodrębnić określone części ścieżek plików, takie jak nazwy plików lub rozszerzenia plików. W tym miejscu przydaje się polecenie basename. Pozwala ono na usunięcie ścieżki katalogu i wyodrębnienie tylko nazwy pliku lub jego rozszerzenia, co czyni je niezbędnym narzędziem do tworzenia skryptów i automatyzacji zadań w środowiskach Linux.
W tym artykule zbadamy, jak używać polecenia basename w skryptach Bash, jego składnię i typowe przypadki użycia, które mogą uprościć zadania związane z obsługą plików.
Czym jest polecenie basename?
Polecenie basame w systemie Linux służy do usuwania ścieżki katalogu i wyświetlania tylko nazwy pliku lub nazwy pliku bez jego rozszerzenia. Jest to szczególnie przydatne w skryptach, w których trzeba wyodrębnić nazwę pliku z pełnej ścieżki pliku. Polecenie basename pomaga utrzymać skrypty w czystości i skupić się na manipulowaniu nazwami plików bez martwienia się o strukturę katalogów.
Podstawowa składnia polecenia basename
basename [ścieżka] [przyrostek]
- path: Pełna ścieżka do pliku lub katalogu.
- suffix: Opcjonalny argument używany do usunięcia określonego przyrostka (takiego jak rozszerzenie pliku).
Przykład 1: Wyodrębnianie nazwy pliku ze ścieżki
Najczęstszym zastosowaniem basename jest wyodrębnienie nazwy pliku z pełnej ścieżki. Na przykład:
file_path="/home/user/documents/report.txt"
file_name=$(basame "$file_path")
echo "Nazwa pliku to: $nazwa_pliku"
Wyjście:
Nazwa pliku to: report.txt
W tym przykładzie basename wyodrębnia plik report.txt z podanej ścieżki. Jest to przydatne, gdy chcesz pracować tylko z nazwą pliku w skrypcie.
Przykład 2: Usuwanie rozszerzenia pliku
Jeśli chcesz usunąć rozszerzenie pliku z wyodrębnionej nazwy pliku, możesz podać rozszerzenie jako drugi argument:
file_path="/home/user/documents/report.txt"
file_name=$(basame "$file_path".txt)
echo "Nazwa pliku bez rozszerzenia to: $nazwa_pliku"
Wyjście:
Nazwa pliku bez rozszerzenia to: report
Tutaj określono przyrostek .txt, więc basename usuwa go z nazwy pliku, pozostawiając tylko raport. Jest to szczególnie przydatne, gdy chcesz zmienić rozszerzenie pliku lub użyć nazwy pliku w innym kontekście.
Przykład 3: Używanie basename z pętlą w skryptach
Polecenie basename jest często używane w pętlach do przetwarzania wielu plików w katalogu. Na przykład, jeśli chcesz iterować przez wszystkie pliki .txt w katalogu i wydrukować ich nazwy bez rozszerzeń:
for file in /home/user/documents/*.txt; do
file_name=$(basame "$file".txt)
echo "Przetwarzanie pliku: $nazwa_pliku"
done
Wyjście:
Plik przetwarzania: raport
Plik przetwarzania: notatki
Plik przetwarzania: podsumowanie
W tym skrypcie pętla iteruje przez wszystkie pliki .txt w określonym katalogu. Polecenie basame jest używane do usunięcia ścieżki i rozszerzenia .txt, wypisując tylko nazwę każdego pliku.
Przykład 4: Używanie polecenia basename w połączeniu z innymi poleceniami
Polecenie basename można łączyć z innymi poleceniami w celu tworzenia bardziej zaawansowanych skryptów. Na przykład, można skopiować plik do innego katalogu, zachowując tylko jego nazwę:
source_file="/home/user/documents/report.txt"
destination_dir="/home/user/backup "
# Wyodrębnij nazwę pliku używając basamefile_name=$(basename "$source_file")
cp "$source_file" "$destination_dir/$file_name"
echo "File copied to $destination_dir/$file_name"
File copied to /home/user/backup/report.txt
W tym przykładzie polecenie basename służy do wyodrębnienia pliku report.txt z pełnej ścieżki. Następnie polecenie cp używa tej nazwy pliku do skopiowania pliku do katalogu kopii zapasowej. Ta metoda zapewnia, że nazwa pliku pozostaje niezmieniona podczas procesu kopiowania.
Przykład 5: Używanie basename do analizowania argumentów skryptu
Można również użyć basename do uproszczenia skryptów, które przyjmują ścieżkę pliku jako argument. Na przykład:
if [ -z "$1" ]; then
echo "Usage: $0 "
exit 1
fifile_path="$1"
file_name=$(basename "$file_path")
echo "You provided the file: $file_name"
Zapisz ten skrypt jako get_filename.sh i uruchom go ze ścieżką do pliku:
./get_filename.sh /home/user/documents/report.txt
Dane wyjściowe:
Podano plik: report.txt
W tym skrypcie funkcja basename wyodrębnia nazwę pliku ze ścieżki podanej jako argument skryptu. Jest to praktyczny sposób przetwarzania ścieżek plików w skryptach akceptujących dane wprowadzane przez użytkownika.
Podsumowanie
Polecenie basename jest potężnym narzędziem do obsługi ścieżek plików w skryptach Bash. Wyodrębniając tylko nazwę pliku lub usuwając rozszerzenia, pozwala skupić się na częściach ścieżki pliku, na których ci zależy. Niezależnie od tego, czy przetwarzasz wiele plików w pętli, czy po prostu wyodrębniasz nazwę pliku do wyświetlenia, basename może sprawić, że twoje skrypty Bash będą bardziej wydajne i czytelne.
Oto krótkie podsumowanie tego, czego się nauczyłeś:
- basename wyodrębnia nazwy plików ze ścieżek plików.
- Może usuwać rozszerzenia plików za pomocą drugiego argumentu.
- Jest bardzo przydatna do zadań skryptowych, takich jak kopiowanie plików, przetwarzanie argumentów lub iteracja po katalogach.
Efektywne korzystanie z basename może zaoszczędzić czas i sprawić, że skrypty będą znacznie łatwiejsze w utrzymaniu. Teraz możesz dodać ją do swojego zestawu narzędzi skryptowych i zacząć upraszczać swoje zadania związane z obsługą plików w Linuksie! Miłego pisania skryptów!