Programmation BASH

Copier la liste des fichiers à l'aide du script Bash

Copier la liste des fichiers à l'aide du script Bash
Bash (Bourne Again Shell) est le type de shell qui permet d'exécuter des commandes et des scripts. Bash était une version développée du shell sh. Bash Script est un fichier dans lequel plusieurs commandes shell sont scriptées pour effectuer une tâche particulière. Dans cet article, nous verrons comment copier plusieurs fichiers à l'aide d'un script bash. Pour cet article, j'utilise Ubuntu 20.04 pour illustrer l'exemple.

Remarque : - $USER imprimera les noms d'utilisateur des utilisateurs actuellement connectés.

Si vous êtes curieux de savoir quelle version de bash shell est installée sur le système, nous pouvons la vérifier à l'aide de la commande suivante.

$ bash --version

Sortie de la version Bash.

Créer et exécuter un script Bash

Commençons par créer un fichier simple en utilisant n'importe quel éditeur de votre choix. Pour moi, l'éditeur vi est plus confortable. Pour rendre le fichier exécutable, nous devons ajouter shebang (!#) et emplacement de l'interpréteur bash au début du script. j'ai crée un texte.txt et ajoutez-le au répertoire bash_demo dans mon répertoire personnel qui contient du texte à des fins de démonstration.

$ touch bash_demo.sh
$ vi bash_demo.sh

Ajoutez les lignes suivantes dans votre éditeur de texte pour un exemple de démonstration après avoir créé un fichier ; si vous ne l'avez pas fait, l'éditeur créera un nouveau fichier lors de l'écriture et quittera.

#!/bin/bash
texte cp.txt /tmp/
echo "Fichier copié."

Nous pouvons exécuter le script en utilisant ./ avant le fichier de script, qui détermine le fichier dir courant.

$ ./bash_demo.sh

Lorsque nous exécutons le script, l'erreur suivante sera levée dans notre terminal.

Exécution initiale du fichier bash.

Lorsque nous créons un fichier par défaut, l'utilisateur n'a pas d'autorisation d'exécution pour le fichier. Pour fournir une autorisation d'exécution à l'utilisateur, la commande suivante doit être exécutée.

$ chmod +x bash_demo.sh

Sortie après autorisation accordée.

Copier uniquement les fichiers d'un répertoire spécifique

Pour récupérer tous les fichiers et répertoire à partir d'un chemin spécifique, nous utiliserons la boucle for dans le script, puis filtrerons le seul fichier en utilisant la condition if. Dans l'exemple ci-dessous, nous exécutons la commande cp uniquement exécutée si l'itérateur était un fichier qui est déterminé -f flag.

#!/bin/bash
dpath = /var/log/nginx/*
pour FICHIER dans $dpath
fais
si [[ -f $FILE ]]
ensuite
cp $FILE /home/$USER/
autre
echo "Il n'y a pas de fichiers dans le chemin donné."
Fi
Fini

Copiez tous les fichiers d'extensions spécifiques

Dans cet exemple, nous allons copier tous les fichiers avec le .extension de journal. Nous devons ajouter *.log sur le chemin afin qu'il parcoure le seul fichier avec .extension de journal pour la boucle uniquement.

#!/bin/bash
pour FICHIER dans /var/log/nginx/*.Journal
fais
cp $FILE /home/$USER/
Fini

Copier tous les fichiers, y compris le répertoire

Dans cet exemple, nous allons copier tous les fichiers, y compris les répertoires, de manière récursive. Pour cela, il suffit d'ajouter la commande -R cp où -R détermine la récupération récursive du répertoire.

#!/bin/bash
pour FICHIER dans /var/log/*
fais
cp -R $FILE /home/$USER/
Fini

Copier les fichiers à partir du chemin spécifié par l'utilisateur

Dans cet exemple, nous allons copier les fichiers du répertoire spécifié par l'utilisateur. Pour ce faire, nous allons utiliser la commande read pour demander le chemin à l'utilisateur puis vérifier si l'utilisateur fournit le chemin vers dir ou non, ce qui est fait par le drapeau -d dans la condition. Après avoir vérifié dir, nous utiliserons une boucle for pour parcourir tous les fichiers et dir à l'intérieur du chemin donné, puis à nouveau filtrer les seuls fichiers en utilisant la condition if. Si la condition correspond, la commande cp suivante sera exécutée.

#!/bin/bash
echo "Veuillez fournir un chemin vers dir."
chemin de lecture
si [[ -d $chemin ]]
ensuite
pour FICHIER dans $path/*
fais
si [[ -f $FILE ]]
ensuite
cp $FILE /home/$USER/
autre
echo "Il n'y a pas de fichiers dans le chemin donné."
Fi
Fini
autre
echo "Le chemin vers le répertoire est requis"
Fi

Dans mon répertoire personnel, j'ai les fichiers et répertoires suivants.

Sortie lors de la fourniture du chemin d'accès à un fichier.

Sortie lors de la fourniture du chemin d'emplacement du répertoire.

Après avoir exécuté le fichier de script, nous pouvons vérifier la sortie dans le répertoire prédéfini du script. Dans mon cas, j'ai copié le fichier dans mon répertoire personnel, et voici le résultat.

Conclusion

Dans cet article, nous apprenons comment copier des fichiers à l'aide de scripts bash. Nous pouvons utiliser de nombreuses autres opérations comme une boucle, if-else, etc. Les scripts Bash sont plus efficaces lorsque vous travaillez avec plusieurs commandes pour effectuer des tâches spécifiques. J'espère que vous aimez cet article sur la copie de fichiers à l'aide d'un script bash.

OpenTTD contre Simutrans
Créer votre propre simulation de transport peut être amusant, relaxant et extrêmement attrayant. C'est pourquoi vous devez vous assurer que vous essay...
Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...
SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...