section 1.7
ls *.c
ls [h,s]*
ls [h*,s*]
ls ?????
section 3.1
more /etc/passwd | grep durand
section 3.2
find . -name "XXX" -exec ls {} \;
section 3.3
sort -t ':' +1
section 3.6
Il faut ajouter un droit d'exécution au fichier essai
section 3.7
tar cvf TEST.tar rep
gzip TEST.tar
section 4.6
ls > ls_res
ls >> ls_res
ls -l | wc -l compte le nombre de fichiers dans le répertoire
courant
ls -l > f ; wc -l f ; rm f
section 5.6
rsh frege "xterm -display <nom_display>"
avec le .rhost sur frege contenant : <nom_display>.<nom_domaine>
<nom_user>
section 7.4
#!/bin/tcsh
# compte le nombre de fichiers présents dans le répertoire
/usr/bin
set f=(/usr/bin/*)
echo $#f
section 7.8
#!/bin/tcsh
# compte les lignes de chaque fichier présent dans le répertoire
/usr/bin
set l=(/usr/bin/*)
foreach i ($l)
wc -l $i
section 7.9
#!/bin/tcsh
# compte les lignes de chaque fichier présent dans le répertoire
donné en paramètre
set l=($*)
foreach i ($l)
wc -l $i
section 7.11
#!/bin/tcsh
# place les fichiers dans les répertoires Src, Inc et Obj
foreach i ($argv)
switch ($i)
case *.c :
echo ".c"
mv $i Src
breaksw
case *.h :
echo ".c"
mv $i Inc
breaksw
case *.o :
echo ".c"
mv $i Obj
breaksw
default :
echo "autre"
endsw
end
#!/bin/tcsh
# affiche les fichiers dont la taille dépasse une limite donnée
en paramètre
# version avec utilisation de la commande du
# (on peut aussi écrire une version avec utilisation de la commande
find)
if ($#argv < 1) echo "usage dusup size files"
@ du=0
@ size=0
set size = $argv[1]
shift
foreach i ($argv)
set du=`du -s $i | cut -d' ' -f1`
[l'option -d n'est nécessaire que sur certains systèmes]
if ($du > $size) echo $i $du
end
#!/bin/tcsh
# change une chaine de caractères par une autre dans les fichiers
indiqués en paramètre
if ($#argv < 3) echo "usage chstr str newstr files"
set str=$argv[1]
set newstr=$argv[2]
shift
shift
foreach i ($argv)
echo $i
sed -e s/$str/$newstr/g $i
end
Partie I. Shell qui gère les destructions de fichiers
#!/bin/sh
PROGNAME=$0
TRASH_DIR=$HOME/trash
while test -n "$1" do
if test $1 = ~ -o $1 = / then
echo $PROGNAME: error: hazardous operation
canceled.
elif test $1 = core then
/bin/rm -f $1
else
if test -f $TRASH_DIR/$1
-o -d $TRASH_DIR/$1 then
/bin/rm -fr $TRASH_DIR/$1
fi
/bin/mv -f $1 $TRASH_DIR/
fi
shift
done
Script de visualisation d'un répertoire
#!/bin/tcsh
# Script : visualisation du contenu d'un repertoire sous forme d'arbre
#
alias ls "/bin/ls"
# ATTENTION :
# mettre ici le chemin d'acces a 'dirlist'
set DIRLISTPATH = "~/VotreTP/Seance1/Ex2"
# verification du nombre d'argument et mise a jour des variables globales
if ($#argv > 2) then
echo "Format incorrect : usage = dirlist [dir [separateur]]"
else
# DEC contiendra la chaine utilisee en separateur
# CWD contiendra le chemin actuel
if ($#argv == 0) then
# premier mode : dirlist
set DEC = "......."
set CWD = `pwd`
else
if ($#argv == 1) then
# deuxieme mode : dirlist nom_de_repertoire
set DEC = "......."
set CWD = $argv[1]
echo $CWD
else
# troisieme mode : dirlist nom_de_repertoire separateur
set DEC = $argv[2]
set CWD = $argv[1]
endif
endif
# a present, affichage du contenu du repertoire
cd $CWD
set MPWD=`pwd`
set DDEC = "......."
set FDEC = "______"
set K = 0
set LS = `ls`
if ($#LS != 0) then
# le repertoire n'est pas vide
# K contiendra le nombre d'element
foreach I ($LS)
# expr est un outil qui permet d'evaluer une expression. faites
le man !
set K = `expr $K + 1`
end
set J = 0
foreach I ($LS)
set J = `expr $J + 1`
if ( -d $I ) then
# $I contient le nom d'un repertoire
echo $DEC\|$FDEC$I\/
# on repart en recursif !
if ($J == $K) then
tcsh $DIRLISTPATH/dirlist $I $DEC\.$DDEC
else
tcsh $DIRLISTPATH/dirlist $I $DEC\|$DDEC
endif
else
echo $DEC\|$FDEC$I
endif
end
endif
cd $MPWD