Komut dosyası dosya adlarının yürütme sırasını belirlemek için önde gelen sayılara sahip olduğu durumu kullanın


9

Belgeleri veya Linux'ta her dosya adının bir sayı ile yönlendirildiği kabuk komut dosyalarına sahip bir dizin olduğu ve dosyaları bu sırayla çalıştırıldığı bir kullanım örneği arıyorum. Bu sözleşmeye ne denir ve nerede kullanılır?

Örneğin:

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

Bunu daha önce gördüğümü biliyorum, nerede ya da ne denildiğinden emin değilim.


1
/etc/rc?.dDizinlerde olan çalışma düzeyi komut dosyalarını mı düşünüyorsunuz ?
John Anderson

Yanıtlar:


12

Bahsettiğiniz gibi geliyor 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.

Evet. Birçok yerde kullanılır. Eski SysV başlangıç ​​dosyaları (in /etc/rc.*), ağ yöneticisi yardımcı komut dosyaları, X11başlatmalar, askıya alma-devam prosedürleri ....
Rmano

-1

Bilmiyorum, ya bu yöntem / kesmek işe ya da senin durum için işe yaramaz. Ama, eğer seni doğru anladıysam bunun işe yarayacağını düşünüyorum.

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

VEYA

$ 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

Bir komut dosyası oluşturabilir ve herhangi bir klasördeki komut dosyalarını sırayla (dosya adında bulunan numaralara göre, yani xxxx-abcdef) yürütmek için kullanabilirsiniz.

Lütfen beni düzeltin Eğer yanlış yaparsam.


@steeldriver, oh üzgünüm, Dosya adı boşluk içeriyorsa, bu kod düzgün çalışmaz. Hatam için tekrar özür dilerim, güncelleyeceğim. Bana hatırlattığın için teşekkürler.
bsdboy

Glob eşleştirme sırasının (etkinleştirilmişse) yerel ayar harmanlama ayarını izlediğinden eminim.
David Foerster

@DavidFoerster, evet ben de öyle düşünüyorum.
bsdboy

StackExchange sitelerinde herhangi bir cevabı düşürmek isteyen herkes, en azından yazara, ne hata yaptığını söyleyecek, Bir dahaki sefere, aynı şeyin bir daha olmayacağından emin olacak. Çünkü başkaları için uygun bir cevap yazmak çok zaman ve çaba gerektirir. Ve, Downvoters sadece bir aşağı ok tıklayın, hepsi bu.
bsdboy

Bu cevaba oy vermedim, ancak soru dokümantasyonu istiyor - ya da buna ne deniyor?
Joe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.