如何关闭/结束/终止终端中的意外“if”?

如何关闭/结束/终止终端中的意外“if”?

所以tab完成很棒......除非你是个新手......并且你输入第一部分ifconfig然后tabenter快速点击......在这种情况下你最终会得到:

(不是实际的终端输入)

~$ if
> 
> 
>'
> "
> end
> ^C
> 
> )
> ()
> ]
> 
> []
> ]
> ;
> 
> 
> []
> ;aognf'
> 
> 

真正奇怪的是它ctrlc根本不起作用。我知道引号(这就是我首先尝试的原因),但这些知识并没有帮助。

下次我怎样才能在不关闭终端的情况下摆脱这些粗心大意的错误呢?

回答我无意中开始做的事情是什么,可以获得加分。

答案1

在这种情况下 使用Control- 。D

您陷入了 bash shellif条件控制结构中。

这是我看到的输出:

$ if
> 
> '
> "
> sdf
> )
> []

Control-D

bash:语法错误:意外的文件结束

答案2

您已开始一个if语句。下一个命令将运行,并且只有当它返回零退出状态(成功)时,才会执行以下命令,从关键字then开始直到fi关键字(“if”反向)。例如:

if true
then
    echo yes
fi

通常,人们使用该test程序(又名[)来测试各种事物,例如:

if [ $somevariable = someword ]

或者

if [ -f /some/file/exists ]

对于我来说,Ctrl-C 可以正常中止该操作。

答案3

使用stty -a以确保内联 = ^C。如果不是,^C 只是另一个字符。stty sane帮助我摆脱终端混乱。请参阅man stty。这是我的前几行(其中 ^C 确实中断如果......):

walt@spong:~(0)$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
...

相关内容