탭 지원이 포함 된 Linux Bash Shell 읽기 (\ t)
Oct 16 2020
\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:~$
답변
6 StéphaneChazelas Oct 15 2020 at 23:03
$'...'이러한 이스케이프 시퀀스를 이해하는 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빌드 시간 및 런타임 설정의 많은 구현 ( 's builtin 포함)에 따라 다르 므로 피하는 것이 가장 좋습니다 .
terdon Oct 15 2020 at 23:02
항상 8 개의 공백을 추가 할 수 있습니다.
read -p ' hello '
그러나 예, 실제 탭 문자를 얻을 수도 있습니다.
read -p $'\t''hello '
또는
read -p "$(echo -e '\thello ')"
또는
read -p "$(printf '\thello ')"