Linux Befehle: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(5 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]]
== kill ==
* Mehrere Prozesse löschen
ps -e | grep pop3 | cut -f "1" -d " " | while read item ; do kill $item ; done
== pkill ==
Prozesse beenden.


Mit pkill kann man auch einen Benutzer "abmelden".
pkill -KILL -u <username>


[[Netzwerk]]


= Allgemein =
[[Datenträger und Dateisystem]]


== at ==
[[Dateiverwaltung]]
* 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 ==
[[Prozesse verwalten]]
* 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
[[Netzwerk]]
~/.bashrc
Gespeicherte Aliases aufrufen durch
alias
 
* Alias löschen
# 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

Aktuelle Version vom 19. November 2021, 19:27 Uhr