Jak uruchomić wszystkie skrypty w katalogu w systemie Linux
Któregoś dnia testowałem kilka podstawowych skryptów powłoki, które stworzyłem dla zabawy. Ponieważ jestem nowy w skryptach powłoki, uruchamiałem i testowałem skrypty jeden po drugim. Było OK, jeśli było tylko kilka skryptów. W miarę wzrostu liczby skryptów testowanie ich wszystkich zajęło mi trochę czasu. Po krótkich poszukiwaniach w Internecie znalazłem kilka metod uruchamiania wszystkich skryptów w katalogu w systemie Linux, jeden po drugim.
Uruchom wszystkie skrypty w katalogu w systemie Linux
Mam kilka skryptów w moim katalogu Dokumenty.
$ ls Documents/
linux.sh ostechnix.sh script1.sh script2.sh script3.sh script4.shWszystkie są prostymi, jednowierszowymi skryptami powłoki, które wyświetlają podane ciągi znaków za pomocą polecenia „echo” na standardowym wyjściu.
Zanim dowiedziałem się, że możemy uruchomić wszystkie skrypty w folderze, zwykle sprawiałem, że skrypt był wykonywalny, jak:
chmod +x script.shNastępnie uruchamiam go za pomocą polecenia:
./script.sh
Lub,
sh script.shPonownie tworzę drugi skrypt jako wykonywalny, uruchamiam go i tak dalej.
Cóż, jest na to lepszy sposób. Możemy uruchomić wszystkie skrypty w katalogu lub ścieżce za pomocą polecenia "run-parts". Polecenie run-parts służy do uruchamiania skryptów lub programów w katalogu lub ścieżce.
run-parts <directory-path>Wadą polecenia run-parts jest to, że nie wykona ono wszystkich skryptów. Zadziała tylko wtedy, gdy Twoje skrypty będą miały poprawne nazwy. Nazwy muszą składać się wyłącznie z wielkich i małych liter ASCII, cyfr ASCII, podkreśleń ASCII i minus-łączników ASCII.
Aby rozwiązać ten problem z nazewnictwem, możemy użyć opcji regex. Na przykład następujące polecenie znajdzie i uruchomi wszystkie pliki skryptów w katalogu ~/Documents, które zaczynają się na literę „s” i kończą na rozszerzeniu „sh”:
run-parts --regex '^s.*sh$' ~/DocumentsUruchom wszystkie skrypty w katalogu w systemie Linux za pomocą polecenia run-parts
Rozwiązywanie problemów:
Jeśli napotkałeś błąd podobny do poniższego;
run-parts: failed to exec Documents/script1.sh: Exec format errorAby to naprawić, zapoznaj się z poniższym przewodnikiem.
- Napraw „Błąd formatu Exec” podczas uruchamiania skryptów za pomocą polecenia run-parts
Podobnie, aby uruchomić wszystkie pliki skryptów kończące się na .sh w katalogu Dokumenty, uruchom:
run-parts --regex '.*sh$' ~/Documents
Aby wydrukować nazwy wszystkich plików w katalogu Dokumenty, które zaczynają się na literę „s” i kończą na rozszerzeniu „sh”, uruchom:
$ run-parts --list --regex '^s.*sh$' Documents
Documents/script1.sh
Documents/script2.sh
Documents/script3.sh
Documents/script4.shTo polecenie wyświetli tylko nazwy plików skryptów, ale ich nie wykona.
Aby wyświetlić listę wszystkich plików kończących się na .sh w katalogu Dokumenty, uruchom:
$ run-parts --list --regex '.*sh$' Documents
Documents/linux.sh
Documents/ostechnix.sh
Documents/script1.sh
Documents/script2.sh
Documents/script3.sh
Documents/script4.shPolecenie run-parts jest używane głównie przez zadania cron i nie można na nim polegać w przypadku użycia ręcznego.
Innym sposobem uniknięcia konieczności zmiany nazw skryptów w celu dopasowania ich do struktury nazewnictwa run-parts jest użycie poleceń find lub pętla for.
Aby znaleźć i uruchomić wszystkie pliki skryptów zaczynające się na literę „s” w folderze ~/Documents, uruchom:
find ~/Documents -maxdepth 1 -type f -executable -name 's*' -exec {} \;Jeśli chcesz uruchomić wszystkie skrypty w podanym katalogu i wszystkich jego podkatalogach, usuń opcję max głębokość w powyższym poleceniu:
find ~/Documents -type f -executable -name 's*' -exec {} \;Aby uruchomić wszystkie skrypty zakończone rozszerzeniem .sh", uruchom:
find ~/Documents -maxdepth 1 -type f -executable -name '*.sh' -exec {} \;Znajdź i uruchom wszystkie skrypty w katalogu w systemie Linux za pomocą polecenia find
Metoda ta ma także niewielką wadę. To polecenie może uruchomić tylko skrypty, które mogą być interpretowane przez twoją obecną powłokę. Jeśli chcesz uruchamiać wszelkiego rodzaju skrypty, na przykład awk, perl, python, skrypty powłoki, użyj metody pętli for jak poniżej.
for f in ~/Documents/s* ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done
Powyższe polecenie uruchomi skrypty rozpoczynające się na literę „s” w folderze ~/Documents. Jeśli chcesz uruchomić wszystkie pliki z rozszerzeniem „.sh”, wykonaj:
for f in ~/Documents/*.sh ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; doneWięcej szczegółów znajdziesz na stronach man.
man run-partsman findMam nadzieję że to pomoże.

