스크립트에서 명령 행 채우기


0

필자는 많은 복잡한 문제를 겪고 결국 사용자가 실행할 명령을 생성하는 PHP 스크립트를 가지고 있습니다. 지금은 명령을 인쇄 한 다음 종료합니다. 사용자는 명령을 복사하여 붙여 넣기 만하면됩니다. PHP 명령이 명령 행에서 실행되기 때문에 PHP 스크립트가 명령 행에 명령을 놓을 수 있다면 사용자가 더 쉬울 것입니다. 사용자는 Enter 키를 누를 수 있습니다. (예 - 사람이 명령을 실행해야하거나 스크립트 내에서 명령을 실행해야한다는 요구 사항입니다.)

xclip을 사용하여 명령을 클립 보드에 복사 해 보았습니다. 멈췄다. 나는 그것을 실행하기 위해 exec와 system을 사용했다. 실행할 명령은 $ command에 있고 나는 다음을 사용했다 :

exec("echo \"$command\" | xclip");

임원과 시스템 모두에서 Ctrl + C를 누르기 전까지 클립 보드에 아무 것도 없습니다.

최신 정보 내가 xclip을 / dev / null 명령으로 파이프하면, 멈추지 않는다는 것을 알았다. 그런 다음 사용자의 클립 보드에 추가 할 수 있으며 ctrl + shift + v를 사용하여 실행할 수 있습니다.

exec("echo \"$command\" | xclip -sel clip -i > /dev/null");

복잡한 스크립트를 사용하여 명령 줄에 모든 것을 래핑하고 출력 마지막 줄을 꼬리로 달고 명령 줄에 붙여 넣으려고했습니다. 명령 줄에는 표시하지 않고 명령을 인쇄 할 수는 있습니다. 항상 명령을 인쇄하고 그 아래에 명령 행이 나타납니다.

커맨드 라인에 BASH를 사용하고 있습니다. 따라서 솔루션이 있다고 가정하면 모든 솔루션이 bash 쉘에서 작동해야합니다.


귀하의 PHP 스크립트는 단지 사용자에게 "이 명령을 실행하려면 Enter 키를 누르십시오"라는 메시지를 표시 할 수 없으며 Enter 키를 기다린 다음 실제로 명령을 실행합니까?
DavidPostill

@DavidPostill 그건 내 제안이었다. 그것은 (무식하게) 결정을 내리는 놋쇠로 날지 않았습니다. 나는 그들이 원하는 것을 할 수 있는지를 볼 것이라고 말했다. 나의 다음 행동 계획은 PHP 내부에 가짜 bash 셸을 작성하여 bash에서 모든 것을 실행하는 것처럼 보이지만 그 자체로 명령 자체를 반복해서 실행하는 위험을 감수합니다.
kainaw

맹활약을하면 힘들다.)
DavidPostill

"& gt; / dev / null"대신 "-loops 1"을 사용할 수 있습니다.
Ayell

답변:


0

정확하게 enter를 누르지는 않지만 많이 어렵지는 않습니다 - 명령

history -s "command to put in history"

주어진 명령 행을 bash 히스토리에 추가합니다. 그런 다음 [위쪽 화살표] [enter]를 사용하여 주입 된 명령을 검색하고 실행할 수 있습니다.

(나는 PHP에서 직접 exec 할 수 있을지 모르거나 PHP 스크립트를 bash 스크립트로 랩핑해야한다면 잘 할 수 있을지는 모르겠다)


이것은 명령 행에서 작동하지만 (지금까지는) PHP 스크립트 내부에서가 아닙니다. exit시 STDIN으로 "위로 화살표"를 밀어 넣는 방법에 대해 생각하게 만들었습니다.이 때 저의 전체 문자열을 종료시 STDIN으로 푸시하는 방법에 대해 생각하고 있습니다.
kainaw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.