GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est l'équivalent Linux de la pause DOS ?

Cela a fonctionné pour moi sur plusieurs versions de Linux, là où certaines de ces autres solutions ne fonctionnaient pas (y compris les plus populaires ici). Je pense que c'est plus lisible aussi...

echo Press enter to continue; read dummy;

Notez qu'une variable doit être fournie en tant qu'argument de read .


J'utilise beaucoup ces moyens qui sont très courts, et ils sont comme les solutions @theunamedguy et @Jim, mais avec le timeout et le mode silencieux en plus.

J'aime particulièrement le dernier cas et je l'utilise dans de nombreux scripts qui s'exécutent en boucle jusqu'à ce que l'utilisateur appuie sur Entrée .

Commandes

  • Saisir la solution

    read -rsp $'Press enter to continue...\n'
    
  • Solution d'évasion (avec -d $'\e')

    read -rsp $'Press escape to continue...\n' -d $'\e'
    
  • Toute solution clé (avec -n 1)

    read -rsp $'Press any key to continue...\n' -n 1 key
    # echo $key
    
  • Question avec choix présélectionné (avec -ei $'Y')

    read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;
    # echo $key
    
  • Solution de dépassement de délai (avec -t 5)

    read -rsp $'Press any key or wait 5 seconds to continue...\n' -n 1 -t 5;
    
  • Alias ​​de sommeil amélioré

    read -rst 0.5; timeout=$?
    # echo $timeout
    

Explication

-r spécifie le mode brut, qui n'autorise pas les caractères combinés comme "\" ou "^".

-s spécifie le mode silencieux, et parce que nous n'avons pas besoin de la sortie du clavier.

-p $'invite ' spécifie l'invite, qui doit être comprise entre $' et ' pour laisser les espaces et les caractères d'échappement. Attention, vous devez mettre entre guillemets simples avec le symbole dollars pour favoriser les caractères échappés, sinon vous pouvez utiliser des guillemets simples.

-d $'\e ' spécifie escappe comme caractère délimiteur, donc comme caractère final pour l'entrée en cours, il est possible de mettre n'importe quel caractère mais attention à mettre un caractère que l'utilisateur peut taper.

-n 1 spécifie qu'il n'a besoin que d'un seul caractère.

-e spécifie le mode readline.

-i $'Y ' spécifie Y comme texte initial en mode readline.

-t 5 spécifie un délai d'attente de 5 secondes

clé servir au cas où vous auriez besoin de connaître l'entrée, dans le cas -n1, la touche qui a été enfoncée.

$ ? servent à connaître le code de sortie du dernier programme, en lecture, 142 en cas de timeout, 0 entrée correcte. Mettre $ ? dans une variable dès que possible si vous avez besoin de la tester après quelques commandes, car toutes les commandes réécriraient $?


read fait ceci :

[email protected]:~$ read -n1 -r -p "Press any key to continue..." key
[...]
[email protected]:~$ 

Le -n1 spécifie qu'il n'attend qu'un seul caractère. Le -r le met en mode brut, ce qui est nécessaire car sinon, si vous appuyez sur quelque chose comme une barre oblique inverse, il ne s'enregistrera pas tant que vous n'appuierez pas sur la touche suivante. Le -p spécifie l'invite, qui doit être entre guillemets si elle contient des espaces. Le key l'argument n'est nécessaire que si vous voulez savoir sur quelle touche ils ont appuyé, auquel cas vous pouvez y accéder via $key .

Si vous utilisez Bash, vous pouvez également spécifier un délai d'attente avec -t , ce qui fait que read renvoie un échec lorsqu'une touche n'est pas enfoncée. Ainsi, par exemple :

read -t5 -n1 -r -p 'Press any key in the next five seconds...' key
if [ "$?" -eq "0" ]; then
    echo 'A key was pressed.'
else
    echo 'No key was pressed.'
fi

read sans aucun paramètre ne continuera que si vous appuyez sur Entrée. Le DOS pause La commande continuera si vous appuyez sur n'importe quelle touche. Utilisez read –n1 si vous voulez ce comportement.


Linux
  1. Quel est l'équivalent de getch() &getche() sous Linux ?

  2. Quel est l'équivalent C++ d'AutoResetEvent sous Linux ?

  3. Quel serait l'équivalent de l'API Win32 sous Linux ?

  4. Quel est l'équivalent de la commande updatedb de Linux pour Mac ?

  5. Quel est l'équivalent de la commande Linux File pour Windows ?

Qu'est-ce que le Shell sous Linux ?

Les 10 meilleurs livres Linux à lire en 2019

Qu'est-ce que la commande kill sous Linux ?

Qu'est-ce que la vulnérabilité Logjam ?

Quel est l'équivalent du ~ (tilde) de Linux dans Windows ?

Quel est l'équivalent Linux du démarrage de Windows ?