Utilizzare il caso in cui i nomi dei file di script hanno numeri iniziali per determinare l'ordine di esecuzione


9

Sto cercando documentazione o un caso d'uso in cui in Linux esiste una directory con script di shell in cui ogni nome di file è portato con un numero e i file vengono eseguiti in quel particolare ordine. Come si chiama questa convenzione e dove viene utilizzata?

Per esempio:

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

So di averlo visto prima, ma non sono sicuro di dove o come si chiami.


1
Stai pensando agli script runlevel che si trovano nelle /etc/rc?.ddirectory?
John Anderson,

Risposte:


12

Sembra che ti riferisci a 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.

Sì. È usato in molti posti. Vecchi file di inizializzazione SysV (in /etc/rc.*), script ausiliari del gestore di rete, X11avviamenti, procedure di sospensione / ripresa ...
Rmano,

-1

Non lo so, o questo metodo / hack funzionerà o meno per il tuo caso. Ma penso che funzionerà se ti avrò ragione.

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

O

$ 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

È possibile creare uno script e utilizzarlo per eseguire gli script in ordine (in base ai numeri inclusi nel nome file, ovvero xxxx-abcdef) in qualsiasi cartella.

Per favore, correggimi se ti sbaglio.


@steeldriver, oh scusa, se il nome file conterrà spazi, questo codice non funzionerà correttamente. Scusami ancora per l'errore, lo aggiornerò. Grazie per avermi ricordato.
bsdboy,

Sono abbastanza sicuro che l'ordinamento delle corrispondenze glob (se abilitato) segue l'impostazione di confronto delle impostazioni internazionali.
David Foerster,

@DavidFoerster, sì, penso anche di sì.
bsdboy,

Chiunque sia disposto a sottovalutare qualsiasi risposta sui siti StackExchange, almeno dica all'autore quale errore ha commesso, quindi dalla prossima volta si assicurerà che la stessa cosa non accada di nuovo. Perché ci vuole molto tempo e fatica per scrivere una risposta adeguata per gli altri. E i Downvoter devono solo fare clic su una freccia in giù, tutto qui.
bsdboy,

Non ho votato per questa risposta, ma la domanda richiede documentazione - "o come si chiama?", Non una sceneggiatura per farlo.
Joe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.