Вот как я сделал это в моем Arch linux с Gnome как DE:
#!/bin/bash
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
STATUS=$(cat /sys/class/power_supply/ACAD/online)
if [ $battery_level -le 15 ] && [ $STATUS == "0" ]
then
/usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
fi
Слово ACAD
в STATUS = $ (cat / sys / class / power_supply / ACAD / online)
будет меняться в зависимости от производителя портативного компьютера. Он используется, чтобы определить, подключен ли ваш колен к адаптеру переменного тока или нет. Вот как выглядит мой crontab:
* * * * * bash <path to script>
Не забудьте сделать скрипт исполняемым с помощью chmod u + x <путь к скрипту>
Если кто-то хочет разделить папки и файлы, как это делает Windows, вы можете сделать это:
ls -d */ -1 | sort -V
ls -p | grep -v / | sort -V
Сортировка по версии GNU sort (-V
), по-видимому, дает такой результат:
~ printf "%s\n" "Ie5" "Ie6" "Ie4 01" 'Ie4!01' "Ie4_01" "Ie4_128" "Ie401sp2" "Ie501sp2" |
sort -V
Ie4 01
Ie4!01
Ie4_01
Ie4_128
Ie5
Ie6
Ie401sp2
Ie501sp2
Если вас не интересует порядок следования специальных символов,тогда zsh
квалификатор глобуса числовой сортировки становится близким:
$ touch "Ie5" "Ie6" "Ie4 01" 'Ie4!01' "Ie4_01" "Ie4_128" "Ie401sp2" "Ie501sp2"
$ mkdir Foo Quux Ie7bar
$ print -l *(n/) *(n^/)
Foo
Ie7bar
Quux
Ie4 01
Ie4_01
Ie4!01
Ie4_128
Ie5
Ie6
Ie401sp2
Ie501sp2
$ ls -1df *(n/) *(n^/)
Foo
Ie7bar
Quux
Ie4 01
Ie4_01
Ie4!01
Ie4_128
Ie5
Ie6
Ie401sp2
Ie501sp2
Флаги для ls
::
-1
)--просто для удобства просмотра -d
)-f
или-U
)Квалификаторы zsh glob говорят:
*(n/)
-расширить список каталогов /
, упорядоченных по номерам *(n^/)
-расширить список элементов, которые не являются^
каталогами, упорядоченными по номерам Я упомянул решение zsh только потому, что вы можете легче манипулировать результатами, не беспокоясь о том, чтобы заключать имена файлов в кавычки или ограничивать их нулевыми значениями. Например:
$ mine=( *(/n) *(n^/) )
$ for file in "${mine[@]}"; do print -l "$file"; done
Foo
Ie7bar
Quux
Ie4 01
Ie4_01
Ie4!01
Ie4_128
Ie5
Ie6
Ie401sp2
Ie501sp2
$ print -l "${mine[-1]}"
Ie501sp2