Contenido del curso
Contenido del curso
Gustavo Wilgenhoff
Andres Condezo Monge
Miguel Angel Reyes Moreno
MILTON CHICO
César Alejandro Luján García
Alfredo Olmedo
Julio Cardenas
Brian Ricardo Sanchez Lopez
Edinson Padrón
Jose Suarez
Andres Condezo Monge
Ignacio Bellucci
Alejandro Novelli
Matias R. N. Mercado
Hubert Ronald Mendoza Canales
Rodrigo Corozo Salazar
Duranti Sebastian Adrian
Israel Enrique Rivero Martinez
Jose Suarez
Carlos López Brú
Jose Miguel Diaz
Diego Ramirez
Jose Miguel Diaz
Marvin Javier Santos Fernández
Mario Alexander Vargas Celis
Gonzalo Gramaglia
Massimo Di Berardino
Josue David Vargas Lopez
marco pablo demaio
Edwin García
Para validar si el usuario pasa el número correcto de parámetros
if [[ $# -ne 2 ]]; then echo "Número de parámetros incorrectos" exit 1 fi if [[ $1 == "d" ]]; then mkdir -m 755 $2 echo "Directorio $2 creado correctamente" ls -la $2 elif [[ $1 == "f" ]]; then touch $2 echo "Archivo creado correctamente" ls -la $2 else echo "No existe esa opción: $1" fi
Buen aporte, gracias
Yo agregaría en el mensaje la cantidad de parámetros que se esperan recibir.
Jajaj me da gracia que el profe para todos los ejemplos copia y pega un archivo anterior como si lo fuese a usar, y termina borrando todo lo de adentro
jajaja si, solo hace para no hacer el comando de otorgar el permiso de ejecución. Pero cada quién trabaja como quiere
No es el tema de Ejecución, es el tema de Entry Point en especifico el encabezado bin/bash y sus datos Autor
agregue al principio unas lineas para verificar que esten pasando el numero correcto de argumentos :
#!/bin/bash #Programa para crear archivos y directorios if [ $# -ne 2 ]; then echo "El uso correctodel comando es: " echo "$0 d directorio_a_Crear" echo "$0 f archivo_a_Crear" else if [ $1 = "d" ]; then mkdir -m 755 $2 ls -l $2 echo -e "\nDirectorio creado correctamente" elif [ $1 = "f" ]; then touch $2 ls -l $2 echo -e "\nArchivo creado correctamente" else echo -e "\n $1: Opcion invalida" fi fi
Gracias! buen aporte.
Método para crear un archivo sin modificar sus tiempos de acceso (lo que realmente hace touch. La creación de un archivo es un side-effect):
([ -e $file ] && echo "El archivo ya existe") || (touch $file && echo "El archivo fue creado")
Método para crear un directorio sí y solo sí, el mismo no existe:
mkdir -p $dir
Por si alguien olvido los operadores:
-gt mayor -lt menor -ge mayor o igual -le menor o igual -eq igual -ne distinto
Igualmente, dejo un link que puede interesarles. https://www.atareao.es/tutorial/scripts-en-bash/condicionales-en-bash/#
Gracias por el link!
El tema de el tema de... Mas vale que pregunten esto en el examen
el tema, del tema, que les iba a hablar, tiene un tema muy importante que es el tema que hace que el tema, sea un tema realmente importante.
El tema del tema del tema. Aprende algo, tema.
Para eliminar el directorio y el archivo que se indican en el video:
rm -rf prueba rm -rf prueba.txt
Realmente al usar mkdir -m 755, los permisos se están asignando de la siguiente manera: el propietario tiene permisos de lectura, escritura y ejecución; el grupo propietario y otros reciben los permisos de lectura y ejecución solamente.
Hay que recordar que los valores son los siguientes: 4 (lectura), 2 (escritura) y 1 (ejecución). Sumando 7 si se asignan todos los permisos y sumando 5 si solo se cuenta con los permisos de lectura y ejecución.
octal: (combianciones posibles)
r w e = numero
0 0 0 = 0 0 0 1 = 1 0 1 0 = 2 0 1 1 = 3 1 0 0 = 4 1 0 1 = 5 1 1 0 = 6 1 1 1 = 7
Si quieren desplegar el nombre del directorio creado cambien por ls -ld $2. El comando ls -la $2 despliega su contenido.
Queda así:
# ! /bin/bash # Programa para ejemplificar la creacion de archivos y directorios # Autor: Marco echo "Archivos - Directorios" #$1: primer argumento que recibe nuestro programa #$2: segundo argumento que recibe nuestro programa. if [ $1 = "d" ]; then #Damos todos los permisos al usuario, Lectura+Escritura+Ejecucion y Lectura+escritura al grupo y a otros usuarios mkdir -m 755 $2 echo "Directorio creado correctamente" #$2: Verificamos con que permisos fue creado el directorio usando ls -la ls -la $2 elif [ $1 == "f" ]; then touch $2 echo "Archivo creado correctamente" #$2: Verificamos con que permisos fue creado el archivo usando ls -la ls -la $2 else echo "No existe esa opción: $1" fi
un saludo cordial tengo una inquietud sobre como enviarle a una aplicación linux datos de acceso como el usuario y la contraseña por parámetros a un script, por ejemplo si me quiero conectar a un servidor ftp o vpn, que el script enive esos datos de acceso?
Variables de entorno.
1 # !/bin/bash 2 # Programa para ejemplificar la creación de archivos y directorios 3 # Autor: Diego Ramirez - @diegodev 4 5 echo "Archivos - Directorios" 6 # $1: primer argumento que recibe nuestro programa 7 # $2: Segundo argumento 8 if [ $1 = "d" ]; then 9 # Damos todos los permisos al usuario, lectura+escritura al grupo 10 # Y finalmente lectura y escritura a cualquier otro usuario 11 mkdir -m 755 $2 12 echo "Directorio creado exitosamente" 13 # $2: verificaremos con que permisos fue creado el directorio 14 # con ls -la 15 ls -la $2 16 elif [ $1 == "f" ]; then 17 touch $2 18 echo "Archivo creado correctamente" 19 # $2: verificaremos con que permisos fue creado el archivo 20 # con ls -la 21 ls -la $2 22 else 23 echo "No existe esa opción: $1" 24 fi
5 es lectura y ejecución :)
En **Bash**, trabajar con archivos y directorios es una de las tareas más comunes. A continuación te doy una lista de los comandos esenciales y algunas operaciones básicas relacionadas con archivos y directorios:
### Comandos para Archivos y Directorios
1. **Listar archivos y directorios:**
- ls: Lista los archivos y directorios en el directorio actual.
- Opciones comunes:
- ls -l: Muestra detalles como permisos, propietario, tamaño, etc.
- ls -a: Muestra archivos ocultos (archivos cuyo nombre empieza con .).
```sh
ls
ls -la
```
2. **Cambiar de directorio:**
- cd: Cambia al directorio especificado.
- Ejemplos:
- Cambiar al directorio /home/user:
```sh
cd /home/user
```
- Volver al directorio anterior:
```sh
cd -
```
3. **Mostrar el directorio actual:**
- pwd: Muestra la ruta completa del directorio en el que te encuentras.
```sh
pwd
```
4. **Crear directorios:**
- mkdir: Crea un nuevo directorio.
- Ejemplo: Crear un directorio llamado nueva\_carpeta:
```sh
mkdir nueva_carpeta
```
5. **Eliminar archivos y directorios:**
- rm: Elimina archivos.
- Ejemplo: Eliminar un archivo llamado archivo.txt:
```sh
rm archivo.txt
```
- rmdir: Elimina un directorio vacío.
- rm -r: Elimina un directorio y su contenido de manera recursiva.
- Ejemplo: Eliminar un directorio llamado carpeta y todo su contenido:
```sh
rm -r carpeta
```
6. **Copiar archivos y directorios:**
- cp: Copia archivos o directorios.
- Ejemplo: Copiar archivo.txt a copia.txt:
```sh
cp archivo.txt copia.txt
```
- Para copiar directorios de manera recursiva:
```sh
cp -r directorio_origen directorio_destino
```
7. **Mover o renombrar archivos y directorios:**
- mv: Mueve o renombra archivos y directorios.
- Ejemplo: Mover (o renombrar) archivo.txt a nuevo\_nombre.txt:
```sh
mv archivo.txt nuevo_nombre.txt
```
8. **Ver el contenido de un archivo:**
- cat: Muestra el contenido de un archivo.
```sh
cat archivo.txt
```
- less: Muestra el contenido de un archivo paginado.
```sh
less archivo.txt
```
9. **Buscar archivos y directorios:**
- find: Busca archivos y directorios según ciertos criterios.
- Ejemplo: Buscar archivos con el nombre archivo.txt en el directorio actual y sus subdirectorios:
```sh
find . -name archivo.txt
```
10. **Ver el tamaño de archivos o directorios:**
- du: Muestra el tamaño de archivos o directorios.
- Ejemplo: Ver el tamaño de todos los archivos y directorios en el directorio actual:
```sh
du -h
```
11. **Cambiar permisos:**
- chmod: Cambia los permisos de archivos o directorios.
- Ejemplo: Hacer un archivo ejecutable:
```sh
chmod +x script.sh
```
12. **Cambiar propietario de un archivo o directorio:**
- chown: Cambia el propietario de archivos o directorios.
- Ejemplo: Cambiar el propietario de archivo.txt a usuario:
```sh
sudo chown usuario archivo.txt
```
### Operaciones adicionales
- **Crear un archivo vacío**:
- touch archivo.txt: Crea un archivo vacío si no existe.
- **Mostrar el tamaño de un archivo**:
- stat archivo.txt: Muestra detalles completos, incluyendo el tamaño de un archivo.
- **Ver el tipo de un archivo**:
- file archivo.txt: Determina el tipo de archivo, útil para identificar archivos binarios, de texto, ejecutables, etc.
Estos comandos te permiten trabajar eficientemente con archivos y directorios en Bash. ¿Te gustaría profundizar en alguno de ellos?
[min 6.50] ¿Por qué en la condición del if utiliza un solo igual en la condición del elif utiliza dos? ¿Y por qué funciona? jajaja ¿Es indistinto su uso?
Hola Gonza. En la sintaxis de Shell el == es un alias de = funcionan exactamente igual.
me hice un manejador de cronjobs con bash en mi raspberry pi con debian:
#!/bin/bash
# Script para manejar las cronjobs de la Raspberry PI
show_main_menu() {
clear
echo "Crontab Manager"
echo "===============\n"
echo "1) What is a cronjob?"
echo "2) List current cronjobs"
echo "3) Add a new cronjob"
echo "4) Edit an existing cronjob"
echo "5) Delete a cronjob"
echo "6) Enable/Disable cronjob"
echo "7) Validate and test cronjobs"
echo "8) Exit"
read -p "Choose an option: " choice
case $choice in
1) explain_cronjob ;;
2) list_cronjobs ;;
3) add_cronjob ;;
4) edit_cronjob ;;
5) delete_cronjob ;;
6) toggle_cronjob ;;
7) validate_cronjobs ;;
8) exit 0 ;;
*) echo "Invalid option"; show_main_menu ;;
esac
}
explain_cronjob() {
echo -e "\nA cron job is a scheduled task that runs automatically at specified intervals."
echo "It is commonly used for repetitive tasks such as backups, system maintenance, and monitoring."
echo -e "\nTo create a cronjob, use the following format:\n"
echo " * * * * * /path/to/script.sh"
echo -e "\nWhere the fields represent:\n"
echo " - Minute (0 - 59)"
echo " - Hour (0 - 23)"
echo " - Day of the month (1 - 31)"
echo " - Month (1 - 12)"
echo " - Day of the week (0 - 7) (Sunday can be 0 or 7)"
echo -e "\nExample: To run a script daily at 2:00 AM, use:\n"
echo " 0 2 * * * /path/to/script.sh\n"
read -p "Press Enter to return to the main menu"
show_main_menu
}
list_cronjobs() {
echo -e "\nCurrent cronjobs:"
crontab -l || echo "No cron jobs found."
echo
read -p "Press Enter to return to the main menu"
show_main_menu
}
add_cronjob() {
read -p "Enter the new cron job (e.g., * * * * * /path/to/script.sh): " new_job
if [ -n "$new_job" ]; then
(crontab -l; echo "$new_job") | crontab -
echo "Cronjob added successfully!"
else
echo "No cronjob entered!"
fi
read -p "Press Enter to return to the main menu"
show_main_menu
}
edit_cronjob() {
crontab -l > edit_cronjobs.txt
nano edit_cronjobs.txt
crontab edit_cronjobs.txt
echo "Cronjob updated successfully!"
read -p "Press Enter to return to the main menu"
show_main_menu
}
delete_cronjob() {
crontab -l > delete_cronjobs.txt
cat -n delete_cronjobs.txt
read -p "Enter the line number to delete: " line_num
if [ -n "$line_num" ]; then
sed -i "${line_num}d" delete_cronjobs.txt
crontab delete_cronjobs.txt
echo "Cronjob deleted successfully!"
else
echo "Invalid line number!"
fi
read -p "Press Enter to return to the main menu"
show_main_menu
}
toggle_cronjob() {
crontab -l > toggle_cronjobs.txt
cat -n toggle_cronjobs.txt
read -p "Enter the line number to toggle: " line_num
if [ -n "$line_num" ]; then
sed -i "${line_num}s/^#//;t;s/^/#/" toggle_cronjobs.txt
crontab toggle_cronjobs.txt
echo "Cronjob toggled successfully!"
else
echo "Invalid line number!"
fi
read -p "Press Enter to return to the main menu"
show_main_menu
}
validate_cronjobs() {
echo -e "\nCurrent cronjobs:"
crontab -l || echo "No cron jobs found."
echo "You can manually test your cron jobs by running them directly in the terminal."
read -p "Press Enter to return to the main menu"
show_main_menu
}
show_main_menu
Les dejo el script de la clase. Tiene un parámetro adicional para los permisos del directorio o archivo y valida si se pasaron todos los parámetros o no.
if [[ $# -eq 3 ]]; then if [[ $1 == "d" ]]; then mkdir -m $3 $2 echo "Directorio creado exitosamente" ls -la $2 elif [[ $1 == "f" ]]; then touch $2 echo "archivo creado exitosamente" chmod $3 $2 ls -la $2 else echo "No existe esa opcion. No es directorio o archivo !" fi else echo "No se proporcionaron los parametros correctos" exit 1 fi
Yo creé un script para crear los archivos con los permisos de una vez Sólo lo ejecuto y le paso el nombre del archivo como parámetro al ejecutarlo
#!/bin/bash filename=$1 echo -e "#!/bin/bash\n\n" > $filename chmod u+x $filename