GNU/Linux >> Znalost Linux >  >> Linux

Jak zahrnout všechny soubory z adresáře do skriptu shellu (v tomto případě /etc/init.d/iptables)

Přidejte následující řádek do skriptu init.d.

run-parts --report /etc/iptables/include.d

Spustí vše v adresáři jako shell skript (musí být spustitelný).

Pokud chcete spouštět pouze soubory, které končí příponou .port, můžete použít něco jako:

run-parts --regex '\.port$' /etc/iptables/include.d/

Pokud se chcete ujistit, že je pořadí správné, můžete soubory pojmenovat:

10_web.port
20_ssh.port
etc..

for f in /etc/iptables/include.d/*
 . $f
done

mezera mezi tečkou a %f

Saurabh má pravdu - nebude to nutně fungovat, jak zamýšlíte, ale použijte nějakou konvenci pojmenování, např. 10-xxx, 20-yyy a tak dále a mohlo by to být zvládnutelné.


V bash můžete definovat jednoduchou funkci:

function include() {
    for FILE in $( find "$1" -type f -print | sort )
    do
        source $FILE
    done
}

a poté:

include some_dir/*

nebo dokonce:

include some_dir/*.conf

Linux
  1. Kdy mám použít /dev/shm/ a kdy /tmp/?

  2. Jak zjistit, ze které složky běží proces?

  3. Jak mohu vrátit chmod v adresáři etc?

  1. Proč mají všechny adresáře /home, /usr, /var atd. stejné číslo inodu (2)?

  2. Rozdíl mezi /etc/hosts a /etc/resolv.conf

  3. Jak nastavit /etc/issues, aby zobrazoval IP adresu pro eth0

  1. Rozdíl mezi ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc …?

  2. Příkaz grpck – Odstraňte poškozené nebo duplicitní položky v souborech /etc/group a /etc/gshadow.

  3. /etc/passwd zobrazuje uživatele ve skupině, ale /etc/group nikoli