Используйте случай, когда имена файлов сценариев имеют ведущие номера для определения порядка выполнения

Я ищу документацию или прецедент, где в Linux есть каталог со сценариями оболочки, где каждое имя файла приводится с номером, а файлы запускаются в определенном порядке.

Например:

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

Я знаю, что видел это раньше, просто не знаю, где и что он называется.

9
задан 22 December 2017 в 23:15

4 ответа

Я не знаю, либо этот метод / взлома будет работать, либо нет для вашего дела. Но я думаю, что это сработает. Если я прав.

[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) в любой папке.

Пожалуйста, исправьте меня, если я ошибаюсь.

-1
ответ дан 18 July 2018 в 00:39

Похоже, вы имеете в виду 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.
12
ответ дан 18 July 2018 в 00:39

Я не знаю, либо этот метод / взлома будет работать, либо нет для вашего дела. Но я думаю, что это сработает. Если я прав.

[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) в любой папке.

Пожалуйста, исправьте меня, если я ошибаюсь.

-1
ответ дан 24 July 2018 в 17:15
  • 1
    @steeldriver, извините, если имя файла будет содержать пробелы, то этот код работает неправильно. Извините еще раз за мою ошибку, я собираюсь обновить ее. Спасибо за напоминание. – Neeraj Pal 22 December 2017 в 20:20
  • 2
    Я уверен, что порядок сортировки совпадений glob (если включен) соответствует настройке сортировки локали. – David Foerster 22 December 2017 в 20:27
  • 3
    @DavidFoerster, да, я так думаю. – Neeraj Pal 22 December 2017 в 20:40
  • 4
    Кто угодно, кто хочет опробовать любой ответ на сайтах StackExchange, по крайней мере скажет автору, какую ошибку он сделал, поэтому в следующий раз он удостоверится, что то же самое не повторится. Поскольку требуется много времени и усилий, чтобы написать правильный ответ для других. И, Downvoters просто нужно нажать стрелку вниз, вот и все. – Neeraj Pal 23 December 2017 в 07:32
  • 5
    Я не проголосовал за этот ответ, но вопрос запрашивает документацию - «или что это называется?», А не сценарий для этого. – Joe 28 December 2017 в 15:09

Похоже, вы имеете в виду 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.
12
ответ дан 24 July 2018 в 17:15
  • 1
    Да. Он используется во многих местах. Старые файлы инициализации SysV (в /etc/rc.*), вспомогательные скрипты сетевого менеджера, X11 стартапы, процедуры приостановки-возобновления .... – Rmano 27 December 2017 в 14:45

Другие вопросы по тегам:

Похожие вопросы: