Comment masquer la sortie du terminal lors de l'exécution d'une commande?

50

Lorsque je lance certains programmes à partir de la ligne de commande comme eclipse et viewer de document en 11.10, cela génère une quantité d'informations qui semble sans conséquence.

Aussi, lorsqu'ils sont exécutés en arrière-plan, ils continuent parfois à produire des sorties sur le terminal sur lequel je travaille actuellement, ce qui est irritant.

Je voudrais qu'ils viennent juste de lancer et de garder les trucs de fond en arrière-plan. Mon raisonnement est le suivant: si vous lancez ces programmes via l’interface graphique (par exemple en double-cliquant sur une icône), ces messages ne m’apparaissent jamais, alors je n’en ai pas besoin dans la ligne de commande.

    
posée Anake 25.01.2012 - 12:20
la source

3 réponses

66

Si vous pouvez éviter d’écrire des choses dans la console, cela dépend de la manière dont les sorties du programme sont créées. S'il est diffusé sur une sortie standard, il suffit juste de le faire

$ eclipse >/dev/null

et aucune sortie ne devrait être faite.

Pour supprimer également les messages d'erreur:

$ eclipse >/dev/null 2>&1

Ou en bash, simplement:

$ eclipse &>/dev/null

Mais s’ils le font d’une manière ou d’une autre, alors cela pourrait poser problème pour l’empêcher d’écrire dans la console.

si possible, utilisez la solution donnée par MuffinStateWide

    
réponse donnée Misery 25.01.2012 - 13:03
la source
7

Vous pouvez créer une fonction bash qui alias un nom de commande et ajouter des fonctionnalités supplémentaires pour obtenir ce que vous demandez.

Par exemple: supposons que vous voulez lancer gvim (un éditeur de texte graphique) à partir de la ligne de commande.

vous pourriez écrire une fonction comme celle-ci:

function gvim () {
    nohup gvim "[email protected]" > /dev/null 2>&1 & disown
}

(ajoutez cette fonction à votre fichier .bashrc ou .bash_aliases afin qu’il soit toujours chargé)

Explication:

  • cela alira la commande gvim avec une fonction bash également appelée gvim (donc, lorsque vous tapez gvim à une invite bash, il appellera votre fonction gvim , plutôt que d'exécuter le réel gvim Votre fonction appelle alors la vraie commande gvim (et accepte ses arguments réguliers), avec quelques fonctionnalités supplémentaires:

    • redirige stdout et stderr vers /dev/null (supprime la sortie vers le terminal)
    • utilise & pour exécuter la commande en arrière-plan (afin que votre shell ne soit pas bloqué)
    • utilise disown pour supprimer le job d'arrière-plan du shell (il n'apparaît donc pas dans la liste des jobs actifs)
    • utilise nohup pour détacher le processus du terminal (vous pouvez ainsi mettre fin à votre session shell ou fermer votre terminal sans tuer le processus)
réponse donnée Corey Goldberg 16.02.2016 - 17:20
la source
5

essayez d'ajouter --help en tant que commutateur de commande et recherchez "quiet", cela devrait supprimer la sortie ou simplement lancer depuis l'interface graphique. et lancer avec le commutateur ou trouver un moyen de le supprimer via un script

personnellement, je lance à partir de cli pour obtenir cette sortie, donc je ne suis pas sûr que ce soit possible pour toutes les applications GUI.

    
réponse donnée MuffinStateWide 25.01.2012 - 13:06
la source

Lire d'autres questions sur les étiquettes