Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

Tag - ligne de commande

Fil des billets - Fil des commentaires

vendredi 16 février 2018

Quelques flags utiles des commandes 'cp' et 'mv'

Que ce soit dans un terminal ou dans un script Shell, on utilise tous quotidiennement les commandes cp et mv.

Mais connaissons tous vraiment les options de ces commandes ? Pas si sûr ... Ces options sont précieuses dans un script Shell pour comprendre le flow d'exécution ou pour débugger celui-ci.

Première option intéressante, l'option -v ou --verbose:

user@machine:~ cp --verbose cleanup.log /tmp/
« cleanup.log » -> « /tmp/cleanup.log »

qui permet d'afficher ce qui est effectué. Cette option existe aussi sur la commande mv.

Deuxième option, l'option --u ou --update permet de ne copier ou déplacer le fichier que si celui-ci est plus récent que la cible:

user@machine:~$ cp --verbose --update cleanup.log /tmp/
user@machine:~$ touch cleanup.log 
user@machine:~$ cp --verbose --update cleanup.log /tmp/
« cleanup.log » -> « /tmp/cleanup.log »

La première commande cp n'a rien fait puisque les fichiers étaient identiques.

cp et mv ont aussi une option qui permet d'archiver les fichiers cibles déjà existant avant de faire la copie ou le déplacement:

user@machine:~$ cp --verbose --backup=numbered cleanup.log /tmp/
« cleanup.log » -> « /tmp/cleanup.log » (archive : « /tmp/cleanup.log.~1~ »)
user@machine:~$ cp --verbose --backup=numbered cleanup.log /tmp/
« cleanup.log » -> « /tmp/cleanup.log » (archive : « /tmp/cleanup.log.~2~ »)

Cela permet de garder les versions précédentes si l'on a besoin de revenir en arrière.

L'option --backup peut prendre les valeurs suivantes:

  • none
  • numbered
  • existing
  • simple

Autre option intéressante pour le mode interactif, l'option --interactive ou -i, qui en cas de fichier existant demande si on doit l'écraser:

user@machine:~$ cp --verbose --interactive cleanup.log /tmp/
cp : voulez-vous écraser « /tmp/cleanup.log » ? oui
« cleanup.log » -> « /tmp/cleanup.log »

Si l'on souhaite conserver les fichiers existants:

user@machine:~$ cp --verbose --no-clobber cleanup.log /tmp/

La copie n'a pas été effectuée.

Enfin pour finir citons le flag -r, -R ou --recursive qui permet de copier récursivement les répertoires.

lundi 1 janvier 2018

tar: Utilisez auto-compress pour spécifier le format de compression

L'utilitaire tar, pour "Tape Archive", permet de créer un fichier compressé ou non contenant tout un répertoire ainsi que son contenu, le tout de manière récursive.

La commande tar supporte 7 programmes de compression, à savoir:

  • gzip
  • bzip2
  • lzip
  • lzma
  • lzop
  • xz
  • compress

Les deux ou trois premiers étant évidemment les plus utilisés.

Vous vous souvenez sans doute que le flag -z est à utiliser en cas de compression gzip et que -j est destiné au format bzip2.

Mais peut-être avez-vous oublié que -J active la compression XZ ou que -Z permet d'utiliser le programme compress ?

Il est en fait plus simple d'utiliser les flags "longs", à savoir:

  • --gzip
  • --bzip2
  • --lzip
  • --lzma
  • --lzop
  • --xz

Mais il y a encore mieux, et c'est de laisser le choix à la commande tar de déterminer quel programme de compression va créer l'archive au format demandé.

Cela se fait avec le flag --auto-compress ou -a.

Ce flag s'utilise comme suit:

tar caf archive.tar.bz2 .

C'est quand même plus simple, non ?

Si vous demandez un format de compression qui nécessite un programme que vous n'avez pas installé, vous aurez une erreur qui ressemble à:

tar (child): lzop : exec impossible: Aucun fichier ou dossier de ce type
tar (child): Error is not recoverable: exiting now

A la décompression, le format de compression est trouvé tout seul, sans aucune option particulière:

tar -C /tmp -xf archives/hugo.taz

vendredi 29 décembre 2017

Choisir l'editeur pour éditer le crontab utilisateur

Sous Linux, le crontab utilisateur se modifie par la commande:

crontab -e

S'ouvre alors l'éditeur du système avec les définitions actuelles du crontab. Par défaut, cet éditeur est vi ou nano mais on peut modifier ce comportement en positionnant la variable EDITOR ou VISUAL.

Si la variable VISUALest positionnée, sa valeur est prise en compte, sinon la commande crontab utilise la valeur de la variable EDITOR.

Pour ce convaincre de ce fonctionnement sans altérer son système, on pourra tester la commande suivante:

EDITOR=vi crontab -e

qui lancera alors vi pour modifier le crontab sans pour autant modifier la variable d'environnement EDITOR du système.

La commande:

VISUAL=vi crontab -e

produirait elle aussi le même résultat.

En revanche:

EDITOR=vi VISUAL=nano crontab -e

lancera alors nano puisque la variable VISUAL est prioritaire sur EDITOR.

Enfin, n'essayez pas de positionner l'une des variables précédentes vers l'éditeur Sublime Text, car curieusement cela ne fonctionne pas !

- page 1 de 16