Dotazy > Programování

příkazový řádek dotaz

<< < (2/2)

Roman Horník:
Může bejt?


#!/bin/bash

## Nebudeme používat mezery v názvech souborů jako oddělovače, ale jen \n
IFS=$'\n'

## Pokud nebyla zadána cesta co by parametr, zeptej se
if [ "$1" == "" ]
  then
    echo -ne "\e[1mZadej cestu prohledávané složky:\e[0m "
    read slozka
  else
    slozka=$1
fi

## Dotěrná smyčka žádající správnou cestu do složky
while :
  do if [ -d "$slozka" ]
    then
      break
    else
      echo -ne "\n\e[1m'$slozka' NENÍ platná složka\nZadejte PLATNOU cestu prohledávané složky:\e[0m "
      read slozka
  fi
done

echo -e "
\e[1;4mProbíhá kontrola souborů skriptů ve složce '$slozka':\e[0m"

## Vyhledá bez rekurze (-maxdepth 1) všechny soubory (-type f) ve složce s
## nenulovou velikostí (-size +0c)…
for soubor in $(find $slozka -maxdepth 1 -type f -size +0c)
    do

      ## … a jestliže má v hlavičce #!/ (a nějaký malý písmeno; interpretr může
      ## bejt i mimo /bin, třeba v /usr/bin, /sbin, /opt a tak; berou se první
      ## 4 bajty),…
      if head -c4 "$soubor" | grep -m1 -q "^\#\!\/[a-z]"

        ## … pak, pokud je spustitelnej,…
        then if [ -x "$soubor" ]
               then

                 ## … prostě jen napíše OK a název souboru,…
                 echo -e "  \e[1mOK\e[0m\t$soubor"

               ## … jinak…
               else

                 ## se pokusí bez keců (2> /dev/null) přidat souboru
                 ##spustitelnost, přičemž…
                 chmod +x "$soubor" 2> /dev/null

                 ## … pokud už spustitelnej je,…
                 if [ -x "$soubor" ]

                   ## … pak vypíše +x a název souboru,…
                   then
                     echo -e "  \e[1;94m+x\e[0;94m\t$soubor\e[00m"

               ## … nicméně, pokud to změnit nepůjde (třeba jinej vlastník),
                   ##pak napíše KO a název souboru
                   else
                     echo -e "  \e[1;91mKO\e[0;91m\t$soubor\e[00m"
                 fi
             fi
       fi
## Cyklus 'for' udělá tolik koleček, kolik je nalezenejch (všech) souboru v
## zadaným umístění

done

## No a nakonec něco jako legenda
echo -e "
\e[1mOK\e[0m = Soubor již spustitelný byl
\e[1;94m+x\e[00m = Soubor úspěšně učiněn spustitelným
\e[0;91mKO\e[00m = Oprávnění nebylo možné změnit
"


P. S.: To \e[<blablabla>m je ono barvičkování. Je tam jen pro přehlednost, nemusí tam bejt. V tom případě lze za echo vypustit -e

dirtyqeen:
Děkuji mnohokrát.

Navigace

[0] Seznam témat

[*] Předchozí strana

Přejít na plnou verzi