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 --versionSortie 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/bashtexte 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.shLorsque 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.shSortie 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/bashdpath = /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/bashpour 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/bashpour 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/bashecho "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.