Gunakan kasus di mana nama file skrip memiliki nomor terkemuka untuk menentukan urutan eksekusi

9

Saya mencari dokumentasi atau use case di mana di Linux ada direktori dengan skrip shell di mana setiap nama file dipimpin dengan angka, dan file dijalankan dalam urutan tertentu. Disebut apakah konvensi ini, dan di mana konvensi itu digunakan?

Sebagai contoh:

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

Saya tahu saya pernah melihat ini sebelumnya, tidak yakin di mana atau apa namanya.

ThomasReggi
sumber
1
Apakah Anda memikirkan skrip runlevel yang ada di /etc/rc?.ddirektori?
John Anderson

Jawaban:

12

Sepertinya Anda merujuk 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
sumber
Iya. Ini digunakan di banyak tempat. File init SysV lama (dalam /etc/rc.*), skrip tambahan manajer jaringan, X11startup, prosedur penundaan-
tunda
-1

Saya tidak tahu, metode / retasan ini akan berfungsi atau tidak untuk kasus Anda. Tapi, saya pikir ini akan berhasil jika saya benar.

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

ATAU

$ 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

Anda dapat membuat skrip dan menggunakannya untuk menjalankan skrip secara berurutan (sesuai dengan angka yang termasuk dalam nama file yaitu xxxx-abcdef) di folder apa pun.

Tolong koreksi saya jika saya salah.

bsdboy
sumber
@steeldriver, oh maaf, Jika nama file akan berisi spasi maka kode ini tidak berfungsi dengan benar. Maaf lagi atas kesalahan saya, saya akan memperbaruinya. Terima kasih sudah mengingatkan saya.
bsdboy
Saya cukup yakin bahwa urutan penyortiran glob (jika diaktifkan) mengikuti pengaturan lokal collation.
David Foerster
@ DavidFoerster, ya saya juga berpikir begitu.
bsdboy
Siapa pun, yang bersedia untuk melakukan downvote jawaban apa pun di situs StackExchange, paling tidak memberi tahu penulis, kesalahan apa yang ia lakukan, Jadi mulai waktu berikutnya, ia akan memastikan bahwa hal yang sama tidak akan terjadi lagi. Karena butuh banyak waktu dan usaha untuk menulis jawaban yang tepat untuk orang lain. Dan, Downvoters hanya perlu mengklik panah bawah, itu saja.
bsdboy
Saya tidak memilih jawaban ini, tetapi pertanyaannya meminta dokumentasi - "atau apa namanya?", Bukan skrip untuk melakukannya.
Joe