Використовуйте випадок, коли у прізвищах скриптів є провідні числа для визначення порядку виконання


9

Я шукаю документацію або випадок використання, коли в Linux є каталог зі скриптами оболонки, де кожне ім'я файлу ведеться з номером, а файли запускаються в тому конкретному порядку. Як називається ця конвенція і де вона використовується?

Наприклад:

0001-motd.sh
0002-proxy.sh
0300-ssh.sh

Я знаю, що я це бачив і раніше, просто не знаю, де або як це називається.


1
Чи думаєте ви про сценарії запущеного рівня, що знаходяться в /etc/rc?.dкаталогах?
Джон Андерсон

Відповіді:


12

Це звучить так, як ви посилаєтесь run-parts

NAME
       run-parts - run scripts or programs in a directory

SYNOPSIS
       run-parts  [--test]  [--verbose] [--report] [--lsbsysinit] [--regex=RE]
       [--umask=umask] [--arg=argument] [--exit-on-error] [--help] [--version]
       [--list] [--reverse] [--] DIRECTORY

       run-parts -V

DESCRIPTION
       run-parts  runs  all  the  executable  files  named  within constraints
       described below, found in directory directory.  Other files and  direc
       tories are silently ignored.

       If neither the --lsbsysinit option nor the --regex option is given then
       the names must consist entirely of ASCII upper- and lower-case letters,
       ASCII digits, ASCII underscores, and ASCII minus-hyphens.

       If  the  --lsbsysinit  option  is given, then the names must not end in
       .dpkg-old  or .dpkg-dist or .dpkg-new or .dpkg-tmp, and must belong  to
       one  or more of the following namespaces: the LANANA-assigned namespace
       (^[a-z0-9]+$);   the   LSB   hierarchical   and   reserved   namespaces
       (^_?([a-z0-9_.]+-)+[a-z0-9]+$);  and  the  Debian cron script namespace
       (^[a-zA-Z0-9_-]+$).

       If the --regex option  is  given,  the  names  must  match  the  custom
       extended regular expression specified as that option's argument.

       Files  are  run  in  the  lexical  sort order (according to the C/POSIX
       locale character collation rules) of their names unless  the  --reverse
       option is given, in which case they are run in the opposite order.

Так. Його використовують у багатьох місцях. Старі файли init SysV (in /etc/rc.*), допоміжні сценарії мережевого менеджера, X11запуски, призупинення-відновлення процедур ....
Rmano

-1

Я не знаю, чи цей метод / злом буде працювати для вашого випадку чи ні. Але, я думаю, це спрацює, якби я правильно тебе зрозумів.

[feddy@localhost ~]$ mkdir test
[feddy@localhost ~]$ cd test
[feddy@localhost test]$ ls
[feddy@localhost test]$ vi 0001-ko.sh
[feddy@localhost test]$ cp 0001-ko.sh 0002-ko.sh
[feddy@localhost test]$ cp 0001-ko.sh 0004-ko.sh
[feddy@localhost test]$ cp 0001-ko.sh 0005-ko file.sh
[feddy@localhost test]$ cp 0001-ko.sh 0008-ko.sh
[feddy@localhost test]$ ls
0001-ko.sh  0002-ko.sh  0004-ko.sh  0005-ko file.sh  0008-ko.sh

[feddy@localhost test]$ for i in *
> do
> bash "$i"
> done
file 0001-ko.sh
file 0002-ko.sh
file 0004-ko.sh
file 0005-ko file.sh
file 0008-ko.sh
[feddy@localhost test]$

АБО

$ find . -iname "*.sh"|while read f; do bash "$f"; done
file ./0001-ko1.sh
file ./0002-ko1.sh
file ./0005-ko1 file.sh
file ./0005-ko1.sh

Ви можете створити скрипт і використовувати його для виконання скриптів у порядку (відповідно до чисел, що входять до назви файлу, тобто xxxx-abcdef) у будь-якій папці.

Будь ласка, виправте мене, якщо ви помилилися.


@steeldriver, пробачте, якщо ім'я файлу буде містити пробіли, то цей код працює неправильно. Пробачте ще раз за свою помилку, я збираюся її оновити. Дякую, що нагадали.
bsdboy

Я майже впевнений, що порядок сортування глобальних збігів (якщо він включений) відповідає налаштуванню зіставлення місцевості
Девід Фоерстер

@DavidFoerster, так, я теж так думаю.
bsdboy

Будь-хто, хто готовий підкреслити будь-яку відповідь на сайтах StackExchange, принаймні скаже автору, яку помилку він зробив, тож з наступного разу він переконається, що те ж саме не повториться. Тому що потрібно багато часу і сил, щоб написати правильну відповідь для інших. І, Downvoters просто потрібно натиснути стрілку вниз, ось і все.
bsdboy

Я не голосував за цю відповідь, але питання запитує документацію - "або як це називається?", А не сценарій для цього.
Джо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.