GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist das Linux-Äquivalent zur DOS-Pause?

Dies funktionierte für mich auf mehreren Linux-Varianten, wo einige dieser anderen Lösungen dies nicht taten (einschließlich der beliebtesten hier). Ich denke, es ist auch besser lesbar...

echo Press enter to continue; read dummy;

Beachten Sie, dass eine Variable als Argument für read bereitgestellt werden muss .


Ich verwende diese Wege oft, die sehr kurz sind, und sie sind wie @theunamedguy- und @Jim-Lösungen, aber zusätzlich mit Timeout und Silent-Modus.

Ich liebe besonders den letzten Fall und verwende ihn in vielen Skripten, die in einer Schleife laufen, bis der Benutzer Enter drückt .

Befehle

  • Lösung eingeben

    read -rsp $'Press enter to continue...\n'
    
  • Escape-Lösung (mit -d $'\e')

    read -rsp $'Press escape to continue...\n' -d $'\e'
    
  • Jede Schlüssellösung (mit -n 1)

    read -rsp $'Press any key to continue...\n' -n 1 key
    # echo $key
    
  • Frage mit Vorauswahl (mit -ei $'Y')

    read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;
    # echo $key
    
  • Timeout-Lösung (mit -t 5)

    read -rsp $'Press any key or wait 5 seconds to continue...\n' -n 1 -t 5;
    
  • Sleep-erweiterter Alias

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

Erklärung

-r gibt den Raw-Modus an, der keine kombinierten Zeichen wie "\" oder "^" zulässt.

-s den stillen Modus angibt, und weil wir keine Tastaturausgabe benötigen.

-p $'Eingabeaufforderung ' gibt die Eingabeaufforderung an, die zwischen $' und ' liegen muss, um Leerzeichen und Escape-Zeichen zuzulassen. Seien Sie vorsichtig, Sie müssen einfache Anführungszeichen mit dem Dollarsymbol setzen, um Escape-Zeichen zu nutzen, andernfalls können Sie einfache Anführungszeichen verwenden.

-d $'\e ' gibt escappe als Trennzeichen an, so dass als letztes Zeichen für den aktuellen Eintrag jedes beliebige Zeichen verwendet werden kann, aber achten Sie darauf, ein Zeichen zu verwenden, das der Benutzer eingeben kann.

-n 1 gibt an, dass nur ein einziges Zeichen benötigt wird.

-e gibt den Readline-Modus an.

-i $'Y ' gibt Y als Anfangstext im Readline-Modus an.

-t 5 spezifiziert ein Timeout von 5 Sekunden

Schlüssel dienen, falls Sie die Eingabe kennen müssen, im Fall von -n1 die Taste, die gedrückt wurde.

$? dienen dazu, den Exit-Code des letzten Programms zu kennen, zum Lesen, 142 bei Timeout, 0 richtige Eingabe. $ setzen? so schnell wie möglich in eine Variable, wenn Sie es nach einigen Befehlen testen müssen, da alle Befehle $?

neu schreiben würden

read tut dies:

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

Die -n1 gibt an, dass nur auf ein einzelnes Zeichen gewartet wird. Die -r versetzt es in den Raw-Modus, was notwendig ist, da es sonst nicht registriert wird, wenn Sie so etwas wie einen Backslash drücken, bis Sie die nächste Taste drücken. Die -p gibt die Eingabeaufforderung an, die in Anführungszeichen gesetzt werden muss, wenn sie Leerzeichen enthält. Die key Das Argument ist nur erforderlich, wenn Sie wissen möchten, welche Taste sie gedrückt haben. In diesem Fall können Sie über $key darauf zugreifen .

Wenn Sie Bash verwenden, können Sie auch mit -t ein Timeout angeben , was dazu führt, dass read einen Fehler zurückgibt, wenn eine Taste nicht gedrückt wird. Also zum Beispiel:

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 ohne Parameter wird nur fortgesetzt, wenn Sie die Eingabetaste drücken. Das DOS pause Der Befehl wird fortgesetzt, wenn Sie eine beliebige Taste drücken. Verwenden Sie read –n1 wenn Sie dieses Verhalten wünschen.


Linux
  1. Was Linux zum nachhaltigen Betriebssystem macht

  2. Was ist das C++-Äquivalent für AutoResetEvent unter Linux?

  3. Was wäre das Äquivalent der Win32-API in Linux?

  4. Was entspricht dem Linux-Befehl sudo fdisk -l in MacOS?

  5. Was ist das Linux-Äquivalent zum Windows-Startup?

Was ist die Shell unter Linux?

Die 10 besten Linux-Bücher zum Lesen im Jahr 2019

Was ist der Kill-Befehl in Linux?

Was ist die Logjam-Schwachstelle?

Was ist das FreeBSD-Äquivalent von Linux update-rc.d?

Wie lautet der Befehl zum Kopieren, Lesen und Entfernen von Dateien unter Linux