Sveglia da riga di comando per Ubuntu

Aug 30 2020

raccomandazione software necessaria! Sto cercando una sveglia da utilizzare sulla mia macchina Ubuntu 20.04, con un'interfaccia a riga di comando che mi consenta di impostare allarmi dalla riga di comando. Questo perché nel mio flusso di lavoro spesso devo impostare molte sveglie al giorno, di solito solo circa un'ora dopo. Dal momento che lo faccio così spesso, è un problema fare sempre confusione con una GUI.

Ovviamente ho provato gli orologi GNOME, ma sembra che non abbia un'interfaccia a riga di comando.

Qualcuno può consigliare qualcosa come quello che sto cercando? Non troppo esigente, basta che faccia il suo lavoro.

Grazie in anticipo :)

Risposte

3 vanadium Aug 30 2020 at 16:42

Puoi usare il atcomando (non installato di default su Ubuntu 20.04). Ti consente di eseguire un comando in un momento specifico. Ad esempio, potresti avere una finestra di dialogo Zenity che funge da allarme.

BeastOfCaerbannog Aug 30 2020 at 20:31

È possibile utilizzare il sleepcomando, preinstallato su Ubuntu, per eseguire un comando dopo il periodo di tempo specificato come:

sleep NUMBER[SUFFIX] && command

Da man sleep:

DESCRIPTION
       Pause for NUMBER seconds.  SUFFIX may be 's' for seconds (the default), 'm'
       for minutes, 'h' for hours or 'd' for days.  Unlike most implementations
       that require NUMBER be an integer, here NUMBER may be an arbitrary floating
       point number.  Given two or more arguments, pause for the amount of time
       specified by the sum of their values.

Ad esempio, potresti eseguire:

sleep 3h 5m 25s && mpv file

per aprirsi filecon il mpvlettore multimediale dopo 3 ore, 5 minuti e 25 secondi.


sleepè perfettamente utilizzabile e semplice per eseguire comandi dopo un certo periodo di tempo, tuttavia atè meglio per eseguire un comando a (nessuna sorpresa qui) un tempo specificato.

Tuttavia, un comportamento simile può essere implementato con sleep. Ecco uno script di esempio:

#!/bin/bash
alarm_time=$1 command=$2

# convert alarm_time and current_time to seconds since 1970-01-01 00:00:00 UTC
# and calculate their difference
alarm_time=$(date -d "$alarm_time" +"%s")
current_time=$(date +"%s") diff=$(( $alarm_time - $current_time ))

# convert the time difference to hours
sleep_time=$(echo "scale=5; $diff/3600" | bc)

# run the command at the specified time
sleep "$sleep_time"h && $command

Dopo averlo salvato come alarm.sh(scegli il tuo nome preferito) e averlo reso eseguibile, puoi eseguirlo come:

/path/to/alarm.sh time command

Puoi aggiungere lo script al tuo percorso per un accesso più facile, se lo desideri, e puoi anche codificare il comando da eseguire sostituendolo $2con il comando che desideri eseguire.