Как закрыть / завершить / прекратить случайное «если» в терминале?

Итак, завершение tab великолепно ... если только вы не n00b ... и вы набираете первую часть ifconfig, а затем нажимаете tab введите очень быстро ... в этом случае вы получите:

(не фактический вход терминала)

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

Что действительно странно, так это ctrl c даже не работал. Я знаю о кавычках (именно поэтому я и попробовал в первую очередь), но это знание не помогло.

Как можно в следующий раз вырваться из одной из этих жирных ошибок, не закрывая терминал?

Бонус за ответ, что я случайно начал делать?

2
задан 14 March 2014 в 02:05

3 ответа

Вы запустили if оператор. Следующая команда выполняется, и только если она возвращается, нулевой статус выхода (успех) следующие выполняемые команды, от then ключевое слово вплоть до fi ключевое слово ("если" назад). Как:

if true
then
    echo yes
fi

Обычно каждый использует test программа (иначе [) для тестирования различных вещей, таких как:

if [ $somevariable = someword ]

или

if [ -f /some/file/exists ]

Ctrl-C А прерывает его прекрасный для меня.

0
ответ дан 14 March 2014 в 02:05

Используйте Управление - D в случаях как это.

Вы застряли в оболочке удара if условная управляющая структура.

Это - вывод, который я вижу:

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

Управление - удар D

: синтаксическая ошибка: неожиданный конец файла

0
ответ дан 14 March 2014 в 02:05

Используйте 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;
...
0
ответ дан 14 March 2014 в 02:05

Другие вопросы по тегам:

Похожие вопросы: