|
|
Riga 1: |
Riga 1: |
| Questo script cambia ricorsivamente i permessi di file e directory, ma impostando permessi diversi per i file e per le directory. In tal modo si possono impostare con un solo comando i permessi di esecuzione di un'intera gerarchia di directory (in modo da potervi accedere) e contemporaneamente togliere il permesso di esecuzione a tutti i file ivi contenuti.
| | = Introduzione: I Tasti Multimediali = |
| | I moderni sistemi multimediali ci forniscono una serie di tasti per scelte rapide che fino a poco tempo fa non erano contemplate. |
| | Possiamo alzare il volume, far partire il player preferito o modificare la luminosit� dello schermo semplicemente con un tasto. |
| | Purtroppo ogni produtore (sia in campo desktop che laptop) produce quasto tipo di controllo a sua descrizione, creando tastiere non-standard che vanno configurate in modo diverso di caso in caso. |
|
| |
|
| Basta posizionarsi nella cartella interessata e lanciare lo script. Se non viene usato nessun parametro verranno impostati dei sani default (640 per i file e 750 per le cartelle).
| | Per fare ci� vi sono vari metodi: uno di questi � mostrato in [[Tasti Multimediali: configurazione ed uso|questa guida]]. |
| | Noi invece utilizzeremo Hotkeys. |
|
| |
|
| {{Box|Esempio|Un utilizzo tipico è quello di sanare i permessi di file copiati da cdrom, da partizioni windows, da chiavette usb formattate fat32 etc. }}
| | = Preparazione del sistema = |
|
| |
|
| | La preparazione del sistema molto semplice, necessitiamo infatti solo di hotkeys e xev. |
| | Mentre xev probabilmente gi installato (incluso nei pacchetti del server X) dovremo andare ad installare il demone hotkeys alla debian-way: |
|
| |
|
| I due parametri opzionali sono i permessi rispettivamente di file e cartelle nello stesso formato accettato da chmod.
| | <pre> |
| | # apt-get install hotkeys |
| | </pre> |
|
| |
|
| {{Box|Esempio| $ cd cartella/da/modificare/
| | = Come Funziona Hotkeys = |
| $ chmodr g-wx g-w
| |
| }}
| |
|
| |
|
| | Hotkeys legge dei file con estensione .def che si trovano nella directory /usr/share/hotkeys.In questi file sono specificati i tasti (tramite il loro keycode) e l'applicazione che devono lanciare. Vi sono gi parecchi file .def pre-impostati. Se avrete fortuna sar sufficiente lanciare uno di questi per far funzionare la vostra tastiera. Per visualizzare la lista dei layout di tastiera disponibili, possibile lanciare hotkeys con il flag "-l": |
|
| |
|
| Ecco lo script:
| |
| <pre> | | <pre> |
| #!/bin/bash
| | $ hotkeys -l |
| #
| | mx2500 - Memorex MX2500 Keyboard |
| # Antonio Ingargiola - 2004
| | inspiron8100 - Dell Inspiron 8100 Notebook |
| #
| | kbp8993 - Chicony KBP-8993 keyboard |
| # chmodr - Un chmod Ricorsivo, che rispetta le differenze file-directory
| | ... |
| #
| | ipanel - Asus IPanel |
| # Cambia ricorsivamente i permessi di file e directory, ma impostando
| | $ |
| # permessi diversi per i file e per le directory
| | </pre> |
| #
| |
| # USO
| |
| # ^^^
| |
| #
| |
| # chmodr
| |
| # Senza parametri imposta ad un sano default tutti i file (640) e alle
| |
| # directory (750) contenute nella directory corrente.
| |
| #
| |
| # chmodr permessi_file permessi_dir
| |
| # Applica ai file nella directory corrente e sotto-directory i
| |
| # 'permessi_file' e tutte le directory i 'permessi_dir'. La sintassi
| |
| # per i permessi e' la stessa di chmod quindi sia ottale che simbolica.
| |
| #
| |
|
| |
|
| help () {
| | Nel caso in cui la vostra tastiera non sia presente in elenco, potrete modificare un file def o crearne uno nuovo da zero. |
| echo -e "\n Antonio Ingargiola - 2004\n"
| |
| echo -e " chmodr - Un chmod Ricorsivo, che rispetta le differenze file-directory\n"
| |
| echo -e " Cambia ricorsivamente i permessi di file e directory, ma impostando"
| |
| echo -e " permessi diversi per i file e per le directory.\n"
| |
|
| |
| echo -e " USO"
| |
| echo -e " ^^^\n"
| |
| echo -e " chmodr"
| |
| echo -e " Senza parametri imposta ad un sano default tutti i file (640) e alle "
| |
| echo -e " directory (750) contenute nella directory corrente.\n"
| |
|
| |
| echo -e " chmodr permessi_file permessi_dir"
| |
| echo -e " Applica ai file nella directory corrente e sotto-directory i "
| |
| echo -e " 'permessi_file' e tutte le directory i 'permessi_dir'. La sintassi"
| |
| echo -e " per i permessi e' la stessa di chmod quindi sia ottale che simbolica.\n"
| |
| exit 1
| |
| }
| |
|
| |
|
| valid_mod () {
| | == Lanciare hotkeys == |
| # Check if the mods are syntactically correct
| |
|
| |
| echo "$1" |\
| |
| perl -n -e 'if ($_ =~ /^[01234567]{3}$/) {exit 0}; exit 1'
| |
| ok_numerical=$?
| |
|
| |
|
| echo "$1" |\
| | Il comando per lanciare un dato file .def con hotkeys � il seguente: |
| perl -n -e 'if ($_ =~ /^[ugoa]{0,3}[+-=]{1}[rwx]{1,3}$/) {exit 0}; exit 1'
| |
| ok_symbolical=$?
| |
|
| |
| # echo "num $ok_numerical, sym $ok_symbolical" # DEBUG
| |
| [ "$ok_numerical" = 0 -o "$ok_symbolical" = 0 ]
| |
| return $?
| |
| }
| |
|
| |
|
| [[ "$1" = -* ]] && help
| | <pre> |
| | $ hotkeys -t nomefile |
| | </pre> |
|
| |
|
| FILE_MOD="$1"
| | ad esempio nel caso del file prova.def: |
| DIR_MOD="$2"
| |
| BASE_DIR="$3"
| |
| [ -z "$1" ] && FILE_MOD="640"
| |
| [ -z "$2" ] && DIR_MOD="750"
| |
| [ -z "$3" ] && BASE_DIR="./"
| |
|
| |
|
| cd "$BASE_DIR"
| | <pre> |
| | $ hotkeys -t prova |
| | </pre> |
|
| |
|
| if !( valid_mod $FILE_MOD && valid_mod $DIR_MOD ); then
| | == Configurare hotkeys == |
| echo -e "\n ERRORE: Il formato dei permessi e' sbagliato. Per i dettagli"
| |
| echo -e " vedere la pagina di manuale di chmod.\n"
| |
| exit 2
| |
| fi
| |
|
| |
|
| ls | while read file; do
| | Nel Caso in cui la vostra tastiera non fosse inclusa nell'elenco delle tastiere supportate non vi rester� che editare un file .def o crearne uno voi stessi. |
| if [ -L "$file" ]; then
| | Ecco dove entra in campo xev! |
| echo " ==>> '$file' e' un link simbolico, lo ignoro."
| | Lanciano xev infatti |
| continue
| | |
| elif [ -d "$file" ]; then
| | <pre> |
| echo " Entro nella directory '$file'"
| | $ xev |
|
| |
| chmod u+rwx "$file" 2> /dev/null ||\
| |
| { echo " Non ho i permessi per entrare in '$file'"; continue; }
| |
| cd "$file"; $0 $@; cd - > /dev/null
| |
|
| |
| chmod $DIR_MOD "$file" && echo -e " Directory '$file' impostata.\n"
| |
| elif [ -f "$file" ]; then
| |
| echo -n " $file ... "
| |
| chmod $FILE_MOD "$file" && echo " [ OK ]"
| |
| else
| |
| echo " Ignoro '$file'."
| |
| fi
| |
| done
| |
| </pre> | | </pre> |
|
| |
|
| Il core dell script (quello che esegue effettivamente il cambio dei permessi) è la parte finale da '''ls | while read ...''' in poi. Tutta la parte precedente serve solo a controllare la correttezza dei parametri passati e a stampare una eventuale schermata di help.
| | la pressione di ogni tasto produrr� un output sul terminale in cui sar� segnato il keycode del tasto premuto. |
| ---- | | |
| Autore: [[Utente:TheNoise|~ The_Noise]]
| | [[Immagine:Xev.jpg|thumb|center|Esempio]] |
| | |
| | Sar� cos� elementare aprire l'editor di testo preferito ed assegnare il comando al valore determinato con xev nel file .def |
| | |
| | <pre> |
| | /usr/share/hotkeys# nano prova.def |
| | |
| | <?xml version="1.0"?> |
| | |
| | <definition> |
| | |
| | <config model="prova Internal Keyboard"> |
| | |
| | <VolUp keycode="158"/> |
| | <VolDown keycode="165"/> |
| | <Mute keycode="166"/> |
| | |
| | </pre> |
| | |
| | == Note == |
| | |
| | Dato che probabilmente la tastiera in uso sar� sempre la stessa pu� essere utile creare uno [[creare uno script d'avvio|script]] per avviare automaticamente hotkeys all'accensione del pc e posizionarlo nella cartella ~/.config/autostart [http://www.freedesktop.org (Standard freedesktop).] |
| | |
| | L'opzione -Z aggiunta alla stringa di lancio eviter� il fastidioso splash screen del programma. |
| | |
| | <pre> |
| | $ hotkeys -Z -t prova |
| | </pre> |
|
| |
|
| [[Categoria:Sistema]]
| | ----- |
| [[Categoria:Shell]]
| | Autore: [[Utente:Jango|jango]] |
| [[Categoria:Script]]
| |
| [[Categoria:Tips&Tricks]] | |