В более раннем ответе предлагается использовать [[$? ! = 0]] && exit $?
, однако не будет работать должным образом, потому что [[$? ! = 0]]
тест сбрасывает $?
обратно в ноль, что означает, что, хотя сценарий будет завершаться раньше, чем ожидалось, он всегда будет завершаться с кодом 0 (как не ожидалось).
Кроме того, было бы лучше использовать числовой сравнительный тест -ne
, а не тест сравнения ! =
строк. Поэтому, IMHO, лучшим решением будет использовать:
err=$?; [[ $err -ne 0 ]] && exit $err
, поскольку это гарантирует, что фактический код выхода установлен правильно.
M-y отменяет последнее выдергивание, поворачивает списки всех сохраненных строк kill и выдергивает новую вершину списка. Попробуйте следующий пример:
a b c
(без новой строки)c
и введите C-k, чтобы убить c
на вершине кольца убийств. b
, a
. Теперь введите C-y и выдерните a
из верхней части списка.
Наберите C-y снова, вы получите еще одно a
, но если вы сразу же наберете M-y, то a
будет удалено и заменено b
.
Если теперь вы наберете еще один C-y, то получите b
, а не a
, потому что килл-кольцо было повернуто. Аналогично, M-y заменит b
на c
.
При наборе последовательности C-y, за которой следует множество M-y, вы получите каждую из строк килл-ринга, одну за другой.
Я не пользователь Emacs, но последний месяц я экспериментировал с режимом Emacs в Readline в качестве альтернативы режиму Vi.
Каждый раз, когда вы убиваете (удаляете) текст, он удаляется из буфера и добавляется в кольцо убийств. Когда вы дергаете (вставляете) текст с помощью C-Y
, последний убитый текст печатается в позицию курсора.
Если вы сразу последуете за этим с M-Y
(клавишу Meta обычно можно получить, нажав Alt-Y или Esc с последующим Y), текст, напечатанный с помощью C-Y
, заменяется вторым последним убитым текстом. Если вслед за этим нажать еще M-Y
, то вставленный текст будет заменен третьим, самым последним убитым куском текста, и так далее. Каждое последующее нажатие M-Y
меняет вставленный текст на текст следующего "убийства" в кольце убийств, пока вы не достигнете конца кольца убийств, где он поворачивается обратно к последнему убийству.