GNU/Linux >> Tutoriels Linux >  >> Linux

Deux grandes utilisations de la commande cp :Raccourcis Bash

En juillet dernier, j'ai écrit sur deux grandes utilisations de la commande cp :faire une sauvegarde d'un fichier et synchroniser une copie secondaire d'un dossier.

Ayant découvert ces excellents utilitaires, je trouve qu'ils sont plus verbeux que nécessaire, j'ai donc créé des raccourcis vers eux dans mon script de démarrage du shell Bash. J'ai pensé que je partagerais ces raccourcis au cas où ils seraient utiles à d'autres ou pourraient inspirer les utilisateurs de Bash qui n'ont pas tout à fait pris en charge les alias ou les fonctions du shell.

Mettre à jour une deuxième copie d'un dossier - alias Bash

Le modèle général pour mettre à jour une deuxième copie d'un dossier avec cp est :

cp -r -u -v SOURCE-FOLDER DESTINATION-DIRECTORY

où le -r signifie "descendre récursivement dans le dossier en visitant tous les fichiers", -u signifie "mettre à jour la cible" et -v signifie "mode verbeux", SOURCE-FOLDER est le nom du dossier qui contient les informations les plus à jour, et DESTINATION-DIRECTORY est le répertoire contenant la copie du SOURCE-FOLDER qui doit être synchronisé.

Je me souviens facilement du -r option car je l'utilise souvent lors de la copie de dossiers. Je peux probablement, avec un peu plus d'effort, me souvenir de -v , et avec encore plus d'effort, -u (est-ce « mettre à jour » ou « synchroniser » ou…).

Ou je peux simplement utiliser la capacité d'alias dans Bash pour convertir le cp commande et options à quelque chose de plus mémorable, comme ceci :

alias sync='cp -r -u -v'

Si j'enregistre ceci dans mon .bash_aliases fichier dans mon répertoire personnel, puis démarrer une nouvelle session de terminal, je peux utiliser l'alias, par exemple :

sync Pictures /media/me/4388-E5FE

pour synchroniser mon dossier Images dans mon répertoire personnel avec la version de celui-ci dans ma clé USB.

Vous ne savez pas si vous avez déjà une sync alias défini ? Vous pouvez lister tous vos alias actuellement définis en tapant le mot alias à l'invite de commande dans la fenêtre de votre terminal.

Vous aimez tellement cela que vous voulez juste commencer à l'utiliser tout de suite ? Ouvrez une fenêtre de terminal et tapez :

echo "alias sync='cp -r -u -v'" >> ~/.bash_aliases

Ensuite, démarrez une nouvelle fenêtre de terminal et tapez le mot alias à l'invite de commande. Vous devriez voir quelque chose comme ceci :

me@mymachine~$ alias

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias gvm='sdk'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -alF'

alias ls='ls --color=auto'

alias sync='cp -r -u -v'

me@mymachine:~$

Là, vous pouvez voir la sync alias défini.

Faire des sauvegardes versionnées – Fonction Bash

Le modèle général pour faire une sauvegarde d'un fichier avec cp est :

cp --force --backup=numbered WORKING-FILE BACKED-UP-FILE

où le -- force signifie "faire la copie quoi qu'il arrive", le -- backup=numbered signifie "utiliser un nombre pour indiquer la génération de la sauvegarde", WORKING-FILE est le fichier courant que nous souhaitons conserver, et BACKED-UP-FILE est le même nom que le WORKING-FILE et les informations de génération seront ajoutées.

En plus de se souvenir des options du cp commande, nous devons également nous rappeler de répéter le WORKING-FILE nommer une seconde fois. Mais pourquoi nous répéter quand une fonction Bash peut s'occuper de cette surcharge pour nous, comme ceci :

Encore une fois, vous pouvez l'enregistrer dans votre .bash_aliases fichier dans votre répertoire personnel.

function backup {

    if [ $# -ne 1 ]; then

        echo "Usage: $0 filename"

    elif [ -f $1 ] ; then

        echo "cp --force --backup=numbered $1 $1"

        cp --force --backup=numbered $1 $1

    else

        echo "$0: $1 is not a file"

    fi

}

J'ai appelé cette fonction "sauvegarde" parce que je n'ai pas d'autres commandes appelées "sauvegarde" sur mon système, mais vous pouvez choisir le nom qui vous convient.

Le premier if l'instruction vérifie qu'un seul argument est fourni à la fonction, sinon affiche l'utilisation correcte avec le echo commande.

Le elif L'instruction vérifie pour s'assurer que l'argument fourni est un fichier, et si c'est le cas, elle utilise (de manière verbale) le second echo pour imprimer le cp commande à utiliser, puis l'exécute.

Si l'unique argument n'est pas un fichier, le troisième echo imprime un message d'erreur à cet effet.

Dans mon répertoire personnel, si j'exécute la backup commande ainsi définie sur le fichier checkCounts.sql , je vois que backup crée un fichier appelé checkCounts.sql.~1~ . Si je l'exécute une fois de plus, je vois un nouveau fichier checkCounts.sql.~2~ .

Succès! Comme prévu, je peux continuer à éditer checkCounts.sql , mais si j'en prends un instantané de temps en temps avec sauvegarde, je peux revenir à l'instantané le plus récent en cas de problème.

À un moment donné, il vaut mieux commencer à utiliser git pour le contrôle de version, mais backup tel que défini ci-dessus est un bon outil bon marché lorsque vous avez besoin de créer des instantanés mais que vous n'êtes pas prêt pour git .

Conclusion

Dans mon dernier article, je vous ai promis que les tâches répétitives peuvent souvent être facilement rationalisées grâce à l'utilisation de scripts shell, de fonctions shell et d'alias shell.

Ici, j'ai montré des exemples concrets de l'utilisation d'alias de shell et de fonctions de shell pour rationaliser la fonctionnalité de synchronisation et de sauvegarde du cp commande. Si vous souhaitez en savoir plus à ce sujet, consultez les deux articles cités ci-dessus :How to save keystrokes at the command line with alias and Shell scripting :An introduction to the shift method and custom functions, écrit par mes collègues Greg et Seth , respectivement.


Linux
  1. Alias ​​de ligne de commande dans le shell Linux

  2. Nala :une interface plus jolie pour la commande APT

  3. Commandes Bash bang :une astuce incontournable pour la ligne de commande Linux

  4. La commande "eval" dans Bash ?

  5. Comment obtenir l'achèvement de Bash pour les alias de commande ?

3 gestionnaires de mots de passe pour la ligne de commande Linux

Comment utiliser la commande de lecture Bash

Raccourcis pour naviguer dans l'historique du terminal

La liste des raccourcis clavier Bash utiles

La boucle Bash FOR expliquée et simplifiée

8 utilisations courantes de la commande Linux Touch