Linux Bash Shell은 탭(\t)을 통한 읽기를 지원합니다.

Linux Bash Shell은 탭(\t)을 통한 읽기를 지원합니다.

\t수평 탭을 갖는 옵션echo

wolf@linux:~$ echo hello
hello
wolf@linux:~$ 

wolf@linux:~$ echo -e '\thello'
    hello
wolf@linux:~$ 

에도 비슷한 옵션이 있나요 read?

wolf@linux:~$ read -p 'hello '
hello wolf
wolf@linux:~$ 
wolf@linux:~$ read -p '\thello '
\thello wolf
wolf@linux:~$ 

원하는 출력

wolf@linux:~$ read -p '\thello ' <- need something to produce something like tab or `\t` in `echo`
    hello wolf
wolf@linux:~$ 

답변1

$'...'이러한 이스케이프 시퀀스를 이해하려면 언제든지 ksh93 스타일 인용을 사용할 수 있습니다 .

IFS= read -r -p $'\thello ' var

(그리고 관련이 IFS=없습니다 . 그것들 없이는 호출이 거의 의미가 없기 -r때문에 여기에 추가하고 있습니다 ).read

이는 -p표준 기능이 아닙니다 sh. ksh/zsh에서는 -p공동 프로세스에서 읽고 프롬프트가 지정됩니다 read 'var?Prompt: '. bash여기에 호환되지 않는 API를 도입하기로 선택한 것은 불행한 일입니다 . 하지만 꼭 그것을 사용할 필요는 없습니다. -p휴대용으로 할 수 있습니다:

printf >&2 '\thello '
IFS= read -r var

printf형식 매개변수와 지정자 매개변수에서 이러한 이스케이프 시퀀스를 인식합니다 %b. echo인식 여부 (또는 -e인식 옵션 허용)는 구현에 따라 다르며 많은 구현( bash내장 포함)의 경우 빌드 시간 및 런타임 설정에 따라 달라집니다.피하는 것이 가장 좋다.

답변2

언제든지 간단히 공백 8개를 추가할 수 있습니다.

read -p '        hello '

하지만 그렇습니다. 실제 탭 문자를 얻을 수도 있습니다.

read -p $'\t''hello '

또는

read -p "$(echo -e '\thello ')"

또는

read -p "$(printf '\thello ')"

관련 정보