C'est vraisemblablement pas une commande bien que avec mon zsh configuré pour que le mot passe en vert si la commande existe (même principe que avec fish); ":" est en vert.
Par contre man : ou : -h --help ne fonctionne pas :)
Il s’agit d’une commande interne, et seule les commandes externes ont une page dédiée (dit comme ça, ça peut surprendre mais POSIX demande que certaines commandes internes soient disponibles en externe aussi, cas de true et test par exemple.) Avec Bash par exemple tu pourrais avoir...
$help :
:: : No effect; the command does nothing. A zero exit code is returned.
...sinon faut passer par man $(basename $SHELL) puis rechercher dans la page :)
Édition : C’est aussi listé dans man builtins où on indique aussi ce qui doit exister aussi en commande externe et la compatibilité avec csh.
Il s’agit d’une commande historique (i.e. les premiers shell Bourne) bien avant l’apparition des commandes true et false, ce qui fait qu’on les retrouve dans certaines constructions de dinosaures...
if ma_commande;then :;elseecho"échec";fi
...où on pourrait utiliser les nouvelles commandes plus lisibles.
if ! ma_commande;thenecho"échec";fi
C’est encore utile dans certains rares cas comme l’exemple que tu cites, ou les blocs de commentaires (dans le shell on ne sait normalement faire que des commentaires avec le croisillon, mais voici)
: << 'SKIP'bloc de code inactifSKIP
Du coup, pour en revenir à l’exemple initial, c’est une erreur si on n’indique pas une affectation ou une commande à exécuter (c’est OK si ta variable après évaluation donne une commande...)
$echo$SHELL/bin/bash$$SHELL -c pwd/home/me$$HOME-bash: /home/me: is a directory
Et dans le cas présent, le "no-op" remplace la commande (j’utilise echo à la place en phase de débogage) et on n’a donc pas d’erreur.
: ${vartest:=DEFAULT}
se traduirait (façon plus moderne, donc moins dinosaure/exotérique)
if[ -z "$vartest"]thenvartest="DEFAULT"fi
...ou encore simplement
vartest=${vartest:=DEFAULT}
"It is seldom that liberty of any kind is lost all at once." ― David Hume
# 3è point
Posté par Gil Cot ✔ (site web personnel, Mastodon) . En réponse au message Shell Parameter Expansion. Évalué à 3. Dernière modification le 20 mars 2024 à 13:15.
Il s’agit d’une commande interne, et seule les commandes externes ont une page dédiée (dit comme ça, ça peut surprendre mais POSIX demande que certaines commandes internes soient disponibles en externe aussi, cas de
trueettestpar exemple.) Avec Bash par exemple tu pourrais avoir......sinon faut passer par
man $(basename $SHELL)puis rechercher dans la page :)Édition : C’est aussi listé dans
man builtinsoù on indique aussi ce qui doit exister aussi en commande externe et la compatibilité avec csh.Il s’agit d’une commande historique (i.e. les premiers shell Bourne) bien avant l’apparition des commandes
trueetfalse, ce qui fait qu’on les retrouve dans certaines constructions de dinosaures......où on pourrait utiliser les nouvelles commandes plus lisibles.
C’est encore utile dans certains rares cas comme l’exemple que tu cites, ou les blocs de commentaires (dans le shell on ne sait normalement faire que des commentaires avec le croisillon, mais voici)
Du coup, pour en revenir à l’exemple initial, c’est une erreur si on n’indique pas une affectation ou une commande à exécuter (c’est OK si ta variable après évaluation donne une commande...)
Et dans le cas présent, le "no-op" remplace la commande (j’utilise
echoà la place en phase de débogage) et on n’a donc pas d’erreur.se traduirait (façon plus moderne, donc moins dinosaure/exotérique)
...ou encore simplement
"It is seldom that liberty of any kind is lost all at once." ― David Hume