11 votes

Puis-je faire en sorte que toutes les commandes soient assorties d'un retour d'information indiquant si elles ont fonctionné ou non ?

Parfois, lorsque j'exécute des commandes, il n'y a pas de sortie, ce qui fait que je ne sais pas si elles ont fonctionné ou non. Est-il possible de faire en sorte que toutes les commandes aient un retour d'information si elles se sont déroulées correctement ou non ? Ou au minimum d'afficher un feedback si elles se sont exécutées (correctement ou non).

5voto

gronostaj Points 515

Vous pouvez modifier votre invite de commande pour qu'elle affiche une coche verte lorsque la commande précédente se termine par 0 et un X rouge dans le cas contraire. Wiki Arch Linux a un joli morceau de code à ajouter à votre bash.rc :

set_prompt () {
    Last_Command=$? # Must come first!
    Blue='\[\e[01;34m\]'
    White='\[\e[01;37m\]'
    Red='\[\e[01;31m\]'
    Green='\[\e[01;32m\]'
    Reset='\[\e[00m\]'
    FancyX='\342\234\227'
    Checkmark='\342\234\223'

    # Add a bright white exit status for the last command
    #PS1="$White\$? "
    # If it was successful, print a green check mark. Otherwise, print
    # a red X.
    if [[ $Last_Command == 0 ]]; then
        PS1+="$Green$Checkmark "
    else
        PS1+="$Red$FancyX "
    fi
    # If root, just print the host in red. Otherwise, print the current user
    # and host in green.
    if [[ $EUID == 0 ]]; then
        PS1+="$Red\\h "
    else
        PS1+="$Green\\u@\\h "
    fi
    # Print the working directory and prompt marker in blue, and reset
    # the text color to the default.
    PS1+="$Blue\\w \\\$$Reset "
}
PROMPT_COMMAND='set_prompt'

(J'ai désactivé le code d'erreur actuel parce que je ne l'aime pas, si vous souhaitez voir les codes exacts, supprimez-les. # de cette ligne : #PS1="$White\$? " )

Voici à quoi cela ressemble :

GUI Terminal screenshot

tty screenshot

2voto

Avinash Raj Points 72686

Oui Il est possible d'obtenir un retour d'information pour chaque commande exécutée sur le terminal. echo $? qui renvoie 0 si la commande a été exécutée avec succès et toute autre valeur que 0 en cas d'échec.

Pour obtenir un retour d'information sur le succès ou l'échec, ajoutez la ligne suivante à ~/.bashrc fichier.

bind 'RETURN: ";if [[ $? == 0 ]]; then tput setaf 6 && echo SUCCESS; tput sgr0; else tput setaf 1 && echo FAILURE; tput sgr0; fi;\n"' 

Et puis source ~/.bashrc pour le faire fonctionner.

source ~/.bashrc

Explication :

Pour chaque commande exécutée sur le terminal, cette ;if [[ $? == 0 ]]; then tput setaf 6 && echo SUCCESS; tput sgr0; else tput setaf 1 && echo FAILURE; tput sgr0; fi; le code automatiquement se lier à elle.

Exemple :

$ sudo apt-cache policy firefox;if [[ $? == 0 ]]; then tput setaf 6 && echo SUCCESS; tput sgr0; else tput setaf 1 && echo FAILURE; tput sgr0; fi;
firefox:
  Installed: 24.0+build1-0ubuntu1
  Candidate: 24.0+build1-0ubuntu1
  Version table:
 *** 24.0+build1-0ubuntu1 0
        500 http://ubuntu.inode.at/ubuntu/ saucy/main amd64 Packages
        100 /var/lib/dpkg/status
SUCCESS

$ suda apt-get update;if [[ $? == 0 ]]; then tput setaf 6 && echo SUCCESS; tput sgr0; else tput setaf 1 && echo FAILURE; tput sgr0; fi;
No command 'suda' found, did you mean:
 Command 'sudo' from package 'sudo-ldap' (universe)
 Command 'sudo' from package 'sudo' (main)
 suda: command not found
FAILURE

enter image description here

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