echo/printf Formatierung (Ausrichtung)

H

Hamburger2008

Grünschnabel
Hallo,
kann man echo bzw. printf dazu bringen, Text rechtsbündig auszugeben?
Oder muss man da awk bemühen? Wie macht man das?
 
Hallo
echo weniger, aber mit printf geht das.
Du musst allerdings wissen, wie breit die Zeile maximal ist.
z.B. max 70
Code:
printf "%70s\n" "Das ist ein Teststring mit ein paar Zeichen."
                           Das ist ein Teststring mit ein paar Zeichen.
 
PROMPT_COMMAND Ausrichtung

Danke.

Ja, in diese Richtung habe ich auch gedacht.
Habe da auch was gefunden:

http://www.oreilly.com/catalog/9780596526788/toc.html
Writing Output with More Formatting Control
For a string, the first digit is the maximum field width, and the second is the minimum field width. The string will be truncated (if longer than max) or blank padded (if less than min) as needed. When the max and min specifiers are the same, then the string is guaranteed to be that length. The negative sign on the specifier means to left align the string (within its field width). Without the minus sign, the string would right justify, thus:

$ printf '%10.10s = %4.2f\n' 'GigaHerz' 1.92735
GigaHerz = 1.93
$

Was ich eigentlich will, ist den PROMPT_COMMAND verändern. Bisher hatte ich
Code:
PROMPT_COMMAND='echo -ne "\033]0;${PWD/$HOME/~}  ${USER}@${HOSTNAME}\007"'

Ich hätte es aber gerne, dass das Verzeichnis linksbündig und der username rechtsbündig im Xterm-Titel steht. Ich fürchte ja fast, dass ich mich da in awk einlesen muss?!

Gut, ich habe vorerst mal das hier erreicht:
Code:
PROMPT_COMMAND='echo -ne "\033]0; ${PWD/$HOME/~} `printf "%100.100s" $USER`\007"'
Das tut auch erstmal, aber es sieht irgendwie zu kompliziert aus. Und es ist natürlich auch nicht wirklich rechtsbündig.

Nebenbei:
Wieso werden hier
Code:
export PROMPT_COMMAND='echo -ne "\033]0;${PWD}/\t\t\t\t\t${USER}@${HOSTNAME}\007"'
die Tabulatoren ignoriert?

Und: was ist der Unterschied zwischen
Code:
PROMPT_COMMAND='echo -ne "\033]0; ${PWD/$HOME/~}\007"'
und
Code:
PROMPT_COMMAND='echo -ne "\033]0; ${PWD}\007"'
Das "$HOME/~" bewirkt offensichtlich dass das $HOME mit einer Tilde angezeigt wird. Aber wie und warum?


Code:
$ bash --version
bash --version
GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
 
Ich habe das Problem mit folgenden Befehlen gelöst:

# \033[<NUM>G move to column <NUM> (linux console, xterm, not vt100)
# \033[<NUM>C move <NUM> columns forward but only upto last column
# \033[<NUM>D move <NUM> columns backward but only upto first column
# \033[<NUM>A move <NUM> rows up
# \033[<NUM>B move <NUM> rows down


Code:
echo -en "--- Aufgabe ---"
Befehl &>/dev/null
echo -e "\033[500C\033[4D\033[1;32mdone\033[0m"

Code:
---Aufgabe---                                             [COLOR="Lime"]done[/COLOR]

Erklärung:
Über folgenden Befehl wird die Anzahl der möglichen Zeichen ausgegeben
Code:
echo $COLUMNS
Code:
Putty Standard sind 80

Der folgende Befehl geht ganz nach rechts ans Ende der Konsole:
Code:
\033[500C

Der folgende Befehl geht 4 Zeichen (Anzahl der Buchstaben des Wortes) wieder nach links:
Code:
\033[4D
 

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

NAS-Drive Mount in Bash-Script über crontab

mehrsprachiges Shellscript - wie umsetzen?

Unix Webserver mit HTML Seite erstellen

CentOS 5.8 –SQL Abfrage– HTML wird generiert und daraus müssen mehrere Mails versendet werden

Zurück
Oben