1 votes

la commande cp : Ecraser la confirmation avec le fichier diff

En cours d'exécution cp pour copier des fichiers, j'aimerais que l'on me demande de confirmer l'écrasement et, si possible, d'afficher le fichier en confirmant la différence.

Est-ce possible ? Et si oui, comment ?

Exemple idéal :

$ cp file1.txt file2.txt
0a1,2
> 1.
> 
2a5,6
> 2.
> 
4a9,10
> 3.
> 
Overwrite file2.txt? [Yes/No/Keep both] (default Y):

2voto

Kerry Jones Points 145

En plaçant des commandes alias dans votre profil bash, vous bénéficierez d'une protection partielle contre l'écrasement. Comme d'autres l'ont mentionné dans leurs commentaires, vous devrez écrire un script pour ajouter la fonction diff.

J'ai placé les commandes ci-dessous dans mon ~/.bash_profile .

Bash sur MacOS détermine quel fichier est votre profil bash dans cet ordre :

  1. ~/.bash_profile

  2. ~/.bash_login

  3. ~/.profile

Ces commandes indiquent à cp, mv et rm de vous avertir lorsqu'un fichier doit être écrasé ou supprimé :

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
# Placing a blank after sudo causes alias substitution 
# for sudo's inner commands . See Gordon Davisson's comments below for 
# details. 
alias sudo='sudo '

Cet exemple suppose que vous avez placé les commandes ci-dessus dans votre profil bash.

mac $ touch a
mac $ touch aa
mac $ cp aa a
overwrite a? (y/n [n]) n
not overwritten
mac RC=1   $ rm a
remove a? 
mac $ mv aa a
overwrite a? (y/n [n]) n
not overwritten
# demonstrate sudo protection
mac $ touch inin
mac $ sudo cp inin hihi
overwrite hihi? (y/n [n]) n
not overwritten
mac RC=1   $ sudo mv  inin hihi
overwrite hihi? (y/n [n]) n
not overwritten
mac $ sudo rm inin hihi
remove inin? y
remove hihi? y
mac $ 

Ces commandes alias ne vous protègent pas dans toutes les circonstances, par exemple lorsque vous invoquez un nouvel interpréteur de commandes ou que vous exécutez cp, mv ou rm à partir d'autres commandes telles que find.


P.S. : Les alias mentionnés ci-dessus utilisent le même nom que la commande d'origine, ce qui a pour effet de la masquer. Pour accéder à la commande originale non aliasée, il faut la faire précéder d'un \ (par exemple, \cp , \mv , \rm etc.)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X