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


1

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

C:\php> php.exe

<?php
echo 'test';
?>

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

test
^C
C:\php> 

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

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

C:\php> php.exe

<?php
echoo 'test';

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

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.