所以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;
...