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
Shell Script Enero 2. Recibir un nombre de archivo como parámetro e indicar, imprimiendo todas las leyendas que correspondan, si el archivo es legible, modificable y ejecutable por el usuario.
#!/bin/bash
#2. Recibir un nombre de archivo como parámetro e indicar, imprimiendo todas las leyendas que correspondan, si el archivo es legible, modificable y ejecutable por el usuario.
if [[ $# -gt 2 ]]
then
echo "¡¡Horror!! Uso "$0" nombrearchivo "
exit
fi
archivo=$1
if [ -f $nombre ]
then
if [ -r $nombre ]
then
echo "El archivo $archivo se puede leer"
else
echo "El archivo $archivo no se puede leer"
fi
if [ -w $nombre ]
then
echo "El archivo $archivo se puede escribir"
else
echo "El archivo $archivo no se puede escribir"
fi
if [ -x $nombre ]
then
echo "El archivo $archivo se puede ejecutar"
else
echo "El archivo $archivo no se puede ejecutar"
fi
fi
#2. Recibir un nombre de archivo como parámetro e indicar, imprimiendo todas las leyendas que correspondan, si el archivo es legible, modificable y ejecutable por el usuario.
if [[ $# -gt 2 ]]
then
echo "¡¡Horror!! Uso "$0" nombrearchivo "
exit
fi
archivo=$1
if [ -f $nombre ]
then
if [ -r $nombre ]
then
echo "El archivo $archivo se puede leer"
else
echo "El archivo $archivo no se puede leer"
fi
if [ -w $nombre ]
then
echo "El archivo $archivo se puede escribir"
else
echo "El archivo $archivo no se puede escribir"
fi
if [ -x $nombre ]
then
echo "El archivo $archivo se puede ejecutar"
else
echo "El archivo $archivo no se puede ejecutar"
fi
fi
Shell Script Enero 1. Hacer un script que visualice un menú de tres opciones, la primera borra un fichero leído por teclado, la segunda visualiza un fichero también leído por teclado y la tercera sale del programa
#!/bin/bash
#1. Hacer un script que visualice un menú de tres opciones, la primera borra un fichero leído por teclado, la segunda visualiza un fichero también leído por teclado y la tercera sale del programa
function menu {
echo "1. Borrar fichero."
echo "2. Visualizar fichero."
echo "3. Salir."
echo "Introduce una opción:"
}
until [[ $opcion -eq 3 ]]
do
menu
read opcion
#echo $opcion
if [[ $opcion -eq 1 ]] ;then
echo "Opción 1 seleccionada"
read -p "Introduce el nombre del archivo" nombre
#echo $nombre
if [ -f $nombre ]
then
rm $nombre
fi
elif [[ $opcion -eq 2 ]] ; then
echo "Opción 2 seleccionada"
read -p "Introduce el nombre del archivo" nombre
$echo $nombre
if [ -f $nombre ]
then
cat $nombre
fi
else
echo "Saliendo del programa..."
fi
done
#1. Hacer un script que visualice un menú de tres opciones, la primera borra un fichero leído por teclado, la segunda visualiza un fichero también leído por teclado y la tercera sale del programa
function menu {
echo "1. Borrar fichero."
echo "2. Visualizar fichero."
echo "3. Salir."
echo "Introduce una opción:"
}
until [[ $opcion -eq 3 ]]
do
menu
read opcion
#echo $opcion
if [[ $opcion -eq 1 ]] ;then
echo "Opción 1 seleccionada"
read -p "Introduce el nombre del archivo" nombre
#echo $nombre
if [ -f $nombre ]
then
rm $nombre
fi
elif [[ $opcion -eq 2 ]] ; then
echo "Opción 2 seleccionada"
read -p "Introduce el nombre del archivo" nombre
$echo $nombre
if [ -f $nombre ]
then
cat $nombre
fi
else
echo "Saliendo del programa..."
fi
done
lunes, 23 de enero de 2012
Plantillas para OpenOffice.org Impress
Estoy preparando una presentación para entrenar la programación didáctica.
Impress trae muy pocas plantillas así que aquí dejo unas cuantas:
http://www.openoffice.org/documentation/Samples_Templates/User/template/presentations/presentations.zip
http://templates.services.openoffice.org/es/taxonomy/term/121
http://www.presentationmagazine.com/free-open-office-impress-templates-91.htm
http://technology.chtsai.org/impress/
http://conexionesrazonables.blogspot.com/2009/10/otras-300-plantillas-mas-para.html
Impress trae muy pocas plantillas así que aquí dejo unas cuantas:
http://www.openoffice.org/documentation/Samples_Templates/User/template/presentations/presentations.zip
http://templates.services.openoffice.org/es/taxonomy/term/121
http://www.presentationmagazine.com/free-open-office-impress-templates-91.htm
http://technology.chtsai.org/impress/
http://conexionesrazonables.blogspot.com/2009/10/otras-300-plantillas-mas-para.html
sábado, 21 de enero de 2012
¡Ya está bien! CULTURA LIBRE Y GRATUITA
¡Ya está bien! Ya está bien de pagar por algo que es patrimonio de la humanidad.
¿Quién inventó el cine? Los hermanos Lumiere. ¿Se le paga a la familia de los hermanos Lumiere cada vez que alguien hace una película? No.
¿Qué es Star Wars? Un pastiche de escenas de películas del oeste, bélicas, de espada y brujería, de kárate, trufado de referencias a las más variadas culturas:
los moños de la princesa Leia están copiados de la Dama de Elche, los trajes de Jedi son japoneses, los caballeros Jedi son los de la Mesa Redonda,
los Padawan llevan una coleta como los toreros... ¿Eso no es copiar? ¿Eso no es piratear ideas? Ah, no, eso es "inspirado en". (Y mira que soy fan de Star Wars).
Yo me gastaba la paga de un mes para comprar un disco de vinilo. Un cd costaba 50 pesetas, y te cobraban 20€, con suerte, por 10 canciones, de las cuales, 2 o 3 estaban bien y el resto era relleno.
Las industrias cinematográfica y discográfica son herramientas de marketing que crean estrellas como Amy Winehouse, pero luego no la ayudan cuando tiene problemas.
¿Cuántos niños prodigio han acabado siendo víctimas de su propio éxito? Macauley Culkin, Joselito, Edward Furlong...
Marisol fue inteligente y consiguió escapar del rodillo asesino de las grandes multinacionales.
¿Por qué Rock Hudson no podía ser él mismo? ¿Cuánto sufrimiento tuvo que pasar esa persona porque alguien creía que iba a vender menos si salía del armario?
¿Cuánto dinero han amasado? ¿Qué han hecho con él? Y siguen queriendo exprimir la gallina de los huevos de oro.
No se dan cuenta de que las personas somos inteligentes y de que no nos dejamos manipular.
Que hay miles de chavales y chavalas con más talento, ganas y capacidad de trabajo que las supuestas estrellitas que nos venden y con las que nos machacan día tras día.
Si una mentira se repite las suficientes veces, acaba convirtiéndose en la verdad (Joseph Goebbels). Joseph Goebbles fue ministro de propaganda de la Alemania Nazi.
Pues lo mismo intentan usar con nosotros: Pitbull es muy bueno, Shakira es muy buena, Carlos Jean es muy bueno... Lo ponen una y otra vez, una y otra vez, y repiten que son buenos.
Tenemos criterio, tenemos inteligencia y tenemos libertad. Y si prohiben intercambiar las cosas de una manera, saldré a la calle y le pediré al panadero que me preste la última serie de éxito.
¿Estaré cometiendo un delito? ¿Qué nos van a poner, un policía al lado a ver si le presto mis cosas a alguien? ¡Anda ya!
Yo abogo por una protesta pacífica: cambiar los contratos de todos los curritos, y cada vez que alguien pise una loseta que un albañil o albiñila ha puesto, que pague por ello,
cada vez que un alumno o alumna sume, que se pague al profesor que le enseñó a sumar, cada vez que alguien use un ordenador que yo he arreglado, que me pague,
cada vez que alguien haga una foto en Nueva York, que pague a los dueños de las casas, al Ayuntamiento por poner el río y al que hizo la Estatua de la Libertad.
Y llegamos al absurdo... Cada vez que alguien use un número, ¿quién tiene la patente de los números? ¿Y del teorema de Bolzano? ¿Y de la estructura básica del ordenador de Von Neumann?
LA CULTURA HA DE SER LIBRE Y GRATUITA. TODA. SIEMPRE.
Y si te crees con derecho a tener más que los demás por escribir 100 líneas de poemas en 2 años, ¿cuánto debería tener yo, que escribo 100 líneas de código en una hora? Deberías estar contento de que una persona igual que tú valore lo que haces y sea un poco más feliz gracias a ti. Pero no, tú quieres dinero, dinero, dinero...
¿Quién inventó el cine? Los hermanos Lumiere. ¿Se le paga a la familia de los hermanos Lumiere cada vez que alguien hace una película? No.
¿Qué es Star Wars? Un pastiche de escenas de películas del oeste, bélicas, de espada y brujería, de kárate, trufado de referencias a las más variadas culturas:
los moños de la princesa Leia están copiados de la Dama de Elche, los trajes de Jedi son japoneses, los caballeros Jedi son los de la Mesa Redonda,
los Padawan llevan una coleta como los toreros... ¿Eso no es copiar? ¿Eso no es piratear ideas? Ah, no, eso es "inspirado en". (Y mira que soy fan de Star Wars).
Yo me gastaba la paga de un mes para comprar un disco de vinilo. Un cd costaba 50 pesetas, y te cobraban 20€, con suerte, por 10 canciones, de las cuales, 2 o 3 estaban bien y el resto era relleno.
Las industrias cinematográfica y discográfica son herramientas de marketing que crean estrellas como Amy Winehouse, pero luego no la ayudan cuando tiene problemas.
¿Cuántos niños prodigio han acabado siendo víctimas de su propio éxito? Macauley Culkin, Joselito, Edward Furlong...
Marisol fue inteligente y consiguió escapar del rodillo asesino de las grandes multinacionales.
¿Por qué Rock Hudson no podía ser él mismo? ¿Cuánto sufrimiento tuvo que pasar esa persona porque alguien creía que iba a vender menos si salía del armario?
¿Cuánto dinero han amasado? ¿Qué han hecho con él? Y siguen queriendo exprimir la gallina de los huevos de oro.
No se dan cuenta de que las personas somos inteligentes y de que no nos dejamos manipular.
Que hay miles de chavales y chavalas con más talento, ganas y capacidad de trabajo que las supuestas estrellitas que nos venden y con las que nos machacan día tras día.
Si una mentira se repite las suficientes veces, acaba convirtiéndose en la verdad (Joseph Goebbels). Joseph Goebbles fue ministro de propaganda de la Alemania Nazi.
Pues lo mismo intentan usar con nosotros: Pitbull es muy bueno, Shakira es muy buena, Carlos Jean es muy bueno... Lo ponen una y otra vez, una y otra vez, y repiten que son buenos.
Tenemos criterio, tenemos inteligencia y tenemos libertad. Y si prohiben intercambiar las cosas de una manera, saldré a la calle y le pediré al panadero que me preste la última serie de éxito.
¿Estaré cometiendo un delito? ¿Qué nos van a poner, un policía al lado a ver si le presto mis cosas a alguien? ¡Anda ya!
Yo abogo por una protesta pacífica: cambiar los contratos de todos los curritos, y cada vez que alguien pise una loseta que un albañil o albiñila ha puesto, que pague por ello,
cada vez que un alumno o alumna sume, que se pague al profesor que le enseñó a sumar, cada vez que alguien use un ordenador que yo he arreglado, que me pague,
cada vez que alguien haga una foto en Nueva York, que pague a los dueños de las casas, al Ayuntamiento por poner el río y al que hizo la Estatua de la Libertad.
Y llegamos al absurdo... Cada vez que alguien use un número, ¿quién tiene la patente de los números? ¿Y del teorema de Bolzano? ¿Y de la estructura básica del ordenador de Von Neumann?
LA CULTURA HA DE SER LIBRE Y GRATUITA. TODA. SIEMPRE.
Y si te crees con derecho a tener más que los demás por escribir 100 líneas de poemas en 2 años, ¿cuánto debería tener yo, que escribo 100 líneas de código en una hora? Deberías estar contento de que una persona igual que tú valore lo que haces y sea un poco más feliz gracias a ti. Pero no, tú quieres dinero, dinero, dinero...
sábado, 14 de enero de 2012
viernes, 13 de enero de 2012
Shell Script Examen Viernes 13
Shell Script Examen Viernes 13
Para mis queridos alumnos y alumnas, para que vean que yo también hago exámenes:
#!/bin/bash
#examen viernes 13
#Elabora un Shell script que nos permitirá gestionar las copias de seguridad
#de un determinado directorio, que se recibirá por parámetro.
#Admitirá como argumento dos parámetros, el primero deberá ser Backup o
#Restore, y el segundo el nombre de un directorio.
#Si el primer parámetro es Backup, el Shell realizará una copia de seguridad
#(backup), para todos los usuarios del sistema, en el directorio pasado como
#segundo argumento.
#Si el primer parámetro es Restore, el Shell deberá restaurar todas las
#copias de seguridad guardadas en el directorio pasado como segundo
#parámetro. Se supone que restaura en el home.
#PD.- Recordad que es imprescindible comentad el código. (hacerlo a
#conciecia y la vinculación curricular aunque no lo pida).
#Comprueba el número de parámetros y si es distinto de 2, avisa del error y sale del programa
if (( $# != 2 ))
then
echo "Número de parámetros no correcto"
echo "Uso $0 Backup|Restore carpeta"
exit
fi
#echo "Número de parámetros:"$#
#inicialización de variables
#operación a realizar, Backup o Restore
operacion=$1
#carpeta destino u origen
directorio=$2
#echo $operacion
#Se comprueba si la operación es Backup o Restore y si no lo es, se sale del programa
if [ $operacion = "Backup" ]
then
echo "Operación Backup en curso..."
else
if [ $operacion = "Restore" ]
then
echo "Operación Restore en curso..."
else
echo "La operación debe ser Backup o Restore y tú has escrito " $operacion
echo "Saliendo del programa..."
exit
fi
fi
#ahora se comprueba si existe el directorio destino u origen
#y si no se crea
if [ -d $directorio ]
then
echo "El directorio existe. Se sigue el proceso..."
else
echo "El directorio no existe. Se crea."
mkdir $directorio
if [ $? -ne 0 ]
then
echo "Error al crear el directorio. Seguramente, no tienes permiso para copiar en él"
echo "Saliendo del programa"
exit
fi
fi
#echo "Operación:" $operacion
#si la operación es Backup
if [ $operacion = "Backup" ]
then
#se realiza la copia de seguridad
echo "Realizando copia de seguridad..."
cd $directorio
carpetahome="/home/ubuntu" #esta es la carpeta de la que se hace la copia de seguridad
tar -cf seguridad.tar $carpetahome
else
#se restaura la copia de seguridad
echo "Realizando la restauración..."
#cambia a la carpeta donde restaurar, que sería home
cd /home/jluserovilchez/examen13
#descomprime
tar -xf $directorio/*.tar
fi
Para mis queridos alumnos y alumnas, para que vean que yo también hago exámenes:
#!/bin/bash
#examen viernes 13
#Elabora un Shell script que nos permitirá gestionar las copias de seguridad
#de un determinado directorio, que se recibirá por parámetro.
#Admitirá como argumento dos parámetros, el primero deberá ser Backup o
#Restore, y el segundo el nombre de un directorio.
#Si el primer parámetro es Backup, el Shell realizará una copia de seguridad
#(backup), para todos los usuarios del sistema, en el directorio pasado como
#segundo argumento.
#Si el primer parámetro es Restore, el Shell deberá restaurar todas las
#copias de seguridad guardadas en el directorio pasado como segundo
#parámetro. Se supone que restaura en el home.
#PD.- Recordad que es imprescindible comentad el código. (hacerlo a
#conciecia y la vinculación curricular aunque no lo pida).
#Comprueba el número de parámetros y si es distinto de 2, avisa del error y sale del programa
if (( $# != 2 ))
then
echo "Número de parámetros no correcto"
echo "Uso $0 Backup|Restore carpeta"
exit
fi
#echo "Número de parámetros:"$#
#inicialización de variables
#operación a realizar, Backup o Restore
operacion=$1
#carpeta destino u origen
directorio=$2
#echo $operacion
#Se comprueba si la operación es Backup o Restore y si no lo es, se sale del programa
if [ $operacion = "Backup" ]
then
echo "Operación Backup en curso..."
else
if [ $operacion = "Restore" ]
then
echo "Operación Restore en curso..."
else
echo "La operación debe ser Backup o Restore y tú has escrito " $operacion
echo "Saliendo del programa..."
exit
fi
fi
#ahora se comprueba si existe el directorio destino u origen
#y si no se crea
if [ -d $directorio ]
then
echo "El directorio existe. Se sigue el proceso..."
else
echo "El directorio no existe. Se crea."
mkdir $directorio
if [ $? -ne 0 ]
then
echo "Error al crear el directorio. Seguramente, no tienes permiso para copiar en él"
echo "Saliendo del programa"
exit
fi
fi
#echo "Operación:" $operacion
#si la operación es Backup
if [ $operacion = "Backup" ]
then
#se realiza la copia de seguridad
echo "Realizando copia de seguridad..."
cd $directorio
carpetahome="/home/ubuntu" #esta es la carpeta de la que se hace la copia de seguridad
tar -cf seguridad.tar $carpetahome
else
#se restaura la copia de seguridad
echo "Realizando la restauración..."
#cambia a la carpeta donde restaurar, que sería home
cd /home/jluserovilchez/examen13
#descomprime
tar -xf $directorio/*.tar
fi
jueves, 12 de enero de 2012
martes, 10 de enero de 2012
Shell Script Sistemas de archivos ocupados al 90%
#!/bin/bash
#El comando df muestra el espacio disponible en los sistemas de archivos #montados. Su salida tiene esta forma:
# Filesystem 1024-blocks Used Available Capacity Mounted on
# /dev/hda2 1484386 433463 974213 31% /
# /dev/hda1 1228736 524576 704160 31% /dosc
# /dev/hda3 68263 63484 4779 93% /tmp
#Los campos están separados por espacios. El campo Capacity indica el porcentaje ocupado. Escribir un script espacio que invoque el comando df y muestre en su salida el nombre del sistema de archivo y su capacidad ocupada para los sistemas de archivos con 90% o más espacio ocupado.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
df | tr -s " " | cut -d" " -f1,5 | grep 9[0-9]%
#El comando df muestra el espacio disponible en los sistemas de archivos #montados. Su salida tiene esta forma:
# Filesystem 1024-blocks Used Available Capacity Mounted on
# /dev/hda2 1484386 433463 974213 31% /
# /dev/hda1 1228736 524576 704160 31% /dosc
# /dev/hda3 68263 63484 4779 93% /tmp
#Los campos están separados por espacios. El campo Capacity indica el porcentaje ocupado. Escribir un script espacio que invoque el comando df y muestre en su salida el nombre del sistema de archivo y su capacidad ocupada para los sistemas de archivos con 90% o más espacio ocupado.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
df | tr -s " " | cut -d" " -f1,5 | grep 9[0-9]%
Shell Script Hacer ping a máquinas en archivo /etc/hosts
#!/bin/bash
#Un administrador de una máquina UNIX debe revisar día a día si hay conexión hacia todas las máquinas contenidas en el archivo /etc/hosts. Para ello dispone del comando
# ping -c1 <nombre de la máquina destino>
#Un administrador de una máquina UNIX debe revisar día a día si hay conexión hacia todas las máquinas contenidas en el archivo /etc/hosts. Para ello dispone del comando
# ping -c1 <nombre de la máquina destino>
lunes, 9 de enero de 2012
Shell Script Sumadora usando expr
#Escribir un script sumadora para hacer sumas y restas de enteros. #Presentará al usuario una interfaz similar a ésta:
# SUMADORA: suma y resta enteros.
# Los símbolos aceptados son: + y -
# Debe haber espacio entre todos los operandos y operadores.
# Ejemplo: 5 + 3 - 20 + 35
# Ingrese operaciones:
# 3 * 2 + 10
# Resultado:
# 16
#Si la expresión ingresada es correcta, el script realizará el cálculo y #presentará el resultado; si no lo es, emitirá en lugar del resultado el #mensaje "Expresión incorrecta. Debe comenzar de nuevo" y saldrá.
#¿Qué dificultas se presentaría al incluír otras operaciones?
#Sugerencia: para controlar la validez de la expresión, capturar el valor #de retorno del comando que realiza la operación.
Shell Script Agregar máquinas al archivo /etc/hosts
#!/bin/bash
#Ejercicio 12. Escribir un script admaq para agregar una máquina al archivo /etc/hosts. Solicitará al usuario un número IP y luego un nombre #de máquina. El ingreso del nombre de máquina se reiterará hasta que el usuario ingrese un nombre de máquina vacío (tecla #Enter sin escribir nada). El script armará la línea en el formato del archivo hosts y la presentará al usuario pidiendo #confirmación. Si la obtiene, adjuntará la línea al final del archivo /etc/hosts.
#Ejercicio 12. Escribir un script admaq para agregar una máquina al archivo /etc/hosts. Solicitará al usuario un número IP y luego un nombre #de máquina. El ingreso del nombre de máquina se reiterará hasta que el usuario ingrese un nombre de máquina vacío (tecla #Enter sin escribir nada). El script armará la línea en el formato del archivo hosts y la presentará al usuario pidiendo #confirmación. Si la obtiene, adjuntará la línea al final del archivo /etc/hosts.
domingo, 8 de enero de 2012
Vamos a iTunes
Voy a poner mis vídeos de Youtube accesibles a través de iTunes.
Aquí está el feed
http://feeds.feedburner.com/ytjluv
Aquí pongo el logo.
Aquí está el feed
http://feeds.feedburner.com/ytjluv
Aquí pongo el logo.
sábado, 7 de enero de 2012
Podcast Informática Divulgada 03 Tema 27 Estructuras de Programación
Pogramita número 3 de mi PODCAST
Podcast Informática Divulgada 03 Tema 27 Estructuras de Programación
27. Estructuras de programación27.1. Tipos de datos y variables.
27.2. Expresiones y operadores.
27.3. Estructuras de control de flujo.
27.4. Subrutinas y funciones.
27.5. Paso de parámetros.
27.6. Programación basada en eventos.
IES Campanilllas, atacado
Me he intentado meter en la web el IES Campanillas y me redirige a otra dirección.
QUE FAIL
Éste es el FAIL2.
QUE FAIL
Éste es el FAIL2.
Programación didáctica: dudas
-Los dos primeros trimestres tienen 26 semanas, mientras que aquí da para 242 horas. He puesto, incluyendo días no lectivos. ¿Está bien?
viernes, 6 de enero de 2012
C++ Clase cola circular de enteros
//archivo ccolacircular.h
// Class automatically generated by Dev-C++ New Class wizard
#ifndef CCOLACIRCULAR_H
#define CCOLACIRCULAR_H
// Class automatically generated by Dev-C++ New Class wizard
#ifndef CCOLACIRCULAR_H
#define CCOLACIRCULAR_H
Podcast Informática 02 Cajas y placas base
2. Cajas y placas base para el ensamblaje de sistemas microinformáticos.
2.1. Factores de forma 2.2. Funcionalidades y componentes de una placa
base 2.3. BIOS. Buses, puertos y conectores 2.4. Arquitecturas vigentes
Aquí se describe la estructura del ordenador desde un punto de vista físico.
Descarga directa
Aquí se describe la estructura del ordenador desde un punto de vista físico.
Descarga directa
C++ Clase card para almacenar y mostrar datos sobre libros
//archivo ccard.h
// Class automatically generated by Dev-C++ New Class wizard
#include <string>
#include <iostream>
#include <string.h> // Required by strcpy()
#include <stdlib.h>
#ifndef CCARD_H
#define CCARD_H
// Class automatically generated by Dev-C++ New Class wizard
#include <string>
#include <iostream>
#include <string.h> // Required by strcpy()
#include <stdlib.h>
#ifndef CCARD_H
#define CCARD_H
C++ Pila simple para almacenar caracteres mediante un array de caracteres
//archivo cpila.h
// Class automatically generated by Dev-C++ New Class wizard
#include <iostream>
#ifndef CPILA_H
#define CPILA_H
// Class automatically generated by Dev-C++ New Class wizard
#include <iostream>
#ifndef CPILA_H
#define CPILA_H
jueves, 5 de enero de 2012
C++ Clase entera simple con métodos para leer y escribir datos
//archivo centero.h
// Class automatically generated by Dev-C++ New Class wizard
#ifndef CENTERO_H
#define CENTERO_H
// Class automatically generated by Dev-C++ New Class wizard
#ifndef CENTERO_H
#define CENTERO_H
Java Clase Pez Añadir número de objetos de la clase Pez creados.
Hemos añadido a la clase base cPez, una variable pública que se inicializa a 0 al crear el primer objeto de la clase cPez. La variable está fuera de cualquier método y, al ser pública, puede ser accedida desde sus clases derivadas e incrementada, que es lo que se hace en las clases derivadas cada vez que se crea un objeto.
Java Clase Pez getNombre setNombre Crear 2 clases que extiendan la clase pez.
//archivo cPez.java
public class cPez {
protected String nombre;
public cPez(){
this("");
}
public class cPez {
protected String nombre;
public cPez(){
this("");
}
Java Realiza un programa que muestre por pantalla el siguiente cuadrado: 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 El programa podrá generar cuadrados de cualquier dimensión. Utiliza la recursividad.
Sin recursividad.
//archivo cCuadroRecursivo
public class cCuadradoRecursivo {
private int n;
int [][] tabla;
//archivo cCuadroRecursivo
public class cCuadradoRecursivo {
private int n;
int [][] tabla;
Java Ejercicio 5 Realiza una clase con un método decimalToRomano que transforme números en formato decimal a números en formato romano
No lo hace bien. ¿Por qué? En próximas entradas, la solución.
//fichero cromano.java
public class cromano {
protected int n;
protected String romano;
/**
* @param args
*/
//fichero cromano.java
public class cromano {
protected int n;
protected String romano;
/**
* @param args
*/
miércoles, 4 de enero de 2012
Java Lucky Number Número de la suerte Calcula tu numero de la suerte a partir de tu fecha de nacimiento
//fichero cLuckynumber.java
import java.util.*;
import java.io.*;
import java.util.Calendar;
public class cLuckynumber {
protected Date fechanac;
import java.util.*;
import java.io.*;
import java.util.Calendar;
public class cLuckynumber {
protected Date fechanac;
Podcast Informática 01 Informática para todos
Este es el primer pogramita del Podcast de Informática que estoy pergeñando.
La principal intención es explicar la informática para que se entere todo el mundo. ¿Qué hace el ordenador desde que tocamos una tecla hasta que nos saca el resultado en la pantalla?
Descarga directa
http://www.ivoox.com/podcast-informatica-01-audios-mp3_rf_977087_1.html
La principal intención es explicar la informática para que se entere todo el mundo. ¿Qué hace el ordenador desde que tocamos una tecla hasta que nos saca el resultado en la pantalla?
Descarga directa
http://www.ivoox.com/podcast-informatica-01-audios-mp3_rf_977087_1.html
Java Clase para calcular número de personas según el número de chocos y de papas
Ampliar el programa anterior creando una clase que permita almacenar los kilos de papas y chocos del restaurante.
import java.io.*;
public class cPapaschocos2 {
import java.io.*;
public class cPapaschocos2 {
Java Calcular el número de personas según los kilogramos de papas y chocos que tenga
El enunciado del ejercicio original está en http://pizarra2011.wikispaces.com/Ejercicio+11+t2
/*
Carlos Pascual Piles García
11. El restaurante mejicano de Israel cuya especialidad son las papas con chocos nos pide diseñar
/*
Carlos Pascual Piles García
11. El restaurante mejicano de Israel cuya especialidad son las papas con chocos nos pide diseñar
Aprenda Java como si estuviera en primero: Ejemplo 1
Éste es el código del Ejemplo1 del magnífico manual de Java
Aprenda Java como si estuviera en primero
Yo, que ya había programado en Java, he repasado todo y la verdad es que es BASTANTE BUENO. Tiene su poquito de cada cosa y está muy bien explicado.
Lo he programado en Eclipse bajo Guadalinex. Eclipse permite crear el proyecto y las clases desde la interfaz gráfica, así como asignar las interfaces y las superclases a las clases.
Aquí dejo un enlace a los archivos:
Aprenda Java como si estuviera en primero
Yo, que ya había programado en Java, he repasado todo y la verdad es que es BASTANTE BUENO. Tiene su poquito de cada cosa y está muy bien explicado.
Lo he programado en Eclipse bajo Guadalinex. Eclipse permite crear el proyecto y las clases desde la interfaz gráfica, así como asignar las interfaces y las superclases a las clases.
Aquí dejo un enlace a los archivos:
martes, 3 de enero de 2012
Shell Script Visitas a web de máquinas externas
#!/bin/bash
#*Ejercicio 11.* Un administrador de sistema quiere saber si hay accesos a
#su servidor Web desde máquinas desconocidas. Para ello dispone de un
#archivo de log accesos.log cuyo primer campo, separado por blancos, es el
#nombre de una máquina o su número IP, indistintamente; luego otros dos
#campos, luego fecha y página solicitada. La lista de máquinas de su propio
#dominio se encuentran en el archivo /etc/hosts. Escribir un script que
#muestre los nombres o números IP de máquinas que accedieron el Web y la
#fecha, omitiendo las máquinas del propio dominio. Recordar que el archivo
#/etc/hosts puede tener comentarios, y que accesos.log tiene varios campos.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
cat /etc/hosts | grep ^[^#.] | awk -F"[ \t]" '{print $1 }' > hosts.txt
while read linea
do
servidor=`echo $linea | cut -d" " -f1`
fecha=`echo $linea | cut -d" " -f4`
#echo $servidor
grep $servidor hosts.txt &>/dev/null
if [[ $? != 0 ]]
then
echo "$servidor $fecha"
fi
done < accesos.log
#*Ejercicio 11.* Un administrador de sistema quiere saber si hay accesos a
#su servidor Web desde máquinas desconocidas. Para ello dispone de un
#archivo de log accesos.log cuyo primer campo, separado por blancos, es el
#nombre de una máquina o su número IP, indistintamente; luego otros dos
#campos, luego fecha y página solicitada. La lista de máquinas de su propio
#dominio se encuentran en el archivo /etc/hosts. Escribir un script que
#muestre los nombres o números IP de máquinas que accedieron el Web y la
#fecha, omitiendo las máquinas del propio dominio. Recordar que el archivo
#/etc/hosts puede tener comentarios, y que accesos.log tiene varios campos.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
cat /etc/hosts | grep ^[^#.] | awk -F"[ \t]" '{print $1 }' > hosts.txt
while read linea
do
servidor=`echo $linea | cut -d" " -f1`
fecha=`echo $linea | cut -d" " -f4`
#echo $servidor
grep $servidor hosts.txt &>/dev/null
if [[ $? != 0 ]]
then
echo "$servidor $fecha"
fi
done < accesos.log
Shell Script A partir de un archivo con una lista de nombres, liste los que no están dados de alta en el sistema
#!/bin/bash
#*Ejercicio 10.* Construir un script que a partir de una lista de nombres de
#usuario contenida en el archivo alumnos.txt, uno por línea, determine si el
#usuario existe o no. El script emitirá un listado con los usuarios que
#figuren en el archivo alumnos.txt pero no existan en el sistema.
#*Ayuda:* el comando id usuario devuelve código de retorno 1 cuando el
#usuario no existe, 0 si existe. Redireccionar las salidas de id para no
#confundir el despliegue.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
while read linea
do
existe=`id -u $linea 2>/dev/null`
if [[ $existe == '' ]]
then
echo $linea
fi
done < alumnos.txt
#*Ejercicio 10.* Construir un script que a partir de una lista de nombres de
#usuario contenida en el archivo alumnos.txt, uno por línea, determine si el
#usuario existe o no. El script emitirá un listado con los usuarios que
#figuren en el archivo alumnos.txt pero no existan en el sistema.
#*Ayuda:* el comando id usuario devuelve código de retorno 1 cuando el
#usuario no existe, 0 si existe. Redireccionar las salidas de id para no
#confundir el despliegue.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
while read linea
do
existe=`id -u $linea 2>/dev/null`
if [[ $existe == '' ]]
then
echo $linea
fi
done < alumnos.txt
Shell Script Calcular cantidad de cuentas para cada shell y nombres de cuentas sin shell asignado
#!/bin/bash
#*Ejercicio 9.* Construir un script que:
#a) indique los nombres de los diferentes shells asignados a las cuentas de
#usuario en el archivo /etc/passwd y la cantidad de cuentas de cada uno de
#esos shells;
#b) muestre los nombres de cuentas sin shell asignado.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
echo "Usuarios con shell asignado y cantidad"
cat /etc/passwd | cut -d: -f7 | sort | uniq -c
echo "Usuarios sin shell asignado"
cat /etc/passwd | grep ".*:.*:.*:.*:.*:.*:$" | cut -f1 -d:
#*Ejercicio 9.* Construir un script que:
#a) indique los nombres de los diferentes shells asignados a las cuentas de
#usuario en el archivo /etc/passwd y la cantidad de cuentas de cada uno de
#esos shells;
#b) muestre los nombres de cuentas sin shell asignado.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
echo "Usuarios con shell asignado y cantidad"
cat /etc/passwd | cut -d: -f7 | sort | uniq -c
echo "Usuarios sin shell asignado"
cat /etc/passwd | grep ".*:.*:.*:.*:.*:.*:$" | cut -f1 -d:
Shell Script Contar páginas accedidas según el archivo log de Apache
#!/bin/bash
#*Ejercicio 8.* Se desea saber qué páginas de un servidor web son más
#accedidas. El archivo /var/log/apache/access.log contiene líneas del
#siguiente formato:
#127.0.0.1 - - [25/Jul/2002:20:21:51 -0300] "GET
#/fabmelo/version7/modif_clave.php?nombre=pa232&clave=madrid HTTP/1.1" 200
#1609
#127.0.0.1 - - [25/Jul/2002:20:21:58 -0300] "POST /fabmelo/version7/menu.php
#HTTP/1.1" 200 1012
#127.0.0.1 - - [25/Jul/2002:20:22:00 -0300] "GET
#/fabmelo/version7/presupuestos2.php?nombre=pa232&clave=belice HTTP/1.1" 200
#642
#Los accesos contienen la palabra GET, los nombres de las páginas terminan
#en espacio o en "?". Listar los nombres de páginas de las 5 más accedidas.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
cat log | grep "GET" | cut -d" " -f7 > paginaslog.txt
cat paginaslog.txt | sort | uniq -c > cuentawebs.txt
cat cuentawebs.txt | sort -gr | head -5
#*Ejercicio 8.* Se desea saber qué páginas de un servidor web son más
#accedidas. El archivo /var/log/apache/access.log contiene líneas del
#siguiente formato:
#127.0.0.1 - - [25/Jul/2002:20:21:51 -0300] "GET
#/fabmelo/version7/modif_clave.php?nombre=pa232&clave=madrid HTTP/1.1" 200
#1609
#127.0.0.1 - - [25/Jul/2002:20:21:58 -0300] "POST /fabmelo/version7/menu.php
#HTTP/1.1" 200 1012
#127.0.0.1 - - [25/Jul/2002:20:22:00 -0300] "GET
#/fabmelo/version7/presupuestos2.php?nombre=pa232&clave=belice HTTP/1.1" 200
#642
#Los accesos contienen la palabra GET, los nombres de las páginas terminan
#en espacio o en "?". Listar los nombres de páginas de las 5 más accedidas.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
cat log | grep "GET" | cut -d" " -f7 > paginaslog.txt
cat paginaslog.txt | sort | uniq -c > cuentawebs.txt
cat cuentawebs.txt | sort -gr | head -5
Shell Script Instalación de programa
#!/bin/bash
#*Ejercicio 7.* Los creadores del programa maravil necesitan un script de
#instalación, llamado instalar.sh. Debe realizar estas tareas:
#1) presentar como pantalla de bienvenida el archivo bienvenida.txt, que
#ocupa menos de una pantalla; el usuario deberá digitar Enter para
#continuar.
#2) presentar una pantalla con la licencia, el archivo licencia.txt, también
#menor de una pantalla; el usuario deberá digitar la tecla S para aceptar la
#licencia, si no la acepta el programa avisa y termina con código de error
#1.
#3) inicializar una variable DIRINSTAL con el nombre del directorio de
#instalación por defecto, /usr/local/maravil.
#4) preguntar al usuario el directorio de instalación, mostrando el nombre
#sugerido (variable DIRINSTAL); el usuario podrá digitar un nombre de
#directorio o Enter para aceptar el directorio sugerido. En cualquier caso,
#el nombre del directorio de instalación deberá quedar en la variable
#DIRINSTAL.
#5) verificar si existe ya el directorio de instalación; es así, continúa la
#instalación, y si no, deberá pedir autorización al usuario, crearlo y
#verificar la creación exitosa. Si el usuario no autoriza la creación del
#directorio, el programa termina con error 2; si no se pudo crear el
#directorio el programa termina con error 3. En todos los casos se informa
#lo realizado.
#6) copiar los archivos maravil.py, LEAME y manual.txt hacia el directorio
#de instalación. Si la copia no da error, se informa la terminación exitosa
#de la instalación; en otro caso, se informa el error y se borra el
#directorio de instalación y todo su contenido.
cat bienvenida.txt
while :; do
read tmp
if [ -z "$tmp" ]; then
break
else
echo "Pulsa Intro para continuar"
fi
done
cat licencia.txt
read licencia
if [ $licencia == 'S' ]
then
echo "Licencia aceptada."
else
echo "No has aceptado la licencia. Saliendo."
exit 1
fi
DIRINSTAL="/usr/local/maravil"
echo "Escribe el nombre del directorio donde instalar o INTRO para el directorio por defecto"
read directorio
if [ -z "$directorio" ]; then
echo
else
DIRINSTAL=$directorio
fi
echo "El directorio de instalación será $DIRINSTAL"
if [ -d $DIRINSTAL ]
then
echo "El directorio ya existe. Se instalaré el programa en él. ¿Da usted su permiso?"
read resdir
if [[ $resdir == 'S' ]]
then
echo "Se van a copiar los archivos."
else
echo "Si no da usted permiso, salimos."
exit 3
fi
else
echo "El directorio no existe. Vamos a crearlo. Pulse S para crearlo. ¿Da usted su permiso?"
read resdir
if [[ $resdir == 'S' ]]
then
mkdir $DIRINSTAL
if [[ $? != 0 ]]
then
echo "Error al crear el directorio."
exit 2
fi
else
echo "Si no da usted permiso, salimos."
exit 3
fi
fi
cp maravil.py LEAME manual.txt $DIRINSTAL
if [[ $? == 0 ]]
then
echo "Instalación exitosa"
else
rm -r $DIRINSTAL
fi
#*Ejercicio 7.* Los creadores del programa maravil necesitan un script de
#instalación, llamado instalar.sh. Debe realizar estas tareas:
#1) presentar como pantalla de bienvenida el archivo bienvenida.txt, que
#ocupa menos de una pantalla; el usuario deberá digitar Enter para
#continuar.
#2) presentar una pantalla con la licencia, el archivo licencia.txt, también
#menor de una pantalla; el usuario deberá digitar la tecla S para aceptar la
#licencia, si no la acepta el programa avisa y termina con código de error
#1.
#3) inicializar una variable DIRINSTAL con el nombre del directorio de
#instalación por defecto, /usr/local/maravil.
#4) preguntar al usuario el directorio de instalación, mostrando el nombre
#sugerido (variable DIRINSTAL); el usuario podrá digitar un nombre de
#directorio o Enter para aceptar el directorio sugerido. En cualquier caso,
#el nombre del directorio de instalación deberá quedar en la variable
#DIRINSTAL.
#5) verificar si existe ya el directorio de instalación; es así, continúa la
#instalación, y si no, deberá pedir autorización al usuario, crearlo y
#verificar la creación exitosa. Si el usuario no autoriza la creación del
#directorio, el programa termina con error 2; si no se pudo crear el
#directorio el programa termina con error 3. En todos los casos se informa
#lo realizado.
#6) copiar los archivos maravil.py, LEAME y manual.txt hacia el directorio
#de instalación. Si la copia no da error, se informa la terminación exitosa
#de la instalación; en otro caso, se informa el error y se borra el
#directorio de instalación y todo su contenido.
cat bienvenida.txt
while :; do
read tmp
if [ -z "$tmp" ]; then
break
else
echo "Pulsa Intro para continuar"
fi
done
cat licencia.txt
read licencia
if [ $licencia == 'S' ]
then
echo "Licencia aceptada."
else
echo "No has aceptado la licencia. Saliendo."
exit 1
fi
DIRINSTAL="/usr/local/maravil"
echo "Escribe el nombre del directorio donde instalar o INTRO para el directorio por defecto"
read directorio
if [ -z "$directorio" ]; then
echo
else
DIRINSTAL=$directorio
fi
echo "El directorio de instalación será $DIRINSTAL"
if [ -d $DIRINSTAL ]
then
echo "El directorio ya existe. Se instalaré el programa en él. ¿Da usted su permiso?"
read resdir
if [[ $resdir == 'S' ]]
then
echo "Se van a copiar los archivos."
else
echo "Si no da usted permiso, salimos."
exit 3
fi
else
echo "El directorio no existe. Vamos a crearlo. Pulse S para crearlo. ¿Da usted su permiso?"
read resdir
if [[ $resdir == 'S' ]]
then
mkdir $DIRINSTAL
if [[ $? != 0 ]]
then
echo "Error al crear el directorio."
exit 2
fi
else
echo "Si no da usted permiso, salimos."
exit 3
fi
fi
cp maravil.py LEAME manual.txt $DIRINSTAL
if [[ $? == 0 ]]
then
echo "Instalación exitosa"
else
rm -r $DIRINSTAL
fi
Shellscript Comprobar último acceso al correo
#!/bin/bash
#*Ejercicio 6.* El correo de los usuarios se guarda en el directorio
#/var/mail, en archivos con el nombre de login de cada usuario.
#Se desea un script monimail.sh que monitoree estos archivos, realizando lo
#siguiente:
#a) si el usuario fue borrado, pero quedó su archivo de correo, listar estos
#usuarios.
#b) si el operador invocó el programa sin parámetros, acá termina.
#c) si el operador dio un parámetro no numérico, avisa el error y termina.
#d) si el operador da como parámetro un número, listar los usuarios que hace
#más de este número de días que no lee su correo, es decir, que el archivo
#con su nombre en /var/mail no ha sido accedido. Sugerencia: usar comando
#find.
if [ $# -gt 2 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
numero=$1
if [ $numero -ge 0 ]
then
sudo ls /var/mail > correos.txt
while read linea
do
find /var/mail/$linea -atime +$numero
done < correos.txt
else
echo "El parámetro no es un número"
fi
#*Ejercicio 6.* El correo de los usuarios se guarda en el directorio
#/var/mail, en archivos con el nombre de login de cada usuario.
#Se desea un script monimail.sh que monitoree estos archivos, realizando lo
#siguiente:
#a) si el usuario fue borrado, pero quedó su archivo de correo, listar estos
#usuarios.
#b) si el operador invocó el programa sin parámetros, acá termina.
#c) si el operador dio un parámetro no numérico, avisa el error y termina.
#d) si el operador da como parámetro un número, listar los usuarios que hace
#más de este número de días que no lee su correo, es decir, que el archivo
#con su nombre en /var/mail no ha sido accedido. Sugerencia: usar comando
#find.
if [ $# -gt 2 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
numero=$1
if [ $numero -ge 0 ]
then
sudo ls /var/mail > correos.txt
while read linea
do
find /var/mail/$linea -atime +$numero
done < correos.txt
else
echo "El parámetro no es un número"
fi
Shellscript Sumar tamaños archivo usuario
#!/bin/bash
#*Ejercicio 5.* Se desea sumar el espacio ocupado por un usuario en un
#directorio y todos sus subdirectorios. Para ello, deben sumarse los tamaños
#de todos los archivos de ese usuario en esa rama de directorios.
#El script recibirá como parámetros el nombre del usuario y el nombre del
#directorio.
#Validará que el usuario pertenezca al sistema, y que el nombre de
#directorio recibido sea efectivamente un directorio.
#Presentará el resultado total en bytes, Kbytes y Mbytes enteros.
# *Sugerencia:* usar el comando find con listado largo; el tamaño de archivo
#en el listado largo está entre las columnas 47 y 56.
if [ $# -gt 2 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
usuario=$1
carpeta=$2
total=0
echo $usuario
echo $carpeta
existeusuario=`id $usuario 2>/dev/null`
if [ "$existeusuario" == "" ]
then
echo "El usuario no existe"
else
if [[ -d $carpeta ]]
then
#echo "La carpeta sí existe"
find $carpeta -user $usuario -printf "%s\n" > tamano.txt
while read linea
do
total=`expr $total + $linea`
done < tamano.txt
echo "Número de bytes: $total"
kbytes=`echo "scale=0;$total/1024" | bc`
echo "Número de kilobytes: $kbytes"
mbytes=`echo "scale=0;$kbytes/1024" | bc`
echo "Número de megabytes: $mbytes"
else
echo "La carpeta no existe"
fi
fi
#*Ejercicio 5.* Se desea sumar el espacio ocupado por un usuario en un
#directorio y todos sus subdirectorios. Para ello, deben sumarse los tamaños
#de todos los archivos de ese usuario en esa rama de directorios.
#El script recibirá como parámetros el nombre del usuario y el nombre del
#directorio.
#Validará que el usuario pertenezca al sistema, y que el nombre de
#directorio recibido sea efectivamente un directorio.
#Presentará el resultado total en bytes, Kbytes y Mbytes enteros.
# *Sugerencia:* usar el comando find con listado largo; el tamaño de archivo
#en el listado largo está entre las columnas 47 y 56.
if [ $# -gt 2 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
usuario=$1
carpeta=$2
total=0
echo $usuario
echo $carpeta
existeusuario=`id $usuario 2>/dev/null`
if [ "$existeusuario" == "" ]
then
echo "El usuario no existe"
else
if [[ -d $carpeta ]]
then
#echo "La carpeta sí existe"
find $carpeta -user $usuario -printf "%s\n" > tamano.txt
while read linea
do
total=`expr $total + $linea`
done < tamano.txt
echo "Número de bytes: $total"
kbytes=`echo "scale=0;$total/1024" | bc`
echo "Número de kilobytes: $kbytes"
mbytes=`echo "scale=0;$kbytes/1024" | bc`
echo "Número de megabytes: $mbytes"
else
echo "La carpeta no existe"
fi
fi
Shellscript: #Ejercicio 4.* Escribir un script para listar todos los usuarios #correspondientes a un área de interés. Se dispone de un archivo de datos de #la forma #El script recibe como parámetro el nombre de un área de interés (DiGraf, #WinNT, etc.), y lista nombre y dirección electrónica de las personas que #tienen esta área de interés en su lista. Si no hay ninguna persona, o no #existe el área, emite un mensaje informativo.
#!/bin/bash
#Ejercicio 4.* Escribir un script para listar todos los usuarios
#correspondientes a un área de interés. Se dispone de un archivo de datos de
#la forma
#El script recibe como parámetro el nombre de un área de interés (DiGraf,
#WinNT, etc.), y lista nombre y dirección electrónica de las personas que
#tienen esta área de interés en su lista. Si no hay ninguna persona, o no
#existe el área, emite un mensaje informativo.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
area=$1
cat personas | grep $area | cut -d: -f1,4 >> resul.txt
if [[ -s "resul.txt" ]] ; then
echo "Sí que hay datos."
cat resul.txt
rm resul.txt
else
echo "No hay datos."
fi
#Ejercicio 4.* Escribir un script para listar todos los usuarios
#correspondientes a un área de interés. Se dispone de un archivo de datos de
#la forma
#El script recibe como parámetro el nombre de un área de interés (DiGraf,
#WinNT, etc.), y lista nombre y dirección electrónica de las personas que
#tienen esta área de interés en su lista. Si no hay ninguna persona, o no
#existe el área, emite un mensaje informativo.
if [ $# -gt 1 ] #comprobar número de parámetros introducidos
then #gracias a Alejandro por sus buenas formas
echo "¡¡Horror!! Uso "$0" "
exit
fi
area=$1
cat personas | grep $area | cut -d: -f1,4 >> resul.txt
if [[ -s "resul.txt" ]] ; then
echo "Sí que hay datos."
cat resul.txt
rm resul.txt
else
echo "No hay datos."
fi
Java: pasar de Farenheit a Celsius
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//Escribir un programa en Java que transforme una temperatura dada en grados
//Fahrenheit a grados Celsius, siendo 1oC=33.8 oF.
public class conversiongrados {
public static void main(String[] args) {
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Escribe los grados Farenheit:");
String sgradosf = br2.readLine();
double gradosf=Double.parseDouble(sgradosf);
double gradosc=gradosf*33.8;
System.out.println(sgradosf + " grados Farenheit corresponden a " + String.valueOf(gradosc) + " grados centígrados");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.toString());
}
}
}
import java.io.IOException;
import java.io.InputStreamReader;
//Escribir un programa en Java que transforme una temperatura dada en grados
//Fahrenheit a grados Celsius, siendo 1oC=33.8 oF.
public class conversiongrados {
public static void main(String[] args) {
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Escribe los grados Farenheit:");
String sgradosf = br2.readLine();
double gradosf=Double.parseDouble(sgradosf);
double gradosc=gradosf*33.8;
System.out.println(sgradosf + " grados Farenheit corresponden a " + String.valueOf(gradosc) + " grados centígrados");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.toString());
}
}
}
Escribir un programa en Java que pregunte un nombre, dirección y teléfono y escriba en pantalla una ficha con dicha información .
//Escribir un programa en Java que pregunte un nombre, direcci´on y tel
//´efono y escriba
//en pantalla una ficha con dicha información
package defaultpackage;
import java.io.*;
public class cej04 {
public static void main(String[] args) {
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Escribe tu nombre:");
String nombre = br2.readLine();
System.out.println("Escribe tu dirección:");
String direccion = br2.readLine();
System.out.println("Escribe tu teléfono:");
String telefono = br2.readLine();
System.out.println("Tu nombre es " + nombre.toString());
System.out.println("Tu dirección es " + direccion.toString());
System.out.println("Tu teléfono es " + telefono.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.toString());
}
}
}
Ahora, vamos por Java
Java es un lengua de programación precioso en el que tenemos que desarrollar para las oposiciones. Voy a programar con Eclipse, un SDK gratuito y bastante fácil de usar.
Desarrolle un programa en C al que se le pase por línea de comandos dos parámetros. El primero puede ser \l o \u, y el segundo, el nombre de un fichero. Si el primero de ellos es \l, se debe pasar a minúsculas todas las mayúsculas del fichero. Si es \u, hay que convertir a mayúsculas todas las minúsculas.
/*Desarrolle un programa en C al que se le pase por línea de comandos dos
parámetros. El primero puede ser \l o \u, y el segundo, el nombre de un
fichero. Si el primero de ellos es \l, se debe pasar a minúsculas todas las
mayúsculas del fichero. Si es \u, hay que convertir a mayúsculas todas las
minúsculas.*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
FILE *f1,*fres;
char nf1[50]="personas.txt";
char nf2[50]="resultado.txt";
char ch;
char ch2;
char c;
char cres;
char minamay (char c)
{
switch(c) {
case 'a': return('A');
break;
case 'b': return('B');
break;
case 'c': return('C');
break;
case 'd': return('D');
break;
case 'e': return('E');
break;
case 'f': return('F');
break;
case 'g': return('G');
break;
case 'h': return('H');
break;
case 'i': return('I');
break;
case 'j': return('J');
break;
case 'k': return('K');
break;
case 'l': return('L');
break;
case 'm': return('M');
break;
case 'n': return('N');
break;
case 'ñ': return('Ñ');
break;
case 'o': return('O');
break;
case 'p': return('P');
break;
case 'q': return('Q');
break;
case 'r': return('R');
break;
case 's': return('S');
break;
case 't': return('T');
break;
case 'u': return('U');
break;
case 'v': return('V');
break;
case 'w': return('W');
break;
case 'x': return('X');
break;
case 'y': return('Y');
break;
case 'z': return('Z');
break;
default: return(c);
break;
}
}
char mayamin (char c)
{
switch(c) {
case 'A': return('a');
break;
case 'B': return('b');
break;
case 'C': return('c');
break;
case 'D': return('d');
break;
case 'E': return('e');
break;
case 'F': return('f');
break;
case 'G': return('g');
break;
case 'H': return('h');
break;
case 'I': return('i');
break;
case 'J': return('j');
break;
case 'K': return('k');
break;
case 'L': return('l');
break;
case 'M': return('m');
break;
case 'N': return('n');
break;
case 'Ñ': return('ñ');
break;
case 'O': return('o');
break;
case 'P': return('p');
break;
case 'Q': return('q');
break;
case 'R': return('r');
break;
case 'S': return('s');
break;
case 'T': return('t');
break;
case 'U': return('u');
break;
case 'V': return('v');
break;
case 'W': return('w');
break;
case 'X': return('x');
break;
case 'Y': return('y');
break;
case 'Z': return('z');
break;
default: return(c);
break;
}
}
int main(int argc, char *argv[]) {
if (argc!=3) /* argc should be 2 for correct execution */
{
/* We print argv[0] assuming it is the program name */
printf("Uso: %s nombre de fichero\n", argv[0] );
printf("Número de parámetros: %d",argc);
}
else
{
printf("El primer parámetro es %s\n",argv[1]);
printf("El segundo parámetro es %s\n",argv[2]);
f1=fopen(argv[2],"r");
if( f1 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
fres=fopen("resultado.txt","w+");
if( fres == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
switch( argv[1][0] )
{
case 'l': ;
do {
c=getc(f1);
printf("%d",c);
if (c==EOF) {
break;
}
else {
cres=mayamin(c);
putc(cres,fres);
}
} while (c != EOF);
break;
case 'u': ;
do {
c=getc(f1);
printf("%d",c);
if (c==EOF) {
break;
}
else {
cres=minamay(c);
putc(cres,fres);
}
} while (c != EOF);
printf("El primer parámetros es u\n");
break;
default:
printf("Parámetro no reconocido.");
break;
}
}
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
parámetros. El primero puede ser \l o \u, y el segundo, el nombre de un
fichero. Si el primero de ellos es \l, se debe pasar a minúsculas todas las
mayúsculas del fichero. Si es \u, hay que convertir a mayúsculas todas las
minúsculas.*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
FILE *f1,*fres;
char nf1[50]="personas.txt";
char nf2[50]="resultado.txt";
char ch;
char ch2;
char c;
char cres;
char minamay (char c)
{
switch(c) {
case 'a': return('A');
break;
case 'b': return('B');
break;
case 'c': return('C');
break;
case 'd': return('D');
break;
case 'e': return('E');
break;
case 'f': return('F');
break;
case 'g': return('G');
break;
case 'h': return('H');
break;
case 'i': return('I');
break;
case 'j': return('J');
break;
case 'k': return('K');
break;
case 'l': return('L');
break;
case 'm': return('M');
break;
case 'n': return('N');
break;
case 'ñ': return('Ñ');
break;
case 'o': return('O');
break;
case 'p': return('P');
break;
case 'q': return('Q');
break;
case 'r': return('R');
break;
case 's': return('S');
break;
case 't': return('T');
break;
case 'u': return('U');
break;
case 'v': return('V');
break;
case 'w': return('W');
break;
case 'x': return('X');
break;
case 'y': return('Y');
break;
case 'z': return('Z');
break;
default: return(c);
break;
}
}
char mayamin (char c)
{
switch(c) {
case 'A': return('a');
break;
case 'B': return('b');
break;
case 'C': return('c');
break;
case 'D': return('d');
break;
case 'E': return('e');
break;
case 'F': return('f');
break;
case 'G': return('g');
break;
case 'H': return('h');
break;
case 'I': return('i');
break;
case 'J': return('j');
break;
case 'K': return('k');
break;
case 'L': return('l');
break;
case 'M': return('m');
break;
case 'N': return('n');
break;
case 'Ñ': return('ñ');
break;
case 'O': return('o');
break;
case 'P': return('p');
break;
case 'Q': return('q');
break;
case 'R': return('r');
break;
case 'S': return('s');
break;
case 'T': return('t');
break;
case 'U': return('u');
break;
case 'V': return('v');
break;
case 'W': return('w');
break;
case 'X': return('x');
break;
case 'Y': return('y');
break;
case 'Z': return('z');
break;
default: return(c);
break;
}
}
int main(int argc, char *argv[]) {
if (argc!=3) /* argc should be 2 for correct execution */
{
/* We print argv[0] assuming it is the program name */
printf("Uso: %s nombre de fichero\n", argv[0] );
printf("Número de parámetros: %d",argc);
}
else
{
printf("El primer parámetro es %s\n",argv[1]);
printf("El segundo parámetro es %s\n",argv[2]);
f1=fopen(argv[2],"r");
if( f1 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
fres=fopen("resultado.txt","w+");
if( fres == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
switch( argv[1][0] )
{
case 'l': ;
do {
c=getc(f1);
printf("%d",c);
if (c==EOF) {
break;
}
else {
cres=mayamin(c);
putc(cres,fres);
}
} while (c != EOF);
break;
case 'u': ;
do {
c=getc(f1);
printf("%d",c);
if (c==EOF) {
break;
}
else {
cres=minamay(c);
putc(cres,fres);
}
} while (c != EOF);
printf("El primer parámetros es u\n");
break;
default:
printf("Parámetro no reconocido.");
break;
}
}
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
lunes, 2 de enero de 2012
Codifique un programa que abra un fichero de texto del que lea datos sobre personas (el nombre y la edad). Todas aquellas personas cuya edad es superior a 20 las pasa al fichero resultado.txt (escribe su nombre y edad).
/*Codifique un programa que abra un fichero de texto del que lea datos sobre
personas (el nombre y la edad). Todas aquellas personas cuya edad es
superior a 20 las pasa al fichero resultado.txt (escribe su nombre y edad). */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f1,*f2;
char nf1[50]="personas.txt";
char nf2[50]="resultado.txt";
int main(void) {
f1=fopen(nf1,"r");
if( f1 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
f2=fopen(nf2,"w+");
if( f2 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
char linea[128];
char clinea[128];
int iedad;
char *nombre;
char *edad;
while (fgets(linea,sizeof linea,f1) != NULL )
{
printf("%s",linea);
strcpy(clinea,linea);
nombre=strtok(linea," ");
edad=strtok(NULL," ");
printf("Nombre:%s\n",nombre);
printf("Edad:%s\n",edad);
iedad=atoi(edad);
printf("Edad:%d\n",iedad);
if (iedad>=20) {
fputs(clinea,f2);
}
}
fclose(f1);
fclose(f2);
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
personas (el nombre y la edad). Todas aquellas personas cuya edad es
superior a 20 las pasa al fichero resultado.txt (escribe su nombre y edad). */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f1,*f2;
char nf1[50]="personas.txt";
char nf2[50]="resultado.txt";
int main(void) {
f1=fopen(nf1,"r");
if( f1 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
f2=fopen(nf2,"w+");
if( f2 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
char linea[128];
char clinea[128];
int iedad;
char *nombre;
char *edad;
while (fgets(linea,sizeof linea,f1) != NULL )
{
printf("%s",linea);
strcpy(clinea,linea);
nombre=strtok(linea," ");
edad=strtok(NULL," ");
printf("Nombre:%s\n",nombre);
printf("Edad:%s\n",edad);
iedad=atoi(edad);
printf("Edad:%d\n",iedad);
if (iedad>=20) {
fputs(clinea,f2);
}
}
fclose(f1);
fclose(f2);
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
Desarrolle un programa que copie un fichero en otro.
/*Desarrolle un programa que copie un fichero en otro. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f1,*f2;
char nf1[50];
char nf2[50];
int main(void) {
printf("Escribe el nombre del primer fichero:");
gets(nf1);
printf("Escribe el nombre del segundo fichero:");
gets(nf2);
f1=fopen(nf1,"r");
if( f1 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
f2=fopen(nf2,"w+");
if( f2 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
char linea[128];
while (fgets(linea,sizeof linea,f1) != NULL )
{
fputs (linea,f2);
}
fclose(f1);
fclose(f2);
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f1,*f2;
char nf1[50];
char nf2[50];
int main(void) {
printf("Escribe el nombre del primer fichero:");
gets(nf1);
printf("Escribe el nombre del segundo fichero:");
gets(nf2);
f1=fopen(nf1,"r");
if( f1 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
f2=fopen(nf2,"w+");
if( f2 == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
char linea[128];
while (fgets(linea,sizeof linea,f1) != NULL )
{
fputs (linea,f2);
}
fclose(f1);
fclose(f2);
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
Elabore un programa en C que escriba los números del 1 al 9 en el fichero numeros.txt.
/*Elabore un programa en C que escriba los números del 1 al 9 en el fichero
numeros.txt. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f;
int n;
int main(void) {
f = fopen("numeros.txt","w+");
if( f == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
for (int i=1;i<=9;i++) {
fprintf(f,"%d",i);
fprintf(f,"%s","\n");
}
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
numeros.txt. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f;
int n;
int main(void) {
f = fopen("numeros.txt","w+");
if( f == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
for (int i=1;i<=9;i++) {
fprintf(f,"%d",i);
fprintf(f,"%s","\n");
}
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
Elabore un programa que abra el fichero de texto llamado numeros.txt, lea los 10 números que hay en el fichero y los coloca en un vector, y finalmente lo cierre.
/*Elabore un programa que abra el fichero de texto llamado numeros.txt, lea
los 10 números que hay en el fichero y los coloca en un vector, y
finalmente lo cierre. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f;
int n;
int main(void) {
f = fopen("numeros.txt","r");
if( f == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
for (int i=0;i<10;i++) {
fscanf(f, "%d", &n);
printf("%d\n",n);
}
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
los 10 números que hay en el fichero y los coloca en un vector, y
finalmente lo cierre. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f;
int n;
int main(void) {
f = fopen("numeros.txt","r");
if( f == NULL )
{
puts("No se puede abrir el fichero");
exit(EXIT_FAILURE);
}
for (int i=0;i<10;i++) {
fscanf(f, "%d", &n);
printf("%d\n",n);
}
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
Desarrolle un programa en C que lea una palabra y la escriba al revés.
/* Comentario */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LONGMAX 100
void invertir2(char origen[],char destino[]) {
int tamano;
tamano=strlen(origen);
printf("El tamano de la cadena es %d\n",tamano);
for(int i=tamano-1;i>=0;i--) {
printf("%c",origen[i]);
printf("\n");
destino[tamano-i-1]=origen[i];
}
}
int main(void) {
/*char cadena[LONGMAX];*/
char cadena[LONGMAX];
char res[LONGMAX];
printf("Escribe una palabra y pulsa INTRO\n");
scanf("%s",cadena);
printf("La palabra es %s\n",cadena);
invertir2(cadena,res);
/*res=invertir(cadena);*/
/*printf("La palabra invertida es %s\n",invertir(cadena));*/
printf("La palabra invertida es %s\n",res);
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LONGMAX 100
void invertir2(char origen[],char destino[]) {
int tamano;
tamano=strlen(origen);
printf("El tamano de la cadena es %d\n",tamano);
for(int i=tamano-1;i>=0;i--) {
printf("%c",origen[i]);
printf("\n");
destino[tamano-i-1]=origen[i];
}
}
int main(void) {
/*char cadena[LONGMAX];*/
char cadena[LONGMAX];
char res[LONGMAX];
printf("Escribe una palabra y pulsa INTRO\n");
scanf("%s",cadena);
printf("La palabra es %s\n",cadena);
invertir2(cadena,res);
/*res=invertir(cadena);*/
/*printf("La palabra invertida es %s\n",invertir(cadena));*/
printf("La palabra invertida es %s\n",res);
system ("pause");
/*printf("Programa finalizado. Pulse INTRO para salir");*/
return 0;
}
domingo, 1 de enero de 2012
Obtener PDF desde libro en Google Books
Con un plugin instalable en Mozilla Firefox, que se llama GreaseMonkey y FlashGot, y con Google Book Downloader 2.3, un script para GreaseMonkey, se pueden bajar las páginas que aparecen en la vista previa del libro. Luego, con Nitro PDF he montado las imágenes y me ha salido un PDF precioso. Así por lo menos yo tengo el PDF y puedo grabármelo en la tablet y leerlo tranquilo.
http://www.megaupload.com/?d=RKCOBWCG
http://www.megaupload.com/?d=RKCOBWCG
El profesor que no trabaja
Que sí, que tenemos muchas vacaciones.
Que sí, que cobramos bien.
Que sí, que tenemos toda la tarde libre (ahora lo comentaremos).
Primero, haz la carrera: mucho más exigente (no puedo medir cuánto más, pero los miles de horas sentado estudiando, para mí se quedan).
Luego, haz el Proyecto Fin de Carrera (yo es que soy Ingeniero Técnico, entonces, tenemos que demostrar que todo lo que hemos estudiado sirve para crear algo que funcione en la vida real).
Luego, hazte el CAP o el Máster (no del Universo), que, aunque hay gente que dice que no enseñan a dar clase, creo que es una cuestión de lo que tú aproveches y yo aprendí mucho.
Luego, da clases particulares en una empresa, con niños y niñas de toda condición, de todas las asignaturas (he tenido que explicar dibujo técnico, biología, filosofía, francés). Menos mal que mis profesores de Lengua e Inglés eran buenísimos y me defiendo bien en esas asignaturas. Y ten suerte de tener jefes buenos, buenos, con los que se puede trabajar y te dejan las cosas claritas y pagan. La hora sale a menos que una limpiadora, pero ayudar a las familias, no tiene precio.
Luego, a la vez, haz cursos para coger puntos para las oposiciones.
Luego, a la vez, ve a las clases de las oposiciones.
Luego, estudia 74 temas para las oposiciones.
Luego, aprende a programar en Shellscript, que es lo que ponen en el examen práctico.
Luego, todas las cosas que tenemos que hacer los curritos: la hipoteca, el coche, limpia, intenta cuidar de tus padres mayores... y todas esas cosas que hacemos todos los días y que nadie paga.
Luego, paga a Hacienda.
Luego, preséntate al examen, aprueba y date cuenta de que no has llegado... no hay plazas.
Luego, tírate un año dando clases particulares intentando llegar al mínimo por la crisis.
Luego, sube 7.000 vídeos a Youtube.
Luego, te llaman de un Instituto y entonces...
Da clases de 8 a 14:30, por la tarde, prepara clases para 5 asignaturas distintas, corrige los ejercicios, corrige los exámenes y, cuando has terminado, date cuenta de que todavía no has tocado los apuntes de las oposiciones y son las 10:00 de la noche. Y luego, ponte a estudiar.
Y en vacaciones, a estudiar porque si no estudias tranquilo en vacaciones, ¿cuándo vas a estudiar tranquilo?
El próximo que diga que los profesores tienen muchas vacaciones y cobran mucho, que digan esto también.
Que sí, que cobramos bien.
Que sí, que tenemos toda la tarde libre (ahora lo comentaremos).
Primero, haz la carrera: mucho más exigente (no puedo medir cuánto más, pero los miles de horas sentado estudiando, para mí se quedan).
Luego, haz el Proyecto Fin de Carrera (yo es que soy Ingeniero Técnico, entonces, tenemos que demostrar que todo lo que hemos estudiado sirve para crear algo que funcione en la vida real).
Luego, hazte el CAP o el Máster (no del Universo), que, aunque hay gente que dice que no enseñan a dar clase, creo que es una cuestión de lo que tú aproveches y yo aprendí mucho.
Luego, da clases particulares en una empresa, con niños y niñas de toda condición, de todas las asignaturas (he tenido que explicar dibujo técnico, biología, filosofía, francés). Menos mal que mis profesores de Lengua e Inglés eran buenísimos y me defiendo bien en esas asignaturas. Y ten suerte de tener jefes buenos, buenos, con los que se puede trabajar y te dejan las cosas claritas y pagan. La hora sale a menos que una limpiadora, pero ayudar a las familias, no tiene precio.
Luego, a la vez, haz cursos para coger puntos para las oposiciones.
Luego, a la vez, ve a las clases de las oposiciones.
Luego, estudia 74 temas para las oposiciones.
Luego, aprende a programar en Shellscript, que es lo que ponen en el examen práctico.
Luego, todas las cosas que tenemos que hacer los curritos: la hipoteca, el coche, limpia, intenta cuidar de tus padres mayores... y todas esas cosas que hacemos todos los días y que nadie paga.
Luego, paga a Hacienda.
Luego, preséntate al examen, aprueba y date cuenta de que no has llegado... no hay plazas.
Luego, tírate un año dando clases particulares intentando llegar al mínimo por la crisis.
Luego, sube 7.000 vídeos a Youtube.
Luego, te llaman de un Instituto y entonces...
Da clases de 8 a 14:30, por la tarde, prepara clases para 5 asignaturas distintas, corrige los ejercicios, corrige los exámenes y, cuando has terminado, date cuenta de que todavía no has tocado los apuntes de las oposiciones y son las 10:00 de la noche. Y luego, ponte a estudiar.
Y en vacaciones, a estudiar porque si no estudias tranquilo en vacaciones, ¿cuándo vas a estudiar tranquilo?
El próximo que diga que los profesores tienen muchas vacaciones y cobran mucho, que digan esto también.
Suscribirse a:
Entradas (Atom)