Завершение вкладки Bash прекратить поиск


8

Когда я печатаю в bash и нажимаю клавишу «Tab» для автоматического завершения, иногда это занимает значительное время. Например, ввод-вывод файла для чтения каталогов занимает> 5 секунд, и поэтому я завис, ожидая завершения ввода-вывода, прежде чем смогу продолжить ввод. Я расстроен и Ctrl-C, чтобы я мог повторить то, что я печатал.

Ctrl-C неудачно, так как я должен повторить все заново. Как я могу сказать bash прекратить попытки выполнить мой запрос автозаполнения?

$ /long/path/to/some/d     # once I've typed this, I press <TAB>. I now will be
                           # stuck waiting for perhaps 10 seconds. The only thing I
                           # know to do is Ctrl-C. When I press Ctrl-C, I am forced
                           # to retype the original command string.
$

Возможно, вы захотите взглянуть на это. ubuntuforums.org/showthread.php?t=1865538
Рамеш

Ответы:


1

Я только что нашел это здесь .

Использование Ctrl+\. Это остановит завершение и вернется к вашей командной строке без потери текущей команды.


К сожалению, это не сработало для меня в Ubuntu
Джош

0

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

Одна из возможностей - начать поиск в фоновом режиме и записать результат в FIFO. Вы можете читать из FIFO с таймаутом затем ( read -t 0.3 ...).

Думаю, я недавно видел более простое решение, чем FIFO, но сейчас я этого не помню. read -tработает и с конвейером, но завершение readне убивает более ранние части конвейера, и конвейер возвращается только после того, как все его части завершены.


как это относится к вопросу ...?
Ленсовет

@lensovet Если кажется, что нет способа решить проблему запрошенным способом (то есть, прервать поиск), тогда подсказка, как (хотя бы частично) избежать проблемы, кажется мне весьма полезной.
Хауке Лагинг

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.