KarlBerg Geschrieben 10. April 2002 Teilen Geschrieben 10. April 2002 Hi, bin mir net sicher, ob meine Frage hierher oder zu den Programmieren gehört, also verschieben falls falsch. Ich habe in der Datei "logo" folgendes Ascii-Bild: , , /( )` \ \___ / | /- _ `-/ ' (/\/ \ \ /\ / / | ` \ O O ) / | `-^--'`< ' (_.) _ ) / `.___/` / `-----' / <----. __ / __ \ <----|====O)))==) \) /==== <----' `--' `.__,' \ | | \ / /\ ______( (_ / \______/ ,' ,-----' | `--{__________) Nun soll jede Zeile eingelesen werden, um dann mit "echo" ausgegeben zu werden. Der Sinn besteht darin, dass ich der Ausgabe eine Farbe zuweisen kann. Sonst wäre das "Problem" mit "cat logo" zu lösen. Hab auch schon nen Code, nur bringt der nicht das gewünschte ergebnis. for i in `cat /opt/etc/logo` do echo $i done Mir wäre auch geholfen, wenn mir jmd. sagen könnte, wie ich die Standard-Textfarbe der Console (kurzfristig) ändern kann. (Geht das in der .profile?) Hoffe das war verständlich Danke im vorraus KarlBerg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DanielB Geschrieben 10. April 2002 Teilen Geschrieben 10. April 2002 #!/bin/bash FILE="/out.txt" SIZE=`cat -n $FILE | tail -1` n=1 echo -ne "\033[31m" while [[ $n -le "$SIZE" ]] do head -$n $FILE | tail -1 n=$(($n+1)) done echo -e "\033[00m"; Das ganze benötigst Du nur, falls du jede Zeile der Datei in einen anderen Farbe darstellen möchtest. Dazu einfach innerhalb der Schleife die Zeilennummer abfragen und ein entsprechendes "echo" absetzen. Zum Farbwechsel reicht z.B. ein "echo -e "\033[31m]". Das währe Rot... für anderen Farben einfach mal durchtesten oder im Netz suchen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
KarlBerg Geschrieben 10. April 2002 Autor Teilen Geschrieben 10. April 2002 Hi, erstmal danke für die schnelle antwort. Leider hab ich das Script noch nicht ganz verstanden Ich hab mal Kommentare hinzugefügt, vielleicht kann die jmd. durch die richtigen ersetzen. Würde dieses Script auch funktionieren, wenn in der Quelldatei Sonderzeichen auftauchen, wie in meinem Bsp., also "\`´/| und so? Original geschrieben von DanielB #!/bin/bash FILE="/out.txt" #entspricht wohl meiner logo /also der QuellDatei SIZE=`cat -n $FILE | tail -1` #was macht Tail? n=1 echo -ne "\033[31m" #hae? while [[ $n -le "$SIZE" ]] #ist size die ZeilenAnzahl? do head -$n $FILE | tail -1 #head /tail? n=$(($n+1)) #hochzaehlen done echo -e "\033[00m"; #;? was wird hier ausgegeben? Variable? Danke KarlBerg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DanielB Geschrieben 10. April 2002 Teilen Geschrieben 10. April 2002 Original geschrieben von KarlBerg Hi, erstmal danke für die schnelle antwort. Leider hab ich das Script noch nicht ganz verstanden Ich hab mal Kommentare hinzugefügt, vielleicht kann die jmd. durch die richtigen ersetzen. Würde dieses Script auch funktionieren, wenn in der Quelldatei Sonderzeichen auftauchen, wie in meinem Bsp., also "\`´/| und so? Sorry, hatte es etwas eilig Ist auch irgendwie nur ne dirty hack, nicht besonders schön. Geht höchstwahrscheinlich auch einfacher Ich werds mal kommentieren : #!/bin/bash #Deine Logo ASCSII Datei FILE="/out.txt" # Das hier macht nichts anderes als die Anzahl der Zeilen # der Logo Datei ermitteln. Wird später für die Schleife als # Steuervariable benutzt. Tail selbst gibt die letzen Zeilen von z.B. # einer Datei aus. Das -1 bedeutet, das nur die letzte Zeile # ausgegeben wird. cat -n gibt Zeilennummern mit aus. Ist hier # eigentlich sehr unschön gelöst, falls die Logo Datei als # Abschluss keine Leerzeile hat, funktioniert das ganze Script # nicht mehr. SIZE=`cat -n $FILE | tail -1` #was macht Tail? n=1 # Ist ein Steuercode welcher die Textfarbe der Console auf # Rot setzt. echo -ne "\033[31m" # Wiederhole solange n$ kleiner $SIZE. # Dient dazu jede Zeile der Datei auszugeben. while [[ $n -le "$SIZE" ]] do # Yep, head | tail # Es wird vom Anfang der Logodatei, # bis Zeile $n ausgegeben. Diese Ausgabe wird an # tail weitergeleitet, welches wiederum nur die letzte # Zeile ausgibt. head -$n $FILE | tail -1 # Steuervariable für die Schleife inkrementieren n=$(($n+1)) done # Wiederum ein Steuercode, welcher die Textfarbe der # Console wieder auf das Standard weiss/grau setzt. echo -e "\033[00m"; [/code] Hoffe es ist jetzt ein bisschen verständlicher. Ja, es funktioniert auch mit Sonderzeichen, ich habe das Script schnell gebastelt und auch mit deinem Logo getestet. Wie oben bereits erwähnt, funktioniert es jedoch im Moment nur, solange die Logodatei eine Leerzeile am Ende besitzt. Wie gesagt, du brauchst das Script nur wenn Du jede Zeile der Logodatei in einer anderen Farbe ausgeben möchtest. Anderenfalls, reicht sowas auch : [code] #!/bin/bash # FILE="/logo.txt" echo -e "\033[31m" cat $FILE echo -ne "\033[00m" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 11. April 2002 Teilen Geschrieben 11. April 2002 Warum schreibst Du die Steuercodes nicht einfach mit in die Datei, die Du ausgeben moechtest? Nic awk '{printf("\033[31m%s\033[00m\n",$0)}' <Datei Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
KarlBerg Geschrieben 13. April 2002 Autor Teilen Geschrieben 13. April 2002 Hi, danke für die Antworten... ...läuft gut... MfG KarlBerg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.