develia.org
»» i686 slackware tarballs..
»» software projects..
»» and much more..
 NAVIGATION 
 OPTIONS 

 INFO 
*** develia.org ***
di Giacomo Lozito
© 2004-2010

valid xhtml 1.0valid css!
powered by apachepowered by php
valid rss 2.0get firefox!

NO software patents in UE
 DOCUMENTS 
 gziplinks, correzione automatica dei link a file gzippati

Questo bash script è uno dei miei preziosi "assistenti" durante la creazione dei tarball per Slackware Linux. Il compito che svolge si può spiegare in alcuni semplici passaggi; data una directory in cui si trovano alcuni file nonchè link simbolici agli stessi, per esempio:

filelink1 -> file1
filelink2 -> file2
filelink3 -> file3
file1
file2
file3

Lo script prima di tutto gzippa i file veri e propri, dopodichè provvede a correggere i link in modo che puntino ai file gzippati e in modo che anche i link appaiano compressi. Il risultato finale è il seguente:

filelink1.gz -> file1.gz
filelink2.gz -> file2.gz
filelink3.gz -> file3.gz
file1.gz
file2.gz
file3.gz

Lo script svolge questo compito nella directory di lavoro corrente (quella restituita da pwd per intenderci), per tutti i file presenti nella directory.
L'applicazione pratica primaria dello script è quella di sistemare rapidamente le man page relative ad un tarball per Slackware Linux. Le man page dei pacchetti per Slackware vengono infatti gzippate ed è necessario aggiornare tutte i link presenti nelle man directory in modo che che puntino ai file gzippati, e in modo che i link stessi appaiano gzippati. Questo lavoro può diventare troppo lungo e faticoso da fare manualmente se i link sono numerosi (come accade, per esempio, nelle man page di OpenLDAP).
Lo script è esposto nello spazio sottostante ed è scaricabile da questo link.

#!/bin/bash
#
# "gziplinks" script
# Version 0.2 by Giacomo Lozito
# Last edited on 26/2/2005
# License: General Public License v2
#
# This script removes symbolic links to man pages, gzippes
# them and then rebuilds symbolic links for gzipped man pages
# IT DOES THE JOB IN THE CURRENT WORKING DIRECTORY!
#

read -n1 -p "This will gzip and rebuild links for
all directory content. Continue? (y/n) " _USERKEYPRESS
echo ""

if [ "$_USERKEYPRESS" != "y" ]
then
  exit 0
fi

gzip -9 -q *
for _MANSYMLINK in `ls -F | grep @$ | tr -d @`
do
	_MANDESTLINK=`readlink $_MANSYMLINK`
	rm $_MANSYMLINK
	ln -s $_MANDESTLINK.gz $_MANSYMLINK.gz
done

echo "Directory content gzipped and links rebuilt!"