Ecrit en bash pendant qu'il travaille

Lorsque vous effectuez des opérations longues dans bash comme l'installation d'un nouveau logiciel, est-il possible d'écrire du texte qui apparaîtra à l'invite lorsque l'opération est terminée.

Par exemple

Imaginez courir:

apt-get install eclipse-platform 

Ensuite, il va suffire de terminer pendant que vous voyez le journal d'installation. Pendant ce temps, je souhaite créer de nouveaux dossiers (espaces de travail) que Eclipse utilisera plus tard.

Est-ce possible sans ouvrir un nouveau terminal (ou onglet)?

Vous pouvez exécuter l'installation en arrière-plan. Cela vous permet de taper d'autres commandes. Vous serez averti lorsque la tâche terminée est terminée.

Vérifiez la page man pour apt-get et recherchez des options qui laissent fonctionner tranquillement sans écrire beaucoup de sortie. Vérifiez les options qui le font fonctionner sans nécessiter l'entrée de l'utilisateur (p. Ex. Confirmations)

Utilisez la redirection pour avoir des messages d'écriture et des erreurs dans les fichiers, utilisez le suffixe de l'image-image pour exécuter la commande en arrière-plan

 nohup apt-get --be-quiet --dont-ask \ install eclipse-platform > agiep.out 2>agiep.err & 

Vous n'avez probablement pas besoin de nohup (voir la page man). J'ai inventé --be-quiet et -dont-ask alors vérifiez l' man apt-get pour des équivalents réels (le cas échéant).

Voir aussi fg dans la page d'accueil de votre shell.

Remarque: plusieurs des fonctionnalités ci-dessus sont dépendantes de la coque. Devrait être OK dans bash, ksh et leur ilk.

Si le programme en question ne consomme pas de stdin, vous pouvez entrer les commandes suivies de Enter et les faire exécuter une fois le programme terminé (et tant qu'aucun ne consomme stdin).

Il existe plusieurs façons d'y parvenir.

Vous pouvez interrompre une tâche en tout temps en appuyant sur ctrl + z . Ensuite, pour reprendre la tâche en arrière plan, utilisez la commande bg . Vous pouvez ramener une tâche au premier plan avec le fg

Par conséquent, si apt-get est en cours d'exécution, faites ctrl + z , puis exécutez bg . Cela le fera fonctionner en arrière-plan.

Vous pouvez également lire à l'écran ou byobu.

Un alias pratique qui vient avec ubuntu's .bashrc (je ne sais pas si cela vient aussi dans debian) est celui-ci:

 # Add an "alert" alias for long running commands. Use like so: # sleep 10; alert alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' 

Il utilise notify-send (environnement de bureau): avec notification-envoyer, vous pouvez envoyer des notifications de bureau à l'utilisateur via un démon de notification à partir de la ligne de commande. Ces notifications peuvent être utilisées pour informer l'utilisateur d'un événement ou afficher une forme d'information sans entrer dans le mode d'accès de l'utilisateur.

Vous pouvez émettre votre commande dans un sous-ensemble en arrière-plan afin que vous puissiez continuer à faire des choses dans ce shell. De plus, vous pouvez ajouter des chèques pour obtenir des messages différents si la commande est correcte ou non:

 ( sleep 5 && alert "sleeped OK" || alert "something nasty happened with sleep") & 

C'est probablement un petit peu, surtout si vous exécutez quelque chose comme Gnome ou KDE où vous pouvez avoir plusieurs fenêtres bash, mais vous devriez regarder dans l'écran.

L'écran vous permet d'exécuter plusieurs sessions de terminal dans une seule fenêtre. Cela vous permet également de quitter l'écran, mais laissez les processus d'arrière-plan en cours d'exécution et, ultérieurement, rattachez tous ces processus en arrière-plan afin que vous ne puissiez même pas vous annuler.

Fondamentalement, pour démarrer l'écran, vous démarrez le terminal, puis tapez l' screen . Il vous donnera un message sur lui-même, appuyez simplement sur enter pour passer au-delà. L'écran est un programme à part entière, donc je vais à peine rayer la surface, mais voici quelques tâches de base. Tout cela suppose que les configurations par défaut (qui, puisque vous n'avez pas utilisé le programme, devraient être les mêmes).

Il existe un ensemble de méta-clés qui doivent être pressées avant chaque commande d'écran, sinon l'entrée va directement à laquelle jamais une session de terminal est affichée. La méta-clé par défaut est ctrl-a . Donc, par exemple, pour créer une nouvelle fenêtre, vous seriez d'abord ctrl-a alors vous frapperez c

Commandes d'écran utiles

Pour créer une nouvelle fenêtre: ctrl-a c

Pour passer à la fenêtre suivante: ctrl-a n

Pour revenir à une fenêtre: ctrl-a p

Pour passer à une fenêtre: ctrl-a # where # est le nombre de la session à laquelle vous souhaitez passer.

Pour afficher toutes les fenêtres ouvertes: ctrl-a "

Pour fermer une fenêtre: tapez exit comme normal

Pour détacher une session: ctrl-a d

Pour rattacher une session: Lorsque vous démarrez l'écran, ajoutez l'option -r

Comment faire ce que vous avez demandé

Donc, pour faire ce que vous avez demandé, vous suivriez ces étapes

  1. Ouvrir le terminal

  2. Type screen

  3. Type apt-get install eclipse-platform

  4. Tapez ctrl-a c

  5. Exécutez vos autres commandes

Lorsque votre étape 5, votre commande de l'étape 3 continuera à fonctionner. Pour vérifier à tout moment, tapez simplement ctrl-a p . Pour revenir à l'endroit où vous tapez vos autres commandes, tapez ctrl-a n . Lorsque vous avez terminé, vous pouvez quitter l'écran et le terminal complètement en tapant la exit dans toutes vos fenêtres. Mais si vous êtes au milieu d'un ensemble de commandes et souhaitez revenir sur cela, tout simplement, détachez simplement votre session en utilisant ctrl-a d . Lorsque vous voulez revenir et finir, commencez simplement l'écran avec l'option -r comme screen -r

Encore une fois, ce n'est qu'un simple exemple et il n'entre pas dans tout ce que vous pouvez faire avec l'écran. Mais si vous faites beaucoup de travail dans l'écran du terminal, vous pouvez être un excellent outil.