Bienvenidos/as al proceloso mar de las Oposiciones. Aquí hay fuentes de información, enlaces a páginas, libros y reflexiones sobre el duro trabajo del opositor/a (a Informática). Además, un podcast de Informática y 7.000 vídeos en Youtube.
sábado, 28 de enero de 2012
awk es mejor que cut
tamfichmenor=`ls -S -l -r -R| head -3 | tail -1 | awk '{print $5}'
Con cut al final, detecta los espacios, así que no me saca el tamaño del fichero.
Con cut al final, detecta los espacios, así que no me saca el tamaño del fichero.
Shell Script Enero 5. Leer un número indeterminado de argumentos, ejecutar, crear copia de seguridad, parámetros con letras, fichero de ayuda
#!/bin/bash
#TODOS LOS SCRIPTS EN http://oposinf.blogspot.com/search/label/shellscript
#5. Implementar un shell-script bajo Linux que realice lo siguiente: El script tendrá el siguiente formato ej5.sh [opciones] [argumentos] Al ejecutar el shell-script, eśte deberá mostrar un saludo (Buenos días) con el nombre del usuario que lo ejecuta.
#Las opciones que puede recibir el shell son las siguientes:
#Sin opciones ni argumentos, deberá mostrar el contenido del propio shell-script.
#-m Comprobará que los argumentos (tras -m) son ficheros, en cuyo caso muestra su contenido por pantalla.
#-x Deberá comprobar que los argumentos (tras -x) son programas ejecutables, en cuyo caso los ejecutará.
#-b Con esta opción se borrarán todos los ficheros y directorios que se le pasen como parámetro. Antes de ser eliminados, creará una copia de seguridad de los mismos en el directorios $HOME/backup.
#-help Mostrará el contenido de un fichero de texto, de nombre ayuda.hlp, en el que se explicará el funcionamiento del shell-script.
#Se valorará es uso de funciones y llamadas a shell-scripts externos, si procede.
function error {
echo "¡¡Horror!! Uso "$0" -[|m|x|b|help] [argumentos] "
exit
}
echo $#
if [[ $# -eq 0 ]]
then
echo "Contenido del archivo."
cat enero05
elif [[ $# -gt 0 ]]
then
#Decir buenos días, nombre del usuario
nombreusuario=`id -un`
echo "Buenos días, $nombreusuario"
#si el primer parámetro es -m
if [[ $1 == "-m" ]]
then
echo "Entrando en -m"
#la siguiente línea muestra todos los parámetros en una línea, pero no me gusta mucho, voy a probar otra opción
#echo $*
#esta manera es muy limpia
#primero se quita de en medio el primer parámetro, que es la -m
shift
#y luego va sacando cada parámetro hasta que la lista de parámetros esta vacía
#ni hay que contar parámetros ni nada
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "LISTANDO ARCHIVO $archivo..."
cat $archivo
else
echo "El archivo $archivo no existe"
fi
#pasa al siguiente parámetro, esto es, borra el primero y pasa todos los demas hacia adelante, así que el 2º pasa a ser el 1º
shift
done
elif [[ $1 == "-x" ]]
then
echo "Entrando en -x"
shift
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "EJECUTANDO $archivo..."
$archivo
else
echo "El archivo $archivo no es ejecutable."
fi
shift
done
elif [[ $1 == "-b" ]]
then
echo "Entrando en -b"
shift
#comprobar si existe carpeta de backup y, si no, crearla
nombreusuario=`id -un`
echo $nombreusuario
carpeta=`cat /etc/passwd | grep $nombreusuario | cut -d: -f6`
echo $carpeta
if [ -d $carpeta/backup1 ]
then
echo "La carpeta backup existe"
else
echo "Creando carpeta backup en carpeta de usuario"
mkdir $carpeta/backup1
fi
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "BORRANDO $archivo..."
cp $archivo $carpeta/backup1
#esto lo comento para evitar que borre archivos
#rm $archivo
else
echo "El archivo $archivo no existe."
fi
shift
done
elif [[ $1 == "-help" ]]
then
cat ayuda.hlp
else
error
fi
else
error
fi
#TODOS LOS SCRIPTS EN http://oposinf.blogspot.com/search/label/shellscript
#5. Implementar un shell-script bajo Linux que realice lo siguiente: El script tendrá el siguiente formato ej5.sh [opciones] [argumentos] Al ejecutar el shell-script, eśte deberá mostrar un saludo (Buenos días) con el nombre del usuario que lo ejecuta.
#Las opciones que puede recibir el shell son las siguientes:
#Sin opciones ni argumentos, deberá mostrar el contenido del propio shell-script.
#-m Comprobará que los argumentos (tras -m) son ficheros, en cuyo caso muestra su contenido por pantalla.
#-x Deberá comprobar que los argumentos (tras -x) son programas ejecutables, en cuyo caso los ejecutará.
#-b Con esta opción se borrarán todos los ficheros y directorios que se le pasen como parámetro. Antes de ser eliminados, creará una copia de seguridad de los mismos en el directorios $HOME/backup.
#-help Mostrará el contenido de un fichero de texto, de nombre ayuda.hlp, en el que se explicará el funcionamiento del shell-script.
#Se valorará es uso de funciones y llamadas a shell-scripts externos, si procede.
function error {
echo "¡¡Horror!! Uso "$0" -[|m|x|b|help] [argumentos] "
exit
}
echo $#
if [[ $# -eq 0 ]]
then
echo "Contenido del archivo."
cat enero05
elif [[ $# -gt 0 ]]
then
#Decir buenos días, nombre del usuario
nombreusuario=`id -un`
echo "Buenos días, $nombreusuario"
#si el primer parámetro es -m
if [[ $1 == "-m" ]]
then
echo "Entrando en -m"
#la siguiente línea muestra todos los parámetros en una línea, pero no me gusta mucho, voy a probar otra opción
#echo $*
#esta manera es muy limpia
#primero se quita de en medio el primer parámetro, que es la -m
shift
#y luego va sacando cada parámetro hasta que la lista de parámetros esta vacía
#ni hay que contar parámetros ni nada
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "LISTANDO ARCHIVO $archivo..."
cat $archivo
else
echo "El archivo $archivo no existe"
fi
#pasa al siguiente parámetro, esto es, borra el primero y pasa todos los demas hacia adelante, así que el 2º pasa a ser el 1º
shift
done
elif [[ $1 == "-x" ]]
then
echo "Entrando en -x"
shift
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "EJECUTANDO $archivo..."
$archivo
else
echo "El archivo $archivo no es ejecutable."
fi
shift
done
elif [[ $1 == "-b" ]]
then
echo "Entrando en -b"
shift
#comprobar si existe carpeta de backup y, si no, crearla
nombreusuario=`id -un`
echo $nombreusuario
carpeta=`cat /etc/passwd | grep $nombreusuario | cut -d: -f6`
echo $carpeta
if [ -d $carpeta/backup1 ]
then
echo "La carpeta backup existe"
else
echo "Creando carpeta backup en carpeta de usuario"
mkdir $carpeta/backup1
fi
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "BORRANDO $archivo..."
cp $archivo $carpeta/backup1
#esto lo comento para evitar que borre archivos
#rm $archivo
else
echo "El archivo $archivo no existe."
fi
shift
done
elif [[ $1 == "-help" ]]
then
cat ayuda.hlp
else
error
fi
else
error
fi
Shell Script Enero 4. Escribir un programa copiabin.sh que mueva todos los programas del directorio actual (archivos ejecutables) hacia el subdirectorio bin del directorio propio del usuario, muestre los nombres de los que mueve e indique cuántos ha movido o que no ha movido ninguno. Si el directorio bin no existe, deberá ser creado.
#!/bin/bash
#4. Escribir un programa copiabin.sh que mueva todos los programas del directorio actual (archivos ejecutables) hacia el subdirectorio bin del directorio propio del usuario, muestre los nombres de los que mueve e indique cuántos ha movido o que no ha movido ninguno. Si el directorio bin no existe, deberá ser creado.
if [[ $# -gt 1 ]]
then
echo "¡¡Horror!! Uso "$0" nombrearchivo "
exit
fi
nombreusuario=`id -un`
echo $nombreusuario
carpeta=`cat /etc/passwd | grep $nombreusuario | cut -d: -f6`
echo $carpeta
#carpeta= `echo $carpeta/bin 2>/dev/null`
#carpeta= `echo "$carpeta/bin"`
#carpetabin= `echo "$carpeta"/bin`
if [ -d $carpeta/bin ]
then
echo "La carpeta bin existe"
else
echo "Creando carpeta bin en carpeta de usuario"
mkdir $carpeta/bin
fi
ls > ficheros.txt
while read linea
do
echo $linea
if [ -f "$linea" ]
then
if [ -x "$linea" ]
then
cp $linea $carpeta/bin
fi
fi
done < ficheros.txt
#4. Escribir un programa copiabin.sh que mueva todos los programas del directorio actual (archivos ejecutables) hacia el subdirectorio bin del directorio propio del usuario, muestre los nombres de los que mueve e indique cuántos ha movido o que no ha movido ninguno. Si el directorio bin no existe, deberá ser creado.
if [[ $# -gt 1 ]]
then
echo "¡¡Horror!! Uso "$0" nombrearchivo "
exit
fi
nombreusuario=`id -un`
echo $nombreusuario
carpeta=`cat /etc/passwd | grep $nombreusuario | cut -d: -f6`
echo $carpeta
#carpeta= `echo $carpeta/bin 2>/dev/null`
#carpeta= `echo "$carpeta/bin"`
#carpetabin= `echo "$carpeta"/bin`
if [ -d $carpeta/bin ]
then
echo "La carpeta bin existe"
else
echo "Creando carpeta bin en carpeta de usuario"
mkdir $carpeta/bin
fi
ls > ficheros.txt
while read linea
do
echo $linea
if [ -f "$linea" ]
then
if [ -x "$linea" ]
then
cp $linea $carpeta/bin
fi
fi
done < ficheros.txt
Shell Script Enero 3. Realizar un script que permita copiar un archivo pasado como parámetro en un directorio cualquiera también pasado como parámetro, antes de copiar comprobar si el archivo se puede leer.
#!/bin/bash
#3. Realizar un script que permita copiar un archivo pasado como parámetro en un directorio cualquiera también pasado como parámetro, antes de copiar comprobar si el archivo se puede leer.
if [[ $# -gt 3 ]]
then
echo "¡¡Horror!! Uso "$0" nombrearchivo "
exit
fi
archivo=$1
carpeta=$2
if [ -r $nombre ]
then
cp $archivo $carpeta
fi
#3. Realizar un script que permita copiar un archivo pasado como parámetro en un directorio cualquiera también pasado como parámetro, antes de copiar comprobar si el archivo se puede leer.
if [[ $# -gt 3 ]]
then
echo "¡¡Horror!! Uso "$0" nombrearchivo "
exit
fi
archivo=$1
carpeta=$2
if [ -r $nombre ]
then
cp $archivo $carpeta
fi
Suscribirse a:
Entradas (Atom)