Команда cat закрыть после записи файла

Кажется, что это была ошибка в драйвере Nvidia, починенном в 375,10:

Исправил ошибку, которая вызвала проблемы с панорамированием и ограничением курсора при смешивании ГЛАВНО УПРАВЛЯЕМЫХ дисплеев с исходно управляемыми дисплеями.

от https://Установка devtalk.nvidia.com/default/topic/972585

версия 375.20 драйверов Nvidia (сначала стабильная версия с фиксацией выше) от команды "графических драйверов" человечности ppa

решил вопрос.

2
задан 14.04.2020, 12:27

1 ответ

Проблема состоит в том, чтобы знать, когда прекратить копирование из ttyUSB0.

Если конец данных помечен узнаваемым символом или байтом (скажем, Z ), который гарантированно не встретится где-либо еще во входящем потоке, то следующее элегантно решит вашу проблему: ]

stty -F /dev/ttyUSB0 eof Z 9600 cs8 && cat -v < /dev/ttyUSB0 > /path/to/file.txt

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

stty -F /dev/ttyUSB0 9600 cs8 && sed '/END/q' < /dev/ttyUSB0 > /path/to/file.txt

будет работать при условии, что поступающие данные ориентированы на строки. То есть после "END" должен быть хотя бы один символ новой строки, иначе sed не увидит его. (Именно поэтому рекомендуется всегда заканчивать текстовые файлы новой строкой.)

Тогда, конечно, всегда есть грубый путь. Предполагая, что вы знаете, что работа никогда не займет больше минуты:

stty -F /dev/ttyUSB0 9600 cs8 && cat -v < /dev/ttyUSB0 > /path/to/file.txt &
sleep 60 && kill %%
1
ответ дан 14.04.2020, 12:28
  • 1
    Спасибо за руководство. I' ll пытаются сначала настроить его с ^C символом. – KrisT 14.04.2020, 12:28
  • 2
    @thom В stty страница справочника, я считал, что ^C (каре символов и C) будет на самом деле интерпретироваться как Ctrl-C, таким образом, that' s не проблема. Еще одна идея (к сожалению, я can' t пробуют отсюда): переключатель между raw и cooked (или sane) режим: stty -F /dev/ttyUSB0 cooked. На самом деле добавьте вывод этих двух команд к Вашему вопросу: stty -F /dev/ttyUSB0 и stty -F /dev/ttyUSB0 -a. – Melanie 14.04.2020, 12:29
  • 3
    @thom, который я принимаю эти ^C, является символом Ctrl-C. Необходимо быть в состоянии определить это на командной строке при помощи Ctrl-C Ctrl-V последовательности. Здесь Ctrl-V выходит из особого значения Ctrl-C для оболочки. – Tom Robinson 14.04.2020, 12:29
  • 4
    К вашему сведению отображенные данные запускаются с ^B в первой строке, ^M в конце каждой строки и ^C в конце данных. I' ve пытался заменить ^C в stty -F /dev/ttyUSB0 eof ^C 9600 cs8 && cat -v < /dev/ttyUSB0 > /path/to/file.txt к Ctrl-C Ctrl-V, и $ (повторите-ne ' \x03'), но это все еще doesn' t вступают в силу. – panky sharma 14.04.2020, 12:29
  • 5
    Конец данных является строкой с ^C I' ve попробовал первую команду, чтобы быть похожим на это stty -F /dev/ttyUSB0 eof C 9600 cs8 && cat -v < /dev/ttyUSB0 > /path/to/file.txt, Но, это все еще привычка близко. Ни один второе. В то время как последний, успешно выполнитесь на первой попытке, чем полученный символ стал испорченным. – Abdullah 14.04.2020, 12:30

Теги

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