Eliminate DRM!
Protect your freedom!

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=0

for options
do
  directories[$count]="$options"
  if test ! -d ${directories[$count]}; then
    echo "Error: cannot find " ${directories[$count]}
    exit 1
  fi
  count=$(($count+1))
done

src=${directories[0]}
dest=${directories[1]}

case $src in
  */)
  src_f=${src};;
  *)
  src_f=${src}"/";;
esac

case $dest in
  */)
  dest_f=${dest};;
  *)
  dest_f=${dest}"/";;
esac

files=`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

  1. … Dicansi MANAZZA …etc..etc…etc… ;)

    Comment by Simone — October 12, 2006 #

  2. grazie!!!

    Comment by nagio — November 6, 2006 #

  3. Pregos… 5 € grassie :D

    Comment by Santana — November 7, 2006 #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^