Как исправить неполный grep

Вопрос или проблема

Итак, я постоянно ошибаюсь, неправильно вводя свои команды grep.

Я собираюсь ввести grep searchstring *. Однако я часто забываю поставить *, и в итоге нажимаю Enter после ввода grep searchstring.

Это отправляет мой командный интерфейс в замороженное состояние >, из которого я не могу выбраться.

Независимо от того, что я пытаюсь ввести после этого, я не могу выбраться из > обреченности. Мне приходится закрывать свою сессию и перезапускать её, теряя весь свой прогресс.

В чем секрет того, чтобы избежать этой проблемы?

Я пробовал ctrl + z, ctrl + x, ctrl + d, esc, другую *, ‘, “, ;, в общем, всё, что могу придумать, не знаю, как исправить это после того, как я “испорчу” свой grep.

Что он ожидает, когда я забываю указать, где искать, и как я могу это исправить?


Для большей ясности:

Обычно, когда вы работаете в командной строке, у вас появляется командный приглашение. Например, сейчас моё командное приглашение – bash-5.2$. Так что мой экран выглядит так:

bash-5.2$ pwd
/bin/bash
bash-5.2$ ls
file1.txt file2.txt
bash-5.2$ grep searchstring *
file1.txt:searchstring
file2.txt:searchstring
bash-5-2$

Указание bash-5.2$ означает, что приглашение готово к новой команде. Вышеуказанный grep был введен правильно, с *, и поэтому он вывел результат и вернулся к обычному приглашению.

Теперь, когда я совершаю эту ошибку с grep, это выглядит так:

bash-5.2$ pwd
/bin/bash
bash-5.2$ ls
file1.txt file2.txt
bash-5.2$ grep searchstring     //здесь я забыл *
>

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

bash-5.2$ pwd
/bin/bash
bash-5.2$ ls
file1.txt file2.txt
bash-5.2$ grep searchstring
>
>
> 

Я не знаю, как вернуться к нормальному приглашению. Я не знаю, как выбраться из > земли. Я пробовал ctrl + все буквы, ничего не работает.

Ответ или решение

Для многих пользователей Linux, работающих с командной строкой, ситуация, когда вы попадаете в состояние «фrozen prompt» (замороженный запрос), может быть весьма неприятной. Как вы описали, при вводе команды grep searchstring без указания файла для поиска, командная строка переходит в режим ожидания, обозначаемый символом >, при этом команды не принимаются. Это происходит потому, что оболочка Bash интерпретирует ввод как вложенную команду, ожидая завершения аргумента. В данной статье мы рассмотрим, как избежать этой ситуации и как выйти из нее, если вы уже в ней оказались.

Причины возникновения проблемы

Когда вы вводите команду grep searchstring без указания файла для поиска, оболочка считает, что вы собираетесь предоставить дополнительный ввод переменной, и ожидает его продолжения. Символ > указывает на то, что Bash ожидает завершения ввода. Таким образом, ваше окружение не возвращается к стандартному запросу до тех пор, пока команда не будет полностью введена.

Как избежать замораживания терминала

  1. Скорректируйте привычки ввода: Пользуйтесь автозаполнением и историей команд (нажимайте клавишу Tab или используйте клавиши стрелок), чтобы уменьшить вероятность ошибок.

  2. Используйте алиасы: Определите алиас для вашей команды. Например:

    alias gsearch='grep searchstring *'

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

  3. Сохраняйте часто используемые команды: Рассмотрите возможность создания скриптов для часто используемых последовательностей команд, чтобы избежать введения часто повторяющихся команд.

Как выйти из состояния «замороженного» запроса

Если вы оказались в ситуации, когда команда не завершена и отображается символ >, существует несколько способов избежать ситуации «вытаскивания» и возврата к стандартному запросу:

  1. Нажмите Ctrl + C: Это наиболее распространенный способ прервать команду и вернуть вас в обычный режим. Bash немедленно закончит выполнение текущей команды и вернет вас к стандартному элементу командной строки.

  2. Нажмите Ctrl + D: Это будет означать окончание ввода. Если вы используете это, когда находитесь на строке >, Bash интерпретирует это как сигнал о завершении ввода, и вы вернётесь к обычному запросу.

  3. Добавьте символ EOF: Вы можете вручную добавить особый маркер для указания окончания ввода с помощью Ctrl + D, если это не сработало.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...