Когда я grep нет конкретного файла терминал перестает работать
Я учусь использовать оболочку. Играя с некоторыми основными командами, я столкнулся с проблемой. Это довольно простой материал, и я прошу прощения, если это расстраивает некоторых людей.
На моем рабочем столе есть файл с именем "myFirstShellScript.txt". В этом файле есть текстовая строка "show system".
Итак, если при открытии оболочки я набираю cd desktop
а затем grep "show system" myFirstShellScript.txt"
оболочка возвращает предложение, где появляется эта строка. Хорошо.
Но я хотел возиться. Я тогда набрал grep "show system"
и нажмите ввод. Я задавался вопросом, будет ли grep искать весь рабочий стол, так как это был / это мой pwd.
Но, похоже, произошло то, что терминал перестал работать. Сначала я думал, что это может быть просто поиск, но это было какое-то время. Затем я проверил, работают ли другие команды - pwd - ничего не делает, когда я нажимаю клавишу ввода, курсор просто перемещается на новую строку.
Затем я попытался выйти. Я попытался "выйти", "конец" и "выйти". Ничего такого. Окно терминала не отвечает, как ожидалось.
Я знаю, что могу легко просто открыть другую вкладку, но хотел спросить, что я сделал с терминалом здесь?
2 ответа
Когда ты бежишь grep
, если вы включите имя файла (grep pattern file
), он ищет этот файл. Когда вы этого не сделаете, он ищет стандартный ввод (stdin). Если включить в трубу (foo | grep
), он читает из трубы. Когда ты бежишь просто grep pattern
, он читает ввод с консоли. Это очень распространенный шаблон среди утилит Unix и Linux. Когда вы печатаете exit
, end
, quit
или что-то еще, он сравнивает его с шаблоном и печатает его, если он соответствует, так же, как если бы вы дали ему файл. Попробуйте ввести строку, которая соответствует шаблону - вы увидите, что он вам возвращается.
Чтобы выйти из этого, нажмите Ctrl+D, чтобы указать конец файла. Ctrl+C убьет большинство программ, но он менее чист, чем Ctrl+D.
Grep без аргументов читает из стандартного ввода, который является вашим терминалом. Он будет продолжать читать, пока не встретит символ конца файла. Символ конца файла - Ctrl-D. Введите это, и grep готов.
Если это не сработает, запустите stty -a
и искать eof = ...
найти своего персонажа.
Получено предупреждение: не вводите Ctrl-D дважды; второй будет прочитан вашей оболочкой. Если это ваша оболочка входа в систему, он будет думать, что вы сделали, и выход. Всякий раз, когда выходит из вашей оболочки входа в систему (так же, как при вводе exit
) ваш сеанс входа в систему завершен и login:
приглашение появляется снова. Другими словами, вы вышли из системы.