Parfois, lorsque j'exécute des commandes, il n'affiche pas de sortie, donc je ne sais pas si elles ont fonctionné ou non. Est-il possible de faire en sorte que toutes les commandes aient un retour si elles ont fonctionné correctement ou non? Ou au minimum pour afficher l'ID de rétroaction qu'ils ont exécuté (correctement ou non)
command-line
rajlego
la source
la source
cryptsetup
peut par défaut ignorer certains messages d'erreur. C'est une bonne chose d'avoir$?
dans votrePS1
. L'étape suivante consiste à ajouter également l'heure actuelle, pour toujours connaître les horaires des commandes;)Réponses:
(Je pense que puisque vous postez dans Ask Ubuntu, nous pouvons supposer que vous parlez du shell par défaut, c'est-à-dire Bash .)
Il y a une très bonne réponse dans la question Stack Overflow Dans un script shell: les commandes shell echo lorsqu'elles sont exécutées (ce n'est pas seulement une solution spécifique à Ubuntu).
Ce que vous devez faire est d'utiliser la commande set pour activer verbose ou xtrace.
vous donnera une liste dont les paramètres actuels sont passés à sur ou hors .
ou la version longue:
tournera verbeux ON .
Je pense que ce que vous voulez, c'est en fait xtrace. Cela fera non seulement écho à chaque commande que vous exécuterez, mais étendra également les paramètres et vous donnera plus de commentaires. Donc, si je fais quelque chose d'aussi stupide que de taper 'hi' sur le terminal, j'obtiendrai l'écho de ce que j'ai tapé ainsi qu'un rapport / trace de ce que le shell a fait pour tenter d'exécuter la commande 'hi' (voir capture d'écran ci-dessous ):
Pour activer xtrace:
ou:
Pour désactiver ces paramètres, vous (contre-intuitivement) appelez les mêmes commandes sauf avec un symbole plus + au lieu d'un symbole tiret ou moins, donc, par exemple:
tournera verbeux OFF , de même:
tournera xtrace OFF .
Un guide détaillé sur les options du shell se trouve au Chapitre 33. Options, Advanced Bash-Scripting Guide .
la source
whoami >/dev/null
.Pour vérifier si une commande a fonctionné avec succès ou non, vous pouvez vérifier l' état de retour , donné par
$?
, de la commande précédente avec:Un état de retour
0
signifie que la commande s'est terminée avec succès, tandis qu'une sortie non nulle ( code d'erreur ) signifierait que certains problèmes ont été rencontrés ou qu'il y a une erreur et que la catégorie peut être connue à partir du code d'erreur. Les codes d'erreur Linux / C sont définis dans/usr/include/asm-generic/errno-base.h
et/usr/include/asm-generic/errno.h
.Toujours en bash, le
.bashrc
définit un aliasalert
qui peut être utilisé pour notifier avec le statut d'achèvement. Vous devez attacher l'alias avec la commande ou le combo de commandes comme ceci:Vous pouvez ajouter la ligne de code suivante à votre
~/.bashrc
fichier pour afficher l' état de retour de la dernière commande exécutée.(ouvrez le fichier
~/.bashrc
avec l'éditeur de texte de votre choix, et copiez la ligne ci-dessus, collez-la dans le fichier et enregistrez. Lancez une nouvelle instance du terminal, et vous devriez l'avoir en action. Ou à la place, vous pouvez définir une fonction et utiliser avecPS1
comme comme illustré ci-dessous.)une petite démo:
Je joue juste avec
PS1
:) ..un peu plus,(vous pouvez modifier la fonction pour la rendre plus sophistiquée, comme le fait @gronostaj dans son article.)
la source
PS1
. C'est celui que j'utilise, avec un numéro rouge en cas d'erreur, rien de plus si la dernière commande réussit:\[\033[01;41;37m\]${?#0}\[\033[00;01;36m\] \u@\h:\w\[\033[00m\]\$
~/.bashrc
fichier source ?^_^
succès, et un rougex_x
sur tout le reste.Vous pouvez modifier votre invite de commande pour afficher un signe de coche verte lorsque la commande précédente se termine avec 0 et X rouge sinon. Arch Linux Wiki a un joli morceau de code à ajouter à votre
bash.rc
:(J'ai désactivé le code d'erreur réelle parce que je ne l' aime pas, si vous souhaitez voir les codes exacts enlèverait juste
#
de cette ligne:#PS1="$White\$? "
)Voici à quoi ça ressemble:
la source
Oui , il est possible d'obtenir un retour pour chaque commande que vous avez exécutée sur le terminal. Cela fonctionne sur la base de
echo $?
laquelle retourne 0 pour une exécution réussie de la commande et toute autre valeur autre que 0 pour l'échec.Pour obtenir les commentaires de réussite ou d'échec, ajoutez la ligne ci-dessous au
~/.bashrc
fichier.Et puis le
~/.bashrc
fichier source pour le faire fonctionner.Explication:
Pour chaque commande exécutée sur le terminal, ce
;if [[ $? == 0 ]]; then tput setaf 6 && echo SUCCESS; tput sgr0; else tput setaf 1 && echo FAILURE; tput sgr0; fi;
code sera automatiquement lié à celui-ci.Exemple:
la source
bind 'RETURN: " && echo SUCCESS || echo FAILED \n"'
fera également de même, vous n'avez pas besoin de vérifier[[ $? == 0 ]]
explicitement.