답변의 예에서 "뭔가"는 무엇을 의미합니까?화면에서 프로그램을 실행하고 모든 출력을 파일로 리디렉션하고 분리하는 방법, 명령이 $'' 영역 뒤에 있기 때문입니다.
screen -S workspace -X stuff $'ps aux > output-x\n'
답변1
~에 따르면논평:
stuff는 사용자가 입력하는 대로 문자를 보냅니다.
이는 세션이 특정 시점(즉, 생성될 때)에 연결된 경우에만 작동하는 것 같습니다. 또한 문자를 보내기 때문에 명령을 실행하려면 개행 문자를 보내야 합니다.
Linux의 경우 나에게 도움이 된 단계는 다음과 같습니다.
screen -S some_session_name
- Ctrl+ A D이별
screen -S some_session_name -X stuff 'command'$(echo -ne '\015')
나한테서 지시를 받았어."터미널/생활" 게시물: 스크린 세션에 명령 보내기.
답변2
~에서수동:
현재 창의 입력 버퍼를 문자열로 채웁니다.
회의는 반드시아니요부착하는 데 시간이 오래 걸립니다.
분석해 보겠습니다.
- GNU 화면실행 중인 프로그램의 연결을 끊었다가 나중에 다시 연결할 수 있는 프로그램입니다.
screen -dmS workspace
연결이 끊긴 새 화면을 만듭니다.screen -S workspace -X [command]
보낼 것이다[주문하다]도착하다화면세션 호출작업 공간.- [주문하다]bash 명령이 아닙니다. 이것은 단지 내부 명령입니다.화면
CTRL+A
...:
연결되었을 때 누르는 것과 동일화면세션은 괜찮습니다. - 다른 예[주문하다]예
detach
또는sessionname myNewName
. - 이것[주문하다]선택한 사용자는
stuff
- 이것은 단지"텍스트 붙여넣기"해당 세션에 입장하세요. stuff
인수로 문자열이 필요합니다... 따라서 제출한stuff "hello"
다음 screen 세션에 다시 연결 하면hello
입력한 단어와 깜박이는 커서가 뒤따르는 것을 볼 수 있습니다...screen
텍스트 실행을 속일 수 있습니다"반죽"텍스트 끝에 개행 문자(예:\n
또는 )를 배치합니다.^M
- 이제 변경하면"반죽"
"hello"
전체 명령의 문자열은"hello^M"
다음과 같습니다.screen -S workspace -X stuff "hello^M"
... 이제 화면에 다시 연결하면 이라고 표시됩니다Command 'hellohello' not found.
. hello
이제 붙여넣은 텍스트를 원하는 대로 바꾸면 됩니다!
예:
screen -ls
> "No Sockets found."
screen -dmS workspace
screen -ls
> "There is a suitable screen on..."
screen -S workspace -X stuff "echo Hello World! PID $$ > hello.txt^M"
cat hello.txt
> Hello World! PID 1234