Caso de uso em que os nomes de arquivos de script têm números iniciais para determinar a ordem de execução


9

Estou procurando documentação ou um caso de uso em que no Linux exista um diretório com scripts de shell em que cada nome de arquivo seja levado com um número e os arquivos sejam executados nessa ordem específica. Como é chamada essa convenção e onde é usada?

Por exemplo:

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

Eu sei que já vi isso antes, apenas não sei onde ou como é chamado.


11
Você está pensando nos scripts de nível de execução que estão nos /etc/rc?.ddiretórios?
John Anderson

Respostas:


12

Parece que você está se referindo 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.

Sim. É usado em muitos lugares. Arquivos de inicialização antigos do SysV (pol /etc/rc.*), scripts auxiliares do gerenciador de rede, X11startups, procedimentos de suspensão e continuação ....
Rmano

-1

Não sei, esse método / hack funcionará ou não para o seu caso. Mas acho que isso vai funcionar Se eu entendi direito.

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

OU

$ 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

Você pode criar um script e usá-lo para executar os scripts em ordem (de acordo com os números incluídos no nome do arquivo, por exemplo, xxxx-abcdef) em qualquer pasta.

Por favor, me corrija Se eu entendi errado.


@steeldriver, desculpe, se o nome do arquivo contiver espaços, esse código não funcionará corretamente. Desculpe novamente pelo meu erro, vou atualizá-lo. Obrigado por me lembrar.
bsdboy

Tenho certeza de que a ordem de classificação das correspondências glob (se ativada) segue a configuração de agrupamento de localidade.
David Foerster

@DavidFoerster, sim, eu também acho.
bsdboy

Qualquer um que esteja disposto a recusar qualquer resposta nos sites do StackExchange, pelo menos diga ao autor, que erro ele cometeu. Portanto, a partir da próxima vez, ele garantirá que a mesma coisa não aconteça novamente. Porque é preciso muito tempo e esforço para escrever uma resposta adequada para os outros. Além disso, os Downvoters precisam apenas clicar em uma seta para baixo, só isso.
bsdboy

Não votei nesta resposta, mas a pergunta pede documentação - "ou como isso é chamado?", E não um script para fazê-lo.
31417 Joe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.