Rendere le directory eseguibili: differenze tra le versioni
Da Slacky.eu.
(→Script) |
|||
| Riga 187: | Riga 187: | ||
# Se tutto va bene, al lavoro! (due righe...) |
# Se tutto va bene, al lavoro! (due righe...) |
||
chmod "$permtype" "$dir"; |
chmod "$permtype" "$dir"; |
||
| − | find "$dir" -type d -exec chmod "$permtype" {} \ >& stdin; |
+ | find "$dir" -type d -exec chmod "$permtype" {} \; |
if [ "$verbose" -eq "1" ] |
if [ "$verbose" -eq "1" ] |
||
Versione delle 01:23, 11 ott 2008
Descrizione
Questo script rende tutte le directory eseguibili o non eseguibili in modo ricorsivo (Serve specialmente quando abbiamo sbagliato a giocare con chmod).
Download
http://www.slacky.eu/misto/concorso/nitrogl/dirx.sh
Script
#!/bin/bash
# ======================================================================
# Data : Cagliari, 14 october 2007
# Autore : Roberto Paolo Antonio Metere
# ======================================================================
#
# Questo script rende tutte le directory eseguibili o non eseguibili
# in modo ricorsivo
#
# (Serve specialmente quando abbiamo sbagliato a giocare con chmod)
#
dir=""
permtype=""
firstp="false"
verbose=0
arg[0]="$0"
arg[1]="$1"
arg[2]="$2"
arg[3]="$3"
arg[4]="$4"
# Permessi
permissions="u+ g+ o+ ug+ gu+ go+ og+ uo+ ou+ ugo+ uog+ oug+ ogu+ gou+ guo+ a+ u- g- o- ug- gu- go- og- uo- ou- ugo- uog- oug- ogu- gou- guo- a-"
numpermissions=0
for i in $permissions
do
numpermissions=$(($numpermissions + 1))
done
# Funzione degli errori (TORNA NELLA SHELL se ci sono errori)
Error ()
{
error_code="$1"
ERRORS[0]="nessun errore"
ERRORS[1]="hai dato troppi argomenti"
ERRORS[2]="non hai dato nessun argomento"
ERRORS[3]="tipo di permessi errato o directory specificata non esistente"
ERRORS[4]="tipo di permessi omesso"
if [ "$error_code" -gt 0 ]
then
# Stampa gli errori interni e l'uso dello script
printf "\n ERRORE: ${ERRORS[$error_code]}."
printf "\n Sintassi: ${arg[0]} [-v] [directory] tipodipermessi\n"
printf "\n -v : se vuoi che lo script scriva qualcosa"
printf "\n puo' solamente essere il primo argomento\n"
printf "\n directory : directory di destinazione. Puoi omettere"
printf "\n la directory: quella di default e' quella"
printf "\n corrente. Va PRIMA del tipodipermessi.\n"
printf "\n tipodipermessi : puo' essere uno dei seguenti:"
printf "\n u+ g+ o+ ug+ gu+ go+ og+ uo+ ou+ ugo+"
printf "\n uog+ oug+ ogu+ gou+ guo+ a+ u- g- o-"
printf "\n ug- gu- go- og- uo- ou- ugo- uog- oug-"
printf "\n ogu- gou- guo- a-"
printf "\n Dove u significa utente"
printf "\n g significa gruppo"
printf "\n o significa altri"
printf "\n a significa tutti (ugo)"
printf "\n + significa eseguibile"
printf "\n - significa non eseguibile\n\n"
# Esci
exit 1
else
printf "\n ERRORE: ${ERRORS[$error_code]}.\n\n"
fi
}
# Se vogliamo che il programma produca delle scritte in output scriviamo -v come primo argomento
if [ "${arg[1]}" == "-v" ]
then
verbose=1
arg[1]="${arg[2]}"
arg[2]="${arg[3]}"
arg[3]="${arg[4]}"
fi
# Schermata di benvenuto
if [ "$verbose" -eq "1" ]
then
printf "\n ============================================================="
printf "\n Rende eseguibili le directory ricorsivamente - by NitroGL "
printf "\n =============================================================\n\n"
fi
# Controlla il terzo argomento (troppi argomenti)
if [ "${arg[3]}" != "" ]
then
Error 1
fi
# Controlla il primo argomento
if [ "${arg[1]}" != "" ]
then
if test -d "${arg[1]}"
then
if [ "$verbose" -eq "1" ]
then
printf "\n Primo argomento accettato: directory" # verboso
fi
dir="${arg[1]}"
firstp="false"
else
i=1
while [ "$i" -le "$numpermissions" ]
do
if [ "${arg[1]}" == "`echo "$permissions" | awk '{print $'$i'}'`" ]
then
if [ "$verbose" -eq "1" ]
then
printf "\n Primo argomento accettato: permesso"
fi
permtype="${arg[1]}"x
firstp="true"
i=$(($numpermissions + 1))
fi
i=$(($i + 1))
done
if [ "$permtype" == "" ]
then
Error 3
fi
fi
else
Error 2
fi
# Controlla il secondo argomento
if [ "$firstp" == "false" ]
then
i=1
while [ "$i" -le "$numpermissions" ]
do
if [ "${arg[2]}" == "`echo "$permissions" | awk '{print $'$i'}'`" ]
then
if [ "$verbose" -eq "1" ]
then
printf "\n Secondo argomento accettato: permesso"
fi
permtype="${arg[2]}"x
i=$(($numpermissions + 1))
fi
i=$(($i + 1))
done
if [ "$permtype" == "" ]
then
Error 4
fi
else
if [ "${arg[2]}" != "" ]
then
Error 1
fi
fi
# Impostazione della directory a "." se nessuna specificata
if [ "$dir" == "" ]
then
dir="."
if [ "$verbose" -eq 1 ]
then
printf "\n Directory di default: directory corrente"
fi
fi
# Se tutto va bene, al lavoro! (due righe...)
chmod "$permtype" "$dir";
find "$dir" -type d -exec chmod "$permtype" {} \;
if [ "$verbose" -eq "1" ]
then
Error 0
fi
exit 0
#
# Copyright (c) Roberto Metere
- Data: 21/10/2007
- Autore: Nitrogl