GNU/Linux >> Znalost Linux >  >> Linux

Existuje způsob, jak zobrazit odpočítávání nebo stopky v terminálu?

Nejsem si jistý, proč potřebujete beep . Pokud chcete jen stopky, můžete to udělat takto:

while true; do echo -ne "`date`\r"; done

To vám ukáže ubíhající sekundy v reálném čase a můžete to zastavit pomocí Ctrl +C . Pokud potřebujete větší přesnost, můžete to použít k získání nanosekund:

while true; do echo -ne "`date +%H:%M:%S:%N`\r"; done

A konečně, pokud opravdu, ale opravdu chcete „formát stopek“, kde vše začíná na 0 a začíná růst, můžete udělat něco takového:

date1=`date +%s`; while true; do 
   echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done

Pro odpočítávací časovač (což není to, co vaše původní otázka požadovala) můžete udělat toto (podle toho změnit sekundy):

seconds=20; date1=$((`date +%s` + $seconds)); 
while [ "$date1" -ge `date +%s` ]; do 
  echo -ne "$(date -u --date @$(($date1 - `date +%s` )) +%H:%M:%S)\r"; 
done

Můžete je zkombinovat do jednoduchých příkazů pomocí funkcí bash (nebo jakéhokoli shellu, který preferujete). V bash přidejte tyto řádky do ~/.bashrc (sleep 0.1 způsobí, že systém mezi každým spuštěním počká 1/10 sekundy, abyste si nezaspali CPU):

function countdown(){
   date1=$((`date +%s` + $1)); 
   while [ "$date1" -ge `date +%s` ]; do 
     echo -ne "$(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r";
     sleep 0.1
   done
}
function stopwatch(){
  date1=`date +%s`; 
   while true; do 
    echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r"; 
    sleep 0.1
   done
}

Poté můžete spustit odpočítávání jedné minuty spuštěním:

countdown 60

Dvě hodiny můžete odpočítávat pomocí:

countdown $((2*60*60))

nebo celý den pomocí:

countdown $((24*60*60))

A spusťte stopky spuštěním:

stopwatch

Pokud se potřebujete vypořádat se dny i hodinami, minutami a sekundami, můžete udělat něco takového:

countdown(){
    date1=$((`date +%s` + $1));
    while [ "$date1" -ge `date +%s` ]; do 
    ## Is this more than 24h away?
    days=$(($(($(( $date1 - $(date +%s))) * 1 ))/86400))
    echo -ne "$days day(s) and $(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r"; 
    sleep 0.1
    done
}
stopwatch(){
    date1=`date +%s`; 
    while true; do 
    days=$(( $(($(date +%s) - date1)) / 86400 ))
    echo -ne "$days day(s) and $(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
    sleep 0.1
    done
}

Všimněte si, že stopwatch funkce nebyla testována několik dní, protože jsem na ni nechtěl čekat 24 hodin. Mělo by to fungovat, ale pokud ne, dejte mi prosím vědět.


Můj oblíbený způsob je:

Start:

time cat

Stop:

ctrl+c

Jak níže poznamenal @wjandrea, má běžet další verze:

time read

a stiskněte Enter zastavit


Hledal jsem to samé a nakonec jsem napsal něco propracovanějšího v Pythonu:

Tím získáte jednoduché 10sekundové odpočítávání:

sudo pip install termdown
termdown 10

Zdroj:https://github.com/trehn/termdown


Linux
  1. Existuje způsob, jak „uniq“ podle sloupce?

  2. Existuje způsob, jak zkontrolovat aktuální rpath v Linuxu?

  3. Existuje nějaký způsob, jak přejmenovat projekt Cargo?

  1. Příkaz 'ls -d' nezobrazuje adresáře. Existuje způsob, jak získat 'ls', aby zobrazoval pouze adresáře namísto souborů a adresářů?

  2. Existuje způsob, jak spustit vim v režimu pouze pro čtení

  3. Existuje způsob, jak zkopírovat text v htop?

  1. Existuje způsob, jak převést z UTF8 na ISO-8859-1?

  2. Existuje způsob, jak oříznout soubor NETCDF?

  3. Existuje způsob, jak restartovat špatné bloky?