[astuce] Un presse-papier pour la console

L’administration avancée de Linux passe le plus souvent par la console, quoi qu’on en dise. Mais certaines tâches sont fastidieuses ou compliquées à réaliser en ligne de commande, comme la copie de fichiers.

Ctrl+C / Ctrl+V de forêt
Souvent, pour copier un fichier depuis votre terminal, vous utilisez la commande cp (ou mv pour couper), de cette façon : (image)

cp image.jpg image_copie.jpg

Ça devient plus compliqué quand il faut remonter dans les dossiers systèmes ou dans les média amovibles, ou quand vous voulez mettre plusieurs fichiers : (image)

cp ./Téléchargements/image2.jpg ./Téléchargements/image3.jpg /usr/share/themes/

Ce qui fait que le plus souvent on préfère ouvrir un explorateur comme Nautilus ou Dolphin, quitte à se loguer en pseudo-root et faire des conneries. Vous voulez une façon plus simple et intuitive de faire des copier-coller par la console ? Ne cherchez plus, je vous ai trouvé un script permettant de simuler un presse-papier via la console !

Principe

Trève de bavardages, voyons déjà le code :
ccopy(){
for i in $*;
do cp -a $i /tmp/ccopy.$i;
done }
alias cpaste="ls -d /tmp/ccopy* | sed 's|[^\\.]*.\\.||' |
xargs -I % mv /tmp/ccopy.% ./%"

Je pense que c’est assez compréhensible quand on connais un peu les commandes Unix, en gros c’est une fonction qui va copier le fichier qu’on lui donne avec la commande ccopy fichier dans le dossier temporaire système, en lui assignant un id de pile, ce qui permet d’ajouter à la pile les prochains fichiers copiés avec ccopy. Ensuite, la commande cpaste récupère la pile pour la coller à l’emplacement donné avec cpaste /destination/de/copie/.

Mise en place

Pour tester, ajoutez ces lignes dans votre fichier ~/.bashrc (gedit .bashrc) :
ccopy(){ for i in $*; do cp -a $i /tmp/ccopy.$i; done }
alias cpaste="ls -d /tmp/ccopy* | sed 's|[^\\.]*.\\.||' | xargs -I % mv /tmp/ccopy.% ./%"

Entrez ensuite source ~/.bashrc pour mettre à jour l’environnement bash.

On peut tester un peu ensuite, on n’a qu’a dire que je veuille regrouper des photos, qui sont dans plusieurs dossiers, sur mon bureau :
Capture de terminal

Et voilà, ça fonctionne ! C’est surtout utile quand vous voulez regrouper des fichiers disséminés un peu partout dans votre arborescence, mais c’est une bonne alternative à la commande cp. Comme vous avez vu, la destination est facultative pour cpaste si on se trouve déjà dans le dossier de destination.

Rappel des commandes :
ccopy fichier autrefichier
cpaste destination

Et si quelqu’un connait une extension WordPress pour afficher du code avec indication de langage et des instructions de terminal facilement (un peu comme sur l’article de Webupd8) je suis très intéressé ;)

[Source]

Vus : 1391
Publié par Djul : 28