Caso de uso donde los nombres de archivo de script tienen números iniciales para determinar el orden de ejecución


9

Estoy buscando documentación o un caso de uso en el que en Linux hay un directorio con scripts de shell donde cada nombre de archivo se dirige con un número, y los archivos se ejecutan en ese orden en particular. ¿Cómo se llama esta convención y dónde se usa?

Por ejemplo:

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

Sé que he visto esto antes, pero no estoy seguro de dónde o cómo se llama.


1
¿Estás pensando en los scripts de nivel de ejecución que están en los /etc/rc?.ddirectorios?
John Anderson

Respuestas:


12

Parece que te refieres 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.

Si. Se usa en muchos lugares. Antiguos archivos de inicio de SysV (en /etc/rc.*), scripts auxiliares de administrador de red, X11inicios, procedimientos de suspensión-reanudación ...
Rmano

-1

No sé, este método / pirateo funcionará o no para su caso. Pero, creo que esto funcionará si te entiendo bien.

[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

Puede crear una secuencia de comandos y utilizarla para ejecutar secuencias de comandos en orden (según los números que se incluyen en el nombre de archivo, es decir, xxxx-abcdef) en cualquier carpeta.

Por favor corrígeme si te he entendido mal.


@steeldriver, perdón, si el nombre del archivo contendrá espacios, entonces este código no funciona correctamente. Perdón por mi error, lo voy a actualizar. Gracias por recordarme.
bsdboy

Estoy bastante seguro de que el orden de clasificación de las coincidencias globales (si está habilitado) sigue la configuración de clasificación local.
David Foerster

@DavidFoerster, sí, yo también lo creo.
bsdboy

Cualquiera que esté dispuesto a rechazar cualquier respuesta en los sitios de StackExchange, al menos decirle al autor, qué error cometió, así que a partir de la próxima vez, se asegurará de que no vuelva a ocurrir lo mismo. Porque lleva mucho tiempo y esfuerzo escribir una respuesta adecuada para los demás. Y, los Downvoters solo necesitan hacer clic en una flecha hacia abajo, eso es todo.
bsdboy

No voté por esta respuesta, pero la pregunta pide documentación: "¿o cómo se llama esto?", No un guión para hacerlo.
Joe
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.