나타나는 내용을 변경할 수 있습니까 $PS1
? 사용자가 입력한 내용입니다. my_function
나중에 몇 가지 명령을 실행하는 것이 좋습니다 . 물론 백스페이스를 사용하여 수정/삭제할 수 있어야 합니다.
root@linux:
root@linux: ls
aplha beta gamma
root@linux: my_function
root@linux: echo_something_here (It should be deletable by me)
답변1
기반으로이 답변당신은 그것을 사용할 수 있습니다expect
(먼저 설치해야 할 수도 있습니다):
#!/usr/bin/expect -f
# Get a Bash shell
spawn -noecho bash
# Wait for a prompt (in my case was '$', but your example only put ':')
expect ": "
# store the first argument in a variable
set arg1 [lindex $argv 0]
# Type something
send $arg1
# Hand over control to the user
interact
exit
이제 호출할 수 있습니다(로 저장했다고 가정 my_function
).
root@linux: ./my_function "some text here"
root@linux: some text here
유일한 부정적인 영향은 새로운 폭식을 시작한다는 것입니다.
답변2
질문을 올바르게 이해하면 지원 스크립트가 있습니다.
#!/bin/bash -ei "$*" 읽기 printf "%s\n" "$REPLY"
예를 들어 ~/bin/iedit를 호출하려면 다음과 같이 말할 수 있습니다.
eval $( ~/bin/iedit "여기에 텍스트가 있습니다." )
그러면 편집할 수 있는 "여기에 일부 텍스트"가 출력됩니다. 편집이 완료되면 생성된 명령이 실행됩니다.
이것은 아주 좋은 코드 예제는 아닙니다. 거의 항상 "$*" 대신 "$@"를 사용하고 싶고 일반적으로 eval 사용을 피해야 합니다. 기록 -s $REPLY를 추가할 수도 있습니다. 이를 종합하면 지원 스크립트는 다음과 같을 수 있습니다.
#!/bin/bash -ei "$*" 읽기 기록 -s "$REPLY" FC-S
"source ~/bin/iedit "여기에 일부 텍스트""라고 부를 수 있습니다.