Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
19.06.2025
No categories

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:

#!/bin/bash
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:

#!/bin/bash
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ń:

#!/bin/bash
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ę:

#!/bin/bash
source_file="/home/user/documents/report.txt"
destination_dir="/home/user/backup "
# Wyodrębnij nazwę pliku używając basame
file_name=$(basename "$source_file")
CODEBLOCK_d41d8cd98f00b204e9800998ecf8427e_SAFE__# Skopiuj plik do katalogu docelowego o tej samej nazwie
cp "$source_file" "$destination_dir/$file_name"

echo "File copied to $destination_dir/$file_name"
Output:
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:

#!/bin/bash
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!

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills

Похожие записи не найдены.