====== Tolle Linux-Befehle ======
Hier sind einige sehr hilfreiche "Linux-Befehle" zusammengestellt. Festzuhalten ist an dieser Stelle die eindeutige Erkenntnis, dass Klickibunti "voll daneben" ist und man mit der Konsole fast immer schneller zum Ziel kommt. "Linux-Befehle" gilt insoweit die betreffenden Programme installiert sind.
Die hier zu findenden Befehle sind natürlich nur eine kleine Ausfahl der **genialen Möglichkeiten**, die eine mächtige Shell wie die üblichen unter Linux bieten. Es sind genau diejenigen, die ich, unter anderen, im Alltag häufig brauche. Veröffentlichung in der Hoffnung, damit auch anderen eine große Erleichterung im Alltag zu bieten.
===== Arbeiten mit Textdateien =====
==== Duplikat-Zeilen in Textdatei löschen und sortieren ====
cat durcheinander | sort -u > sortiert_und_bereinigt
==== String an den Anfang jeder Zeile in einer Textdatei schreiben ====
sed -e 's/^/Zeilenanfangswort/' ausgangsdatei > neuedatei
==== String an das Ende jeder Zeile in einer Textdatei schreiben ====
sed -i 's/.*/&Zeilenendwort/' ausgangsdatei
==== Alle Buchstaben in Textdatei klein oder groß schreiben ====
Klein:
sed 's/.*/\L&/g' < input
Groß:
sed 's/.*/\U&/g' < input
===== Übertragen von Dateien =====
==== Verzeichnisgröße herausfinden ====
Direkte Ausgabe als menschenlesbare Größe wie GB.
du -sh /home/user/meinVerzeichnis
==== Mit TAR-Archiven arbeiten ====
=== Einpacken... ===
tar -czvf meinArchiv.tar.gz Verzeichnis/
=== ...und wieder auspacken. ===
tar xfv meinArchiv.tar.gz
''tar'' kann natürlich noch viel viel mehr!
==== Dateien per FTP hochladen ====
Das geht mit dem Programm ''ncftp''. Zum Beispiel, um ''meineDatei.bin'' in das Verzeichnis ''/ftp-in'' auf ''85.214.91.9'' (mein Server) hochzuladen.
ncftpput 85.214.91.9 ftp-in meineDatei.bin
==== Dateien per SSH übertragen ====
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
ssh server "cat entfernte_datei" > lokale_datei
ssh server "gzip -c entfernte_datei" > lokale_datei
ssh server "gzip -c entfernte_datei" | gunzip > lokale_datei
==== Mit rsync Dateien one-way synchronisieren ====
Zum Beispiel von der Fotoplatte auf das heimische NAS
rsync --delete -av /media/rk/Fotos/sortiert/ /mnt/nas/Fotos/
==== Mit rsync und SSH Dateien übers Netz aktualisieren ====
Kann auch wunderbar fürs Backup verwendet werden. Entweder man sichert so lokale Dateien auf einen Server (Beispiel) oder eben einen Server auf eine lokale Festplatte. Allerdings müssen die Verzeichnisse in letzterem Fall natürlich andersherum angegeben werden. Die Altdaten werden den aktuellen Daten angeglichen, es wird ensprechend überschrieben bzw. gelöscht und neu hinzugefügt.
rsync --delete -avze ssh /mein/lokales/Verzeichnis/mit/aktuellen/Daten/ benutzer@127.0.0.1:/srv/Remoteverzeichnis/mit/alten/zu/erneuernden/Daten/
===== Grafiken erstellen und bearbeiten =====
==== Sämtliche META-Daten aller JPG-Dateien in einem Verzeichnis löschen ====
Wenn man nicht will, dass einer weiß, was man für eine Kamera hat oder wie auch immer.
exiv2 -d a *.jpg
==== QR-Code aus Datei erstellen ====
Dem Hype der Stunde Passion gewähren.
qrencode -o QR-Code.png < Datei.txt
Beispiel für Codierung einer HTTP-URL in hoher Auflösung ohne Rand, z.B. für Druckerzeugnisse:
qrencode -s 20 -m 0 -o QR-Code.png http://rkcsd.de
==== Bilder stapelweise Skalieren ====
Immerwieder nötig! Hier beispielsweise auf eine Breite von 640 Pixeln bei gleichbleibendem Seitenverhältnis.
=== Per Schleife ===
for i in *.jpg ; do convert "$i" -resize 640x "$i" ; done
=== Es geht auch einfacher ===
convert -resize 640 *.jpg
===== Video-Konvertierung =====
==== MOV-File in ein FLV-Video ====
Mit ffmpeg ein MOV-File in ein FLV-Video (für's web, auf altmodische Art) konvertieren.
ffmpeg -i MEIN_HANDYVIDEO.MOV -deinterlace -ar 44100 -r 25 -s 960x540 webvideo.flv
==== Rohdaten in ein MPEG verwandeln ====
ffmpeg -i -target ntsc-vcd
Man kann mit ffmpeg natürlich noch viel mehr machen, auch ganz hypermoderne MP4s erstellen. Mehr dazu unter [[dev:web:html5videos|HTML5-Videos]]
ffmpeg -i INPUT.mov -vcodec libx264 -level 12 -b 128kb/s -r 25 -bt 144kb/s -s 240x192 -coder 1 -flags +loop -cmp +chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method full -subq 7 -me_range 23 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -bf 16 -refs 6 -directpred 2 -trellis 1 -flags2 +bpyramid+wpred+mixed_refs+dct8x8+fastpskip -f mp4 -ab 56kb/s -ac 2 -ar 48000 OUTPUT.mp4
==== Bildschirmvideo aufnehmen ====
ffmpeg -f alsa -i pulse -f x11grab -r 15 -s 1280*800 -i :0.0 -vcodec libx264 -preset ultrafast -threads 4 -y -sameq MeinBildschirmvideo.mkv
===== Vektor- und PDF-Geschichten =====
==== pdftk ====
Damit kann man PDFs aneinanderreihen...
pdftk MeineTeXpdf1.pdf MeineTeXpdf2.pdf cat output ALLES-zusammen.pdf
...oder Seiten extrahieren.
pdftk ALLES-zusammen.pdf burst output ALLES-nichtmehrzusammen-Seite_%d.pdf
==== PDF-Datei komprimieren ====
Für z.B. eingeskannte Dokumente, die man per E-Mail versenden will. (Wandelt nach PS und zurück zu PDF um, ist danach meistens kleiner ohne sichtbaren Qualitätsverlust.)
pdf2ps GewA.pdf - | ps2pdf - GewA_E-Mail.pdf
==== svg2eps ====
Eine SVG-Datei in eine EPS-Datei mit Inkskape konvertieren.
inkscape -z -f infile.svg -E outfile.eps
==== epstopdf ====
Eine EPS-Datei in eine PDF-Datei umwandeln.
epstopdf --outfile=outfile.pdf outfile.eps
==== convert ====
PDF-Dateien stapelweise in JPG's konvertieren:
for i in *.pdf ; do `convert -density 300 -trim "$i" -quality 200 "$i".jpg` ; done
===== CD's brennen =====
==== Video-CD-Image erstellen ====
vcdimager -t vcd2 -l "Movie Title" -c .cue -b .bin .mpg
==== CUE-Datei brennen ====
cdrdao write -device .cue
==== Das vielleicht wichtigste überhaupt: ISO-Abbilder brennen ====
Vorher muss man rausfinden, welche Devicenummer das CD-Laufwerk hat, das dann bei der Option ''dev'' angeben.
cdrecord -v -eject dev=3,0,0 dvd.iso
===== Der Festplatte Befehle erteilen =====
==== Standby ====
Zum Beispiel in Standby schalten via:
hdparm -y /dev/festplatte0
==== Mehr ====
Weitere, auch **GEFÄHRLICHE**, Befehle kann man mit folgendem Befehl "erfragen":
hdparm --help
===== Datenträger verschlüsseln =====
Unter Debian:
cryptsetup -y -v luksFormat /dev/sdx
Initialisieren:
cryptsetup luksOpen /dev/sdx geheimeslaufwerk
Formatieren mit:
mkfs.ext4 /dev/mapper/geheimeslaufwerk
Benennen mit:
e2label /dev/mapper/geheimeslaufwerk neuername
===== Systemeinstellungen =====
==== Wieviel Speicher im Dateisystem ist noch frei ====
Menschenlesbar und schön tabellarisch wird das so aufgelistet:
df -h
Es werden sogar USB-Datenträger, verschlüsselte Laufwerke und NFS-Netzlaufwerke mit aufgelistet. So zum Beispiel auf meinem Notebook:
$ df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
rootfs 106G 49G 52G 49% /
udev 10M 0 10M 0% /dev
tmpfs 396M 876K 395M 1% /run
/dev/mapper/rkCSD--Laptop-root 106G 49G 52G 49% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 792M 22M 770M 3% /run/shm
/dev/sda1 228M 21M 196M 10% /boot
/dev/sr1 7,0M 7,0M 0 100% /media/2.0.4.45685_RC1
192.168.0.10:/srv/datastorage/dsk0/pool 63G 54G 5,2G 92% /mnt/server/pool
192.168.0.10:/srv/datastorage/dsk1 63G 54G 5,2G 92% /mnt/server/users
==== Maus-Cursor-Thema systemweit einstellen ====
Global für den X-Server; wird insb. von GDM übernommen.
update-alternatives --config x-cursor-theme
==== Standard-JRE einstellen ====
Die OpenSoucre-JRE tut manchmal halt nicht, und ggf. wird die trotz installation der Sun/ORACLE-Variante immernoch verwendet.
update-alternative --config java
==== GNOME2: Volumes auf dem Desktop ====
Unter GNOME2 kann man mit folgendem Befehl das Erscheinen der gemounteten Volumes auf dem Desktop abschalten.
gconftool-2 --set --type boolean /apps/nautilus/desktop/volumes_visible false
==== Screenblanking im Textmodus verhindern ====
Wer im Textmodus den "Bildschirmschoner" abschalten möchte (deaktivieren der Anzeige eines schwarzen Bildschirms nach ein paar Minuten) kann dies wie folgt erreichen:
setterm -powersave off -blank 0
==== Systemdienste an- und abschalten ====
Wenn das konventionelle Initsystem initd verwendet wird lautet der Befehl zum Aktivieren
update-rc.d defaults 20
und zum Deaktivieren
update-rc.d remove
Wenn das neuere System systemd an Stelle von initd verwendet wird, lautet der Befehl zum Aktivieren
systemctl enable
und zum Deaktivieren
systemctl disable
===== Arbeiten mit Remote-Diensten =====
==== Share bei RDP-Verbindung beim Zielsystem mounten ====
Möchte man bei einer RDP-Verbindung zusätzlich einen Share im Arbeitsplatz mounten, der auf dem Host-System existiert, kann dies mit dem folgenden Befehl durchgeführt werden:
rdesktop -r clipboard:CLIPBOARD -r disk:share=/pfad/zum/lokalen/ordner -P rdp.example.com
Dies ermöglicht einen vereinfachten Zugriff auf Daten vom Wirtsystem und erlaubt unter Linux auch eine direkte Datenübertragung zum Zielsystem.
===== Noch mehr! =====
Diese Tools sollte man auch haben, Beschreibung folgt.
# apt install tmux bmon iftop vim tig