Wie füge ich ein Tabulatorzeichen in einen „Dialog“ ein?

Wie füge ich ein Tabulatorzeichen in einen „Dialog“ ein?

Ich verwende das Linux-Dienstprogramm „Dialog“, um eine einfache Benutzeroberfläche zu erstellen. Allerdings befindet sich in der Infobox ein Text, und ich möchte Tabulatorzeichen einfügen, um den Text richtig auszurichten.

Aber anscheinend akzeptiert dieser Dialog kein Tabulatorzeichen. Auch die Option --tab-correct hat nicht geholfen. Wenn ich \t schreibe, erscheint es in der Infobox bei \t.

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

Wenn ich in die Befehlszeichenfolge einen Tabulator einfüge:

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

es wird als einzelnes Leerzeichen angezeigt.

Gibt es eine Möglichkeit, einen Tabulator in den Infobox-Text einzufügen?

Antwort1

Sie sollten die --no-collapseOption anstelle von verwenden --tab-correctund wörtliche Tabulatoren in Ihren String einfügen, zum Beispiel mit

"star "$'\t'" end" 

oder mit Ctrl- vund Drücken der TabTaste.

Antwort2

Nun, ich kenne den Dialog nicht, aber manchmal in Linux, wenn \t nicht als Tab interpretiert wird, versuchen Sie

"`echo -e "\t"`"

Versuche dies:

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

Antwort3

Die Befehlszeichenfolge, die Ihrer Aussage nach als einzelnes Leerzeichen angezeigt wird, wird hier als 8 Leerzeichen und nicht als Tabulator angezeigt (aber vielleicht ist das bei StackExchange so).

Das Debuggen kann etwas schwierig sein. Es gibt mehrere Dinge, die Tabs „kochen“ können oder nicht: das Terminal beim Einfügen des Zeichens; die Shell beim Verarbeiten der Eingabe; der zugrunde liegende Terminalmodus (Cooked-Modus vs. Raw-Modus) und letztendlich der Dialog selbst.

Um die Sache noch verwirrender zu machen: Wenn Sie Echo zum Generieren einer Registerkarte verwenden oder auf andere Weise eine Registerkarte generieren, besteht immer noch die Möglichkeit, dass der Terminalemulator beschließt, dies zu löschen.

Eine häufig verwendete Tastenkombination zum Ausblenden dieser Art von Steuerzeichen ist C-v(also Control+V, CTRL+V). Wenn Sie diese Taste drücken und dann die Tabulatortaste, wird möglicherweise ein echter Tabulator eingefügt. Hier mit den GNU- bashund urxvtfunktioniert es.

Um dies richtig zu debuggen, müssen Sie wissengenauwas ist das Problem (das heißt, was frisst die Registerkarte). Einfach \t dort einzugeben, funktioniert nicht, es sei denn, dialogIhre Shell verfügt über die Funktion, diese Escape-Sequenzen zu übersetzen. Wenn Sie diese möchten, befolgen Sie den Rat von @Eran Ben-Natan und verwenden Sie den echoerweiterten Modus von GNU (andere Implementierungen können/werden abweichen – in POSIX ist kein spezifisches Verhalten angegeben (IEEE 1003.1 2008, Seite 2615, Zeile 84306)).

verwandte Informationen