所以我经常犯错误,输入错误的 grep 命令。
我的意思是输入grep searchstring *
但是,我经常忘记输入 * 并最终在输入后按回车键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 //here I forgot the *
>
那>
不是正常的提示。它不接受命令。如果我按 Enter,它什么也不做,只会发出更多命令:
bash-5.2$ pwd
/bin/bash
bash-5.2$ ls
file1.txt file2.txt
bash-5.2$ grep searchstring
>
>
>
我不知道如何恢复正常提示。我不知道如何退出 > 着陆。我试过 ctrl + 所有字母,但都不起作用。
几种可能情况的总结:
$ grep searchstring "*
或$ grep searchstring '*
将在尝试任何操作之前期望一个结束引号(“或')。
此处
$PS2
将显示提示,此提示的默认字符串为>
$ grep searchstring *
查看当前目录中的所有文件
$ grep searchstring
将会期望从标准输入获取数据,例如一些粘贴的文本或者需要签入的列表......
$ grep searchstring <<EOF
期望粘贴的文本(如上所示)只有一行,仅带有
EOF
- 来标记文本的结束。对于所有这些,CTRL+D 标记粘贴文本的结束,或者 CTRL-C 应该停止任何进一步的操作。
如果这不起作用:请注意,可能有一个启用的 Shell(例如
.inputrc
?)设置,用于在 CTRL-C 和 V 上进行复制和粘贴。
这当然会禁止 CTRL-C 充当“停止键”。
此相同设置可能会启用 -keyBREAK作为替代。
尝试停止这个:
$ while true ; do echo -n "." ; sleep 1 ; done