Перейти к средней линии в Терминале?

Используемая вами команда 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. Некоторые оболочки могут не реализовать это атомарно, поэтому вам нужно знать, в порядке ли ваша оболочка.

1
23.12.2020, 19:33
2 ответа

Вы можете использовать Alt-f для перемещения на одно слово вперед и Alt-b для перемещения на одно слово назад. Так должно быть намного быстрее, чем перемещение по одному символу за раз с помощью клавиш со стрелками.

Кроме того, вы можете перемещаться на n слов за раз, предварительно предоставив универсальный аргумент с использованием Alt1 , Альт2 , Альт3 и т. д.

2
18.03.2021, 22:41

Еще несколько вариантов:

  • о том, что поддержка мыши для 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 .

1
18.03.2021, 22:41

Теги

Похожие вопросы