¿Que salida ocasionaría cada una de las
siguientes órdenes si la ejecutamos
consecutivamente?
$ set a b c d e f g h i j k l m n
$ echo $10
$ echo $15
$ echo $*
$ echo $#
$ echo $?
$ echo ${11}
|
Explica que realizaría cada una de las siguientes
órdenes ejecutadas en secuencia
$ A=\$B
$ B=ls
$ echo $A
$ eval $A
|
Mostrar el último parámetro posicional
Pista: $#
Asignar el úlimo parámetro posicional a la
variable ULT
Realizar un programa que escriba los 20 primeros
números enteros.
Realizar un programa que numere las líneas de un
fichero
Realizar un programa que tomando como base el contenido de
un directorio escriba cada elemento contenido indicando si
es fichero o directorio.
Realizar un programa que muestre todos los ficheros
ejecutables del directorio activo.
Modificar el programa anterior para que indique el tipo de
cada elemento contenido en el directorio activo: fichero,
directorio, ejecutable,...
Ejercicios resueltos sobre ficheros y directorios
Guion de shell que genere un fichero llamado listaetc que
contenga los ficheros con permiso de lectura que haya en el
directorio /etc:
for F in /etc/*
do
if [ -f $F -a -r $F ]
then
echo $F >> listaetc
fi
done
|
Hacer un guion de shell que, partiendo del fichero generado
en el ejercicio anterior, muestre todos los ficheros del
directorio /etc que contengan la palagra "procmail":
while read LINEA
do
if grep procmail $L >/dev/null 2>&1
then
echo $L
fi
done <listaetc
|
Hacer un guion de shell que cuente cuantos ficheros y
cuantos directorios hay en el directorio pasado como
argumento:
DI=0
FI=0
for I in $1/*
do
if [ -f $I ]
then
let FI=FI+1
fi
if [ -d $I ]
then
let DI=DI+1
fi
done
|
Hacer un guion de shell que compruebe si existe el
directorio pasado como argumento dentro del directorio
activo. En caso de que exista, que diga si no está
vacío.
if [ -d $1 ]
then
echo "$1 existe"
N=$(ls | wc -l)
if [ $N -gt 0 ]
then
echo "S1 no está vacio, contiene $N ficheros no ocultos"
fi
fi
|
Hacer un guion de shell que copie todos los ficheros del
directorio actual en un directorio llamado csg. Si el
directorio no existe el guion lo debe de crear.
if [ ! -d csg ]
then
mkdir csg
fi
cp * csg
|
Hacer un script que muestre el fichero del directorio
activo con más líneas:
NLIN=0
for I in *
do
if [ -f $I ]
then
N=$(wc -l $I)
if [ $N -gt $NLIN ]
then
NOMBRE=$I
NLIN=$N
fi
fi
done
echo "$NOMBRE tiene $NLIN lineas"
|
¿Qué haría el siguiente script?
NUEVA="óptimo"
for f in $(find . -type f)
|
sed s/$ORIGINAL/$NUEVA/g $f >$f.tr
|
¿Qué haría el siguiente script?
NUEVA="óptimo"
for f in $(find . -type d)
|
¿Qué haría el siguiente script?
find . -type d -exec chmod a+rx {} \;
|
¿Qué haría el siguiente script?
tar cfz /var/copia/$fecha/etc-$fecha.mod.tar.gz $(find /etc -newer /var/copia/ultimo ! -type d)
|