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).
Dodaj komentarz