GNU/Linux >> Belajar Linux >  >> Linux

Apa persamaan Linux dengan jeda DOS?

Ini bekerja untuk saya pada berbagai rasa Linux, di mana beberapa dari solusi lain tidak (termasuk yang paling populer di sini). Saya pikir itu lebih mudah dibaca juga...

echo Press enter to continue; read dummy;

Perhatikan bahwa variabel perlu diberikan sebagai argumen untuk read .


Saya sering menggunakan cara ini yang sangat singkat, dan seperti solusi @theunamedguy dan @Jim, tetapi dengan waktu tunggu dan mode senyap sebagai tambahan.

Saya terutama menyukai case terakhir dan menggunakannya di banyak skrip yang berjalan dalam satu lingkaran hingga pengguna menekan Enter .

Perintah

  • Masukkan solusi

    read -rsp $'Press enter to continue...\n'
    
  • Solusi melarikan diri (dengan -d $'\e')

    read -rsp $'Press escape to continue...\n' -d $'\e'
    
  • Solusi penting apa pun (dengan -n 1)

    read -rsp $'Press any key to continue...\n' -n 1 key
    # echo $key
    
  • Pertanyaan dengan pilihan yang dipilih sebelumnya (dengan -ei $'Y')

    read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;
    # echo $key
    
  • Solusi waktu habis (dengan -t 5)

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

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

Penjelasan

-r menentukan mode mentah, yang tidak mengizinkan karakter gabungan seperti "\" atau "^".

-s menentukan mode senyap, dan karena kita tidak memerlukan keluaran keyboard.

-p $'permintaan ' menentukan prompt, yang harus antara $' dan ' untuk membiarkan spasi dan karakter yang lolos. Hati-hati, Anda harus meletakkan di antara tanda kutip tunggal dengan simbol dolar untuk mendapatkan keuntungan dari karakter yang lolos, jika tidak, Anda dapat menggunakan tanda kutip sederhana.

-d $'\e ' menentukan escappe sebagai karakter pembatas, jadi sebagai karakter terakhir untuk entri saat ini, ini memungkinkan untuk menempatkan karakter apa pun tetapi hati-hati untuk menempatkan karakter yang dapat diketik pengguna.

-n 1 menetapkan bahwa itu hanya membutuhkan satu karakter.

-e menentukan mode readline.

-i $'Y ' menetapkan Y sebagai teks awal dalam mode readline.

-t 5 menentukan batas waktu 5 detik

kunci melayani jika Anda perlu mengetahui input, dalam kasus -n1, tombol yang telah ditekan.

$? berfungsi untuk mengetahui kode keluar dari program terakhir, untuk membaca, 142 jika terjadi batas waktu, 0 input yang benar. Taruh $? dalam variabel sesegera mungkin jika Anda perlu mengujinya setelah beberapa perintah, karena semua perintah akan menulis ulang $?


read melakukan ini:

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

-n1 menentukan bahwa itu hanya menunggu satu karakter. -r menempatkannya ke mode mentah, yang diperlukan karena jika tidak, jika Anda menekan sesuatu seperti garis miring terbalik, itu tidak akan terdaftar sampai Anda menekan tombol berikutnya. -p menentukan prompt, yang harus dikutip jika berisi spasi. key argumen hanya diperlukan jika Anda ingin mengetahui tombol mana yang mereka tekan, dalam hal ini Anda dapat mengaksesnya melalui $key .

Jika Anda menggunakan Bash, Anda juga dapat menentukan batas waktu dengan -t , yang menyebabkan read mengembalikan kegagalan saat tombol tidak ditekan. Jadi misalnya:

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 tanpa parameter apa pun hanya akan berlanjut jika Anda menekan enter. DOS pause perintah akan berlanjut jika Anda menekan tombol apa saja. Gunakan read –n1 jika Anda menginginkan perilaku ini.


Linux
  1. Apa yang setara dengan C++ untuk AutoResetEvent di Linux?

  2. Apa yang setara dengan Win32 API di linux?

  3. Apa yang setara dengan perintah updatedb Linux untuk Mac?

  1. Apa yang setara dengan perintah File Linux untuk windows?

  2. Apa yang setara dengan Linux dari Windows Startup?

  3. Apa yang setara dengan FreeBSD dari Linux update-rc.d?

  1. Apa yang membuat Linux menjadi OS yang berkelanjutan

  2. Apa yang membuat komunitas Linux istimewa?

  3. Linux vs. Unix:Apa bedanya?