Как вернуть символы в буфере cmd?

1

Если мы используем командную строку для запуска коротких сценариев как таковых:

C:\php> php.exe

<?php
echo 'test';
?>

, вывод будет отображаться непосредственно в командной строке:

test
^C
C:\php> 

Итак, скажем, есть ошибки опечаток, и я хотел бы сделать «возврат».

Например, предполагая, что мы опечатаны echoкак echoo:

C:\php> php.exe

<?php
echoo 'test';

Как я могу добиться «возврата» в cmd, не прерывая полный сценарий и не вводя все заново?

Pacerier
источник

Ответы:

1

CMD поддерживает клавишу возврата, и он работает так, как вы описываете, когда вы набираете команду перед ее выполнением.

После того, как вы начали команду (в данном случае php.exe), к этой программе присоединяется STDIN (не CMD), и, следовательно, это зависит от того, реализует она или разрешает возврат или нет.

Для программы клавиша возврата является еще одним символом, который необходимо обработать (например, ASCII # 8 ).

Джастин
источник
(Для приложений, которые не реализуют эту функцию) Другими словами, хотите ли вы сказать, что невозможно "взломать" это ограничение?
Пейсер
Как только вы запустили приложение, нет. Однако для PHP вы можете попробовать это: php.net/manual/en/features.commandline.interactive.php
Джастин
Ах, я думал, что какой-то "стандартный" протокол уже был бы создан для решения этой надоедливой проблемы ...
Pacerier
@Pacerier: Нет. Клавиатурный буфер поддерживался старыми системами BIOS еще до 486 дней. Я думаю, он был ограничен 16 нажатиями клавиш. Нажатие клавиши Backspace израсходует еще одно из этих 16 запомненных нажатий клавиш, а не удалит одно. В настоящее время технологии могут развиваться; может быть, операционные системы поддерживают неограниченное количество буферов в эти дни, я не знаю. Но поведение все еще основано на дизайне совместимости со старым стандартом. Поскольку очень многие люди привязаны к использованию грызунов, улучшение буфера клавиатуры не считается широко важным приоритетом.
TOOGAM