Установка insert-tab
тег ко лжи будет препятствовать тому, чтобы вкладка была вставлена, когда не будет никаких символов слева от курсора.
zstyle ':completion:*' insert-tab false
Я обнаружил несколько похожих темы к этому, которые рассматривают возможность использования таких вещей, как xdotool и wmctl , с целью тестирования запуска постоянного оконного приложения или другого постоянного подпроцесса. Но их использование кажется ненужным усложнением. Приведенное ниже решение допускает условное выполнение постоянного подпроцесса. Он использует продолжительность сна в полсекунды. Если интересующий подпроцесс потребует больше времени для успешного запуска, то эту продолжительность необходимо будет соответственно увеличить.
Исходный файл Bash launch
#/usr/bin/env bash
# launch : will allow launching a windowed application or persistent
# sub-process in the background so that conditional execution can be
# applied to determine whether or not it has launched successfully -
# dependencies: GNU coreutils (sleep), util-Linux (kill)
# usage: ./launch process arg_1 .. arg_n && echo TRUE || echo FALSE
$@ &>/dev/null & sleep 0.5 && kill -0 $! 2>/dev/null
# end file
Итак:
$ ./launch mupdf example.pdf && echo TRUE || echo FALSE
TRUE
$ ./launch mupdf nofile.pdf && echo TRUE || echo FALSE
FALSE
В качестве постскрипта к этой информации я подумал, что было бы полезно включить совет mikeserv в комментарии к открытию Почта.
В то время как вышеупомянутая конструкция выполняет непосредственную задачу, mikeserv указывает, что она может привести к другим проблемам, поскольку она не передает сигнал вызывающему сценарию; вместо этого он игнорирует и отбрасывает его. Это очень важное наблюдение.
Сигналы являются ключевым элементом межпроцессного взаимодействия и могут привести к возможности создания сценариев, управляемых событиями. Таким образом, для более надежных и эффективных сценариев mikeserv предлагает следующее для перехвата сигнала и его распространения:
{ mupdf some.pdf || kill -"$(($?&127))" "$$"; } &
где $? & 127
разрешает выполнение действий от 1 до 128 возможных сигналов ( POSIX), в моей системе Debian их 64, поэтому маска сигнала может быть $? & 63
.
Итак, в качестве заключительного замечания, для очень простых сценариев, где межпроцессное взаимодействие не представляет интереса, предложенный запуск может быть полезен, но для чего-то еще, особенно когда важно межпроцессное взаимодействие, захват распространять) сигнал в соответствии с рекомендациями mikeserv .
Como una sola línea -:
mupdf example.pdf & echo mupdf is now in the background; wait $! && echo FINISHED successfully