Почему Korn Shell не может сделать ctrl-r?

Вы не только столкнетесь с проблемами, если xargs вызовет tar дважды, вы также столкнетесь с проблемами, если ваши имена файлов содержат специальные символы, такие как символы новой строки.

Вам следует отказаться от использования xargs и tar и использовать find с cpio :

find $SOURCEDIR -mtime -1 -print0 | cpio --create -0 --verbose \
     --format=ustar -O $ARCHIVE

ustar предоставляет у вас есть файл tar, совместимый с POSIX.1, в $ ARCHIVE .

3
21.04.2016, 00:09
3 ответа

Ctrl + R работает с ksh в режиме emacs ( ksh -o emacs или установить -o emacs внутри ksh ), и, скорее всего, это была первая оболочка, которая его поддерживала. Только он не такой интерактивный, как в виджете zsh или bash или tcsh i-search-back .

В ksh (оба ksh88 и ksh93 ) вы набираете Ctrl + R текст Return . И Ctrl + R Верните для повторного поиска с тем же текстом.

В режиме vi вы можете использовать ? для поиска назад и n для следующего поиска.

Эта функция emacs инкрементного поиска была добавлена ​​в:

  • bash / readline по крайней мере с июля 1989 года, поскольку эта функция уже упоминалась на usenet в то время , но, вероятно, не с самого начала, поскольку в версии readline , поставляемой с zsh-1.0 , этого не было.
  • zsh с версии 2.0 в 1991 году после того, как редактор строк был переписан и больше не использовался readline .
  • tcsh в V6.00.03, 21.10.91, но не привязан по умолчанию ( tcsh некоторое время до этого имел другой механизм поиска на Meta-P хоть).
  • ksh : ksh , скорее всего, была первой оболочкой Unix с режимом редактирования emacs , написанным в 1982 году Майком Вичем (а также vi Пэта Салливана с повторным использованием кода, который эти двое уже независимо применили к оболочке Bourne) в AT&T. ksh был впервые представлен за пределами AT&T на конференции USENIX 1983 г. , где были описаны эти функции , но не был коммерчески доступен до некоторого времени после этого ( 1 , ] 2 ). Трудно сказать, был ли ^ R уже там в то время (во всяком случае, он уже был там в 1986 и 1985 (см. usr / man / man1 / ksh .1 страница руководства ksh85 в , этот архив Unix V8 в Unix Heritage Society )), но трудно представить, что это не так, поскольку это важная функция, особенно для оболочки, и я ' d ожидаем, что vi режим ? тоже был бы там в то время.
11
27.01.2020, 21:08

В 1970-х годах не было редактируемой курсором истории для оболочек.

Первой оболочкой со встроенной историей редактирования курсора была моя bsh в 1984 году (на основе прототипа 1982 года). Эта реализация истории использует crontrol-r для повторного отображения текущей командной строки.

В 1986 году оболочка Korn стала членом группы оболочек, реализующих полностью интегрированную редактируемую историю курсора.

Версия tcsh со встроенным редактором впервые появилась в 1987 году.

Bash появился в 1989 году.

Ksh по умолчанию работает не в режиме emacs, а в режиме gmacs. режим.

Обратите внимание, что ksh93 поддерживает поиск с помощью control-r даже в режиме по умолчанию, он просто не сообщает вам, что находится в этом режиме. Если я наберу:

^R

, я получу это, а затем смогу ввести строку поиска:

^Rali
alias a=b

она найдет команду псевдонима в истории.

-1
27.01.2020, 21:08

Оболочка Korn поддерживает поиск в истории с помощью Ctrl R, по крайней мере, начиная с ksh93 (и, возможно, даже ksh88), но они работают не так, как bash. Сначала вам нужно включить режим Emacs:

set -o emacs

(Это включает другие тонкости, такие как клавиши со стрелками, работающие по умолчанию.)

Теперь, если вы нажмете Ctrl R, оболочка напечатает ^R; введите поисковый запрос, нажмите Enter, и оболочка покажет вам ближайшую подходящую запись в истории. Вы можете снова нажать Enter, чтобы запустить его как есть, или отредактировать его.

7
27.01.2020, 21:08

Теги

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