Navigation
Die Beispiele laufen in einem frischen temporären Ordner:
cd "$(mktemp -d)"
mkdir projekt
cd projekt
pwd | sed "s|.*/||" # nur der Ordnername
mkdir -p a/b/c # verschachtelt anlegen
touch a/datei1 a/b/datei2
ls
ls -R | head -8
cd a/b
cd ../.. # zwei Ebenen hoch
cd - >/dev/null # zurück zum vorigen Ordner (cd - gibt den Pfad aus)
basename "$PWD"
cd ~ && [[ $PWD == "$HOME" ]] && echo "zu Hause"projekt a .: a ./a: b datei1 ./a/b: b zu Hause
| Befehl | Zweck |
|---|---|
pwd | aktueller Ordner |
cd pfad / cd .. / cd - / cd ~ | wechseln |
ls -l -a -h -t | auflisten (lang, versteckte, lesbare Größen, nach Zeit) |
mkdir -p | Ordner (auch verschachtelt) |
cp -r / mv / rm -r | kopieren / verschieben bzw. umbenennen / löschen |
touch | leere Datei anlegen oder Zeit aktualisieren |
ln -s ziel link | symbolischer Link |
du -sh, df -h | Platzverbrauch |
Pfade: absolut (/home/mia/x) beginnen mit /, relativ (../x) gelten ab dem aktuellen Ordner. . ist der aktuelle, .. der übergeordnete, ~ der Home-Ordner.
Dateien anlegen, kopieren, verschieben
cd "$(mktemp -d)"
echo "Inhalt" > original.txt
cp original.txt kopie.txt
mv kopie.txt umbenannt.txt
mkdir archiv
cp -r archiv archiv2
mv *.txt archiv/
ls archiv
ln -s archiv/original.txt link.txt
cat link.txt
ls -l link.txt | awk '{ print $1, $(NF-2), $(NF-1), $NF }' | sed 's/^l[rwx-]*/l.../'
rm archiv/umbenannt.txt
rmdir archiv2 && echo "leeren Ordner gelöscht"
rm -r archiv && echo "Ordner samt Inhalt gelöscht"
lsoriginal.txt umbenannt.txt Inhalt l... link.txt -> archiv/original.txt leeren Ordner gelöscht Ordner samt Inhalt gelöscht link.txt
Dateirechte
ls -l zeigt z. B. -rwxr-xr--:
| Teil | Bedeutung |
|---|---|
| 1. Zeichen | Typ (- Datei, d Ordner, l Link) |
| 2.–4. | Rechte des Besitzers (user) |
| 5.–7. | Rechte der Gruppe (group) |
| 8.–10. | Rechte aller anderen (other) |
r w x | lesen (4), schreiben (2), ausführen bzw. Ordner betreten (1) |
cd "$(mktemp -d)"
touch datei
chmod 644 datei && ls -l datei | cut -c1-10 # rw-r--r--
chmod 755 datei && ls -l datei | cut -c1-10 # rwxr-xr-x
chmod u+x,g-w,o= datei && ls -l datei | cut -c1-10
chmod a+r datei && stat -c '%a %A' datei
chmod 600 datei && stat -c '%a' datei
mkdir ordner && stat -c '%A' ordner-rw-r--r-- -rwxr-xr-x -rwxr-x--- 754 -rwxr-xr-- 600 drwxr-xr-x
Gängige Werte: 644 (Datei: Besitzer schreibt, alle lesen), 755 (Programme und Ordner), 600 (privat, z. B. SSH-Schlüssel), 700 (privater Ordner). chown nutzer:gruppe datei ändert den Besitzer (meist mit sudo). sudo befehl führt einen Befehl als Administrator aus.
Dateiinhalte ansehen
cd "$(mktemp -d)"
seq 1 20 > zahlen.txt
head -n 3 zahlen.txt
tail -n 2 zahlen.txt
sed -n '10,12p' zahlen.txt
wc -l zahlen.txt
file zahlen.txt | cut -d: -f2
stat -c 'Größe: %s Bytes' zahlen.txt
diff <(seq 1 3) <(seq 1 4)
md5sum <<< "abc" | cut -c1-8
sha256sum zahlen.txt | cut -c1-121 2 3 19 20 10 11 12 20 zahlen.txt ASCII text Größe: 51 Bytes 3a4 > 4 0bee89b0 b76ae83c50d6
less datei blättert (q beendet, /text sucht), tail -f logdatei verfolgt eine wachsende Datei.
Archive und Komprimieren
cd "$(mktemp -d)"
mkdir daten
seq 1 1000 > daten/zahlen.txt
tar -czf backup.tar.gz daten # c=create, z=gzip, f=Datei
tar -tzf backup.tar.gz # Inhalt zeigen
rm -r daten
tar -xzf backup.tar.gz # x=extract
wc -l daten/zahlen.txt
gzip -k daten/zahlen.txt && ls daten
gunzip -c daten/zahlen.txt.gz | wc -ldaten/ daten/zahlen.txt 1000 daten/zahlen.txt zahlen.txt zahlen.txt.gz 1000
Merke
- Navigation:
pwd,cd,ls,mkdir -p; absolute und relative Pfade cp -r,mv,rm -r(gefährlich!),ln -s,touch- Rechte
rwxfür Besitzer/Gruppe/andere;chmod 755,chmod u+x,chown head,tail,less,stat,file,diffzum Ansehentar -czf/-xzffür Archive
Aufgabe
Lege einen Ordner mit drei Dateien an, setze deren Rechte unterschiedlich und prüfe sie mit stat.