Как разморозиться после случайно нажатия Ctrl-S в терминале?

GNU grep имеет -P опция для perl-стиля regexes, и -o опция распечатать только, что соответствует шаблону. Они могут быть объединены с помощью, осматривают утверждения (описанный под Расширенными Шаблонами в perlre странице справочника) для удаления части grep шаблона от того, что полно решимости соответствовать в целях -o.

$ grep -oP 'foobar \K\w+' test.txt
bash
happy
$

\K краткая форма (и более эффективная форма) (?<=pattern) который Вы используете в качестве нулевой ширины, оглядываются утверждение перед текстом, который Вы хотите произвести. (?=pattern) может использоваться в качестве утверждения предвидения нулевой ширины после текста, который Вы хотите произвести.

Например, если Вы хотели распознать слово между foo и bar, Вы могли использовать:

$ grep -oP 'foo \K\w+(?= bar)' test.txt

или (для симметрии)

$ grep -oP '(?<=foo )\w+(?= bar)' test.txt

754
13.04.2017, 15:36
3 ответа

Ctrl-Q

Отключить это в целом, палку stty -ixon в сценарии запуска. Чтобы позволить любому ключу получать вещи, текущие снова, использовать stty ixany.

PS: Это ни терминал, ни оболочка, которая делает это, но терминальный драйвер ОС.

897
27.01.2020, 19:27
  • 1
    ! BTW, там они предложили Ctrl-C; это работает, также? (И в другом месте, они предложили Ctrl-Q, так же, как Вы.) –  imz -- Ivan Zakharyaschev 27.04.2011, 15:41
  • 2
    Ctrl-C действительно работает, но он также отправляет сигнал прерывания, который обычно не хотел бы. (Btw, ключи, используемые для этих вещей, все настраиваются через stty.) –  ak2 27.04.2011, 16:10
  • 3
    я не забываю испытывать эту комбинацию на своей Apple] [клон, и это работало там также - Ctrl-S и затем Ctrl-Q возобновиться. –  sashoalm 16.01.2014, 10:44
  • 4
    БЛАГОДАРИТЕ БОГА!! Это было чем-то прослушивающим меня в течение многих лет. Не уверенный, почему VIM просто не реализовал это как собственный ярлык для сохранения вместо того, что ад это делает. Хороший для знания существует побег из тюрьмы, которая является замороженным экраном VIM из-за естественного использования CTRL+S (сохраните ярлык), который применим почти во всех приложениях КРОМЕ VIM. безопасность –  Kraang Prime 14.03.2015, 20:20
  • 5
    @SanuelJackson Ctrl-S "сохраняет ярлык", применимо почти во всем Настольном приложении КРОМЕ энергии. И Кроме Emacs. И Нано. И любое "приложение", можно работать на терминале, точно потому что оно уже используется терминалом для управления потоком. Это - та же причина, Вы не найдете Настольное применение Linux с помощью ярлыков Ctrl-Alt-FN: потому что они уже используются системой. –  gerlos 23.09.2015, 18:45

Ctrl-Q является действительно ответом. Я думал, что брошу в небольшой истории этого, которое слишком длинно для помещений в поля корректного ответа ak2.

Назад в средневековье, терминал был большим элементом оборудования, который соединился с удаленным устройством (первоначально другой терминал, потому что телетайпы было настолько легче учиться работать, чем телеграфный ключ) по длинному проводу или через телефонные линии с модемами. К тому времени, когда Unix разрабатывал, код ASCII был уже хорошо установлен (хотя конкурирующий код EBCDIC от IBM был все еще силой, с которой будут считаться).

Самые ранние терминалы вели печатный учет каждого полученного символа. Пока символы прибыли не быстрее, чем печатающая головка могла ввести их, по крайней мере. Но как только основанные на CRT терминалы были возможны, проблема возникла, которому только приблизительно 25 строк соответствуют на CRT, и 25 строк 80 символов представили достаточно RAM, что никакая мысль серьезно об обеспечении большего количества RAM для символов, которые прокрутили от вершины экрана.

Таким образом, некоторая конвенция была необходима, чтобы сигнализировать, что передающий конец должен приостановиться, чтобы позволить читателю нагнать.

7-разрядный код ASCII имеет 33 кодовых точки, посвященные управляющим символам (от 0 до 31 и 127). Некоторые из тех действительно хорошо установили цели, такой как NUL (начальный участок магнитной ленты чистого листа для поточной обработки, разрывов и соединений встык), DEL ("вычеркнутые" символы на перфоленте, обозначенной путем перфорации всех семи дыр), BEL (звените!), CR, LF, и TAB. Но четыре были определены явно для управления самим оконечным устройством (DC1 кому: DC4 иначе Ctrl+Q, Ctrl+R, Ctrl+S и Ctrl+T).

Мое лучшее предположение - то, что некоторый инженер думал, что (как мнемоника идут), "S" для "Остановки" и "Q" для "Продолжаются", не были слишком плохи, и присвоился DC3 для значения, "прекратите отправлять" и DC1 для значения "хорошо продолжите отправлять теперь".

Даже та конвенция была уже хорошо установлена к тому времени, когда Unix оставлял вложенное множество в Bell Labs для выхода в мир.

Конвенция известна как программное управление потоком и чрезвычайно распространена в реальных последовательных устройствах. Не легко реализовать правильно, поскольку это предотвращает использование любого из тех символов для любой другой цели в канале передачи, и Стоповый сигнал должен быть обработан перед полученными символами любого ожидания, чтобы не отправлять больше, чем принимающий конец может обработать.

Если практично, использование дополнительных сигналов из полосы от потока последовательных данных для управления потоком значительно предпочтено. На непосредственно проводных соединениях, которые могут позволить себе дополнительные сигнальные провода, Вы найдете аппаратное квитирование используемым, который освобождает те символы для другого использования.

Конечно, сегодняшнее окно терминала не использует фактический физический последовательный порт, имеет полосы прокрутки и действительно не нуждается в программном квитировании вообще. Но конвенция сохраняется.

Я вспоминаю заявление, что Richard Stallman получил жалобы на свое отображение Ctrl+S к возрастающему поиску в первых выпусках emacs, и что он был довольно неприятен любому пользователю, который должен был зависеть от управляемого соединения потока 7-разрядного, программного обеспечения.

398
27.01.2020, 19:27
  • 1
    Thanke.. очень интересный... Я задавался вопросом: С какой стати был бы любой принимать решение Продолжить процесс с "Q", который является наиболее часто используемым (теперь) для Выхода... Группировка QRST объясняет это..... –  Peter.O 28.04.2011, 01:40
  • 2
    Большое спасибо за тот бит истории. Я недавно отключил управление потоком по умолчанию в эмуляторе терминала, который я поддерживаю, но должен был восстановить его скорее быстро после вокальных протестов от традиционалистов Unix, которые действительно все еще используют его. Я установил бит ixany вместо этого, таким образом, по крайней мере, люди, которые нажимают ^S, не зная о ^Q, не застревают. –  ak2 28.04.2011, 01:45
  • 3
    @RBerteig я столкнулся с чем-то подобное приобретение знаний о клавише Backspace, и удалить. Клавишей Backspace является официально ^H, и удалите, ^? Некоторые люди как разработчики Emacs (Киоскер снова?) хотел ^H доступный для общей цели как ярлыки как Справка. Escape-последовательность ^ [[3 ~ или что-то как этот были созданы для замены ^? и клавиша Backspace теперь стала старым, удаляют символ ^?. На самом деле я видел ncurses, конкретно исправленный на дистрибутивах Linux для переотображения ключей thoses terminfo, тогда как ncurses на FreeBSD не исправляется, заставляя часть раздражающей клавиши Backspace порождения беспорядка не работать. –  penguin359 28.04.2011, 13:48
  • 4
    я раньше задавался вопросом, почему DEL имел код 127 вместо того, чтобы быть сгруппированным с другими управляющими символами, пока я сначала не играл с некоторой перфолентой и ASR33. После того как я понял, что это имело эффект перфорации всех дыр, которые означали, что это могло быть сверхпоражено на любом ранее перфорированном символе для удаления его, это имело смысл. –  RBerteig 28.04.2011, 22:08
  • 5
    @SanuelJackson прошло некоторое время, так как я смотрел тесно, но значение по умолчанию vimrc, который поставлется с окнами, отобразилось <C-s> на ": обновите" много лет. Я также вполне уверен, что видел его на некоторых дистрибутивах для gvim в прошлом также. При использовании энергии в терминале, тем не менее, эта история все еще очень релевантна. Современные эмуляторы терминала все еще реализуют ключи управления потоком, поэтому даже если бы энергия отобразила их, то она никогда не видела бы их, если каждый пользователь не старался изо всех сил отключать управление потоком, как описано в принятом ответе. –  Drew 23.04.2016, 01:30

Клавиши управления :выполняют специальные функции в Shell

  • Упр.-S:Пауза отображения
  • Ctrl-Q:Перезапустить дисплей
  • Ctrl-C:Отмена операции
  • Ctrl-U:Отмена строки
  • Ctrl-D:Сигнал Конец Файла
4
22.10.2021, 13:47

Теги

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