Прием должен использовать тестовую команду test
или эквивалент [ ... ]
:
while [ "$(du -m f|cut -f1)" -lt 32 ]
do
./gcd-rand.py 10000 10000 > "$f"
done
Посмотрите help test
для получения дополнительной информации.
Примечание:
test
или [
команда является встроенным ударом. Справочная информация может быть получена в ударе через help test
или help [
. man test
относится к test
команда, которая используется, если оболочка имеет не такое встроенное или вызывается явно как /usr/bin/test
.
Для управления этим можно использовать функциональность, встроенную в большинство медиаплееров; она эффективно работает с xautolock
и это шкафчики.
mpv и mplayer имеют опции экранной заставки:
--stop-screensaver, --no-stop-screensaver Turns off the screensaver (or screen blanker and similar mechanisms) at startup and turns it on again on exit (default: yes). The screensaver is always re-enabled when the player is paused. This is not supported on all video outputs or platforms. Sometimes it is implemented, but does not work (happens often on GNOME). You might be able to to work this around using --heartbeat-cmd instead.
Вы можете включить эту функцию, включив строку в свой ~/.mpv/config
:
stop-screensaver=yes
и наслаждаться бесперебойным воспроизведением видео.
Если вы используете медиаплеер, который не имеет этой базовой функциональности, вы можете использовать простую обертку для достижения того же эффекта:
#!/usr/bin/env bash
# wrapper to prevent screen blanking when files are played from ~/Videos
usage() {
printf "%s\n" "Usage: ${0##*/} /path/to/file"
exit 1
}
case $# in
1) if [[ $1 =~ Videos ]]; then
xset dpms 0 0 0
xautolock -disable
vlc "$1"
xautolock -enable
xset dpms 900 900 900
else
usage
fi
;;
*) usage
;;
esac
Попробуйте это:
$ awk -v SUBSEP=" " '
{a[$1,$2]++;b[$1,$2] = (b[$1,$2] && $3 > b[$1,$2]) ? b[$1,$2] : $3}
END {
for (i in a) {
print i,a[i],b[i];
}
}
' file
A B 2 1990
A C 2 2001
A D 2 2001
B C 1 2013
Даже короче, если вы можете изменить порядок полей:
$ sort -n -k1 -k2 -k3 file | uniq -c -w 3
2 A B 1990
2 A C 2001
2 A D 2001
1 B C 2013
-121--65022- Хотя я не смог выяснить проблему с этим решением, я нашел альтернативный, который, кажется, работает: с помощью equalizer PulseAudio, где каждый канал может быть настроен отдельно.
-121--187240- Быстрая проверка исходного кода текущей версии, xautolock 2,2
, показывает, что он не поддерживает эту функцию, хотя будет не слишком сложно реализовать его самостоятельно, если вы знаете немного о C
и как писать программы X
.
Причина, вероятно, в следующем: когда вы хотите знать статус xautolock
, вы также знаете, в каком статусе вы хотели бы, чтобы он был. Итак, просто выдайте xautolock -disable
, если вы хотите, чтобы он был выключен, и xautolock -enable
в обратном случае. Обратите внимание, что это не повлияет на все остальные настройки xautolock
.
Отслеживание состояния самостоятельно, как вы предлагаете, также возможно, но, вероятно, несколько ненадежно и подвержено ошибкам.
Мне удалось сделать то, о чем просил OP, и все это содержится в моей конфигурации i3, привязанной к ярлыку (см. ниже). Итак, я блокирую экран с помощью Mod+o и переключаю автоматическую блокировку экрана с помощью Mod+Shift+o, где появляется уведомление, которое говорит мне либо "LOCK on", либо "LOCK OFF", в зависимости от "статуса" xautolock. Я использовал xautlock -exit
, чтобы выяснить, запущен он или нет, без необходимости управлять статусом в дополнительном файле.
Сценарий, который сам по себе заботится о переключении статуса, выглядит так
if xautolock -exit
then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null
else
notify-send -u normal -t 100 -- 'LOCK on'
xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 100 -- 'LOCKING screen ...'"
fi
В зависимости от того, где вы вызываете этот сценарий, вы должны убедиться, что xautolock -time ...
работает в фоновом режиме (например, добавив &
).
Из моего .i3/config
файла:
exec --no-startup-id xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 10000 -- 'LOCKING screen'"
bindsym $mod+o exec --no-startup-id xautolock -locknow
bindsym $mod+Shift+o exec --no-startup-id "if xautolock -exit; then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null; else notify-send -u normal -t 100 -- 'LOCK on'; xautolock -time 2 -locker 'slock' -notify 10 -notifier \\"notify-send -u normal -t 100 -- 'LOCKING screen ...'\\"; fi"