Bash에서 제안 프롬프트로 텍스트 에코

Bash에서 제안 프롬프트로 텍스트 에코

나타나는 내용을 변경할 수 있습니까 $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 "여기에 일부 텍스트""라고 부를 수 있습니다.

관련 정보