Используемая вами команда ps не имеет отношения к UNIX.
Использование key letters
вместо options
использовалось в BSD ps
, но это так и не вошло в стандарт. BSD даже использует ключевую букву h
не так, как вы могли ожидать.
Рекомендую использовать:
ps -p $$
Если вы хотите проверить, есть ли еще экземпляры этого скрипта, используйте:
myname=`basename $0`
pids=`pgrep -d, $myname`
ps -p $pids
Теоретически вам даже не нужно больше запускать ps
, достаточно будет проверить вывод pgrep
на наличие запятой.
Если вы хотите реализовать алгоритм блокировки файла и иметь оболочку, совместимую с POSIX, вы можете использовать:
set -o noclobber
:> /var/tmp/myscript
if [ $? -ne 0 ]; then
echo already running
exit 1
fi
... do some stuff
rm /var/tmp/myscript
Надежность этого зависит от того, реализует ли оболочка noclobber так, как это нравится POSIX. Некоторые оболочки могут не реализовать это атомарно, поэтому вам нужно знать, в порядке ли ваша оболочка.
Вы можете использовать Alt-f для перемещения на одно слово вперед и Alt-b для перемещения на одно слово назад. Так должно быть намного быстрее, чем перемещение по одному символу за раз с помощью клавиш со стрелками.
Кроме того, вы можете перемещаться на n слов за раз, предварительно предоставив универсальный аргумент с использованием Alt1 , Альт2 , Альт3 и т. д.
Еще несколько вариантов:
о том, что поддержка мыши для zle я написал несколько лет назад (скорее как доказательство концепции, я не использовал его сам, так как на самом деле не очень часто пользуюсь мышами ).
В режиме emacs
используйте Ctrl + R для пошагового поиска в R
наоборот, и введите gi
, например(^R
еще раз, чтобы повторить поиск, ^S
пойти в другом направлении ).
В режиме vi
вы можете использовать ?
в командном режиме как эквивалент ^R
выше(n
для повторения, N
в другом направлении )или использоватьT
(t
или символ назад )илиF
(идти f
или символ назад )движения, как в vi
. Здесь как Ti
например, чтобы перейти T
или i
символ (и ;
, чтобы повторить предыдущий к/для движения)
В режиме vi
см. b
, B
движение, чтобы b
подтвердить одно слово или слово, как в vi
. И 3B
вернуться на 3 слова назад. Это было бы эквивалентно движениям слов emacs
, упомянутым @Arkadiusz .