ln -s [troppi links]
October 9, 2006 on 7:54 pm | In Debian, Linguaggi, Linux, Open Source |Ieri ho compilato a "manazza" un paio di pacchetti su la mia Debian. Come succede in questi casi, o almeno come faccio io in questi casi, si compila tutto in /opt. Il problemi è che i binari ottenuti in /opt bisogna linkarli tutti simbolicamente in una directory appartenente al path, come /usr/bin o /usr/local/bin. Ieri questi link erano troppi.
Dato che non mi andava di linkare tutto manualmente con il solito comando ln -s src dest mi sono fatto un script in Bash che prende la directory sorgente e linka tutto nella directory di destinazione per ogni file eseguibile che incontra. Ecco di sotto la script.
#! /bin/sh
# Il corretto funzionamento di questo scritp non è garantito.
# Ogni danno arrecato dall’uso di questo script non è attribuibile all’autore.
# Saluss.declare -a directories
count=0for options
do
directories[$count]="$options"
if test ! -d ${directories[$count]}; then
echo "Error: cannot find " ${directories[$count]}
exit 1
fi
count=$(($count+1))
donesrc=${directories[0]}
dest=${directories[1]}case $src in
*/)
src_f=${src};;
*)
src_f=${src}"/";;
esaccase $dest in
*/)
dest_f=${dest};;
*)
dest_f=${dest}"/";;
esacfiles=`ls $src_f`
for file in $files
do
if (test -x $src_f$file) && (test ! -d $src_f$file); then
if test ! -e $dest_f$file; then
ln -s $src_f$file $dest_f$file;
else
echo "File "$file" already exist in "$dest_f;
fi
fi
done
Il funzionamento è semplicissimo. Supponiamo che lo script si chiami myln e che si trovi nel vostro path. Se l’elenco dei vostri binari da linkare è in /opt/applicazione/bin/ e volete linkarli in /usr/local/bin/ è sufficiente lanciare lo script come segue:
root@hostinato:~# myln /opt/applicazione/bin /usr/local/bin
e il gioco è fatto. Se volete scaricarvi lo script potete cliccare qui. Chiamatelo come vi pare e dategli i permessi di esecuzione (chmod 755). Lo script effettua il link solo di file eseguibili. Non effettua il link di directory o file che non abbiano permessi di esecuzione. Se nella directory sorgente viene riscontrato un file con il nome uguale di un altro file presente nella directory di destinazione, allora viene saltato.
Divertitevi.
3 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
… Dicansi MANAZZA …etc..etc…etc…
Comment by Simone — October 12, 2006 #
grazie!!!
Comment by nagio — November 6, 2006 #
Pregos… 5 € grassie
Comment by Santana — November 7, 2006 #