🐧 Как запустить все скрипты в каталоге в Linux |

🐧 Как запустить все скрипты в каталоге в Linux

Мануал
На днях я тестировал некоторые базовые скрипты шелла, которые я создал для определенных целей.
Поскольку я новичок в написании скриптов оболочки, я запускал и проверял их один за другим.
Это было нормально, если имеется только несколько скриптов.
По мере того, как их количество росло, я подумал, что их тестирование отнимает немного времени.
После небольшого поиска в Google, я обнаружил пару методов для запуска всех скриптов в каталоге в Linux, один за другим.

Запустить все скрипты в каталоге в Linux

У меня есть пара скриптов в моем каталоге Documents:

$ ls Documents/
linux.sh ostechnix.sh script1.sh script2.sh script3.sh script4.sh

Все они представляют собой простые однострочные скрипты оболочки, которые отображают заданную строку (и) с помощью команды «echo» в стандартном выводе.

Прежде чем я узнал, что мы можем запустить все скрипты в данной папке, я обычно выполнял скрипт следующим образом:

$ chmod +x script.sh
$ ./script.sh

или

$ sh script.sh

Я снова делаю второй скрипт исполняемым, запускаю его и так далее.

Ну, тебе не нужно так поступать.

Мы можем запустить все скрипты в каталоге или пути, используя команду «run-parts».

Команда run-parts используется для запуска скриптов или программ в одном каталоге или по одному пути.

$ run-parts <directory-path>

Один из недостатков команды run-parts – она не выполняет все скрипты.

Это будет работать, только если ваши скрипты имеют правильные имена.

Имена должны состоять полностью из прописных и строчных букв ASCII, цифр ASCII, подчеркиваний ASCII и минус-дефисов ASCII.

Чтобы решить эту проблему с именами, мы можем использовать параметр regex.

Например, следующая команда найдет и запустит все файлы скриптов в каталоге ~/Documents, который начинается с буквы «s» и заканчивается расширением «sh»:

$ run-parts --regex '^s.*sh$' ~/Documents
Аналогично, чтобы запустить все файлы скриптов, заканчивающиеся на .sh в каталоге Documents, запустите:
$ run-parts --regex '.*sh$' ~/Documents

Чтобы вывести имена всех файлов в каталоге «Documents», которые начинаются с буквы «s» и заканчиваются расширением «sh», выполните:

$ run-parts --list --regex '^s.*sh$' Documents
Documents/script1.sh
Documents/script2.sh
Documents/script3.sh
Documents/script4.sh

Эта команда только выведет имена файлов скрипта, но не выполнит их.

Чтобы вывести список всех файлов, заканчивающихся на .sh в каталоге Documents, запустите:

$ find ~/Documents -maxdepth 1 -type f -executable -name 's*' -exec {} \;
Если вы хотите запустить все скрипты в данном каталоге и во всех его подкаталогах, удалите параметр maxdepth в приведенной выше команде:
$ find ~/Documents -type f -executable -name 's*' -exec {} \;
Чтобы запустить все скрипты, которые заканчиваются расширением «.sh», выполните:
$ find ~/Documents -maxdepth 1 -type f -executable -name '*.sh' -exec {} \;
Этот метод также имеет небольшой недостаток.
Эта команда может запускать только те скрипты, которые могут быть интерпретированы вашей текущей оболочкой.
Если вы хотите запускать все типы скриптов, например, awk, perl, python, shell-скрипты, используйте метод цикла, как показано ниже.
$ for f in ~/Documents/s* ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done
Приведенная выше команда запустит скрипты, которые начинаются с буквы «s» в папке ~/Documents.
Если вы хотите запустить все файлы с расширением «.sh», выполните:
$ for f in ~/Documents/*.sh ; do [ -x "$f" ] && [ ! -d "$f" ] && "$f" ; done

Для более подробной информации обратитесь к справочным страницам.

$ man run-parts
$ man find

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий