Zum Inhalt springen

ShellScript soll Datei mit Echo Zeilenweise ausgeben


KarlBerg

Empfohlene Beiträge

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 :D

Danke im vorraus

KarlBerg

Link zu diesem Kommentar
Auf anderen Seiten teilen


#!/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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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"

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...