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).
Réponses
Trop de publicités?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 :
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