Orangen-HeaderText-Header

Linux zu Hause

Rund um den Einsatz von Linux auf dem Desktop.

Themen

Bash tipps and tricks

See Doku.Linux.LinuxBash, Doku.Linux.LinuxScriptingBash, and maybe Doku.Linux.LinuxScripting

Schnellreferenz

Conversion between file types: zamzar.comPfeil

Die neusten Tricks

Assume you want to run an application (here: gor) as a non-root user but the application needs special permissions:
# Following commands assume that you put `gor` binary to /usr/local/bin
add gor
addgroup  gor
chgrp gor /usr/local/bin/gor
chmod 0750 /usr/local/bin/gor
setcap "cap_net_raw,cap_net_admin+eip" /usr/local/bin/gor

Systemeinstellungen wie z.B. die maximale Anzahl an File-Watch-Handles können in /etc/sysctl.conf konfiguriert werden:
fs.inotify.max_user_watches = 131072
  • mkhomedir_helper username erstellt ein Home-Verzeichnis anhand der =/etc/skel=-Vorlage.
  • tree -l . Gibt eine praktische Baumansicht der Ordnerstruktur aus. _Alternativ: _
  • ls -R . | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'
  • printenv Gibt eine Zusammenfassung der Umgebungsvariablen aus.
  • crontab -l bzw. crontab -e Listet die Einträge bzw. schreibt Einträge der crontab.
  • less error.log | grep -vw "Segmentation" | wc -l Zählt alle Zeilen (wc -l), die nicht das Wort Segmentation enthalten.
  • watch --i=3 [df|lsmod|...] Ruft alle drei Sekunden [df|lsmod|...] auf.
  • sync && date && dd if=/dev/zero of=/home/andreas/tmp bs=1M count=10240 && sync && date Performance-Test: Schreibt 10GB auf die home-Partition und misst dabei die Zeit. sync ist dabei wichtig, um die Festplattenpuffer zu leeren. (Andernfalls wird ein Teil der Daten in das RAM gecached!)
  • mount -o loop -t iso9660 file.iso /mnt/iso Hängt ein Iso-Image unter /mnt/iso ein.
  • kill -USR1 <pid of dd> Veranlasst dd die aktuelle Statistik auf stderr auszugeben.
  • watch -n 10 kill -USR1 <pid of dd> Gibt alle 10 Sekunden die Statistik von dd aus. (watch sendet in regelmäßigen Abständen einen gegebenen Befehl.)
  • dd if=/dev/zero | pv | dd of=/dev/null Durchsatzmessung mit pv.
  • dmesg | vim - Das Minus sorgt dafür, dass vim von der Standardausgabe liest.
  • update-rc.d <scriptname> defaults Sorgt dafür, dass ein Skript in einem bestimmten Runlevel gestartet wird.
  • pv file.bz2 | bunzip2 > file Entpackt die Datei und gibt währenddessen einen Fortschrittsbalken an (pv).
  • xxd <datei> |more Zeigt datei im Hex-Format an.

grep

  • grep -A n <begriff> <datei> Zeigt n Zeilen Kontext nach jeder Instanz von begriff an. (Analog: -B, -C zeigen Kontext davor bzw. drum herum)
  • grep -c <begriff> <datei> Zählt die Instanzen von begriff.

File System

Find

  • find /usr/share/texmf-texlive -not -perm -004 finds directories/files that are not readable by everybody
  • sudo find /usr/share/texmf-texlive -perm +100 -not -perm -001 -exec chmod go+x {} ';' finds all files executable by owner and sets the execute bit for others
  • lsof -a +L1 / Listet alle Datei-Handles auf. -a sorgt dafür, dass folgende Auswahlparameter mit UND verknüpft werden. +L1 schränkt die Anzeige auf Dateien ein, die einen Link-count kleiner 1 haben (d.h. Dateien, die nicht mehr aus dem Dateisystem erreichbar sind).
  • ls -l /proc/<processid>/fd zeigt, welche Filehandles ein Prozess mit der Id <processid> geöffnet hält.
  • find . -user andreas -exec chown -u franz "{}" \+ Überträgt die Ownerschaft von Benutzer andreas auf Benutzer franz. -u steht dabei für no dereference (den Links nicht folgen), das abschließende \+ sorgt dafür, dass die Befehle nicht einzeln sondern geblockt abgeschickt werden.
  • find . -type f ! -newer <dummyfile> -delete Löscht alle Dateien, die nicht neuer sind als dummyfile.
  • find . -size 0 find all empty files
  • find . -not -empty -ls find files that are not empty (and list in detailed view)

General

  • du -sh <datei> ( display usage ) Zeigt den durch datei belegten Plattenplatz an. (-sh sorgt für lesbare Ausgabe.)
  • pushd <path> bzw. popd <path> Wechselt das Verzeichnis und legt das aktuelle Verzeichnis auf einen Stack bzw. kehrt zum Verzeichnis, das oben auf dem Stack liegt, zurück.
    cd - Hat eine ähnliche Funktion, allerdings hat hier der Stack Größe 1.
  • chmod [ugoa][+-=][rwxXst] <file> Ändert die Berechtigungen im Dateisystem; u User, g Group, o Others, a All; X , s suid-bit, t sticky bit.
  • cp, mv, rm Copy, move, remove.
  • rm -i *.txt Löscht txt-Dateien, fragt aber bei jeder Datei nach.

  • du -sh <file> Gibt den Plattenplatz von <file> in einer menschenfreundlichen Größe an.
  • du -ca . |sort -k1 -g Gibt die Größen der Dateien im aktuellen Ordner aus und sortiert diese aufsteigend.
  • rm -rf <folder> Löscht den angegebenen Ordner, auch wenn er nicht leer ist
  • grep <text> <datei> Zeigt alle Zeilen in datei, die text enthalten

  • md5sum <datei> Berechnet einen Hash der Datei
  • fdisk <device> Partitioniert das Angegebene Gerät
  • mkfs -t ext3 <partition> Formatiert partition mit dem angegebenen Dateisystem (hier: ext3)
  • fsck <partition> Überprüft das Dateisystem auf partition (auch: fsck.ext2, fsck.ext3, fsck.vfat für ext2, ext3 bzw. fat32)
  • rename 'y/A-Z/a-z/' * Benennt alle Dateien des aktuellen Verzeichnisses in Kleinbuchstaben um.
  • rename 's/\.jpg$//' *.jpg Entfernt die Dateiendung.
  • rename "s/ *//g" * Entfernt Leerzeichen aus Dateinnamen.
  • rename -v -n 's/(\d{1})/0$1/' *.tar.gz Verwendet einen Teil des gematchten Ausdrucks wieder ($1).
  • shred <datei> Überschreibt datei mit Nullen. (gründliches Löschen)
  • fgrep -re <pattern> <ordner> Durchsucht die Dateien in ordner rekursiv nach dem Muster pattern .
  • tune2fs Ist ein Tool zur Konfiguration von Dateisystem Optionen. (tune2fs -c 27 setzt z.B. die Anzahl der Reboots bis zum Dateisystemcheck auf 27.)

Date and Time

Most of the following commands can be found herePfeil.
  • date displays the system date
  • hwclock -r or hwclock --show [--utc] displays the hardware clock [in utc format]
  • date --set="2 OCT 2006 18:00:00" or date +DONEm%d -s "20081128" sets the system date
  • hwclock --systohc or hwclock -w writes the hardware clock to the system time
  • timedatectl displays system time and date, time zone info,...
  • timedatectl set-time YYYY-MM-DD or timedatectl set-time YYYY-MM-DD HH:MM:SS sets the system time
  • timedatectl list-timezones lists all available time zones
  • timedatectl set-timezone 'Europe/Berlin' sets the time zone

Nutzer- und Gruppenverwaltung

  • group <gruppenname> bzw. addgroup <gruppenname> oder groupadd <gruppenname> Legt eine Gruppe an. (groupdell löscht die Gruppe wieder.)
  • adduser <username> Legt einen neuen Benutzer an (mit Home-Verzeichnis aus .skel). (deluser löscht den User wieder.)
  • adduser <username> <groupname> Fügt einen (existierenden) Benutzer zu einer Gruppe hinzu.
  • adduser <username> --ingroup <groupname> --shell /bin/false --home <existing dir> --no-create-home creates a user and sets user's home to an existing directory (attention: if you want to use this user for, e.g., an vsftp login you have to ensure that /bin/false is in /etc/shells or else the login will fail!
  • useradd -d /pfad/zum/homeverzeichnis -s /usr/sbin/nologin username Legt einen neuen Benutzer mit existierendem Home-Verzeichnis an, der sich nicht einloggen (-s /usr/sbin/nologin) kann.
  • usermod -g <groupname> <username> Legt die Gruppe fest, mit der sich der User einloggt.
  • usermod -s /bin/bash username Setzt die Standardshell eines Benutzers (in diesem Fall auf bash).
  • passwd
  • chsh -s /bin/bash Ändert die Login-Shell auf bash
  • /etc/password: foo:x:1001:1001::/home/foo:/bin/sh Definiert ebenfalls die Login-Shell.

Basics

  • arp, df, du, find <pfad> -name <name> -type <typ> -xdev, ifconfig, init, nano, netstat, nslookup, ping, ps, route, shred, sudo, top, touch, traceroute, who, whois
  • nice, nohup, head, tail

Gnome

  • Alt+F2: Run dialog
  • Alt+Tab: Pop up window cycler
  • Alt+Shift+Tab: Cycle in reverse direction in the window cycler
  • Ctrl+Alt+D: Show desktop
  • Ctrl+Alt+Right/Left arrow: Switch between workspaces
  • Ctrl+Alt+Shift+Right/Left arrow: Move the current window to a different workspace

aspell

Das Kommandozeilen-Rechtschreibkorrektur-Programm.
  • aspell -l en -c document.txt Korrigiert document.txt mit dem Standardwörterbuch in der Sprache en. (Dies kann verwendet werden, um eigene Wörter zum Wörterbuch hinzuzufügen.)

Die gesamte Dokumentation findet sich hierPfeil.

Rund um PDFs

Ein pratkisches Tool ist hier pdftk, das z.B. in den üblichen Ubuntu-Repositories verfügbar ist.
  • pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf Merge Two or More PDFs into a New Document
  • or (Using Handles): pdftk A=1.pdf B=2.pdf cat A B output 12.pdf
  • or (Using Wildcards): pdftk *.pdf cat output combined.pdf
  • pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf Split Select Pages from Multiple PDFs into a New Document
  • pdftk in.pdf cat 1E 2-end output out.pdf Rotate the First Page of a PDF to 90 Degrees Clockwise
  • pdftk in.pdf cat 1-endS output out.pdf Rotate an Entire PDF Document's Pages to 180 Degrees
  • pdftk beispiel.pdf background tux01.pdf output beispiel_neu.pdf Versieht ein Dokument mit einem Wasserzeichen/Hintergrund.
  • pdftk mydoc.pdf output mydoc.128.pdf owner_pw foopass Encrypt a PDF using 128-Bit Strength (the Default) and Withhold All Permissions (the Default)
  • pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz Same as Above, Except a Password is Required to Open the PDF
  • pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz allow printing Same as Above, Except Printing is Allowed (after the PDF is Open)
  • pdftk secured.pdf input_pw foopass output unsecured.pdf Decrypt a PDF
  • pdftk A=secured.pdf mydoc.pdf input_pw A=foopass cat output combined.pdf Join Two Files, One of Which is Encrypted (the Output is Not Encrypted)
  • pdftk mydoc.pdf output mydoc.clear.pdf uncompress Uncompress PDF Page Streams for Editing the PDF Code in a Text Editor
  • pdftk broken.pdf output fixed.pdf Repair a PDF's Corrupted XREF Table and Stream Lengths (If Possible)
  • pdftk mydoc.pdf burst Burst a Single PDF Document into Single Pages and Report its Data to doc_data.txt
  • pdftk mydoc.pdf dump_data output report.txt Report on PDF Document Metadata, Bookmarks and Page Labels

Für weitere Dokumentation siehe auch http://www.accesspdf.com/pdftk/Pfeil.

Hinweis: PDFtk wird scheinbar nicht mehr weiterentwickelt. Es basiert allerdings auf einer Java-Bibliothek: http://www.itextpdf.com/Pfeil

Für PDFs mit cmyk-Farbprofilen ist die einfachste Lösung ein Export als Postscript und dann
  • ps2pdf -dProcessColorModel=/DeviceCMYK -dPDFSETTINGS=/prepress -dColorConversionStrategy=/CMYK Seite.ps Seite_cmyk.pdf

Zum Entschlüsseln von geschützten PDFs bietet sich das Tool an: wget http://www.cs.cmu.edu/~dst/Adobe/Gallery/pdfdecrypt.pl
chmod +x pdfdecrypt.pl
perl -p -i -e 's/MD5/Digest::MD5/g' pdfdecrypt.pl
for i in Dokument1.pdf Dokument 2.pdf Dokument3.pdf DokumentXYZ.pdf ; do
./pdfdecrypt.pl $i > `dirname $i`/`basename $i .pdf`.decrypted.pdf
done

Postscript to PDF

  • ps2pdf -dDEVICEWIDTHPOINTS=400 -dDEVICEHEIGHTPOINTS=200 in.ps out.pdf Erzeugt PDFs mit benutzerdefinierten Dimensionen.

Brauchbares

  • ln -s <name> <pfad> Erzeugt einen Link auf pfad mit dem Namen name
  • lp -d <drucker> <datei> Druckt Datei auf drucker
  • cat /proc/cpuinfo Zeigt Informationen über z.B. die CPU an
  • nmap Netzwerk-Mapping-Tool
  • updatedb und locate <datei> Updatedb aktualisiert den Index aller vorhandenen Dateien, locate sucht Dateien
  • ftp servername Öffnet eine ftp-Verbindung zum angegebenen Server, Wikipedia hat eine gute BedinungsanleitungPfeil
  • sudo su Als erster User unter (K)ubuntu: öffnet eine root-Konsole, fragt aber nur nach dem Benutzerpasswort und nicht nach dem root-Passwort
  • xhost + gibt den eigenen X-Server für andere Benutzer frei. (xhost - sperrt diesen wieder.)
  • kdesu <command> führt einen Befehl unter KDE als root aus.

Packen und Entpacken von Archiven

  • tar -cv[z]f file.tar[.gz] files Erstellt ein Archiv im .tar bzw. .tar.gz Format, das die Daten aus files enthält
  • tar -xvzf file.tar.gz Entpackt eine Datei im gzip-Format
  • tar -tvf file.tar Listet den Inhalt des Archivs auf
  • tar -jxf file.tar.bz2
  • tar cfvj [archiv].tar.bz2 [file1] [file2] bzw.
  • tar xfvj [archiv].tar.bz2 packt bzw. entpackt =bz2=-Dateien.
  • zip [archiv].zip [file1] [file2]
  • unzip [archiv].zip
  • unzip -l [archiv].zip Listet den Inhalt des Archivs.
  • unp [archiv] Entpackt so gut wie alles.

Sudo

  • sudo su - username wechselt zum Benutzer username und lädt das environment von username.
  • sudo sysctl -p wendet die Änderungen an.

Ein gutes Tutorial zur Konfiguration von sudo: http://newbiedoc.berlios.de/wiki/How_to_configure_Sudo_to_run_programs_as_a_different_userPfeil

Konfiguration über /etc/sudoers: sudoers HandbuchPfeil, BeispieldateiPfeil, Blog postPfeil

Netzwerk-Befehle

Linux im Netzwerk

Dieser Bereich steht auf einer eigenen Seite: LinuxNetwork

Special Tricks

Aus der Ct:
  • Fügt man in ein Verzeichnis eine Datei namens -i ein, so schützt diese den Inhalt vor versehentlichem Löschen: Ein rm * liest zuerst den Dateinamen -i ein und interpretiert diesen als Option, was dazu führt, dass das Löschen jeder Datei einzeln bestätigt werden muss. Die Datei kann übrigens per rm ./-i gelöscht werden.

Drucken in der Konsole

  • lp -d <drucker> <datei> Druckt datei auf drucker.

Weitere Optionen für lp:
  • -d destination wählt das Ausgabegerät
  • -n num-copies Anzahl Kopien
  • -P page-list Seitenauswahl
  • -o option=value option übergibt weitere Optionen z.B. -o usercode=123456
  • -o sides=one-sided/two-sided-long-edge/two-sided-short-edge druckt einseitig/zweiseitig
  • -o landscape druckt Querformat
  • -o scaling=200 druckt mit 200%-Skalierung

Den Zustand des Druckers kann man mit lpstat abfragen. Eine weiterer praktischer Befehl ist psnup:
  • psnup -4 <input-datei> <output-daeti> erzeugt eine =ps=-Datei, die vier logische Seiten pro physischer Seite enthält

Setup von Brother Drucker unter 64bit Ubuntu: ubuntuusers.dePfeil

Grafikkarte und Monitor

Falls die Anzeige des XServers nicht korrekt ist, hilft folgendes tool weiter: xvidtune. Siehe auch http://fixunix.com/xwindows/91788-x-org-horizontal-screen-position-setting.htmlPfeil.

Job-Verwaltung

Vergleiche http://en.wikibooks.org/wiki/LPI_Linux_Certification/Create,_Monitor_&_Kill_ProcessesPfeil

Pakete verwalten mit apt

Siehe LinuxSoftware.

Shell-Skripting

Siehe auch Scripting, LinuxBash!

xfce4

  • Falls keine Startleiste angezeigt wird: xfce4-panel startet diese
  • Die Auswahl einer neue Sitzung beim Systemstart kann durch die Einstellung Sitzungsauswahl beim Start anzeigen im Dialog Einstellungen/Sitzungs- und Starteinstellungen aktiviert werden.
  • Weitere Tipps finden sich z.B. hier: http://wiki.xfce.org/de/faqPfeil
  • Das XFCE-Menü: HowToPfeil
  • Shortcuts können in ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml konfiguriert werden.

Shortcuts in xfce4

  • CTRL-ALT-Pos1 bzw. CTRL-ALT-End schiebt ein Fenster auf einen anderen Workspace.

Gnuplot

Eine kleine Einführung in Gnuplot findet sich hier.