Dis que j'ai un fichier /templates/apple
et que je veux
- le mettre à deux endroits différents et
- retirer l'original.
Donc, /templates/apple
sera copié sur /templates/used
ET /templates/inuse
puis après cela, je voudrais supprimer l'original.
La cp
meilleure façon de procéder est-elle suivie de rm
? Ou existe-t-il une meilleure façon?
Je veux tout faire en une seule ligne, donc je pense que cela ressemblerait à quelque chose comme:
cp /templates/apple /templates/used | cp /templates/apple /templates/inuse | rm /templates/apple
Est-ce la bonne syntaxe?
Pourquoi ne pas vous
cp
rendre à l'emplacement 1, puismv
à l'emplacement 2. Cela permet de "retirer" l'original.Et non, ce n'est pas la bonne syntaxe.
|
est utilisé pour "diriger" la sortie d'un programme et la transformer en entrée pour le programme suivant. Ce que vous voulez;
, c'est qui sépare plusieurs commandes.Si vous exigez que les commandes individuelles DOIVENT réussir avant que la suivante puisse être démarrée, alors vous utiliseriez à la
&&
place:De cette façon, si l'une des
cp
commandes échoue, lerm
ne s'exécutera pas.la source
Notez que
cp A B; rm A
c'est exactementmv A B
. Ce sera aussi plus rapide, car vous n'avez pas besoin de copier les octets (en supposant que la destination se trouve sur le même système de fichiers), renommez simplement le fichier. Alors tu veuxcp A B; mv A C
la source
Une autre option consiste à taper Ctrl+V Ctrl+Jà la fin de chaque commande.
Exemple (remplacer
#
par Ctrl+V Ctrl+J):Production:
Cela exécutera les commandes indépendamment de l'échec des précédentes.
Pareil que:
echo 1; echo 2; echo 3
Si vous souhaitez arrêter l'exécution sur les commandes ayant échoué, ajoutez
&&
à la fin de chaque ligne, sauf la dernière.Exemple (remplacer
#
par Ctrl+V Ctrl+J):Production:
Dans
zsh
vous pouvez également utiliser Alt+Enterou Esc+Enterau lieu deCtrl+V Ctrl+Jla source
Essaye ça..
cp /templates/apple /templates/used && cp /templates/apple /templates/inuse && rm /templates/apple
la source
Utiliser des tuyaux me semble bizarre. Quoi qu'il en soit, vous devez utiliser l'
and
opérateur logique Bash:Si les
cp
commandes échouent, lerm
ne sera pas exécuté.Ou, vous pouvez créer une ligne de commande plus élaborée en utilisant une
for
boucle etcmp
.la source