2011-02-17 2 views
6

bash 스크립트를 작성하고 사용자 입력을 원합니다. 굉장이, 내가하고 싶은 것을Bash에서 프롬프트를 미리 채우십시오.

것을 제외하고
read -p "What directory should we save in? " -e FOLDER 

이상적으로, 사용자가 같은 것을 볼 수있을 것입니다 : 라인의 끝 부분에 커서를

What directory should we save in? /home/user/default/ 

을하고, 거꾸로 지우거나 추가 할 수있는 능력. 기본적으로 사용자의 입력 내용을 미리 채우지 만 편집 할 수있는 권한을 부여합니다.

Readline에는 기능이 있지만 분명히 read 명령에 표시되지 않는 것으로 보입니다. 어떤 대안? 펄이나 그와 같은 것을 사용할 필요가 없다.

내가 작업하고있는 제약 조건은 광범위하게 유포하는 데 좋은 단일 셸 스크립트를 작성하고 있으므로 가능한 한 적은 기존 인프라에 의존해야한다는 것입니다. rlwrapread -i 모두 인 경우 종속성 (각각 rlwrap 및 배쉬 버전 >>)을 사용할 수 있습니다. 둘 다 좋은 답변을 선택하십시오.

+0

bash 버전은 무엇입니까? 'bash --version'을 실행하십시오. –

+0

@Foo Bah - 가능한 한 많은 버전의 bash에서 작동하고 싶습니다. 이상적으로는 궁극적으로 궁극적으로 bash에 의존하지 않겠지 만 괜찮을 것이다. – agnoster

+0

rlwrap는 당신의 친구입니다. –

답변

0

당신은 순간의 readline 기능을 제공 rlwrap의 명령, 포장 할 수 있습니다 http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap

(rlwrap의 -P 당신이 원하는 것을)를

지금까지 순수 bash는 솔루션이 3.2 라인에 관한 한 (나는 당신이 사용하고 있다고 추정하고 있습니다.), 나는 그럴 수 있다고 생각하지 않습니다.

11
$ read -p "What directory should we save in? " -i "/home/user/default/" -e FOLDER 
What directory should we save in? /home/user/default/ 

그게 맞을까요?

+2

읽기 -i는 bash 3.2.25에서 제공되지 않습니다. (rhel5.5) 또는 3.2.48 (스노우 레오파드) –

+0

그런 다음 4.1과 내가 추가 한 것 사이에 추가 된 것 같아 – vmpstr

+0

멋지지만 그래, 내가 배쉬 버전에서 지원하지 않는다. 호환이 가능해야한다. (perl과 같은 것을 사용하는 나의 과묵함. 아마도 내가 충분히 의지 할 수있을 정도로 널리 퍼져있다.) – agnoster

관련 문제