"대화상자"에 탭 문자를 삽입하는 방법은 무엇입니까?

"대화상자"에 탭 문자를 삽입하는 방법은 무엇입니까?

저는 간단한 UI를 만들기 위해 Linux "대화 상자" 유틸리티를 사용하고 있습니다. 그런데 정보 상자에 텍스트가 있는데 텍스트가 제대로 정렬되도록 탭 문자를 삽입하고 싶습니다.

그러나 대화 상자는 탭 문자를 허용하지 않는 것 같습니다. 또한 --tab-Corlect 옵션은 도움이 되지 않습니다. \t라고 쓰면 정보 상자의 \t에 표시됩니다.

dialog --title "Hello" --tab-correct --infobox "tab \t test" 20 100

명령 문자열에 탭 문자를 삽입하는 경우:

dialog --title "Hello" --tab-correct --infobox "tab         test" 20 100

별도의 공간으로 보입니다.

정보 상자 텍스트에 탭 문자를 삽입하는 방법이 있습니까?

답변1

--no-collapse대신 이 옵션을 사용해야 하며 --tab-correct, 문자열에 리터럴 탭 문자를 삽입해야 합니다.

"star "$'\t'" end" 

또는 Ctrl-를 사용 v하고 Tab키를 누릅니다 .

답변2

글쎄요, 대화 상자에 대해서는 잘 모르지만 Linux에서 \t가 Tab으로 해석되지 않는 경우가 있습니다.

"`echo -e "\t"`"

이 시도:

declare -r TAB="`echo -e "\t"`"
echo -e "A${TAB}B"

답변3

여기서는 단일 공백으로 표시된 명령 문자열이 탭 대신 8개의 공백으로 표시됩니다(그러나 StackExchange일 수도 있음).

이를 디버깅하는 것은 약간 까다로울 수 있습니다. 탭을 "쿠킹"할 수도 있고 그렇지 않을 수도 있는 몇 가지 사항이 있습니다. 즉, 문자를 삽입할 때의 터미널, 입력을 처리할 때의 셸, 기본 터미널 모드(쿠킹된 대 원시), 그리고 마지막으로 대화 상자 자체입니다.

상황을 더욱 혼란스럽게 만드는 것은 echo를 사용하여 탭을 생성하거나 다른 방법으로 탭을 생성하는 경우 터미널 에뮬레이터가 탭을 지우기로 결정할 가능성이 여전히 있다는 것입니다.

이러한 제어 문자를 이스케이프하는 일반적인 키 입력은 C-v(예: Control+V, CTRL+V)입니다. 그것을 클릭한 다음 탭을 클릭하면 실제 탭을 삽입할 수도 있습니다. 여기서는 GNU bash및 를 사용하여 urxvt작동합니다.

적절한 디버깅을 위해서는 이해가 필요합니다.정확히문제가 무엇입니까(즉, 라벨을 먹고 있는 것이 무엇입니까). dialog쉘에 이러한 이스케이프 시퀀스를 변환하는 기능이 없으면 단순히 \t를 거기에 넣는 것만으로는 작동하지 않습니다. 이를 원한다면 @Eran Ben-Natan의 조언을 따르고 GNU echo의 고급 모드를 사용하십시오(다른 구현은 다를 수 있습니다. POSIX에는 특정 동작이 지정되지 않습니다(IEEE 1003.1 2008, 2615페이지, 84306행)).

관련 정보