Zastosuj przypadek, w którym nazwy plików skryptów mają wiodące liczby w celu ustalenia kolejności wykonywania

9

Szukam dokumentacji lub przypadku użycia, w którym w systemie Linux znajduje się katalog ze skryptami powłoki, w którym każda nazwa pliku jest prowadzona z numerem, a pliki są uruchamiane w określonej kolejności. Jak nazywa się ta konwencja i gdzie się ją stosuje?

Na przykład:

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

Wiem, że widziałem to już wcześniej, po prostu nie jestem pewien, gdzie i jak się to nazywa.

ThomasReggi
źródło
1
Czy myślisz o skryptach poziomu pracy, które znajdują się w /etc/rc?.dkatalogach?
John Anderson,

Odpowiedzi:

12

Wygląda na to, że masz na myśli 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.
steeldriver
źródło
Tak. Jest używany w wielu miejscach. Stare pliki inicjujące SysV ( /etc/rc.*X11
wewnątrz
-1

Nie wiem, albo ta metoda / hack zadziała, albo nie w twoim przypadku. Ale myślę, że to zadziała, jeśli dobrze zrozumiałem.

[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]$

LUB

$ 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

Możesz utworzyć skrypt i używać go do wykonywania skryptów w kolejności (zgodnie z liczbami zawartymi w nazwie pliku, np. Xxxx-abcdef) w dowolnym folderze.

Proszę mnie poprawić, jeśli się pomyliłem.

bsdboy
źródło
@steeldriver, oh przepraszam, jeśli nazwa pliku będzie zawierać spacje, ten kod nie działa poprawnie. Jeszcze raz przepraszam za mój błąd, zamierzam go zaktualizować. Dzięki za przypomnienie.
bsdboy,
Jestem prawie pewien, że kolejność sortowania dopasowań globalnych (jeśli jest włączona) jest zgodna z ustawieniami sortowania ustawień regionalnych.
David Foerster,
@DavidFoerster, tak też tak myślę.
bsdboy,
Każdy, kto zechce głosować dowolną odpowiedź na stronach StackExchange, przynajmniej powie autorowi, jaki popełnił błąd, więc następnym razem upewni się, że to samo się nie powtórzy. Ponieważ napisanie właściwej odpowiedzi innym zajmuje dużo czasu i wysiłku. I Downvoters muszą kliknąć strzałkę w dół, to wszystko.
bsdboy,
Nie głosowałem na tę odpowiedź, ale pytanie wymaga dokumentacji - „czy jak to się nazywa?”, A nie skryptu do tego.
Joe