Visit

24 July 2011

rendere eseguibile un file

per rendere eseguibile un file o script bash

da terminale

chmod +x nome file

script per rinominare i file con spazi

script bash per rinominare i file con spazi

#! /bin/bash
# Rinomina
#
# Sostituisce gli spazi nei nomi dei file presenti nella directory
#+ con degli underscore.

UNO=1 # Per gestire correttamente il singolare/plurale
#+ (vedi oltre).
numero=0 # Per contare i file effettivamente rinominati.
TROVATO=0 # Valore di ritorno in caso di successo.

for nomefile in * # Scorre i file della directory.
do
echo "$nomefile" | grep -q " " # Controlla se il nome del file
if [ $? -eq $TROVATO ] #+ contiene uno/degli spazio(i).
then
fnome=$nomefile # Sì, nomefile
#+ ha bisogno di una sistemata.
n=`echo $fnome | sed -e "s/ /_/g"` # Sostituisce lo spazio
#+ con un underscore.
mv "$fnome" "$n" # Rinomina.
let "numero += 1"
fi
done

if [ "$numero" -eq "$UNO" ] # Per una corretta grammatica.
then
echo "$numero file rinominato."
else
echo "$numero file rinominati."
fi

exit 0

# Erika, GNU General Public License
# link alla GPL license http://www.gnu.org/licenses/gpl.html

aggiungere un percorso al PATH in Linux, da terminale

[comandi in Terminale, CTRL ALT T e si apre il Terminale, io uso BASH]

Una delle cose che mi piacciono maggiormente di Linux è il modo in cui gestisce un file eseguibile.

Se si crea uno script e se si desidera che lo script sia eseguibile, è sufficiente impostare i permessi.

Poniamo di aver creato uno script chiamato "script.sh" (viva la fantasia) salvato nella home directory, per lanciare lo script, occorre eseguire il comando ./script.sh, questo è tutto, ma se si vuole che lo script sia accessibile globalmente? E diciamo che NON si desidera copiare il file, in /usr/bin o /usr/local/, che fare?

Questo è semplice, è possibile inserire tale file in una sottodirectory della home e aggiungere tale directory alla variabile PATH.

Se siete curiosi di sapere ciò che è già nel PATH, potete farlo con il comando:

echo $PATH

Si dovrebbe vedere qualcosa di simile:

/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Quanto sopra è abbastanza standard, qualsiasi file posto in:

/usr/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/usr/games

sarà accessibile a livello globale.

Ci sono tre modi per aggiungere una nuova directory al percorso diamo uno sguardo individualmente a questi metodi.

Il primo metodo aggiunge la nuova directory al PATH temporaneamente, ciò è utile per dei test, diciamo di avere la directory ~/scripts che si desidera aggiungere temporaneamente, per fare questo aprire una finestra di terminale e lanciare il comando:

PATH=$PATH:/home/nomeutente/scripts

Dove nomeutente è il nome dell utente che state utilizzando, ora, se si esegue il comando “echo $PATH”, anche la nuova directory sarà elencata, ma fate un log out e tutto tornerà come prima.

Ora, diciamo che si desidera rendere il tutto permanente, in genere, si ottiene modificando il file “~/.bash_profile”, fate attenzione che nelle nuove versioni di Ubuntu tale file è stato sostituito da “~/.profile”, io però preferisco avere un file ~/.bash_profile per questi scopi, perciò, se non disponete di un tale file, potete crearlo, aprirlo e aggiungere una riga simile a:

PATH=”$HOME/bin:$PATH:/home/utente/script:”

Si potrebbe pensare che occorra disconnettersi e accedere di nuovo, no, basta eseguire il comando “source .bash_profile” perché le modifiche abbiano effetto.

Come ultima cosa, è possibile aggiungere il percorso in /etc/profile, questo per rendere accessibile il file ad ogni utente, probabilmente non troverete un riferimento alla vascaile PATH, quindi, ciò che dovete fare è aggiungere le seguenti righe alla fine di tale file:

PATH=$PATH:/home/utente/scripts

export PATH

Linux è flessibilità, come avete visto è possibile migliorare l usabilità del sistema con pochi e semplici passaggi.

19 July 2011

il grub2 che difficile

per ora ho imparato questo

Una volta capito quale è la periferica che ci interessa, dobbiamo capire un attimo come tradurla in «linguaggio GRUB 2».
ho preparato questa tabella:

Periferica => Grub 2
/dev/sda1 => hd0,1
/dev/sda2 => hd0,2
/dev/sda3 => hd0,3
… …
/dev/sdb1 => hd1,1
/dev/sdb2 => hd1,2
/dev/sdb3 => hd1,3
… …
/dev/sdc1 => hd2,1
/dev/sdc2 => hd2,2
/dev/sdc3 => hd2,3
… …

..E’ immediato capire con quale criterio GRUB 2 assegni i nomi alle periferiche.