Archiv der Kategorie: Dateien & Verzeichnisse

maybe

Mit maybe lassen sich Befehle testen, ohne sie wirklich auszuführen.
So kann man riskante Aktionen, wie dd zunächst einmal testen und nach erfolgreichem Test wirklich ausführen.
Man installiert maybe wie folgt: Zunächst brauchen wir die Python Paketverwaltung sudo apt-get install python-pip. Über die Python-Paketverwaltung lässt sich nun maybe installieren sudo pip install maybe.

maybe dd if=image.iso of=/dev/sda1 führt den Schreibvorgang nicht wirklich aus, sondern zeigt nur an, was gemacht werden würde:

Papierkorb bei eingehängter NTFS-Partition benutzten

Unter Linux muss man eine NTFS-Partition(Windows-Partition) wie folgt einhängen, dass man auch hier den Papierkorb benutzten kann.

Mounteintrag in der /etc/fstab:

UUID=XXXXXXXXXXXXXXXX /mnt/windowsdaten ntfs-3g rw,uid=1000 0 0

rsync

rsync synchronisiert immer nur in einer Richtung. Für einen gegenseitigen Abgleich müssen also zwei Aufrufe erfolgen:

  •  rsync /verzeichnis1/ /verzeichnis2 
  •  rsync /verzeichnis2/ /verzeichnis1

Der / nach der 1. Pfadangabe verhindert, dass der letzte Ordner des 1. Pfads als neuer Ordner unter dem 2. Pfad angelegt wird. Somit bedeuten folgende Aufrufe genau das gleiche:

Weiterlesen

awk

. Bawk Ausdruck { Anweisungen } Datei

Ausdruck

Der erste Parameter ist ein regulärer Ausdruck.

Anweisungen

Den zweiten Parameter stellen die awk-Anweisungen (anzugeben in geschweiften Klammern) dar. Diese Anweisungen legen fest, welche Manipulationen am Input-Stream durchgeführt werden sollen.

Datei

Der Parameter Datei legt die Datei fest, aus der der Input-Stream gelesen werden soll. Ohne Angabe liest awk von der Standardeingabe oder aus einer Pipe.

Beispiele

Beispiel 1: 2. Spalte ausgeben (z. B. Prozess-ID bei grep)

Beispiel 2: alle Zeilen einer Datei mit dem Buchstaben „n“ ausgeben:

Hotcopy

Download unter: http://www.idera.com/ProductsSolutions/FreeTools/SBLinuxHotCopy.aspx

Einrichtung:

  1. Programm installieren
  2. sudo hcp-setup --get-module

Hotcopy kann unmittelbar und online Snapshots von jedem gemounteten Device erzeugen. Die Snapshots sind les- und schreibbar, lasen sich aber auch read-only anlegen. Sie brauchen im Unterschied zu LVM keinen vorher reservierten Platz und sind sehr schnell. Einen Snapshot der Partition /dev/sda5 erzeugt beispielsweise:
sudo hcp --read-only /dev/sda5
Das erzeugt augenblicklich eine Kopie der Daten unter dem virtuellen Device /dev/hcp1. Ein normales Backup von diesem Device wird automatisch zur Online-Sicherung, die sich nicht mehr um offene Files zu scheren braucht. Danach kann man den Snapshot mit
sudo hcp -r /dev/hcp1
wieder verwerfen. Will man ein riskantes Skript testen, legt man sich zunächst wieder einen Snapshot seiner Systempartition an, der automatisch an /var/hotcopy/Devicename gemountet wird:
# hcp /dev/sda5
Nun setzt man den Snapshot temporär als neues Root-Directory ein
# chroot /var/hotcopy/sda5
In dieser Umgebung lässt sich jetzt gefahrlos das Skript testen, das einem nicht geheuer war.
# diff --recursive / /var/hotcopy/sda5
zeigt anschließend, was das Skript geändert hätte.

Meta-Zeichen (in Dateinamen)

Bei der Angabe von Dateinamen können eine Reihe von Meta-Zeichen verwendet werden:

 * Eine Folge von keinem, einem oder mehreren Zeichen
 ? Ein einzelnes Zeichen
 [abc] Übereinstimmung mit einem beliebigen Zeichen in der Klammer
 [a-q] Übereinstimmung mit einem beliebigen Zeichen aus dem angegebenen Bereich
 [!abc] Übereinstimmung mit einem beliebigen Zeichen, das nicht in der Klammer ist
 ~ Home-Verzeichnis des aktuellen Benutzers
 ~name Home-Verzeichnis des Benutzers name
 ~+ Aktuelles Verzeichnis
 ~- Vorheriges Verzeichnis

test […]

Der Befehl test dient zum Überprüfen von Dateitypen bzw. Vorhandensein von Dateien und zum Vergleichen von Werten. Der Aufruf erfolgt mit test Vergleich wobei Vergleich die Prüfung bzw. den Vergleich enthält. Als Ergebnis gibt test 0 für Wahr (true) und 1 für Falsch (false) zurück. Der Rückgabewert wird mit Hilfe der Shelleigenen Variablen $? ermittelt. Es gibt Vergleiche für Dateien, Zeichenketten und Integer-Zahlen.

Anstatt des Befehls test kann die Bedingung auch in eckige Klammern gesetzt werden. Hierbei ist darauf zu achten, dass zwischen den Klammern und dem Vergleich jeweils ein ein Leerzeichen steht:   [ Vergleich ]
Weiterlesen

umask

umask ergibt die Zugriffsrechte für neue Dateien
Als root kann in der Datei /etc/profile ein umask-Wert eingetragen werden. Der Wert 0077 lässt für neue Dateien nur deren Besitzer zu.

chmod

Zugriffsrechte ändern

chmod +x Datei  macht eine Datei ausführbar

chmod u=rwx, g=rx, o=r Datei  macht die Datei für den Besitzer schreib-, les- und ausführbar, für die Gruppe les- und ausführbar und für alle anderen lesbar

chmod g=rwx tausch/  macht das Verzeichnis tausch für die Gruppe les-, schreib- und ausführbar

chmod 751 filename  gibt dem Eigentümer alle Rechte, die Gruppe darf lesen und ausführen, alle anderen nur lesen (r = 4, w = 2, x = 1).

Durch die Angabe von „=“ werden die Rechte hart gesetzt: chmod u=rxsetzt für den Besitzer „r“ und „x“ und löscht „w“. Die Angabe von „+“ und „-“ hingegen setzt oder löscht einzelne Rechte ohne die anderen zu verändern: chmod u+xsetzt für den Benutzer zusätzlich die Berechtigung auszuführen.

find pfad -type f -exec chmod a-x "{}" ";"  ändert nur Dateien, keine Ordner.

Die Werte können auch mit Oktalzahlen angegeben werden.

Rechte

Dateirechte unter Linux:

rwx rwx rwx
  u g o

<!--more-->u=user g=group o=others<br />r: read
w: write
x: execute
s: Setuid-Bit (an Position 3); Setgid-Bit (an Position sechs)
t: Sticky-Bit (an Position 9)

  • Lesen
    Der Benutzer darf aus der Datei lesen oder, im Falle eines Verzeichnisses, seinen Inhalt auslesen, allerdings keine Dateirechte dieser Dateien erfahren. Dieses Recht wird oft durch den Buchstaben „r“ für englisch read („lesen“) dargestellt und daher auch R-Bit genannt.
  • Schreiben
    Der Benutzer darf in die Datei schreiben bzw. Dateien und Unterverzeichnisse in dem Verzeichnis erstellen, bearbeiten, umbenennen, löschen und deren Dateirechte verändern. Dieses Recht wird oft durch den Buchstaben „w“ für englisch write („schreiben“) dargestellt und daher auch W-Bit genannt.
  • Ausführen
    Der Benutzer darf die Datei als Programm ausführen bzw. in das Verzeichnis wechseln und dort Dateien oder Unterverzeichnise erreichen. Ohne das Lesen-Recht darf der Verzeichnisinhalt jedoch nicht ausgelesen werden. Dieses Recht wird oft durch den Buchstaben „x“ für englisch execute („ausführen“) dargestellt und daher auch X-Bit genannt.
  • Setuid
    Wird eine Datei, die das Setuid-Bit gesetzt hat, ausgeführt, dann wird der Prozess mit der effektiven User ID des Dateieigentümers laufen.
  • Setgid
    Wird eine Datei, die das Setgid-Bit gesetzt hat, ausgeführt, dann wird der dadurch erzeugte Prozess mit der effektiven Group ID der Inhabergruppe der Datei laufen.
  • Sticky bit
    Wird eine Datei, die das Sticky Bit gesetzt hat, ausgeführt, wird der Programmcode nach Ausführen im Arbeitsspeicher gehalten. Mehr Verwendung findet das Bit allerdings bei temporären Verzeichnissen, wo Benutzer nicht Dateien von anderen Benutzern löschen können.

an der ersten Stelle steht:

  • – Datei
  • d Directory
  • c Special Device Charakter
  • b Block device
  • s Socket
  • p Pipe
  • l Link

Oktalzahlen
Oktalwerte von rwx:
Read = 4
Write = 2
Execute = 1
Die Werte werden jeweils addiert.

df

zeigt die Belegung aller gemounteten Medien an
df -h .; echo; du -m --max-depth=1 . 2>/dev/null | sort -nr | head -10 zeigt den freien Platz auf der aktuellen Partition plus die zehn vollsten Unterverzeichnisse des aktuellen Verzeichnisses

tar

tar -xzvf Datei.tar.gz entpackt die Datei
tar -czvf backup.tar.gz /home /etc sichert die Verzeichnisse /home und /etc in das Archiv backup Dateibäume in ein Archiv schreiben

Dateien mit Rechten kopieren:
cd quelle tar cf - . | (cd ziel;tar xvf -) 

Kopie über das Netzwerk:
tar -cz * | ssh server "cat - > /backups/backup.tgz" 

Aufteilen auf mehrere Disketten:
tar cMvf /dev/fd0 *  sichert alle Dateien im Verzeichnis auf mehrere Disketten und
tar xMvf /dev/fd0 *  packt diese wieder aus

Archive mit mehr als 1 GB:
tar cvf - quelle | gzip > archiv.tar.gz 
tar xzvf archiv.tar.gz

Parameterübersicht:

-c Ein neues Archiv erzeugen.
-d Dateien im Archiv und im Dateisystem miteinander vergleichen.
-f Archiv in angegebene Datei schreiben. / Daten aus angegebener Datei lesen.
-j Archiv zusätzlich mit bzip2 (de)komprimieren.
-J Archiv zusätzlich mit xz (de)komprimieren.
-k Das Überschreiben existierender Dateien beim Extrahieren aus einem Archiv verhindern.
-p Zugriffsrechte beim Extrahieren erhalten.
-r Dateien an ein bestehendes Archiv anhängen. (nur bei nicht gepackten Archiven!)
-t Inhalt eines Archivs anzeigen.
-u Nur Dateien anhängen, die jünger sind als ihre Archiv-Version.
-v Ausführliche Ausgabe aktivieren. Hierbei ist zu beachten, dass man dies möglichst an den Anfang des Befehls anhängt, wenn mehrere Optionen kombiniert werden. z.B. -cfv würde zu einer Fehlermeldung führen. Korrekt wäre -vcf
-w Jede Aktion bestätigen.
-x Dateien aus einem Archiv extrahieren.
-z Archiv zusätzlich mit gzip (de)komprimieren.
-Z Archiv zusätzlich mit compress (de)komprimieren.
-A Inhalt eines bestehenden Archivs in ein anderes Archiv kopieren.
-M Mehrteiliges Archiv anlegen/anzeigen/extrahieren.
-L Medium wechseln, wenn ZAHL KBytes geschrieben sind.
-W Archiv nach dem Schreiben prüfen.

split

Große Dateien aufteilen: split -b 1440k QuellDatei BasisName
Mit -b gibt man an, dass die Datei nicht zeilenweise sondern byteweise betrachtet werden soll.
1440k bestimmt die Größe der einzelnen aufgeteilten Dateien.
QuellName ist natürlich der Name der aufzuteilenden Datei und
BasisName ist der Name der als ,Basis‘ für die Namen der erzeugten kleineren Dateien verwendet wird. Um eine derart aufgeteilte Datei später wieder zusammenzusetzen verwendet man den ,cat‘ Befehl: cat BasisName* > NamederZieldatei

tr

Zeichen in Dateien ersetzen

Option Bedeutung
-d Entfernt die Zeichen in Satz1 aus der Zeichenfolge
-s Entfernt mehrfache Vorkommen der Zeichen in Satz1
-c Ersetzt die Zeichen, die nicht in Satz1 vorkommen

Beispiele:
cat file1 | tr altes_Wort neues_Wort > NeueDatei

tr -d ':' < /etc/passwd 
liest /etc/passwd und entfernt aus diesem Zeichenstrom alle Doppelpunkte.

tr -s '\n' 
ersetzt doppelte oder mehrfache Leerzeilen durch eine einzige.

tr "\n" " " < dateiname > neue_datei 
löscht alle Zeilenumbrüche

tr [:lower:] [:upper:]
ersetzt alle Kleinbuchstaben aus der Standardeingabe durch Großbuchstaben und gibt das Ergebnis auf der Standardausgabe aus.

diff

diff datei1 datei2 Vergleichen von zwei Textdateien
sdiff datei1 datei2 Vergleichen von zwei Textdateien nebeneinander
diff -r /verzeichnis1/ /verzeichnis2/ vergleicht zwei Verzeichnisse rekursiv
diff -rq /verzeichnis1/ /verzeichnis2/ vergleicht zwei Verzeichnisse rekursiv und gibt nur die Verzeichnisnamen aus

sed

sed verwendet reguläre Ausdrücke

Suchen und ersetzen von Text in Dateien: sed 's/Suchtext/Ersetztext/g' quelldatei.txt > zieldatei.txt Ist im zu bearbeitenden Text ein Slash / , so muss dieser mit  \/  angegeben werden.
Leerzeichen in Dateinamen in Unterstriche umwandeln: for a in *; do mv "$a" "$(echo $a | sed 's/ /_/g')"; done

grep

grep -r haus documents/texte/ sucht rekursiv in texte nach dem Wort haus
grep -l -r suchwort /home/stefan/bin/* durchsucht ab dem Verzeichnis /bin/ alle Dateien rekursiv (-r) nach dem Inhalt „Suchwort“ und gibt nur die Dateinamen aus (-l)
grep -i ROot /etc/passwd sucht nach „root“ ohne Beachtung der Groß- und Kleinschreibung

Weiterlesen

find

find -name Datei sucht nach der Datei

find . -name bild.jpg sucht nach bild.jpg. Der Punkt weist find an, alle Ordner ab dem aktuellen Verzeichnis zu durchsuchen.

find /mnt/cdrom/bilder -name bild.jpg Dieser Befehl durchsucht das Verzeichnis bilder einer nach /mnt/cdrom gemounteten CD.

Weiterlesen

convmv

convmv --upper --notest -r . konvertiert rekursiv alle Dateinamen in Großschreibung
convmv --lower --notest -r . konvertiert rekursiv alle Dateinamen in Kleinschreibung
convmv -f iso-8859-15 -t utf-8 -r . konvertiert rekursiv alle Dateinamen in von iso-8859-15 nach utf-8

cp

cp Quelle Ziel kopiert Dateien
Schalter:

  • -d Links bleiben als Links erhalten
  • -f existierende Zieldateien werden überschrieben
  • -i Nachfrage vor Überschreiben
  • -r Dateien werden rekursiv kopiert
  • -R Ordner werden rekursiv kopiert
  • -u existierende Zieldateien werden überschrieben, wenn Quelldatei neuer ist
  • -p erhält die Dateiattribute

du

schätzt Platzverbrauch von Dateien

  • du -h Anzeige „human-readable“ in Kilo, Mega, Gigabyte
  • du -s ohne Unterverzeichnisse
  • du -c bildet am Ende eine Gesamtsumme
  • du -L folgt symolischen Links
  • du --max-depth=1 -m ~ | sort -rn | less
    Verzeichnisse mit Platzverbrauch geordnet anzeigen
  • du -Lhd0 <Ordner>
    gibt die Gesamtgröße des Ordners aus, auch wenn dieser ein symbolischer Link ist

ls

ls -lh listet den Inhalt des aktuellen Verzeichnisses auf (wie dir).

  • -a zeige alle Dateien und Verzeichnisse an; auch die versteckten, deren Namen mit einem Punkt beginnen.
  • -A wie -a, nur ohne die Einträge . und …
  • -B Keine Dateien, die auf ~ enden, anzeigen.
  • -R rekursiv alle Unterverzeichnisse anzeigen.
  • -i zeige auch die Inode-Nummern an.
  • -l langes Format: Es werden neben dem Dateinamen auch Größe, Besitzer, Gruppe und Zugriffsrechte angezeigt.
  • -f wie -l, aber ohne Gruppen-Informationen.
  • -s zeigt nur Dateinamen und Größen in Kilobyte an.
  • –color farbige Ausgabe nur Unterscheidung verschiedener Dateitypen.
  • -F hänge an bestimmte Dateien ein zusätzliches Zeichen an, um auf den Dateityp hinzuweisen (z.B.: / für Verzeichnisse; * für ausführbare Dateien, @ für symbolische Links)
  • –full-time vollständige Zeitangaben ausgeben (nur zusammen mit -l)
  • -n User- und Gruppen-IDs anstelle der Namen ausgeben.
  • -S sortiert der Größe nach

ls -lR | sort +4nr listet Dateien der Größe nach sortiert auf.
ls --sort=size -lhr ergibt die Größe eines einzelnen Verzeichnisses

tail

Die letzten 10 Zeilen einer Datei auf Standardausgabe ausgeben
tail -f datei verfolgt die Änderungen in einer Datei (gut für Log-Files)
tail -n xx datei gibt die letzten xx-Zeilen aus

cat

Dateianzeige ohne Unterbrechungen cat datei*.txt > datei.txt
cat kopiert eine Reihe von als Parameter übergegebenen Dateien in die Standard-Ausgabe. Mit Hilfe einer Umleitung »>« können Sie so mehrere Dateien zusammenkopieren:
Beispiel: cat Teil1 Teil2 Teil3 > Gesamt
Werden gar keine Dateinamen angegeben, so wird die Standard-Eingabe verwendet. Es folgen einige nützliche Optionen:

  • -b In ASCII-Dateien wird jede (nicht-leere) Zeile mit einer Zeilennummer versehen.
  • -n In ASCII-Dateien wird jede Zeile mit einer Zeilennummer versehen.
  • -E Zeige in ASCII-Dateien ein »$«-Zeichen am Ende jeder Zeile an (so können Sie Leerzeichen am Ende einer Zeile erkennen).

Navigation & Pfadangaben

Man kann sehr schnell durch Pfade navigieren, wenn man die Autovervollständigung durch die TAB-Taste nutzt. Es genügt, den Anfang eines Pfades anzugeben und dann vervollständigt die TAB-Taste automatisch. Ebenso kann man sich die History der Shell zunutze machen. Mit der „Pfeil-nach-oben-Taste“ holt man vergangene Befehle wieder. Mit der „Bild-nach-oben-Taste“ holt man vergangene Befehle wieder, von denen man den Anfang wieder getippt hat. (siehe Eingabe-History aktivieren)

Die Angabe von ~ bewirkt den Sprung ins eigene Homeverzeichnis.

Die Angabe eines Punktes symbolisiert das aktuelle Verzeichnis.

Die Angabe von zwei Punkten verweist auf das übergeordnete Verzeichnis.