Naprej Nazaj Kazalo

25. slist

Opomba : Lupino Korn /bin/ksh dobite z namestitvijo paketa pdksh*.rpm s CDja Linux contrib

Shranite to datoteko kot tekstovno datoteko in na njej izvedite chmod a+rx.


#!/bin/ksh

# CVS program slist
# Program za izpis vseh datotek iz CVS, ki se urejajo

# Vsako ime datoteke se sestoji iz treh delov: domačega imenika, podimenika
# in imena datoteke. Polna pot do datoteke je tako $HOME/$subdir/$fname.
# V CVS se ohrani enaka struktura imenikov (z vpeljavo spremenljivke  
# $subdir), torej se bo pot v CVS glasila $CVSROOT/$subdir/$fname.
# V tem programu igrajo 4 spremenljivke ($HOME, $CVSROOT, $subdir in $fname)
# pomembno vlogo. Na primer, vzorčne vrednosti so lahko:
# HOME=/home/aldev, subdir=myproject/src CVSROOT=/home/cvsroot 
# in fname=foo.cpp

# Pozor: Uporabljajte dvojne narekovaje, da se bodo v vrednostih spremenljivk
#        ohranili presledki, npr. "$HOME/$subdir", če je $subdir enak 'some foo.cpp'

# Uporaba:
#               $ slist      (Vse datoteke in podimeniki)
#               $ slist *.*      (Vse datoteke)
#               $ slist *      (Vse datoteke in podimeniki)
#               $ slist ab*      (Vse datoteke, i se zacnejo z ab)

homedir=` echo $HOME | cut -f1 -d' '  `
if [ "$homedir" = "" ]; then
        print "\nPozor: spremenljivka \$HOME ni nastavljena!!\n"
        exit
fi

cur_dir=`pwd`
#echo $cur_dir

len=${#homedir}
len=$(($len + 2))
#echo $len

subdir=` echo $cur_dir | cut -b $len-2000 `
#echo "subdir je : " $subdir

# Ce je datoteko ze kdo prevzel....
cvs_root=` echo $CVSROOT | cut -f1 -d' '  `
if [ "$cvs_root" = "" ]; then
        print "\nNapaka: spremenljivka \$CVSROOT ni nastavljena!!\n"
        exit
fi

# Ce trenutnega imeniskega drevesa ni v korenskem imeniku CVS, koncaj
if [ ! -d $CVSROOT/$subdir ]; then
        print "\nImenika $subdir ni bilo mogoce najti v $CVSROOT"
        exit
fi

#echo "st. parametrov : " $#
#echo "Argument $ 1 je : " $1
#echo "vsi argumenti : " $@

if [ $# -eq 0 ]; then
        #tmpbb=` find * -prune -type d `
        tmpbb=` find * -maxdepth 0 -type d `
elif [ $# -eq 1 ]; then
        if [ "$1" = "." ]; then
                #tmpbb=` find * -prune -type d `
                tmpbb=` find * -maxdepth 0 -type d `
        else
                if [ -d $1 -a ! -d $CVSROOT/$subdir/$1 ]; then
                        print "\nImenika $subdir/$1 ni v $CVSROOT"
                        exit
                fi
                tmpbb=$@
        fi
else
        tmpbb=$@
fi

#echo "tmpbb je : " $tmpbb

# Sedaj odstrani vsa imena imenikov, ki jih ni v korenskem imeniku CVS
dirnames=""
for ii in $tmpbb ; do
        if [ -d $CVSROOT/$subdir/$ii ]; then
                dirnames="$dirnames $ii "
        fi
done
#echo "dirnames je : " $dirnames

if [ "$dirnames" != "" ]; then
        find $dirnames  -type f |
        while read ii
        do
                # Prikazi samo tiste datoteke, ki so v sistemu CVS
                if [ -f "$CVSROOT/$subdir/$ii,v" ]; then
                        #echo "ii is : " $ii
                        ls -l $ii | grep ^\-rw
                fi
        done;
fi

# Ugotovi vse datoteke v trenutnem imeniku
listfiles=`ls $tmpbb `
# Izbira prune ne deluje, zato uporabi maxdepth
#find * -prune -type f |
find * -maxdepth 0 -type f |
while read ii
do
        for jj in $listfiles ; do
                if [ "$jj" = "$ii" ]; then
                        # Prikazi samo datoteke, ki so v sistemu CVS
                        if [ -f "$CVSROOT/$subdir/$ii,v" ]; then
                                #echo "ii je : " $ii
                                ls -l $ii | grep ^\-rw
                        fi
                fi
        done
done;



Naprej Nazaj Kazalo