Como inserir caractere de tabulação na “caixa de diálogo”?

Como inserir caractere de tabulação na “caixa de diálogo”?

Estou usando o utilitário "dialog" do Linux para criar uma interface de usuário simples. No entanto, há um texto na infobox e desejo inserir caracteres de tabulação para alinhar corretamente o texto.

Mas parece que essa caixa de diálogo não aceita caracteres de tabulação. Além disso, a opção --tab-correct não ajudou. Se eu escrever \t, aparecerá em \t na infobox.

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

Se eu inserir uma guia na string de comando:

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

aparece como um espaço único.

Existe uma maneira de inserir aba no texto da infobox?

Responder1

Você deve usar a --no-collapseopção, em vez de --tab-correct, e inserir tabulações literais em sua string, por exemplo, com

"star "$'\t'" end" 

ou usando Ctrl- ve pressionando a Tabtecla.

Responder2

Bem, eu não conheço o diálogo, mas às vezes no Linux quando \t não é interpretado como Tab, tente

"`echo -e "\t"`"

Experimente isto:

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

Responder3

A string de comando que você diz que aparece como um único espaço aparece como 8 espaços aqui, não como uma guia (mas talvez seja StackExchange).

Depurar isso pode ser um pouco complicado. Existem diversas coisas que podem ou não “cozinhar” abas: o terminal, ao inserir o caractere; o shell, ao processar a entrada; o modo terminal subjacente (modo cozido vs. modo cru) e, no final, o próprio diálogo.

Para tornar as coisas ainda mais confusas, se você usar echo para gerar uma guia, ou se você gerar uma guia de alguma outra forma, ainda há uma chance de o emulador de terminal decidir eliminá-la.

Um pressionamento de tecla comumente visto para escapar desse tipo de caracteres de controle é C-v(ou seja, Control+V, CTRL+V). Se você clicar nisso, então tab, você poderá inserir uma aba real. Aqui com o GNU bashe urxvto , funciona.

Depurar isso corretamente requer saberexatamentequal é o problema (ou seja, o que está comendo a conta). Simplesmente colocar \t lá não funcionará, a menos que dialogseu shell tenha o recurso para traduzir essas sequências de escape. Se você quiser isso, siga o conselho de @Eran Ben-Natan e use echoo modo aprimorado do GNU (outras implementações podem/serão diferentes - não há comportamento específico especificado no POSIX (IEEE 1003.1 2008, página 2615, linha 84306)).

informação relacionada