Wie kann ich $myvar
drucken aufgefüllt, so dass es sich in der Mitte des Terminals befindet, und zu beiden Seiten sind =
an den Rand des Bildschirms?
Akzeptierte Antwort:
Ich habe hier im Stackexchange-Netzwerk zwei Informationen gefunden, die mir geholfen haben, zu dieser funktionierenden Antwort zu gelangen:
- https://stackoverflow.com/q/263890/5419599
- https://stackoverflow.com/q/4409399/5419599
Der Code in dieser Antwort ist jedoch mein eigener.
Sehen Sie sich den Bearbeitungsverlauf an, wenn Sie mehr Ausführlichkeit wünschen; Ich habe alle Cruft und „Schritte auf dem Weg“ herausgeschnitten.
Ich denke, der beste Weg ist:
center() {
termwidth="$(tput cols)"
padding="$(printf '%0.1s' ={1..500})"
printf '%*.*s %s %*.*sn' 0 "$(((termwidth-2-${#1})/2))" "$padding" "$1" 0 "$(((termwidth-1-${#1})/2))" "$padding"
}
center "Something I want to print"
Ausgabe auf einem 80 Spalten breiten Terminal:
========================== Something I want to print ===========================
Beachten Sie, dass die Auffüllung kein einzelnes Zeichen sein muss; eigentlich das padding
variable nicht, sie ist im obigen Code 500 Zeichen lang. Sie könnten eine andere Form der Auffüllung verwenden, indem Sie nur padding
ändern Zeile:
padding="$(printf '%0.2s' ^v{1..500})"
Ergebnisse in:
^v^v^v^v^v^v^v^v^v^v^v^v^v Something I want to print ^v^v^v^v^v^v^v^v^v^v^v^v^v^
Eine weitere praktische Anwendung ist:
clear && center "This is my header"