GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es el equivalente de Linux a la pausa de DOS?

Esto funcionó para mí en múltiples sabores de Linux, donde algunas de estas otras soluciones no lo hicieron (incluidas las más populares aquí). Creo que también es más legible...

echo Press enter to continue; read dummy;

Tenga en cuenta que se debe proporcionar una variable como argumento para read .


Uso mucho estas formas que son muy cortas, y son como las soluciones de @theunamedguy y @Jim, pero además con tiempo de espera y modo silencioso.

Me encanta especialmente el último caso y lo uso en muchos scripts que se ejecutan en bucle hasta que el usuario presiona Enter .

Comandos

  • Ingrese la solución

    read -rsp $'Press enter to continue...\n'
    
  • Solución de escape (con -d $'\e')

    read -rsp $'Press escape to continue...\n' -d $'\e'
    
  • Cualquier solución clave (con -n 1)

    read -rsp $'Press any key to continue...\n' -n 1 key
    # echo $key
    
  • Pregunta con opción preseleccionada (con -ei $'Y')

    read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;
    # echo $key
    
  • Solución de tiempo de espera (con -t 5)

    read -rsp $'Press any key or wait 5 seconds to continue...\n' -n 1 -t 5;
    
  • Alias ​​de sueño mejorado

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

Explicación

-r especifica el modo sin formato, que no permite combinar caracteres como "\" o "^".

-s especifica el modo silencioso y porque no necesitamos salida de teclado.

-p $'solicitud ' especifica el aviso, que debe estar entre $' y ' para dejar espacios y caracteres de escape. Tenga cuidado, debe poner entre comillas simples el símbolo de dólares para beneficiar a los caracteres escapados, de lo contrario puede usar comillas simples.

-d $'\e ' especifica escape como carácter delimitador, por lo que como carácter final para la entrada actual, es posible colocar cualquier carácter, pero tenga cuidado de colocar un carácter que el usuario pueda escribir.

-n 1 especifica que solo necesita un carácter.

-e especifica el modo de línea de lectura.

-i $'Y ' especifica Y como texto inicial en modo readline.

-t 5 especifica un tiempo de espera de 5 segundos

clave sirve en caso de que necesite saber la entrada, en caso -n1, la tecla que se ha presionado.

$? sirven para saber el codigo de salida del ultimo programa, para lectura, 142 en caso de timeout, 0 entrada correcta. poner $? en una variable lo antes posible si necesita probarla después de algunos comandos, porque todos los comandos reescribirían $?


read hace esto:

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

El -n1 especifica que solo espera un solo carácter. El -r lo pone en modo sin procesar, lo cual es necesario porque, de lo contrario, si presiona algo como una barra invertida, no se registra hasta que presiona la siguiente tecla. El -p especifica el aviso, que debe estar entre comillas si contiene espacios. El key El argumento solo es necesario si desea saber qué tecla presionaron, en cuyo caso puede acceder a él a través de $key .

Si está utilizando Bash, también puede especificar un tiempo de espera con -t , lo que hace que read devuelva un error cuando no se presiona una tecla. Entonces, por ejemplo:

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 sin ningún parámetro solo continuará si presiona enter. El DOS pause El comando continuará si presiona cualquier tecla. Utilice read –n1 si quieres este comportamiento.


Linux
  1. ¿Cuál es el equivalente a getch() y getche() en Linux?

  2. ¿Cuál es el equivalente Unix/Linux de E/S registrada?

  3. ¿Cuál es el equivalente del comando updatedb de Linux para Mac?

  4. ¿Cuál es el equivalente al comando de archivo de Linux para Windows?

  5. ¿Cuál es el equivalente de Active Directory en Linux?

¿Qué hace que Linux sea el sistema operativo sostenible?

¿Qué es el Shell en Linux?

Los 10 mejores libros de Linux para leer en 2019

¿Qué es el comando matar en Linux?

¿Qué es la vulnerabilidad de Logjam?

¿Cuál es el equivalente de FreeBSD de Linux update-rc.d?