Wiele podobnych zadań, czyli poznaj potęgę powłoki

Czasem zdarza się, że potrzebne jest wykonanie kilka, kilkanaście (a może więcej) poleceń. Przykładowo, aby móc rozpakować wiele archiwów zip, możemy spróbować wykonać polecenie:

unzip *.zip

Niestety program zip potraktuje to jako archiwum wieloczęściowe i zakończy swoje działanie błędem. Każde z tych archiwów powinno zostać rozpakowane za pomocą oddzielnego polecenia. Ale oczywiście nie trzeba tego robić ręcznie. Dużo lepiej do tego zadania wykorzystać narzędzie wbudowane w powłokę.

Powłoka bash ma wbudowaną pętlę typu „for”. Po więcej informacji można zajrzeć do podręcznika systemowego man (za pomocą polecenia man bash – warto skorzystać z opcji wyszukiwania po wpisaniu znaku „/”).

Rozwiązanie problemu to zaledwie jedne polecenie:

for nazwa in *.zip ;do unzip $nazwa;done;

Dodam jeszcze kilka słów wyjaśnienia. Pętla za każdym razem podstawia za zmienną nazwa jeden z argumentów z listy wskazanej przez słowo kluczowe in (w przykładzie wszystkie pliki z bieżącego katalogu z końcówką „.zip”). A w pętli mamy jedno polecenie (oczywiście jeśli chcemy możemy ich wstawić więcej) które rozpakowuje pojedynczy plik. Po szczegóły odsyłam do podręcznika (man bash).


Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *