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.