• [^] # Re: ASCII

    Posté par . En réponse au journal Bash et les raccourcis clavier. Évalué à 5.

    Dans certains cas, il peut être intéressant de pouvoir passer un caractère de contrôle à une commande bash. Une solution consiste à utiliser une string autorisant les séquence d’échappement. Par exemple, pour insérer le caractère #1

    (bash) echo -n $'===001円===' | hexdump -C
    00000000 3d 3d 3d 01 3d 3d 3d |===.===|
    00000007 
    

    Une alternative consiste à utiliser CTRL-V suivit du caractère de contrôle désiré. Pour insérer le charactère #1 (A), on utilisera donc CTRL-V CTRL-A. La commande doit alors ressembler à ceci:

    # dans la commande suivante le ^A est obtenu avec CTRL-V CTRL-A
    (bash) echo -n $'===^A===' | hexdump -C
    00000000 3d 3d 3d 01 3d 3d 3d |===.===|
    00000007 
    

    CTRL-V permet également d'insérer ESC ([) , tab, ... par exemple pour emettre des séquences VT100

    # dans la ligne ci-dessous, chaque ^[ est obtenu avec CTRL-V ESC 
    # Attention: ^[[ est donc obtenu avec CTRL-V ESC [ 
    (bash) echo "j'aime le ^[[31mrouge^[[0m et le ^[[34mbleu^[[0m."
    j'aime le rouge et le bleu.
    

    CTRL-V permet aussi d'obtenir la séquence de caractère émise par les touches spéciale telles que Fn, Insert, Left, Right, ...

    # dans la ligne ci-dessous, le ^[OS est obtenu avec CTRL-V F4 
    (bash) bind '"^[OS": "salut"'
    # La touche F4 produit maintenant 'salut' 
    

    Pour les utilisateurs d'Emacs, le raccourcis clavier CTRL-Q permet de faire la même chose que CTRL-V sous bash.