2010-06-10 5 views
1

je fais quelque chose comme ceci:échapper à un cli linux pour la boucle

for f in `find -iname '*.html'`; do scp $f remoteserver:$f; done; 

J'ai par environ 3 des 1000 fichiers et j'ai décidé que je veux faire avorter l'opération.

CTRL + C n'échappe à l'invite de connexion SCP et me conduit à la suivante, plutôt que d'échapper à la boucle for.

Existe-t-il un meilleur moyen que de frapper CTRL + C 9997 fois?

Merci!

Répondre

5

Vous devriez apprendre à vérifier l'état de sortie des processus que vous exécutez - surtout si vous les exécutez dans une boucle:

for f in `find -iname '*.html'`; do scp $f remoteserver:$f || break; done; 

Notez que le bit || break.

+0

Merci pour cela. top conseil – aidan

0

Hmm .. frapper CTRL + C deux fois de suite très rapide semble faire l'affaire ...

+0

Oui. Cela fonctionne si vous êtes assez rapide ... voir ma réponse pour quelque chose de plus fiable;) – neuro

+0

Ah oui, c'est ça, il aurait dû frapper ctrl-c *** 9998 *** fois! –

1

Utilisez le bash de commande intégrée piège »qui emprisonne des signaux. De cette façon, vous pouvez piéger votre Ctrl-C et à faire ... :) sortie

MY2C

+0

Merci pour l'info - c'est quelque chose que je ne connaissais pas. – aidan

+0

vous êtes les bienvenus :) – neuro

2

Appuyez simultanément sur ctrl +z de suspendre la tâche puis utilisez kill %1 pour tuer cette tâche.

Vous pouvez trouver que xargs est un meilleur moyen d'atteindre cette tâche. Ou rsync. Ou même en compressant les fichiers HTML dans une archive et scp -ing cela. Mais ceci est probablement hors sujet pour StackOverflow.

+0

Merci pour ce conseil. J'utiliserais normalement xargs et rsync, mais j'utilisais juste ceci comme exemple. – aidan