Захват мыши при нажатии на любую пустую область в заголовке/строке меню в nautilius/evince/gnome-terminal/etc. происходит для меня на Ubuntu 11.10 / libgtk-3-0, 3.2.0-0ubuntu6 / потрясающие 3.4.10-1 также.
A killall nautilus
или так на консоли выпускает захват мыши; с Наутилусом, просто закрыв окно с a Meta-c
не помогает.
Кажется, существует фиксация для проблемы изменять-размер-дескриптора, предстающей конвейер перед GTK + 3.3.6, presumeably связана?
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=630972
https://bugzilla.gnome.org/show_bug.cgi? id=650943
http://git.gnome.org/browse/gtk+/tree/NEWS#n301
http://git.gnome.org/browse/gtk+/commit/?id=e3005ea454293d7b86f2bc39ba5fd028906b5c72
[
команда должна оценить условные выражения. Это бесполезно здесь.
Поскольку umount
ничего не производит на его стандартном выводе (ошибки переходят к stderr), `sudo umount mount`
ни до чего не расширяется.
Таким образом, это похоже:
while [ ]
do
sleep 0.1
done
[
команда при отсутствии передачи никакой аргумент около [
и ]
возвращает false (ненулевой статус выхода), таким образом, Вы не введете цикл.
Даже если umount
произвел его ошибки на stdout, с помощью [
команда не имела бы смысла, потому что слова, получающиеся из того вывода, никогда не будут составлять допустимое условное выражение.
Здесь Вы хотите:
until sudo umount mount
do
sleep 0.1
done
Таким образом, Вы хотите проверить статус выхода sudo/umount, не a [
команда.
Если Вы хотели проверить если umount
произведите любую ошибку или предупреждение на его stderr, это то, где [
возможно, было полезно. -n "some-string"
условное выражение, распознанное [
управляйте, чтобы протестировать ли "some-string"
пусто или нет, таким образом, что-то как:
while [ -n "$(sudo umount mount 2>&1 > /dev/null)" ]; do
sleep 0.1
done
Но поиск присутствия сообщений об ошибках или предупреждающих сообщений обычно является плохой идеей. umount
команда говорит нам, успешно выполняется ли она с ее кодом выхода, это намного более надежно. Это могло следовать и все еще произвести некоторое предупреждающее сообщение. Это могло привести к сбою и не произвести ошибку (как то, когда это уничтожается).
В данном случае отметьте это umount
мог бы перестать работать, потому что каталог не смонтирован, и Вы циклично выполнились бы навсегда в этом случае, таким образом, Вы могли попробовать другой подход как:
while mountpoint -q mount && ! sudo umount mount; do
sleep 0.1
done
Или если "монтирование" может несколько раз монтироваться, и Вы хотите размонтировать их всех:
while mountpoint -q mount; do
sudo umount mount || sleep 0.1
done
допускающая повторное использование функция, и будет тайм-аут в 'n' секунды
_umount() {
[[ $# -lt 2 ]] && {
echo "Usage: ${FUNCNAME} <timeout_secs> <mnt_point>"; return 1
}
timeout=$(($(date +%s) + ${1}))
until umount "${2}" 2>/dev/null || [[ $(date +%s) -gt $timeout ]]; do
:
done
}
никакая потребность спать
[[...]]
ksh
/bash
/zsh
конкретный, все из которых имеют $SECONDS
специальная переменная, таким образом, Вы могли сделать: SECONDS=0; until umount... || ((SECONDS > $1)); do..
– Stéphane Chazelas
01.08.2017, 15:43
[
,[[
или нет. Я желаю типичных страниц справочника, GNU и/или примеры TLDP об условных выражениях удара покрыли такой – renoirb 26.06.2016, 05:24