Artur Pyszczuk's blog...

"I'm not insane. My mother had me tested."
Sheldon Cooper @ The Big Bang Theory
/home/linux/commands/basename/

basename - Usunięcie przyrostku (rozszerzenia) z nazwy pliku

Za pomocą polecenia basename można zrobić bardzo ciekawą rzecz, a mianowicie z nazwy wskazywanego pliku usunąć przyrostek (rozszerzenie pliku). Większość z was może się zastanowić po co w ogóle robić coś takiego, natomiast w dalszej części pokazany został przykład dobitnie ilustrujący zastosowanie tego programu.

Ogólne użycie tego programu wygląda następująco.

$ basename NAZWA [SUFFIX]

Gdzie: NAZWA to nazwa pliku, a SUFFIX to przyrostek (rozszerzenie pliku), który może zostać pominięty. Jeśli jednak pominiemy wprowadzenie przyrostka, to z nazwą nie zostanie nic zrobione, zostanie wyświetlona dokładnie taka sama. Generalnie użycie basename nie zmienia nazwy pliku, z którego korzystał, jedynie edytowana nazwa zostanie wyświetlona na ekranie. Tak więc przykład użycia może być następujący.

Polecenie basename
Rys 1. Polecenie basename.

Jak widać w pierwszym przypadku nie podaliśmy suffix'a, dlatego też cała nazwa została wyświetlona. W drugim jednak przypadku podaliśmy jako suffix rozszerzenie tego pliku, jako wynik dostaliśmy samą nazwę plik1. Jakie mogą być korzyści z używania tego programu? A więc załóżmy pewną rzecz, mamy w katalogu X, n plików, każdy z rozszerzeniem .php. Chcemy, aby każdy z tych plików znalazł się w katalogu którego nazwą będzie nazwa tego pliku, tylko, że bez rozszerzenia (np. plik: basename.php, katalog: basename). Jeśli plików tych jest stosunkowo mało, to można zrobić to ręcznie, a co jeśli tych plików będzie np. 100? Tworzenie po kolei każdego katalogu oraz przenoszenie pliku do nowo utworzonego katalogu, zajęło by około 17 minut (zakładając, że utworzenie katalogu i przeniesienie pliku do tego katalogu zajęło by łącznie 10 sekund). Korzystając z basename zajmie nam to tyle co czas wpisania skryptu i uruchomienia go. Dajmy na to 45 sekund (w tym przykładzie są 23 pliki, lecz nie ma to najmniejszego znaczenia, ponieważ skrypt działa dla różnych ilości plików i nie trzeba nawet tej liczby podawać).

Polecenie basename
Rys 2. Polecenie basename - skrypt.

Czyż używanie konsoli nie jest piękne? Omówię działanie tego skryptu w kilku kolejnych liniach.

Jeśli w katalogu X było by 1000 plików, to dokładnie takie same czynności zostały by wykonane, tylko odpowiednią liczbę razy więcej. Ile zaoszczędzilibyśmy czasu? Zdecydowanie bardzo dużo.


Wiecej informacji na temat programu basename znajdziesz w podreczniku systemowym man.
Wpisujac w konsoli man basename

Wiecej informacji na temat programu basename znajdziesz również w programie info.
Wpisujac w konsoli info coreutils 'basename invocation'

Some rights reserved 2010 - 2015 Artur Pyszczuk

| Strona Główna | Kontakt |