Aprende a crear y gestionar archivos y directorios en Bash de forma segura y automatizada. Con comandos como mkdir y touch, condicionales if/elif y el manejo de argumentos, optimizas flujos sin abrir otros programas, manteniendo el script ejecutándose línea por línea con claridad y control.
¿Cómo crear directorios y archivos en bash con mkdir y touch?
Crear recursos desde la terminal es directo y potente. Para directorios, se usa mkdir; para archivos, se usa touch. La diferencia clave: touch crea el archivo y queda listo para usarse; no abre editor. En cambio, abrir con el editor Bing sirve para editar, no para la creación simple.
Usa mkdir con permisos: mkdir -m 755 nombre_de_directorio.
Configura permisos en el acto con -m 755.
Según se explica, 755 da todos los permisos al usuario y permisos de lectura y escritura al grupo y a otros usuarios.
Para archivos, touch nombre_de_archivo crea el file sin abrir editores.
Verifica con ls -la para revisar permisos y existencia.
¿Qué diferencia hay entre mkdir y touch?
mkdir: crea directorios con permisos definidos al instante.
touch: crea archivos vacíos sin invocar otro programa.
Abrir con editor Bing: edita contenido, no conviene en scripts que ejecutan sentencia a sentencia.
¿Cómo usar condicionales y argumentos en bash para automatizar la creación?
El flujo propuesto decide según el primer argumento: D para directorio o F para file. El segundo argumento es el nombre. Se recalca respetar los espacios en las sentencias condicionales y entre palabras reservadas.
#!/usr/bin/env bash# Título: Archivos directoriosif["$1"="D"];thenmkdir -m 755"$2"echo"Directorio creado correctamente"ls -la "$2"elif["$1"="F"];thentouch"$2"echo"Archivo creado correctamente"ls -la "$2"elseecho"no existe esa opción"fi
Primer argumento ($1): tipo de recurso, D o F.
Segundo argumento ($2): nombre del directorio o archivo.
Mensajes claros: "Directorio creado correctamente" y "Archivo creado correctamente".
Verificación inmediata con ls -la "$2".
¿Cómo ejecutar el script?
Limpia la pantalla si lo deseas: clear.
Ejecuta: ./script.sh D prueba.
Verifica el directorio creado: ls -la prueba.
Ejecuta: ./script.sh F prueba.txt.
Verifica el archivo creado: ls -la prueba.txt.
¿Qué errores comunes aparecen y cómo resolverlos?
Puede aparecer el mensaje "operador unitario inesperado" al evaluar condiciones cuando no se envían argumentos. En el ejemplo, se vio en líneas específicas del archivo y se confirmó que la sintaxis estaba bien; el problema era no haber pasado D/F y el nombre.
Comprueba que envías ambos argumentos: tipo y nombre.
Revisa la sintaxis de if/elif y los espacios en [ condición ].
Usa ls para validar el resultado tras ejecutar.
Mantén el script sin abrir otros programas, para no interrumpir la ejecución.
¿Te gustaría compartir cómo automatizas la creación de recursos en Bash y qué validaciones agregas para hacer tus scripts más robustos?
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
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"elseif[ $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
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.
# !/bin/bash
# Programa para ejemplificar la creacion de archivos y directorios
# Autor:Marcoecho "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?
1 # !/bin/bash
2 # Programa para ejemplificar la creación de archivos y directorios
3 # Autor:DiegoRamirez- @diegodev
45 echo "Archivos - Directorios"6 # $1: primer argumento que recibe nuestro programa
7 # $2:Segundo argumento
8if[ $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
22else23 echo "No existe esa opción: $1"24 fi
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?
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 1fi