GNU/Linux >> Znalost Linux >  >> Linux

Co je linuxový ekvivalent pozastavení DOSu?

Fungovalo to pro mě na několika variantách Linuxu, kde některá z těchto jiných řešení ne (včetně těch nejoblíbenějších zde). Myslím, že je to také čitelnější...

echo Press enter to continue; read dummy;

Všimněte si, že proměnnou je třeba zadat jako argument pro read .


Hodně používám tyto způsoby, které jsou velmi krátké a jsou jako řešení @theunamedguy a @Jim, ale navíc s časovým limitem a tichým režimem.

Obzvláště miluji poslední případ a používám ho ve spoustě skriptů, které běží ve smyčce, dokud uživatel nestiskne Enter .

Příkazy

  • Zadejte řešení

    read -rsp $'Press enter to continue...\n'
    
  • Únikové řešení (s -d $'\e')

    read -rsp $'Press escape to continue...\n' -d $'\e'
    
  • Jakékoli klíčové řešení (s -n 1)

    read -rsp $'Press any key to continue...\n' -n 1 key
    # echo $key
    
  • Otázka s předvybranou možností (s -ei $'Y')

    read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;
    # echo $key
    
  • Řešení časového limitu (s -t 5)

    read -rsp $'Press any key or wait 5 seconds to continue...\n' -n 1 -t 5;
    
  • Alias ​​s vylepšeným režimem spánku

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

Vysvětlení

-r specifikuje nezpracovaný režim, který nepovoluje kombinované znaky jako "\" nebo "^".

-s určuje tichý režim, a protože nepotřebujeme výstup z klávesnice.

-p $'výzva ' určuje výzvu, která musí být mezi $' a ', aby byly ponechány mezery a znaky s escapováním. Buďte opatrní, musíte vložit mezi jednoduché uvozovky se symbolem dolaru, abyste využili uvozovky, jinak můžete použít jednoduché uvozovky.

-d $'\e ' specifikuje escappe jako oddělovací znak, takže jako konečný znak pro aktuální položku je možné vložit jakýkoli znak, ale buďte opatrní, abyste vložili znak, který může uživatel zadat.

-n 1 určuje, že potřebuje pouze jeden znak.

-e určuje režim readline.

-i $'Y ' určuje Y jako počáteční text v režimu čtení řádku.

-t 5 určuje časový limit 5 sekund

klíč slouží v případě, že potřebujete znát vstup, v případě -n1 klávesu, která byla stisknuta.

$? slouží ke zjištění výstupního kódu posledního programu, pro čtení, 142 v případě časového limitu, 0 správný vstup. Vložit $? v proměnné co nejdříve, pokud ji potřebujete otestovat po některých příkazech, protože všechny příkazy by přepsaly $?


read dělá toto:

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

-n1 určuje, že čeká pouze na jeden znak. -r přepne jej do raw režimu, což je nezbytné, protože jinak, pokud stisknete něco jako zpětné lomítko, nezaregistruje se, dokud nestisknete další klávesu. -p určuje výzvu, která musí být uvedena v uvozovkách, pokud obsahuje mezery. key argument je nutný pouze v případě, že chcete vědět, kterou klávesu stiskli, v takovém případě k němu můžete přistupovat přes $key .

Pokud používáte Bash, můžete také určit časový limit pomocí -t , což způsobí, že čtení vrátí selhání, když není stisknuta klávesa. Takže například:

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 bez jakýchkoliv parametrů bude pokračovat pouze pokud stisknete enter. DOS pause příkaz bude pokračovat, pokud stisknete libovolnou klávesu. Použijte read –n1 pokud chcete toto chování.


Linux
  1. Jaký by byl ekvivalent Win32 API v linuxu?

  2. Jaký je ekvivalent linuxového příkazu sudo fdisk -l v MacOS?

  3. Jaký je linuxový ekvivalent Windows Startup?

  1. Čím je linuxová komunita výjimečná?

  2. Co je FreeBSD ekvivalentem Linux update-rc.d?

  3. Jaký je příkaz pro kopírování, čtení a odstraňování souboru v linuxu

  1. Co dělá Linux udržitelným OS

  2. Linux vs. Unix:Jaký je rozdíl?

  3. Jaký je ekvivalent getch() &getche() v Linuxu?