|
|
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 2: |
Zeile 2: |
| [[Kontrollstrukturen]] | | [[Kontrollstrukturen]] |
|
| |
|
| [[Datenträger und Dateisystem]] | | [[Allgemeine Befehle - alphabetisch]] |
|
| |
|
| [[Dateiverwaltung]]
| |
|
| |
|
| = ImageMagick =
| |
| == Größe ändern - proportional ==
| |
| targetdir=verkleinert
| |
| mkdir $targetdir
| |
| for file in * ; do convert "$file" -resize 400x400 "$targetdir/$(basename "$file")"; done;
| |
| == Exif Informationen löschen ==
| |
| Wenn Probleme mit Rotation, dann liegt das an den gespeicherten EXIF Informationen. Diese kann man löschen.
| |
| convert -strip orig.jpg stripped.jpg
| |
|
| |
|
| # oder
| | [[Zeichenketten bearbeiten]] |
| mogrify -strip orig.jpg
| |
|
| |
| # ganzes Verzeichnis
| |
| for file in * ; do mogrify -strip $file ; done
| |
|
| |
|
| == HTML Bildergalerie ==
| | [[Rechnen]] |
| Erstellen einer HTML Bildergalerie mit 4 Spalten
| |
| montage *.jpg -title "Titel" -size 128x128 -tile 4x index.html
| |
| Auf der Indexseite wird eine ImageMap mit den Thumbnails erzeugt.
| |
| == Indexprint ==
| |
| Indexprint mit Anzeige der Dateinamen erzeugen
| |
| montage -geometry 200x200+10+10 -label %f -tile 5x6 *.j*.[jJ][pP]*[gG] indexprint.png
| |
| Auf einer Seite befinden sich 30 Thumbnails. Beim Drucken des Indexprints sollte ein Seitenrand eingestellt werden.
| |
| == jhead ==
| |
| jhead -autorot *.jpg
| |
| Stellt liegende Bilder auf
| |
|
| |
|
| [[Prozesse verwalten]] | | [[Bilder bearbeiten]] |
|
| |
|
| [[Netzwerk]]
| |
|
| |
|
| = Allgemein =
| |
|
| |
|
| == at ==
| | [[Datenträger und Dateisystem]] |
| * Befehl zu einer bestimmten Zeit ausführen
| |
| Einen bestimmten Befehl um 23:00 ausführen
| |
| at 23:00
| |
| Es erscheint der at-Prompt zur Eingabe eines Befehls. Eingabe abschließen mit '''STRG + D'''. Der Befehl wird unter einer Jobnummer gespeichert in
| |
| /var/spool/atjobs
| |
| * Job löschen
| |
| Beispiel: Job Nr. 3 löschen
| |
| atrm 3
| |
| * Jobs anzeigen
| |
| atq
| |
|
| |
|
| == alias ==
| | [[Dateiverwaltung]] |
| * Aufruf von Linux Kommandos in verkürzter Form
| |
| Beispiele:
| |
| alias wol_backup="wol 00:18:F3:23:BD:B8"
| |
| alias lpr="lpr -o page-left=30 -o page-top=40"
| |
|
| |
|
| * Aliases dauerhaft speichern in
| | [[Prozesse verwalten]] |
| ~/.bashrc
| |
| Gespeicherte Aliases aufrufen durch
| |
| alias
| |
|
| |
|
| * Alias löschen
| | [[Netzwerk]] |
| # Beispiel:
| |
| unalias wake_backup
| |
| | |
| == chroot ==
| |
| Verschieben des Wurzelverzeichnisses = Root Verzeichnis
| |
| chroot /mnt /bin/bash
| |
| # ergänzend:
| |
| mount /proc
| |
| mount /sys
| |
| wenn in /mnt ein Linux Rootsystem gemountet ist
| |
| | |
| == date ==
| |
| Die Formatdefinition wird mit einem '''+''' eingeleitet.
| |
| * Alter einer Datei in Stunden
| |
| Stunden=`( ($(date +%s) - $(date +%s --reference $LOCKFILE)) / 3600 )`
| |
| * Zeit und Datum extrahieren
| |
| zeit=`date +%T | cut -c1-5`
| |
| datum="`date +%A' '%d.%m.%Y`"
| |
| | |
| == dmesg ==
| |
| Zeigt Kernelmeldungen beim Booten an.
| |
| | |
| == find ==
| |
| * Suchen von Dateien in einem bestimmten Verzeichnis
| |
| Normalerweise beginnt die Suche im aktuellen Verzeichnis.
| |
| find /root -name "fileCopy.lock*"
| |
| In diesem Beispiel ist das Verzeichnis <code> /root </code> der Startpunkt für die Suche.
| |
| === Ein Kommando auf das Suchergebnis anwenden ===
| |
| Mit der Option '''-exec''' kann man nur einen Befehl ausführen. Die Konstruktion <tt>{}</tt> wird durch den '''Pfadnamen''' der gefundenen Datei(en) ersetzt.
| |
| * Bestimmte Bilder rekursiv löschen
| |
| filename=DSC00079.jpg
| |
| find . -name "$filename" -exec rm {} \;
| |
| | |
| # Beispiel für das Verzeichnis der Komponente <tt>Phocagallery</tt> in Joomla
| |
| In diesem Beispiel sollen folgende Dateien gelöscht werden:
| |
| DSC00079.jpg
| |
| phoca_thumb_l_DSC00079.jpg
| |
| phoca_thumb_m_DSC00079.jpg
| |
| phoca_thumb_s_DSC00079.jpg
| |
| | |
| filename=DSC00079.jpg
| |
| find . -name "*$filename" -exec rm {} \;
| |
| | |
| # Dateien löschen
| |
| find . -name '*.bak' -exec rm {} \;
| |
| | |
| # Verzeichnisse löschen
| |
| find . -name "*Foto laden*" -type d -exec rm {} -R \;
| |
| | |
| # Broken Symlinks finden und speichern
| |
| find . -type l ! -execdir test -e '{}' \; -print > broken.links
| |
| | |
| # Broken Links löschen
| |
| while read Zeile ; do rm "$Zeile" ; done < broken.links
| |
| | |
| * Schleife durch die Ausgabe des find Befehles
| |
| find . -name *.tif | \
| |
| while read file ; do
| |
| # Bilder konvertieren:
| |
| convert "$file" "`dirname "$file"`/`basename "$file" .tif`.jpg"
| |
| # Dateinamen in Großbuchstaben:
| |
| cp $file `dirname $file`/`basename $file | tr a-z A-Z`
| |
| done
| |
| | |
| * Suchen und ersetzen von Text
| |
| find . -type f -name "*.php" | \
| |
| while read file ; do
| |
| cp "$file" Datei.tmp
| |
| sed -e s/'suchtext'/'ersatztext'/g Datei.tmp > "$file"
| |
| done
| |
| | |
| * Suchtiefe einschränken
| |
| find . -type d -maxtepth 1 -name "joomla_*"
| |
| | |
| == grep ==
| |
| * Text rekursiv in allen Dateien suchen
| |
| grep -r Suchtext /www/HS_Server/
| |
| * Nur in bestimmten Dateien suchen
| |
| grep -r --include "*.php" Suchtext /www/HS_Server/
| |
| | |
| == hwinfo ==
| |
| Hardwareinfo ausgeben, Beispiele:
| |
| hwinfo --sound
| |
| hwinfo --scanner
| |
| | |
| == iconv ==
| |
| Textdateien konvertieren in andere Kodierung
| |
| # Beispiel
| |
| cat Datei.html | iconv -f ISO_8859-15 > Datei.html
| |
| # oder iconv -f ISO_8859-15 Quelldatei.html -o Zieldatei.html
| |
|
| |
| Folgendes Script konvertiert alle html-Dateien und php-Dateien im aktuellen Verzeichnis:
| |
| /usr/local/bin/iconv.sh
| |
| | |
| == loadkeys ==
| |
| loadkeys de
| |
| Deutsche Tastatur laden
| |
| | |
| == lpr ==
| |
| Drucken von der Kommandozeile
| |
| * Datei im Querformat drucken und Ränder setzen
| |
| lpr -o page-left=30 -o page-top=40 -o landscape /etc/fstab
| |
| * Ausgabe eines Kommandos drucken
| |
| fdisk -l | lpr
| |
| * Standard Options
| |
| [http://www.cups.org/documentation.php/options.html#OPTIONS http://www.cups.org/documentation.php/options.html#OPTIONS] | |
| * Howto
| |
| [http://www.cups.org/documentation.php/options.html http://www.cups.org/documentation.php/options.html]
| |
| | |
| == read ==
| |
| Variable einlesen mit editierbarem Vorgabewert
| |
| name="Ferdinand Anton"
| |
| read -e -i "$name" -p "Please enter your name: " input
| |
| echo $input
| |
| == rpm ==
| |
| RPM Paket downloaden und gleich installieren, Beispiel:
| |
|
| |
| rpm -vU http://download.insecure.org/nmap/dist/nmap-4.20-1.i386.rpm
| |
|
| |
| # -v (verbose)
| |
| # -U (Update)
| |
| Infos über Pakete abrufen: -qa = Abfrage, query über alle Pakete.
| |
| # Anzahl der Pakete
| |
| rpm -qa | wc -l
| |
|
| |
| # Info über bestimmtes Paket, in diesem Fall quenview
| |
| rpm -qa | grep quenview
| |
| | |
| Info über rpm: [http://www.tu-chemnitz.de/docs/lindocs/RPM/node4.html http://www.tu-chemnitz.de/docs/lindocs/RPM/node4.html]
| |
| | |
| == screen ==
| |
| Mit <tt>screen</tt> kann man innerhalb einer Konsole mehrere Konsolensitzungen erzeugen.
| |
| | |
| Info: [http://web.archive.org/web/20041012204417/www.linux-user.de/ausgabe/2001/01/092-zubefehl/befehl12.html Artikel aus LinuxUser ]
| |
| * Screen Session starten
| |
| screen
| |
| * Screen Session abtrennen
| |
| screen -d [-S Name]
| |
| Die Sitzung läuft dann im Hintergrund eigenständig weiter.
| |
| * Screen Sitzung wiederaufnehmen
| |
| screen -R [-S Name]
| |
| * Tastenbefehle für den interaktiven Modus:
| |
| Die Tastenbefehle werden eingeleitet mit <tt>Strg a</tt>.
| |
| Eine Liste der Tastenkombinationen erhält man mit der Tastenkombination Strg a ?.
| |
| Einige Beispiele:
| |
| : Neues Fenster: <tt>Strg a c</tt>
| |
| : Nächstes Fenster: <tt>Strg a Leertaste</tt>
| |
| : Sitzung abtrennen: <tt>Strg a d</tt>
| |
| * Screen Befehle
| |
| Diese Befehle ersetzen die im interaktiven Modus verwendbaren Tastenkombinationen und können somit in Scripten verwendet werden. Die Befehle werden mit der Option -X eingeleitet.
| |
| * Nächstes Fenster
| |
| screen -X next
| |
| * Neues Fenster
| |
| screen -X screen
| |
| * Befehl in neuem Fenster
| |
| screen -X screen yast
| |
| | |
| == seq ==
| |
| seq -w 10
| |
| Gibt die Zahlen von 1 bis 10 mit führenden Nullen aus.
| |
| | |
| == su ==
| |
| Dauerhafter Wechsel der Identität
| |
| # Login als Root mit entsprechenden Umgebungseinstellungen
| |
| su -
| |
|
| |
| # Wechsel zu Root ohne Umgebungseinstellungen, man bleibt im selben Verzeichnis
| |
| su
| |
| | |
| Damit man von der Textkonsole aus auch grafische Programme verwenden kann, gibt es den Befehl '''kdesu'''.
| |
| Beispiel:
| |
| kdesu konqueror
| |
| | |
| == sudo ==
| |
| * Mit sudo kann ein Befehl unter einem anderen Benutzer ausgeführt werden, typischerweise als root.
| |
| sudo befehl
| |
| # oder
| |
| sudo -u username befehl
| |
| | |
| * Mit dem Kommando
| |
| visudo
| |
| kann man die Datei <code>/etc/sudoers</code> bearbeiten
| |
| | |
| * Beispiel:
| |
| # Shutdown für die Gruppe users erlauben:
| |
| %users localhost=/sbin/shutdown -h now
| |
| | |
| # ... für alle:
| |
| ALL localhost=/sbin/shutdown -h now
| |
| | |
| * Hier findet man eine gute Anleitung: http://www.gentoo.org/doc/de/sudo-guide.xml#doc_chap3
| |
| | |
| == uname ==
| |
| Systeminformationen ausgeben
| |
| uname -a
| |
| liefert alle Infos
| |
| | |
| == xdg-open ==
| |
| Öffnet eine Datei oder URL mit dem dafür vorgesehenen Standardprogramm.
| |
| xdg-open PIC12345.jpg
| |
| | |
| =Zeichenketten bearbeiten=
| |
| | |
| == Stringverarbeitung mit der Bash ==
| |
| * Zeichen am Anfang abschneiden
| |
| file="DateiName.txt"
| |
| echo ${file:5}
| |
| Ausgabe
| |
| Name.txt
| |
| | |
| * 4 Zeichen ab Position 5 herausschneiden
| |
| file="DateiName.txt"
| |
| echo ${file:5:4}
| |
| Ausgabe
| |
| Name
| |
| | |
| == cut ==
| |
| Aus einer Zeichenkette Zeichen herausschneiden
| |
| | |
| Beispiele:
| |
| # GID aus /etc/passwd anzeigen
| |
| zeile=`grep username /etc/passwd`
| |
| gid=`echo $zeile | cut -d ":" -f "4"`
| |
| | |
| # Benutzerliste aus LDAP extrahieren:
| |
| ldapsearch -x -b "ou=users,dc=network" uid -LLL | grep uid: | cut -d " " -f "2"
| |
|
| |
| # Homedirectories anzeigen:
| |
| ldapsearch -x -b "ou=users,dc=network" homeDirectory -LLL | grep homeDirectory: | cut -d " " -f "2"
| |
| | |
| -d gibt das Trennzeichen an
| |
| : Das Standardtrennzeichen ist das Tabulatorzeichen
| |
| | |
| -f gibt an, das wievielte Feld herauszuschneiden ist
| |
| | |
| == here-document ==
| |
| Zur Ausgabe eines mehrzeiligen Textes in einem Skript
| |
| if [ $# -eq 0 ]; then
| |
| cat << 'delimiter'
| |
| -----------------------------------------------------
| |
| Usage: adduser.sh User Gruppe Zuname Vorname Passwort
| |
| oder
| |
| adduser.sh Dateiname
| |
| -----------------------------------------------------
| |
| delimiter
| |
| exit
| |
| fi
| |
| | |
| | |
| == sed ==
| |
| === Suchen und Ersetzen von Text ===
| |
| # Jedes Vorkommen des Suchtextes ersetzen
| |
| cat datei.txt | sed -e s/'suchtext'/'ersatztext'/g > neue_datei.txt
| |
|
| |
| # Nur das erste Vorkommen des Suchbegriffs pro Zeile ersetzen
| |
| cat datei.txt | sed -e s/'suchtext'/'ersatztext'/ > neue_datei.txt
| |
| | |
| # Nur das 3. Vorkommen des Suchbegriffs pro Zeile ersetzen und das Ergebnis ausgeben
| |
| cat datei.txt | sed -e s/'suchtext'/'ersatztext'/3p > neue_datei.txt
| |
| | |
| * Kommentare und Leerzeilen entfernen
| |
| sed -e '/^\#/d' datei > datei.tmp
| |
| sed -e '/^$/d' datei.tmp > datei
| |
| | |
| * Anführungszeichen löschen
| |
| echo "text" | sed 's/"//g'
| |
| | |
| * Rekursiv suchen und ersetzen von Text
| |
| | |
| if [ $# -gt 2 ] ; then
| |
| suchtext=$1
| |
| ersatztext=$2
| |
| else
| |
| read -e -p "Suchtext: " suchtext
| |
| read -e -p "ersetzen durch: " ersatztext
| |
| fi
| |
|
| |
| grep -rl "$suchtext" | \
| |
| while read file; do
| |
| cp "$file" datei.tmp
| |
| sed -e s/"$suchtext"/"$ersatztext"/g datei.tmp > "$file"
| |
| done
| |
| rm datei.tmp
| |
| | |
| * Ersetzen von Variablen etc. in PHP Dateien
| |
| suchtext=\$this-\>someThing
| |
| ersatztext=\$this-\>someNewThing
| |
| grep -rl --include "*.php" "$suchtext" | \
| |
| while read file; do
| |
| cp "$file" datei.tmp
| |
| sed -e s/"$suchtext"/"$ersatztext"/g datei.tmp > "$file"
| |
| done
| |
| rm datei.tmp
| |
| Man beachte das Quoten der Zeichen $ und >
| |
| | |
| === Dateinamen ändern ===
| |
| suchtext="IMG_ "
| |
| ersatztext="Bild_"
| |
| for file in * ; do neu=`echo $file | sed s/"$suchtext"/"$ersatztext"/`;mv "$file" "$neu"; done
| |
| * Verzeichnisnamen rekursiv ändern
| |
| read -e -p "Suchtext: " suchText
| |
| read -e -p "ersetzen durch: " ersatzText
| |
| find . -type d | \
| |
| while read dir; do
| |
| newDir=`echo "$dir" | sed -e s/"$suchText"/"$ersatzText"/`;
| |
| if [ $dir != $newDir ] ; then mv "$dir" "$newDir" ; fi
| |
| done
| |
| | |
| == sort ==
| |
| * Passwortdatei sortieren nach UID
| |
| sort -t: -k 3n /etc/passwd
| |
| : Doppelpunkt als Trennzeichen für Spalten: Option -t
| |
| : Sortieren numerisch nach der 3. Spalte
| |
| Verbrauchten Festplattenplatz ausgeben und Liste sortieren:
| |
| # Es wird numerisch nach der 3. Spalte sortiert (0, 1, 2)
| |
|
| |
| repquota -a | sort -n +2
| |
| | |
| ergibt:
| |
| | |
| hs -- 654052 0 0 8068 0 0
| |
| eifr -- 710531 0 0 4710 0 0
| |
| vs -- 1721870 0 0 5303 0 0
| |
| vsdir -- 2077308 0 0 5795 0 0
| |
| root -- 10953439 0 0 3767 0 0
| |
| | |
| == tr ==
| |
| | |
| * Dateinamen ändern mit <code>tr</code>
| |
| Zum Beispiel Großbuchstaben in Kleinbuchstaben
| |
| for file in *
| |
| do
| |
| new=`echo $file | tr '[:upper:]' '[:lower:]'`
| |
| # new=`echo $file | tr '11.3' '11.4'`
| |
| echo mv $file $new
| |
| done
| |
| Mit find auch rekursiv
| |
| find . -type f | while read i; do
| |
| file="${i##*/}";
| |
| directory="${i%/*}";
| |
| mv "$i" "$directory"/"`echo "$file" | tr "A-Z" "a-z"`" ;
| |
| done
| |
| | |
| =Rechnen=
| |
| * Syntax
| |
| Rechenaufgabe sind für die bash mit dem richtigen Syntax kein Problem:
| |
| echo $(( 2 * 2 ))
| |
| 4
| |
| | |
| Auch mit kleineren Formeln kommt sie klar:
| |
| echo $((a=1,b=2,n=2,c=a+b,c**n))
| |
| 9
| |
| * expr
| |
| expr 13 + 37
| |
| ergebnis=`expr 13 + 37`
| |
| echo $ergebnis
| |
| 50
| |