GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è l'equivalente Linux della pausa DOS?

Questo ha funzionato per me su più versioni di Linux, dove alcune di queste altre soluzioni non funzionavano (comprese quelle più popolari qui). Penso che sia anche più leggibile...

echo Press enter to continue; read dummy;

Nota che una variabile deve essere fornita come argomento a read .


Uso molto questi modi che sono molto brevi e sono come le soluzioni @theunamedguy e @Jim, ma con timeout e modalità silenziosa in aggiunta.

Mi piace particolarmente l'ultimo caso e lo uso in molti script che vengono eseguiti in loop finché l'utente non preme Invio .

Comandi

  • Inserisci soluzione

    read -rsp $'Press enter to continue...\n'
    
  • Soluzione di fuga (con -d $'\e')

    read -rsp $'Press escape to continue...\n' -d $'\e'
    
  • Qualsiasi soluzione chiave (con -n 1)

    read -rsp $'Press any key to continue...\n' -n 1 key
    # echo $key
    
  • Domanda con scelta preselezionata (con -ei $'Y')

    read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;
    # echo $key
    
  • Soluzione timeout (con -t 5)

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

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

Spiegazione

-r specifica la modalità raw, che non consente caratteri combinati come "\" o "^".

-s specifica la modalità silenziosa e perché non abbiamo bisogno dell'output della tastiera.

-p $'richiesta ' specifica il prompt, che deve essere compreso tra $' e ' per consentire spazi e caratteri di escape. Fai attenzione, devi mettere tra virgolette singole con il simbolo del dollaro per beneficiare dei caratteri di escape, altrimenti puoi usare le virgolette semplici.

-d $'\e ' specifica l'escappe come carattere delimitatore, quindi come carattere finale per l'immissione corrente, è possibile inserire qualsiasi carattere ma fai attenzione a inserire un carattere che l'utente può digitare.

-n 1 specifica che necessita solo di un singolo carattere.

-e specifica la modalità readline.

-i $'Y ' specifica Y come testo iniziale in modalità readline.

-t 5 specifica un timeout di 5 secondi

chiave serve nel caso tu abbia bisogno di conoscere l'input, nel caso -n1, il tasto che è stato premuto.

$? serve per conoscere il codice di uscita dell'ultimo programma, per read, 142 in caso di timeout, 0 input corretto. Metti $? in una variabile il prima possibile se hai bisogno di testarla dopo alcuni comandi, perché tutti i comandi riscriverebbero $?


read fa questo:

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

Il -n1 specifica che attende solo un singolo carattere. Il -r lo mette in modalità raw, che è necessaria perché altrimenti, se premi qualcosa come una barra rovesciata, non si registra fino a quando non premi il tasto successivo. Il -p specifica il prompt, che deve essere quotato se contiene spazi. Il key argomento è necessario solo se vuoi sapere quale tasto hanno premuto, nel qual caso puoi accedervi tramite $key .

Se stai usando Bash, puoi anche specificare un timeout con -t , che fa in modo che read restituisca un errore quando non viene premuto un tasto. Quindi, ad esempio:

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 senza alcun parametro continuerà solo se si preme invio. Il DOS pause comando continuerà se si preme un tasto qualsiasi. Usa read –n1 se vuoi questo comportamento.


Linux
  1. Qual è l'equivalente di getch() e getche() in Linux?

  2. Qual è l'equivalente C++ per AutoResetEvent in Linux?

  3. Quale sarebbe l'equivalente dell'API Win32 in Linux?

  4. Qual è l'equivalente Unix/Linux dell'I/O registrato?

  5. Qual è l'equivalente del comando Linux sudo fdisk -l in MacOS?

Cosa rende Linux il sistema operativo sostenibile

Cosa rende speciale la comunità Linux?

Che cos'è la shell in Linux?

I 10 migliori libri Linux da leggere nel 2019

Qual è il comando kill in Linux?

Che cos'è la vulnerabilità di Logjam?