2013-07-19 2 views
2

Каждый раз, когда я заканчиваю запуск коллекции кода matlab в командной строке, когда я выхожу из Matlab, стандартный вывод просто запутывается. Я все еще могу использовать окно терминала, но все, что я набрал, не будет отображаться на экране, оставив меня либо напечатать глаза, либо открыть новый терминал, и чрезмерно cd на старое место.Почему MATLAB вызывает сбой в терминале и как его исправить?

Это происходит каждый раз, когда я использую make для запуска коллекции matlab, и поскольку я много работаю над этим, это оказывается очень раздражающим. Кто-нибудь знает, в чем проблема, и как мне ее исправить?

+2

попробуйте ввести 'stty sane', это поможет? Если это помогает, это означает, что что-то в вашем дескрипторе сбрасывает двоичные данные на терминал, что испортит конфигурацию терминала. stty sane восстанавливает конфигурацию. – fvu

+0

Да, это работает. Спасибо! – OneZero

+0

Отлично. Теперь вам просто нужно выяснить, какая часть скрипта фактически испортила терминал. – fvu

ответ

5

Как указывалось в комментариях, макет, вероятно, сбрасывает «плохие» символы на терминал. Вы можете предотвратить это (но, возможно, потерять полезную информацию), перенаправив вывод - вместо отправки его в окно терминала вы можете отправить его в файл или даже /dev/null («великое ведро в небе»).

Основная проблема заключается в том, что ваш make-файл даже отправляет эти символы на терминал в первую очередь. Я бы порекомендовал вам вывести вывод в файл с чем-то вроде make > myDump.txt, а затем изучить полученный файл, чтобы узнать, что происходит, и где в вашем make-файле проблема возникла. Возможно, что вы все равно получите некоторый результат, когда вы это сделаете, потому что по умолчанию > перенаправляет только stdout, а не stderr - второй выходной поток, используемый для сообщений об ошибках. Вы можете перенаправить оба файла в make 2>&1 myDump.txt.

Вы уже видели рекомендацию использовать stty sane для восстановления статуса терминала. Повторяю это здесь, если кто-то только смотрит на ответы, а не на комментарии; но я не беру на себя ответственность за это :-).

Смежные вопросы