
ShellScript
1.Variablen
1.1letztes (x) Zeichen einer Variablen
1.2Anzahl Zeichen in var
2.sed
2.1Zeile löschen
2.2Text ersetzen
3.Zwischenablage
4.tr
4.1Zeilenumbruch entfernen
4.2groß und kleinschreibung tauschen
5.awk
5.1nur string 2 anzeigen
5.29 Zeichen ab Stelle 291 lesen
5.3nächste zeile in $0 laden
6.tail
6.1letzte Zeile auswählen
7.head
7.1erste n zeilen lesen
8.sort
9.read
9.1Zeilenweise lesen
10.case
11.enscript
11.1Ascii in ps und pdf
12.cut
13.Array
14.Malen im script
15.Echo
15.1ohne Zeilenumbruch am ende
15.2Buntes Echo
16.Dateien in Ordner verarbeiten
17.Einzeiler
18.grep
intern
echo Uebergabeparameter: $* echo user ist: $USER echo shell ist: $SHELL echo Parameter 1 ist: $1 echo Prozedurname ist: $0 echo Prozessnummer ist: $$ echo Anzahl der Parameter ist: $# a=17.89 # ohne Luecken am = Zeichen
system
echo $PPID >/daten/public/drucker.txt echo $UID >>/daten/public/drucker.txt echo $HOME >>/daten/public/drucker.txt echo $HOSTNAME >>/daten/public/drucker.txt echo $HOSTTYPE >>/daten/public/drucker.txt echo $MACHTYPE >>/daten/public/drucker.txt echo $OSTYPE >>/daten/public/drucker.txt echo $$ >>/daten/public/drucker.txt echo $SECONDS >>/daten/public/drucker.txt
http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/internalvariables.html
http://de.selfhtml.org/servercgi/cgi/umgebungsvariablen.htm
echo ${vartest: -1}
hier in einem Array Pos 2
echo ${#array[2]}
Alle Zeilen mit hallo löschen
sed '/hallo/ d '
In allen Zeilen Hallo mit Hellau ersetzen.
sed "s/Hallo/Hellau/g"
Punkt ist schwerer..
s/\./ /g
Nur zeilen mit ich ändern
sed -e '/ich/s/$1500/$3000/g'
wenn auch / weg müssen geht auch
sed "s.Hallo.Hellau."
sed kann auch mehreres auf einmal wenns mit semikolon getrennt ist:
sed "s/ersteswird/das/;s/andere/jenes/g"
Wems aufgefallen ist, beim ersten ist es ohne g , das steht für ALLE
echo hier irgend was|xclip -selection clipboard
#zeilenumbruch tr -d '\r' oder tr -d '\n'
tr -d '\r' tr -d '\n'
tr A-Z a-z tr a-z A-Z tr "[:upper:]" "[:lower:]" tr "[A-Z]" "[a-z]"
awk '{print $2}'
BaCo=`echo "$line" | awk '{print substr($0, 291, 9)}'` # "" wegen leerzeichen
awk '/eth0/{getline; print $0}'
Berechnung anhand der Länge einer Variablen
let lange=`echo $Nummer | awk '{print length($Nummer)}'`*10+100
wer=`tail -n 1 $PC`
head -n 8 /daten/www/htdocs/wetter.htm
Datei sortieren, Spalte 1 nehmen und doppelte entfernen
sort -f $tmp | awk '{print $1}'| uniq >$testsoft
cat $dadei |while read line do irgendwas done
case $Stax in 11) Stay="OK" ;; 69) Stay="ZUG" ;; *) Stay="NIX" # alles andere esac
kann auch einen Substring finden:
case "$Dateiname" in
*"€"*) DatName=`echo $Datei | cut -d '€' -f 2 ` ;; # trennt anhand vom € und nimmt den 2ten Teil
*) DatName=`echo $Datei | cut -d '_' -f 2 ` # sonst trennen wir mut dem _
esac
enscript -B testfile.txt -p- | ps2pdf - testfile.pdf
cal 2013 | enscript | lpr -p lp98
bor=`echo $line | cut -d '|' -f 3 `
id="$( cut -d '|' -f 2 <<< "$line" )"
echo dingensens|cut -c 1-5
cut -c 1 <<< "$test" #erstes Zeichen
cut -c 1-6 <<< "$test" # erste 6
$ set -A array "one two three four"
$ echo ${array[0]}
one two three four
so the command given in the OP results in an array with a single element. To replicate that behavior: Code:
$ string="one two three four"
$ set -A array "$string"
$ echo ${array[0]}
one two three four
but if you want to split it into separate array elements do: Code:
$ string="one two three four"
$ set -A array $string
$ echo ${array[0]}
one
if this is not working for you, you probably have IFS set wrong: Code:
$ IFS=""
$ string="one two three four"
$ set -A array $string
$ echo ${array[0]}
one two three four
convert -size "1000x1000" xc:white \ -fill black -draw "line 50,90 200,600" \ -fill grey -draw "line 200,600 600,300" \ test.png
oder transparent:
convert -size "1000x1000" xc:none \ -fill black -draw "line 50,90 200,600" \ -fill grey -draw "line 200,600 600,300" \ test.png
echo -n Hallo
Einstellig ist die Schriftform:
echo -e "\e[0m" #Normal echo -e "\e[1m" #Bold echo -e "\e[4m" #Underline echo -e "\e[7m" #Invert echo -e "\e[8m" #Hidden echo -e "\e[0m" #Normal
Erste stelle 3 oder 9 ist die Schriftfarbe wobei x9 jeweils default ist.
echo -e "\e[30m" #Black echo -e "\e[31m" #Red echo -e "\e[32m" #Green echo -e "\e[33m" #Yellow echo -e "\e[34m" #Blue echo -e "\e[35m" #Magenta echo -e "\e[36m" #Cyan echo -e "\e[37m" #Light Gray echo -e "\e[39m" #Normal echo -e "\e[90m" #Dark Gray echo -e "\e[91m" #Light Red echo -e "\e[92m" #Light Green echo -e "\e[93m" #Light Yellow echo -e "\e[94m" #Light Blue echo -e "\e[95m" #Light Magenta echo -e "\e[96m" #Light Cyan echo -e "\e[97m" #White
Erste Stelle eine 4 oder 10 ist die Hintergrundfarbe und die 9 hinetn wieder default.
echo -e "\e[40m" #Black echo -e "\e[41m" #Red echo -e "\e[42m" #Green echo -e "\e[43m" #Yellow echo -e "\e[44m" #Blue echo -e "\e[45m" #Magenta echo -e "\e[46m" #Cyan echo -e "\e[47m" #Light Gray echo -e "\e[49m" #Normal echo -e "\e[100m" #Dark Gray echo -e "\e[101m" #Light Red echo -e "\e[102m" #Light Green echo -e "\e[103m" #Light Yellow echo -e "\e[104m" #Light Blue echo -e "\e[105m" #Light Magenta echo -e "\e[106m" #Light Cyan echo -e "\e[107m" #White
for i in ordner/*.txt ; do cat "$i"| tr -d '\r' >"neu_$i" ; done
der Ordner die dateien landen dann im Ordner neu_ordner wenn ihn vorher jemand angelegt hat
Alle .txt im Verzeichnis 2017 lesen Zeilenumbruch entfernen und nach neu_2017 schreiben
for i in 2017/*.txt ; do cat "$i"| tr -d '\r' >"neu_$i" ; done
grep dingssucht die Zeilen wo "dings" steht
-A 1 #und die nächste -B 1 #und die Bevor -C 1 #und eine Bevor UND eine Apend