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-collapse
opçã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 bash
e urxvt
o , 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 dialog
seu shell tenha o recurso para traduzir essas sequências de escape. Se você quiser isso, siga o conselho de @Eran Ben-Natan e use echo
o 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)).