Методом проб и ошибок я выяснил, что следующее переопределение работает:
(defun show-notification (notification)
"Show notification. Use notify-send."
(start-process "tea-time-notify-notification" nil "notify-send" notification)
)
Более необычный материал может быть сделан также: использование
(start-process "tea-time-notify-notification" nil "notify-send" "-i" (expand-file-name "~/path/to/your/icon/YourIconName.png") "Emacs Tea Timer" notification)
говорит демону уведомления использовать значок (этот подходит) во всплывающем окне уведомления, и использует ободренный 'сводный' текст ("Таймер Чая Emacs").
Можно проверить код состояния mount
, и большинство правильно написанных исполняемых файлов, с оболочкой специальный параметр ?
.
От man bash
:
? Expands to the exit status of the most recently executed foreground pipeline.
После выполнения mount
команда, сразу выполнившись echo $?
распечатает код состояния от предыдущей команды.
# mount /dev/dvd1 /mnt
mount: no medium found on /dev/sr0
# echo $?
32
Не все исполняемые файлы имеют четко определенные коды состояния. Как минимум это должно выйти с успехом (0) или отказом (1) код, но это не всегда имеет место.
Чтобы подробно остановиться (и корректный) на Вашем сценарии в качестве примера, я добавил вложенный if
создайте для ясности. Это не единственный способ протестировать код состояния и выполнить действие, но является самым легким читать при изучении.
#!/bin/bash
mount="/myfilesystem"
if grep -qs "$mount" /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."
mount "$mount"
if [ $? -eq 0 ]; then
echo "Mount success!"
else
echo "Something went wrong with the mount..."
fi
fi
Для получения дополнительной информации о "Выходе и Статусе выхода", можно обратиться к Усовершенствованному Руководству по созданию сценариев Bash.
Много дистрибутивов Linux имеют mountpoint
команда. Это может явно используемый, чтобы проверить, является ли каталог точкой монтирования. Простой как это:
#!/bin/bash
if mountpoint -q "$1"; then
echo "$1 is a mountpoint"
else
echo "$1 is not a mountpoint"
fi
Самый простой способ, не требующий root,:
if $(df | grep -q /mnt/ramdisk); then
fi
или чтобы убедиться, что он не установлен:
if ! $(df | grep -q /mnt/ramdisk); then
fi
Проверьте , если установлен:
mount|grep -q "/mnt/data" && echo "/mnt/data is mounted; I can follow my job!"
Проверьте , если он не установлен:
mount|grep -q "/mnt/data" || echo "/mnt/data is not mounted I could probably mount it!"
Я пробовал использовать приведенный ниже скрипт
#!/bin/bash
echo "enter the file system to check whether its mounted or not"
read p
echo $p
for i in `cat /proc/mounts`
do
if [[ $p =~ $i ]]
then
echo "$p is mounted"
else
echo "$p is not mounted"
fi
done
Вам нужно ввести только имя файловой системы
Я попробовал следующее, и это сработало. Это элементарно, надеюсь, я смогу вам помочь.
#!/bin/bash
for i in /tmp/demo.txt /etc/demo.xt /var/demo.txt /var/log/demo.txt /opt/demo.txt /demo.txt
do
touch $i
if [ -f $i ];
then
rm $i
echo "FS bien! $i"
else
message="FS es R/O!"
echo '${message} $i'
fi
done
Вывод сценария.
FS es R/O! /tmp/demo.txt
FS bien! /etc/demo.xt
FS bien! /var/demo.txt
FS bien! /var/log/demo.txt
FS bien! /opt/demo.txt
FS bien! /demo.txt
$MOUNT
. Этот сценарий также повредится, если файловая система будет иметь какой-либо символ, который подвергся бы wordsplitting (пробелы, и т.д.). Необходимо всегда заключать расширения в кавычки. – Chris Down 17.05.2012, 21:49