Ash/shell Prompt in Farbe

Um ein wenig Ordnung in die Ausgabe zu bekommen,
ich übersehe immer wieder den Prompt zb. „root@ffkbuu-cpt-meinrouter“ in der Ausgabe von „uci show|grep dingens“-Varianten,
kann man die Ausgabe, bzw wenigstens den Prompt im Freifunk-Router kolorieren?

Kann man steuern, Code entsprechend anpassen.
In die .profile

PS1='\[\033[35;1m\]\u\[\033[0m\]@\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] [\[\033[35m\]\#\[\033[0m\]]\[\033[31m\]\$\[\033[0m\] '
1 „Gefällt mir“

Oder (in /etc/profile) etwas reduziert für den Gluon root-User

...
 17 case "$TERM" in
 18         xterm*|rxvt*)
 19                 # export PS1='\[\e]0;\u@\h: \w\a\]'$PS1
 20                 export PS1='\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] \[\033[31m\]\$\[\033[0m\] '
 21                 ;;
 22 esac
...

Schön…
„.profile“ existiert nicht, ins „home“… /root …?

Deshalb habe ich mich an /etc/profile getraut, und die Zeile
export PS1='\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] \[\033[31m\]\$\[\033[0m\] '
eingefügt, und bin glücklich.

…jetzt sieht es bei mir in /etc/profile so aus:

...
  case "$TERM" in
          xterm*|rxvt*)
             # export PS1='\[\e]0;\u@\h: \w\a\]'$PS1
             # export PS1='\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] \[\033[31m\]\$\[\033[0m\] '
             export PS1='\[\033[35;1m\]\u\[\033[0m\]@\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] [\[\033[35m\]\#\[\033[0m\]]\[\033[31m\]\$\[\033[0m\] ' 
             ;;
  esac
...

:wink:
… mal sehen was schöner ist… :wink:

aahhh…

echo "PS1='\[\033[35;1m\]\u\[\033[0m\]@\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] [\[\033[35m\]\#\[\033[0m\]]\[\033[31m\]\$\[\033[0m\] '" >./.profile

… das kann man bestimmt auch mit ‚ssh‘ automatisieren… coool…

ssh root@meinffrouter 'echo "PS1='[\033[35;1m]\u[\033[0m]@[\033[31;1m]\h [\033[32;1m]$PWD[\033[0m] [[\033[35m]#[\033[0m]][\033[31m]$[\033[0m] '" >./.profile'

…will aber nicht…

ssh -t root@meinffrouter 'echo "PS1='[\033[35;1m]\u[\033[0m]@[\033[31;1m]\h [\033[32;1m]$PWD[\033[0m] [[\033[35m]#[\033[0m]][\033[31m]$[\033[0m] '" >./.profile'
auch nicht

ssh -t root@meinffrouter "echo "PS1='[\033[35;1m]\u[\033[0m]@[\033[31;1m]\h [\033[32;1m]$PWD[\033[0m] [[\033[35m]#[\033[0m]][\033[31m]$[\033[0m] '" >./.profile"
auch nicht

…habe ich mal in „unser“ Wiki geschrieben…
(ich bin offen für Kritik, vielleicht auch ins wiki.freifunk.net eintragen?)

Wenn du es per ssh mitgeben willst:

MYVAR='\[\033[35;1m\]\u\[\033[0m\]@\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] [\[\033[35m\]\#\[\033[0m\]]\[\033[31m\]\$\[\033[0m\] '
ssh user@example.org "PS1='${MYVAR}'; echo \\$PS1"

@FINWICK

ssh cpt20 "PS1='${MYVAR}'; echo \\$PS1"
\[e]0
ash: u@h:: not found
ash: 32m]u@h[033[00m]:[033[01: not found
ash: 34m]w[033[00m]$: not found

und das mit dem $PWD klappt auch nicht so ganz…

root@ffkbuu-cpt20-46c896 /root [#]$ pwd;cd ..;pwd
/root
/
root@ffkbuu-cpt20-46c896 /root [#]$ ^C

und ich komme mit diversen Hochkommata und Backtiks durcheinander…

Wenn ich die Zeile

PS1='\[\033[35;1m\]\u\[\033[0m\]@\[\033[31;1m\]\h \[\033[32;1m\]$PWD\[\033[0m\] [\[\033[35m\]\#\[\033[0m\]]\[\033[31m\]\$\[\033[0m\] '

mit vi editiere / einfüge klappt das…

Aber ich möchte es natürlich etwas automatisiert, entweder mit echo oder mit ssh-command ausführen…

…das das (Ash/shell Prompt in Farbe - #7 von cptechnik) nicht funktioniert hat … es fehlten oft die backslashes…

…also irgendwie verträgt sich das echo nicht mit dem $PWD…

meist wird es durch den aktuellen Wert „/root“ ersetzt, und damit erscheint „/root“ immer im Prompt, egal wo man ist…

Erst wenn man mit vi die Variable $PWD in den String von PS1 einsetzt funktionierts…

hmmm

… weitere Ideen? (es mit echo oder ssh-command zu automatisieren?)

huiii… heureka… ichglaubichhabs…

echo "PS1='\[\033[31;1m\]\h \[\033[32;1m\]\$PWD\[\033[0m\] \[\033[31m\]\$\[\033[0m\] '" >/root/.profile

Wichtig… das \ vor dem $PWD …beim ECHO-Befehl…!

…jetzt nur noch das Problem mit dem SSH-Command lösen…

Sorry wenn ich euch so zutexte… und Ihr einfach nicht zu Worte kommt…

Habe jetzt ne lösung für ssh-command:

echo "PS1='\[\033[31;1m\]\h \[\033[32;1m\]\$PWD\[\033[0m\] \[\033[31m\]\$\[\033[0m\] '" >ffprofile;scp ffprofile freifunkrouter01:.profile

oder

echo "PS1='\[\033[31;1m\]\h \[\033[32;1m\]\$PWD\[\033[0m\] \[\033[31m\]\$\[\033[0m\] '" >/tmp/ffprofile
scp /tmp/ffprofile freifunkrouter01:.profile
scp /tmp/ffprofile freifunkrouter02:.profile
scp /tmp/ffprofile freifunkrouter03:.profile

Bestehend aus dem echo Befehl, der eine temporäre Datei erstellt (extra auch in /tmp), und die dann per scp auf den ff-router verschiebt.

…geht doch so einfach, oder? :speak_no_evil: