79 votes

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

Lorsque je lance certains programmes à partir de la ligne de commande, comme eclipse et le visualiseur de documents dans la version 11.10, il crache un tas d'informations qui semblent sans importance.

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

J'aimerais qu'ils se contentent de lancer et qu'ils laissent les choses en arrière-plan. Mon raisonnement est que si vous lancez ces programmes via l'interface graphique (par exemple, en double-cliquant sur une icône), ces messages ne me sont jamais montrés, et je n'en ai donc pas besoin dans la ligne de commande.

103voto

Misery Points 3404

Si vous pouvez éviter d'écrire des choses dans la console, cela dépend de la façon dont la sortie du programme est créée. Si elle est envoyée vers la sortie standard, alors il suffit de faire

$ eclipse >/dev/null

et aucune sortie ne doit être faite.

Pour supprimer également les messages d'erreur :

$ eclipse >/dev/null 2>&1

Ou dans bash, simplement :

$ eclipse &>/dev/null

Mais s'ils le font différemment, il pourrait être difficile de l'empêcher d'écrire dans la console.

si possible utiliser la solution donnée par MuffinStateWide

15voto

Corey Goldberg Points 2936

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

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

vous pourriez écrire une fonction comme celle-ci :

function gvim () {
    nohup gvim "$@" > /dev/null 2>&1 & disown
}

(ajoutez cette fonction à votre .bashrc o .bash_aliases pour qu'il soit toujours chargé)

Explication :

  • ce qui permettra d'aliaser le gvim avec une fonction bash également nommée gvim (donc quand vous tapez gvim à une invite de bash, il appellera votre gvim plutôt que d'exécuter la véritable fonction gvim commande. Votre fonction appelle alors le réel gvim (et accepte ses arguments habituels), 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 (afin qu'il n'apparaisse pas dans la liste des jobs actifs)
    • utilise nohup pour détacher le processus du terminal (afin que vous puissiez terminer votre session Shell ou fermer votre terminal sans tuer le processus)

6voto

MuffinStateWide Points 849

Essayez d'ajouter --help comme commutateur de commande et cherchez "quiet", cela devrait supprimer la sortie, ou lancez simplement à partir de l'interface graphique et lancez avec le commutateur ou trouvez un moyen de le supprimer via script.

Personnellement, je lance le logiciel à partir du client pour obtenir cette sortie, donc je ne suis pas sûr que ce soit possible pour toutes les applications GUI.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X