Programación BASH

Copiar la lista de archivos mediante el script Bash

Copiar la lista de archivos mediante el script Bash
Bash (Bourne Again Shell) es el tipo de shell que sirve para ejecutar comandos y scripts. Bash fue una versión desarrollada del shell sh. Bash Script es un archivo donde se escriben varios comandos de shell para realizar una tarea en particular. En este artículo, veremos cómo podemos copiar varios archivos usando un script bash. Para este artículo, estoy usando Ubuntu 20.04 para demostrar el ejemplo.

Nota: - $ USER imprimirá los nombres de usuario de los usuarios de inicio de sesión actuales.

Si tiene curiosidad sobre qué versión de bash shell está instalada en el sistema, podemos verificarla usando el siguiente comando.

$ bash --version

Salida de la versión Bash.

Creación y ejecución de script Bash

Comencemos creando un archivo simple usando cualquier editor de su elección. Para mí, el editor vi es más cómodo. Para hacer que el archivo sea ejecutable, necesitamos agregar shebang (!#) y la ubicación del intérprete de bash al comienzo del script. He creado un texto.txt y agréguelo al directorio bash_demo en mi directorio de inicio que contiene texto para fines de demostración.

$ touch bash_demo.sh
$ vi bash_demo.sh

Agregue las siguientes líneas en su editor de texto para una demostración de muestra después de crear un archivo; si no lo ha hecho, el editor creará un nuevo archivo al escribir y saldrá.

#!/ bin / bash
texto cp.txt / tmp /
echo "Archivo copiado."

Podemos ejecutar el script usando ./ antes del archivo de script, que determina el archivo dir actual.

PS ./ bash_demo.sh

Cuando ejecutemos el script, se lanzará el siguiente error en nuestra terminal.

Ejecución inicial del archivo bash.

Cuando creamos un archivo por defecto, el usuario no tiene permiso de ejecución para el archivo. Para otorgar permiso de ejecución al usuario, se debe ejecutar el siguiente comando.

$ chmod + x bash_demo.sh

Salida después del permiso otorgado.

Copie solo archivos de un directorio específico

Para obtener todos los archivos y directorios de una ruta específica, usaremos for loop en el script y luego filtraremos el único archivo usando la condición if. En el siguiente ejemplo, ejecutamos el comando cp solo se ejecuta si el iterador era un archivo que se determina -f flag.

#!/ bin / bash
dpath = / var / log / nginx / *
para ARCHIVO en $ dpath
hacer
si [[-f $ FILE]]
luego
cp $ ARCHIVO / inicio / $ USUARIO /
demás
echo "No hay archivos en la ruta indicada."
fi
hecho

Copie todos los archivos de extensiones específicas

En este ejemplo, copiaremos todos los archivos con la .extensión de registro. Necesitamos agregar *.log a la ruta para que iterar el único archivo con .extensión de registro solo para bucle.

#!/ bin / bash
para ARCHIVO en / var / log / nginx / *.Iniciar sesión
hacer
cp $ ARCHIVO / inicio / $ USUARIO /
hecho

Copie todos los archivos, incluido el directorio

En este ejemplo, copiaremos todos los archivos, incluidos los directorios, de forma recursiva. Para eso, simplemente necesitamos agregar el comando -R cp donde -R determina la recuperación recursiva del directorio.

#!/ bin / bash
para ARCHIVO en / var / log / *
hacer
cp -R $ ARCHIVO / inicio / $ USUARIO /
hecho

Copiar archivos de la ruta especificada por el usuario

En este ejemplo, copiaremos archivos del directorio especificado por el usuario. Para hacerlo, usaremos el comando de lectura para solicitar la ruta del usuario y luego verificaremos si el usuario proporciona la ruta a dir o no, lo cual se hace con la bandera -d en la condición. Después de verificar dir, usaremos un bucle for para iterar todos los archivos y dir dentro de la ruta dada, luego filtraremos nuevamente los únicos archivos usando la condición if. Si la condición coincide, se ejecutará el siguiente comando cp.

#!/ bin / bash
echo "Por favor, proporcione una ruta para dir."
leer ruta
si [[-d $ ruta]]
luego
para ARCHIVO en $ ruta / *
hacer
si [[-f $ FILE]]
luego
cp $ ARCHIVO / inicio / $ USUARIO /
demás
echo "No hay archivos en la ruta indicada."
fi
hecho
demás
echo "Se requiere la ruta al directorio"
fi

En mi directorio de inicio, tengo los siguientes archivos y directorio.

Salida al proporcionar la ruta a un archivo.

Salida al proporcionar la ruta de ubicación del directorio.

Después de ejecutar el archivo de script, podemos verificar la salida en el directorio predefinido en el script. En mi caso, he copiado el archivo en mi directorio de inicio, y el siguiente es el resultado.

Conclusión

En este artículo, aprendemos cómo copiar archivos usando scripts bash. Podemos usar muchas otras operaciones como un bucle, if-else, etc. Las secuencias de comandos bash son más efectivas cuando se trabaja con varios comandos para realizar tareas específicas. Espero que te guste este artículo sobre cómo copiar archivos usando un script bash.

Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...
OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...
Tutorial de OpenTTD
OpenTTD es uno de los juegos de simulación empresarial más populares que existen. En este juego, necesitas crear un maravilloso negocio de transporte....