Anwendungsfall, in dem Skriptdateinamen führende Nummern haben, um die Ausführungsreihenfolge zu bestimmen

9

Ich suche nach Dokumentation oder einem Anwendungsfall, in dem es unter Linux ein Verzeichnis mit Shell-Skripten gibt, in dem jeder Dateiname mit einer Nummer geführt wird und die Dateien in dieser bestimmten Reihenfolge ausgeführt werden. Wie heißt diese Konvention und wo wird sie verwendet?

Zum Beispiel:

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

Ich weiß, dass ich das schon einmal gesehen habe, nur nicht sicher, wo oder wie es heißt.

ThomasReggi
quelle
1
Denken Sie an die Runlevel-Skripte in /etc/rc?.dVerzeichnissen?
John Anderson

Antworten:

12

Es hört sich so an, als würden Sie sich darauf beziehen 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
quelle
Ja. Es wird an vielen Orten verwendet. Alte SysV-Init-Dateien (in /etc/rc.*), Netzwerk-Manager X11-
Hilfsskripte, Starts
-1

Ich weiß nicht, ob diese Methode / dieser Hack für Ihren Fall funktioniert oder nicht. Aber ich denke, das wird funktionieren, wenn ich dich richtig verstanden habe.

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

ODER

$ 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

Sie können ein Skript erstellen und es verwenden, um Skripte in der Reihenfolge (gemäß den im Dateinamen enthaltenen Nummern, dh xxxx-abcdef) in einem beliebigen Ordner auszuführen.

Bitte korrigieren Sie mich, wenn ich Sie falsch verstanden habe.

bsdboy
quelle
@steeldriver, oh sorry, wenn der Dateiname Leerzeichen enthält, funktioniert dieser Code nicht richtig. Entschuldigen Sie noch einmal meinen Fehler, ich werde ihn aktualisieren. Danke, dass du mich erinnert hast.
bsdboy
Ich bin mir ziemlich sicher, dass die Sortierreihenfolge der Glob-Übereinstimmungen (falls aktiviert) der Einstellung für die Gebietsschemasortierung entspricht.
David Foerster
@ DavidFoerster, ja ich denke auch.
bsdboy
Jeder, der bereit ist, eine Antwort auf StackExchange-Websites abzulehnen, teilt dem Autor zumindest mit, welchen Fehler er gemacht hat. Ab dem nächsten Mal wird er sicherstellen, dass dasselbe nicht noch einmal passiert. Weil es viel Zeit und Mühe kostet, eine richtige Antwort für andere zu schreiben. Und Downvoters müssen nur auf einen Abwärtspfeil klicken, das ist alles.
bsdboy
Ich habe nicht über diese Antwort abgestimmt, aber die Frage verlangt nach Dokumentation - "oder wie heißt das?", Kein Skript, um dies zu tun.
Joe