web-dev-qa-db-fra.com

Quitter le terminal après la fin de la commande dd

d'abord désolé pour le mauvais anglais. Deuxièmement, je crée un outil de clonage. J'utilise la commande

Sudo mate-terminal --geometry=50x10 -x sh -c "Sudo dd if=/dev/sda of=/dev/sdb status=progress; bash"

J'utilise cette commande de sorte que lorsque l'utilisateur clique sur le lien du bouton de clonage avec la commande ci-dessus, il peut voir l'avancement du clonage, lequel affiche une sorte de journal du temps restant et du transfert par seconde sur un nouveau terminal comme celui-ci. image.

Le problème, c’est que j’utilise un appareil à écran tactile pour créer ces outils et, une fois le clonage terminé, le terminal ne se déconnecte pas automatiquement. L'utilisateur doit cliquer sur le bouton "x" pour fermer le terminal. Cela poserait un problème, car j'utilise un écran tactile de 3,5 "et il peut être assez difficile de cliquer sur le bouton" x "d'un petit écran tactile. le processus de clonage est fait, il affiche ceci sur le terminal

J'ai déjà essayé

exec ./clone.sh

et

./clone.sh && exit

et

./clone; exit

Mais tous échouent.

Pour votre information, la commande est un lien vers un bouton donc ma commande est comme ceci

(action)./clone.sh && exit(/action)

Quelqu'un peut-il m'aider ?

2
Najmi

La raison pour laquelle le terminal reste ouvert est que vous lui indiquez d'exécuter la commande dd, puis de démarrer une nouvelle instance bash. Si vous supprimez la bash de la fin de la commande, le terminal généré disparaîtra comme prévu.

De plus, il n’ya aucune raison de lancer la dd avec Sudo si vous utilisez déjà le terminal avec Sudo. Un seul des deux doit être exécuté avec Sudo, lequel vous appartient. De plus, vous n'avez pas besoin du sh -c puisque vous ne voulez exécuter qu'une seule commande. Utilisez simplement le -x directement.

Donc, en prenant tout cela ensemble, ce que vous recherchez, c'est:

Sudo mate-terminal --geometry=50x10 -x dd if=/dev/sda of=/dev/sdb status=progress

IMPORTANT: Pour tous ceux qui liront ce Q & A, cette commande est dangereuse, ne l'exécutez pas sur votre ordinateur. Il écrasera le contenu de votre /dev/sdb si vous en avez un. C'est ce que le PO veut faire, mais vous ne devriez pas l'exécuter à moins de savoir ce que vous faites.

3
terdon