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

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

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

하지만 해당 대화 상자는 탭 문자를 허용하지 않는 것 같습니다. 또한 --tab-corright 옵션이 도움이 되지 않았습니다. \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작동합니다.

이를 올바르게 디버깅하려면 다음 사항을 알아야 합니다.정확히문제가 무엇입니까(즉, 탭을 먹고 있는 것이 무엇입니까). 단순히 \t를 입력하면 dialog쉘에 이 이스케이프된 시퀀스를 변환하는 기능이 없으면 작동하지 않습니다 . 이를 원한다면 @Eran Ben-Natan의 조언을 따르고 GNU echo의 고급 모드를 사용하십시오(다른 구현은 다를 수 있습니다. POSIX에 지정된 특정 동작은 없습니다(IEEE 1003.1 2008, 2615페이지, 84306행)).

관련 정보