Linux-Tipps: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1.032: Zeile 1.032:
  
 
* [http://www.easylinux.de/2005/09/084-umleitungen/ Einführung in Pipes]
 
* [http://www.easylinux.de/2005/09/084-umleitungen/ Einführung in Pipes]
 +
 +
==== heredoc ====
 +
 +
Man kann auch kleine Textschnipsel in ein Skript selbst schreiben und dann weiterleiten:
 +
 +
  cat <<EOF
 +
  Dies ist ein Text, der
 +
  an cat weitergegeben wird.
 +
  EOF
 +
 +
Statt EOF kann in den so genannten "heredocs" auch irgendein anderes Wort
 +
zur Bezeichnung des Endes des heredocs geschrieben werden. Es muss nur
 +
das Gleiche am Anfang und am Ende sein.
  
 
==== sed ====
 
==== sed ====
Zeile 1.485: Zeile 1.498:
  
 
== Netzwerk ==
 
== Netzwerk ==
Siehe [[oldCt:Linux-Tipps#Netzwerk]]
+
* Siehe [[Netzwerk]]
 
* Siehe [[Samba]]
 
* Siehe [[Samba]]
 
* Siehe zudem [[Installation von OpenSuse über PXE]]
 
* Siehe zudem [[Installation von OpenSuse über PXE]]
Zeile 1.567: Zeile 1.580:
 
   sudo lsof -nP -i | grep LISTEN
 
   sudo lsof -nP -i | grep LISTEN
 
kann man sich ebenfalls die offenen Netzwerk-Ports (und die daran angedockten Prozesse) anzeigen lassen.
 
kann man sich ebenfalls die offenen Netzwerk-Ports (und die daran angedockten Prozesse) anzeigen lassen.
 +
 +
==== Netzwerkanalyse ====
 +
 +
Siehe [[Netzwerk]]
  
 
=== WLAN ===
 
=== WLAN ===
Zeile 1.816: Zeile 1.833:
 
* [https://jitsi.org/ Jitsi]
 
* [https://jitsi.org/ Jitsi]
 
** [https://jitsi.org/jitsi-meet/ Jitsi Meet] kann sofort (ohne Registrierung) auf https://meet.jit.si/ ausprobiert werden.
 
** [https://jitsi.org/jitsi-meet/ Jitsi Meet] kann sofort (ohne Registrierung) auf https://meet.jit.si/ ausprobiert werden.
 +
* https://opentalk.eu/de
 +
* [https://www.golem.de/news/aus-dem-verlag-odin-rooms-macht-videocalls-sicher-und-klar-2409-188992.html Odin Rooms]
 +
zu sein.
 +
 +
Bekannte kommerzielle Alternativen zum veralteten Skype sind
 +
* Microsoft Teams
 +
* Cisco Webex
 +
* Zoom
  
 
=== Digitalkameras unter Linux ===
 
=== Digitalkameras unter Linux ===
Zeile 1.925: Zeile 1.950:
  
 
Siehe auch
 
Siehe auch
* [http://localhost:631/help/options.html CUPS-Hilfe zu Komandozeilenbefehlen auf eigenem Rechner]
+
* [http://localhost:631/help/options.html CUPS-Hilfe zu Kommandozeilenbefehlen auf eigenem Rechner]
 
* [[Drucken]] allgemein
 
* [[Drucken]] allgemein
 +
* https://www.linux-praxis.de/verwaltung-von-druckern-und-druckerwarteschlangen
 +
 +
==== Troubleshooting ====
 +
 +
===== CUPS in Docker =====
 +
 +
https://hub.docker.com/r/olbat/cupsd
 +
 +
===== Drucker deaktiviert sich von selbst =====
 +
 +
Um zu vermeiden, dass man jedes Mal den Drucker wieder auf "aktiviert" stellen muss, fügt man in der Datei <code>/etc/cups/printer.conf</code> die Zeile
 +
  ErrorPolicy retry-job
 +
hinzu. Siehe
 +
* https://debianforum.de/forum/viewtopic.php?t=126837
  
 
=== HP-Drucker ===
 
=== HP-Drucker ===
Zeile 1.937: Zeile 1.976:
 
   hp-setup -i
 
   hp-setup -i
 
und wählt 2 für <code>net</code> aus.
 
und wählt 2 für <code>net</code> aus.
 +
 +
==== HP OfficeJet Pro 7740 ====
 +
 +
Jedenfalls im Zusammenspiel mit Linux hat der HP OfficeJet Pro 7740 nicht die Qualität und Zuverlässigkeit des HP OfficeJet 8600 Pro Plus.
 +
 +
Aber er funktioniert, wenn nicht mal wieder ein Firmware-Update das Zusammenspiel mit Linux oder Windows zerschießt.
 +
 +
Nach dem letzten Firmware-Update konnten manche Linux-Systeme den Drucker nicht finden. Bei den Systemen mit Ubuntu 24.04 musste der Drucker manuell eingerichtet werden. Beim Drucker hinzufügen musste man folgende URL angeben:
 +
  ipps://hpofficejet.fritz.box:443/ipp/print
 +
 +
Dann hplip bzw. hpcups auswählen. Dann funktioniert es manchmal.
 +
 +
Allerdings nicht überall. Dann kann man versuchen, die o.a. ipp-Adresse zu nutzen und den Drucker als generischen PCL-Drucker anzulegen. Ich habe als Marke '''"Generic"''' gewählt und als Modell '''"PCL 6/PCL XL"'''' und als Treiber '''"Generic ... /hpijs-pcl5e"''' (Ubuntu 24.04). Dann geht es aber nur schwarzweiß und nur in A4. Außerdem musste ich hpijs installieren:
 +
 +
  sudo aptitude install printer-driver-hpijs hpijs-ppds
  
 
=== Brother ===
 
=== Brother ===
Zeile 2.100: Zeile 2.154:
 
* [http://sourceforge.net/apps/mediawiki/free-cad/index.php?title=Main_Page FreeCAD] ([[OpenSource]])
 
* [http://sourceforge.net/apps/mediawiki/free-cad/index.php?title=Main_Page FreeCAD] ([[OpenSource]])
 
** [http://sourceforge.net/apps/mediawiki/free-cad/index.php?title=Draft_tutorial Einstiegstutorial]
 
** [http://sourceforge.net/apps/mediawiki/free-cad/index.php?title=Draft_tutorial Einstiegstutorial]
 
+
* [[OpenSCAD]] - a simple CAD application based on scripts
  
 
=== Business Software ===
 
=== Business Software ===

Aktuelle Version vom 3. November 2024, 09:08 Uhr


Linux und andere Betriebssysteme

Betriebssystemvergleich

Plattformübergreifende Software

Zusammenarbeit mit Windows

  • Einige Linux-Anwendungen laufen durch CygWin auch unter Windows. Neben dem graphischen windows-typischen Installer kann nach der Erstinstallation auch das apt-get-ähnliche Skript apt-cyg zur Paketverwaltung genutzt werden.
  • GnuWin32 bietet ebenfalls etliche Linux-Kommandozeilenprogramme. Diese bauen direkt auf den Windows-Bibliotheken auf. Sie sind daher einfacher als die CygWin-Utilities zu handhaben; allerdings ist CygWin umfangreicher und bietet z.B. eine Bash-shell und einen X-Server.
  • LTools erlaubt den Zugriff auf ext2/ext3-Partitionen von der Kommandozeile oder mittels einer Java- oder Web-GUI. Eine graphisches Tool zum Lesen von ext2-/ext3-Partitionen ist auch explore2fs. Noch weiter gehen fs-driver und ext2fsd: sie bieten Treiber für ext2-Partitionen. Letzteres läuft auch unter Windows Vista.

Dokumentation

Anleitungen

  • Linux-Handbuch, ein kostenloses Onlinebuch zu Linux von Galileo.
  • Das Linux-Kompendium ist auf wikibooks.org als freies umfangreiches Nachschlagewerk zu Linux erschienen.

man-Pages

Die sog. man-pages sind DIE Informationsquelle eines Linux-Systems. Sie finden sich auch im World Wide Web (z.B. bei UNIX-Help und manpages.com).

Die man-pages befinden sich in verschiedenen Kategorien, die innerhalb der man-pages durch eine in Klammern an die Bezeichnung angehängte Zahl gekennzeichnet wird. Beim Aufruf von man steht dagegen die Section-Nr VOR der Bezeichnung. Die Einführungen finden sich z.B. durch

 man x intro

wobei x eine Zahl zwischen 1 und 9 ist.

Regelmäßige Publikationen

  • RadioTux liefert PodCasts rund um Linux.
  • Uptimes - Mitgliederzeitschrift der German Unix User Group

Distributionen

Allgemeines

  • SLAX ist eine auf Slackware basierende Live-CD, die selbst bei denjenigen alten PCs den Netzwerkadapter ansprechen kann, wo OpenSuse, Knoppix sowie Debian versagen.
    • OpenSuse ist das von Novell unterstützte freie Linux. Proprietäre (und trotzdem kostenlose) Anwendungen können über andere Installationsquellen nachgeladen werden.
      • Der Linux-Club bietet ein gutes Wiki rund um OpenSuse.
      • Beim Update von OpenSuse 10.1 auf 10.2 könnte es Probleme mit der Druckerinstallation geben: Dann einfach /var/lib/YaST2/ppd_db.ycp löschen.[1]
      • Siehe auch Installation von OpenSuse über PXE.
      • Das GNOME-Frontend für Vorlage:Su (starten von Programmen als Root) heißt unter OpenSuse gnomesu und nicht wie sonst meist üblich gksu. Die Entsprechung unter KDE heißt kdesu.
  • Auch Debian lässt sich übers Netzwerk/PXE installieren.
  • Auch Knoppix lässt sich über PXE installieren. Siehe
  • Arch Linux ist offiziell eine schlanke, ständig aktuelle Linux-Distribution (PXE-Installation möglich).
  • andLinux ist eine Linux-Distribution, die unter Windows 2000, XP etc. läuft. Sie basiert auf coLinux.
  • Eine Distribution, die Wert auf Flexibilität und Anpassungsfähigkeit liegt, ist Gentoo.
  • Sugar, hervorgegangen aus dem One Laptop Per Child-Projekt, ist ein Linux-System für Kinder.

Ubuntu

Arch Linux

Arch Linux ist ein sog. Rolling Release und enthält sehr aktuelle Software, allerdings mit dem Nachteil, dass sie auch nicht immer besonders tief getestet wurde.


ChromeOS

Das Google-Betriebssystem ChromeOS basiert ebenfalls auf Linux. Es kann inzwischen auch Android-Apps ausführen.

2018 hat Google die Initiative ergriffen und versucht, ChromeOS auf dem Tablet zu offerieren. Bisher (Anfang 2020) scheint das noch nicht den Massenmarkt zu erreichen.

Schnellstart-Linux

Router mit Linux

Siehe Router

Linux im Browser

bellard.org/jslinux

Installation

Installation von Linux auf Laptops

Installation eines Servers im Internet

Siehe Root-Server

Umzug auf andere Festplatte/Partition

Will man sein Linux auf eine andere Festplatte umziehen, nimmt man eine LiveCD und gibt in der Shell ein (bei Umzug von erster auf zweite Partition):

 dd if=/dev/sda1 of=/dev/sda2

Wenn die neue Partition größer ist (kleiner geht nicht), dann muss auch noch das Dateisystem angepasst werden (funktioniert jedenfalls bei einem ext3-Dateisystem):

 resize2fs /dev/sda2

Siehe iX-Artikel Möbelpacker.

Paketmanagement

Die großen Distributionen sind entweder Debian-basiert (mit .DEB-Paketen) oder nutzen das Redhat Package Manager-Format (.RPM; z.B. OpenSuse).

RPM

  • Das RPM-Buch bietet eine Anleitung zum "Redhat Package Manager" inklusive dem Bau von Paketen.

Orchestrierungswerkzeuge

Es gibt eine Menge Tools, um die Konfiguration von Rechnern aus der Ferne (halb-)automatisch zu erledigen, z.B.:

Sound

Siehe Audio#Linux und Audio

Zum Einrichten des Sounds hilft

 alsaconf

(De-)Installation von Programmen aus dem Quelltext

Patch und diff

Bootvorgang

Bootloader

GRUB

Installation

Den Bootloader GRUB2 auf allen Platten installieren:

 sudo grub-install /dev/sda
 sudo grub-install /dev/sdb
GRUB über PXE starten

GRUB lässt sich auch über PXE starten

Das ist quasi der umgekehrte Fall des Startens von PXE mittels GRUB (im wesentlichen über "root (nd)").

Konfiguration in /etc/grub.d/

Beim neuen GRUB-Bootloader (GRUB 2) wird die Konfiguration nicht mehr über die Datei /boot/grub/menu.lst, sondern über /etc/default/grub sowie über Skripte in /etc/grub.d/. Beispiel für ein Skript /etc/grub.d/08_meinEintrag:

 #!/bin/sh -e
 echo "Füge meine eigenen Menüeinträge hinzu" >&2
 cat << EOF
 menuentry "MeinLinux" {
   insmod ext2
   set root='(hd0,1)'
   linux /boot/vmlinuz-2.6.32-32-generic root=/dev/sda ro quiet splash
   initrd /boot/initrd.img-2.6.32-32-generic
 }
 EOF

Die Zahl 08 am Beginn des Dateinamens sorgt dafür, dass es vor dem Skript 10_linux ausgeführt wird und die eigenen Menüeinträge oben im Grub-Menü erscheinen. Wichtig ist, dass die Datei ausführbar wird:

 sudo chmod +x /etc/grub.d/08_meinEintrag

Der echo-Befehl im Skript wird auf die Error-Ausgabe (&2) umgeleitet und landet nicht in /boot/grub/grub.cfg beim Ausführen von update-grub. Der Text zwischen EOF und EOF landet dagegen 1:1 in /boot/grub/grub.cfg. Hier kann man also experimentieren.

Der Befehl set setzt Umgebungsvariablen, in diesem Fall root, die die Partition mit dem zu startenden Betriebssystem enthält. Die erste Platte heißt hd0, die erste Partition beginnt (seit GRUB2) mit 1; die erste Partition auf der ersten Platte heißt also '(hd0,1)'. Root lässt sich auch mit dem Befehl search setzen.[2]

Für weitere Beispiele sollte man sich die automatisch generierte /boot/grub/grub.cfg anschauen. Dabei kann man alles, was nicht mit menuentry beginnt beim Lesen erst einmal überspringen.

Weiteres Beispiel für einen Menüeintrag
  menuentry 'UbuntuLinux Generic Current auf Platte mit Bezeichnung Ubun10LTS' --class ubuntu --class gnu-linux --class gnu --class os {
	recordfail
	insmod ext2
	search --no-floppy --label --set root Ubun10LTS
	linux	/vmlinuz root=LABEL=Ubun10LTS ro   quiet splash
	initrd	/initrd.img
  }
/boot/grub.cfg aktualisieren

Nach Änderung an der Konfiguration schaut man sich die Auswirkungen auf /boot/grub/grub.cfg mittels

 sudo grub-mkconfig 

an und schreibt sie in /boot/grub/grub.cfg mittels

 sudo update-grub


Vorschau auf GRUB-Menü

Das Menü, das GRUB beim Booten anbieten wird, kann mit dem Emulator angezeigt werden:

 sudo aptitude install grub-emu
 grub-emu

Um es wieder zu beenden, muss man im Fenster, von dem aus man grub-emu gestartet hat (also nicht das Vorschaufenster) ein c und dann ein exit eingeben.[3]

ISO-File booten
Auswahl des Betriebssystems für nächsten Boot

Um nur für den nächsten Bootvorgang ein anderes Betriebssystem zu booten, kann man

 sudo grub-reboot x

aufrufen, wobei x die Nummer (erster Eintrag hat die 0 nicht die 1) oder die genaue Bezeichnung des "menuentry"-Eintrags in der grub.cfg ist.

Wichtig ist dabei, dass in /etc/default/grub steht, dass

 GRUB_DEFAULT=saved

Dabei ist es sinnvoll den Standardbootmenüeintrag mit folgendem Kommando festzulegen:

 sudo grub-set-default x

Siehe http://wiki.ubuntuusers.de/GRUB_2/Terminalbefehle#grub-reboot

Boot in die Shell
Weiterführendes

Siehe auch

EFI-Boot-Loader

Allgemeines
GRUB2
Allgemeines


Installation

Aus einem mit EFI gestarteten System lassen sich mit

 sudo efibootmgr --verbose

die zu bootenden Loader anzeigen und die Bootreihenfolge mit

 sudo efibootmgr -o A,2,3

ändern.

Wenn man in /etc/default/grub

 GRUB_DISTRIBUTOR=dhubuntu

gesetzt hat und mit

 sudo grub-install

den GRUB-Bootloader erneut installiert hat, kann man ihn mit

 sudo efibootmgr -c --bootnum 000A -d /dev/sda -p 1 -L "dhUbuntuEFI" -l \\EFI\\dhubuntu\\grubx64.efi 

aktivieren.[4]

Chainloading Windows
  • Chainloading von EFI-Windows-Bootloader funktioniert durch folgenden Eintrag in grub.cfg[5] bzw. /etc/grub.d/08_windows
 menuentry "Windows 7" {
       set root='(hd0,gpt1)'
       chainloader /EFI/microsoft/BOOT/bootmgfw.efi
 }
Booteintrag für nächsten Reboot

Für den nächsten Boot kann man den Booteintrag folgendermaßen auswählen

 sudo grub-reboot 2

Statt der 2 (die für den 3. Menüeintrag) steht kann man natürlich auch eine andere Nummer angeben oder aber den Menüeintrag-Titel, wie er der Datei /boot/grub.cfg zu entnehmen ist.

ELILO

Für ELILO muss Kernel und Initial RamDisk auf einer EFI-zugänglichen Partition liegen.[6]

Booten übers Netzwerk

Kernel

  • Achtung der Kernel-Parameter root= kann sich ändern. Passte bei einer früheren Version noch /dev/hda1 als Argument, kann es jetzt /dev/sda1 sein.

Wer seinen Kernel selber kompilieren will, findet hier eine Anleitung.

Init nach UNIX Sys V

Der herkömmliche Boot-Prozess unter Linux ist das Init-System aus Unix Sys V - Zeiten: Dabei werden entsprechend verschiedener Runlevel einzelne Init-Skripte abgearbeitet, die sich normalerweise in /etc/init.d befinden. Unterhalb von /etc/rc.d findet sich für jedes Runlevel eine symbolische Linksammlung, deren einzelne Links auf die init-Skripten verweisen. Die Links beginnen mit einem S oder einem K, einer Zahl (=Priorität) und enden mit dem Namen des zu startenden (S) bzw. zu beendenden (K) Prozesses. Die Init-Skripten werden nacheinander entsprechend dieser Prioritäten-Zahl abgearbeitet.

Zur Verwaltung der Linksammlung bieten die unterschiedlichen Distributionen kleine Kommandozeilentools:

  • Für chkconfig wird in dem init-Skript konkret die jeweiligen Runlevel, in denen der Dienst laufen soll, sowie die Prioritätszahl vorgegeben.
  • insserv (OpenSuse) kann auch Abhängigkeiten auflösen.
  • Unter Debian und Konsorten gibt es update-rc.d (siehe diese kleine Anleitung).

Upstart

Ubuntu steigt ab V 9.10 Karmic Koala auf das neuere "Upstart"-System um. Damit ist es möglich, init-Skripten parallel abzuarbeiten. Dafür wird ein Abhängigkeitssystem zur Verfügung gestellt. Debian verfügt ab Debian 6.0 Squeeze über Upstart.

Siehe

Systemd

Systemd scheint nach der Entscheidung von Debian zur Umstellung auf Systemd das alte *NIX-Init-System abzulösen.

Standard-Ziel

Das Standard-Ziel (der Default Runlevel) wird mittels eines Links eingestellt:[7]

 ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

Alternativ kann auch der folgende Befehl genutzt werden:[8]

 systemctl set-default multi-user.target

Schließlich lässt sich beim Booten ebenfalls das Target als Kernel-Parameter (siehe bei GRUB) angeben:[9]

 systemd.unit=multi-user.target

Eine Übersicht über besondere Ziele des Systemd-Systems findet sich bei freedesktop.org.

Konsolen

Siehe zu Service-Templates (z.B. mehrere Konsolen, auf die mittels (Strg-)Alt-F1, (Strg-)Alt-F2 ... zugegriffen werden kann und auf denen jeweils getty läuft):

Ruhezustand

Probiere

 sudo pm-hibernate

oder

 sudo systemctl hibernate

Siehe auch zu den Voraussetzungen wie /etc/initramfs-tools/conf.d/resume:

Automatischen Ruhezustand verhindern

Systemd ist standardmäßig so eingestellt, dass es bei geschlossenem Laptop-Deckel in den Ruhezustand geht. Dies lässt sich in der /etc/systemd/login.conf vermeiden:[10]

 HandleLidSwitch=ignore

Weiteres

Herunterfahren

im Init-System

Mit einer GUI-Umgebung wie Gnome oder KDE lässt sich der Rechner einfach durch Drücken des Soft-Power-Off-Buttons herunterfahren (meist noch mit einer Rückfrage auf dem Bildschirm). Will man dem normalen User in der Shell etwas ähnliches erlauben, sollte man in /etc/inittab folgende Zeile einfügen/ändern:

 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now

mittels Magic-SysRq

Siehe

Tastatur

Troubleshooting Tastatur

Linux Mint 17.1 Rebecca

Siehe zunächst das Vorgehen bei Linux-Tipps#Debian 8.0 Jessie

Bei mir hat allerdings die Einstellungen für cups, in der blacklist und der Kernel-Parameter atkbd.reset nicht geholfen. Mittels aptitude habe ich dann das System auf den aktuellen Stand gebracht (im Recovery-Modus). Außerdem habe ich den openssh-server installiert, um auch bei normalem Start von einem Zweitrechner auf die Mint-Installation zugreifen zu können. Die Module lp, ppdev, parport_pc und parport habe ich sowohl in GRUB (z.B. lp.blacklist=yes) als auch in /etc/modprobe.d/uebeltaeter.conf ausgeschlossen.

Das Laden der Module lp, parport und parport_pc in /etc/modules-load.d/cups-filters.conf wird durch Auskommentieren (Raute '#' am Anfang der Zeile) unterbunden.

Eventuell hilft auch das ausdrückliche Laden von atkbd mittels der Kernel-Parameter earlymodules=atkbd modules-load=atkbd.[11]

Der Recovery-Modus einer Linux-Mint-Installation ist meist ein guter Weg, um die notwendigen Änderungen vorzunehmen.

Ubuntu 14.04.2

In /etc/modules-load.d/cups-filter.conf sind die Module lp, ppdev und parport_pc auszukommentieren.

Debian 8.0 Jessie

Wenn die PS/2-Tastatur nach Installation von CUPS nicht funktioniert, hilft möglicherweise[12] eine Änderung der /etc/default/cups:

 LOAD_LP_MODULE=no

Oder man deinstalliert das Modul cups-server-common mit all seinen Abhängigkeiten

 aptitude remove cups-server-common

Der eigentliche Übeltäter ist jedoch das Modul parport_pc[13], das CUPS für Drucker am Parallelport lädt. Dies lässt sich durch Erstellung folgender /etc/modprobe.d/blacklist-uebeltaeter.conf beheben:

 #Ermoeglicht wieder die PS_2 Tastatur zu nutzen:
 
 blacklist parport_pc


Wenn es immer noch nicht hilft, muss das Modul ohci_pci nachgeladen werden.[14]

Oder: das Paket hal muss deinstalliert werden:

 aptitude remove hal

Schließlich hilft eventuell (z.B. bei einer Tastatur, die nach einem Suspend-to-RAM nicht mehr funktioniert) auch der Kernelparameter (anzugeben bei den GRUB-Einstellungen):

 atkbd.reset

Debian 7.0 Wheezy

Für Debian 7.0 Wheezy hilft evtl. folgende Änderung der /etc/X11/xorg.conf (evtl. ausführbar machen???):

 Section "ServerFlags"
   Option "AutoAddDevices" "False"
 EndSection

Zusätzlich sollte noch der "alte" Tastatur-Treiber installiert werden:

 aptitude install xserver-xorg-input-kbd xserver-xorg-input-mouse

Tastaturlayout

Ab Debian 6.0 Squeeze ist die Tastatureinstellung für die Konsole und den X-Server vereinheitlicht:

 dpkg-reconfigure keyboard-configuration


Dazu muss zuvor die notwendigen Pakete installiert werden

 aptitude install console-data keyboard-configuration

Bisher: Mit

 loadkeys de-latin1 

kann man in der Konsole die deutsche Tastaturbelegung laden.

Für X wird das Tastaturlayout (jedenfalls unter Debian) in der Datei /etc/X11/xorg.conf eingestellt:

 Section "InputDevice"
       Identifier      "Generic Keyboard"
       Driver          "kbd"
       Option          "XkbRules"      "xorg"
       Option          "XkbModel"      "pc104"
       Option          "XkbLayout"     "de"   
 EndSection


Siehe auch

Maus und Touchpad

Mit

 synclient TouchPadOff=1

kann das Klicken durch Tippen auf das TouchPad abgeschaltet werden. Siehe dazu auch diesen Thread.

Maus nicht erkannt beim Starten

Bei Linux Mint 19.1 und dem Motherboard ASRock B360 Pro4 wird evtl die USB-Maus (in meinem Fall Microsoft Optical Mouse) beim Systemstart nicht erkannt. Hier könnte der Kernelparameter i8042.nopnp helfen.[15]

RS232 Schnittstelle

Einen USB-RS232-Adapter kann man auch an einen Linux-PC anschließen.[16]

Allerdings muss man dazu entsprechende Kernel-Module laden.

Die RS232-Schnittstelle lässt sich aus einem in C geschriebenen Programm mittels einer recht neuen Open Source Bibliothek ansprechen.

Infrarot-Schnittstelle

IrDA

Datenübertragung per Infrarot geht nach dem IrDA-Standard. Dazu gibt es unter Linux beispielsweise die irda-utils.

LIRC

Die Signale der Infrarot-Fernbedienungen konnten früher nur über LIRC empfangen werden, heutzutage kann der Kernel selbst viele Signale direkt als Tastatur-Ereignisse verarbeiten.[17] LIRC hat aber weiterhin Sinn, z.B. wenn man bei der Konfiguration flexibler sein will oder wenn ein IR-Empfänger oder eine IR-Fernbedienung noch nicht vom Kernel unterstützt wird.[18]

Mit LIRC kann man auch die vom Kernel unterstützten IR-Geräte nutzen; dabei geht man den Umweg über das Linux-Input-System.

Mit

 ir-keytable

können die installierten IR-Receiver angezeigt werden. Eingabegeräte ganz allgemein lassen sich auch mit

 cat /proc/bus/input/devices

anzeigen.

Mit

 sudo ir-keytable --device /dev/input/event10 -t

kann man testen, ob überhaupt Signale ankommen (event10 durch den auf den IR-Empfänger passenden event setzen, siehe oben ir-keytable). Das sudo kann weggelassen werden, indem man den Benutzer der Gruppe input zuweist:[19]

 sudo adduser USER input

Zunächst gibt man beim Testen alle unterstützten Protokolle an:

 ir-keytable -p jvc,rc-5,rc-6,other -t

Dann setzt man das korrekte Protokoll, indem hinter -p die übrigen Protokolle weggelassen werden. Außerdem kopiert man eine Kernel-Keymap nach /etc/rc_keymap, bearbeitet sie gegebenenfalls (siehe dazu die Key codes( MythTV) und die Standardbelegung der Tastatur unter Kodi) und liest sie dann ein

 sudo cp /lib/udev/rc_keymaps/tt_1500 /etc/rc_keymaps/meine_keymap
 sudo ir-keytable -p jvc -c -w /etc/rc_keymaps/meine_keymap

Hier mal meine Beispiel-Tabelle /etc/rc_keymaps/meine_tt für die Nutzung einer alten Technotrend-Fernbedienung für Kodi:

# table tt_1500, type: RC5
0x1501 KEY_POWER
0x1502 KEY_SHUFFLE
0x1503 KEY_1
0x1504 KEY_2
0x1505 KEY_3
0x1506 KEY_4
0x1507 KEY_5
0x1508 KEY_6
0x1509 KEY_7
0x150a KEY_8
0x150b KEY_9
0x150c KEY_0
0x150d KEY_UP
0x150e KEY_LEFT
0x150f KEY_ENTER
0x1510 KEY_RIGHT
0x1511 KEY_DOWN
0x1512 KEY_C
0x1513 KEY_BACKSPACE
0x1514 KEY_RED
0x1515 KEY_GREEN
0x1516 KEY_YELLOW
0x1517 KEY_BLUE
0x1518 KEY_MUTE
0x1519 KEY_TEXT
0x151a KEY_MODE
0x1521 KEY_OPTION
0x1522 KEY_E
0x1523 KEY_CHANNELUP
0x1524 KEY_CHANNELDOWN
0x1525 KEY_VOLUMEUP
0x1526 KEY_VOLUMEDOWN
0x1527 KEY_SETUP
0x153a KEY_RECORD
0x153b KEY_SPACE
0x153c KEY_X
0x153d KEY_REWIND
0x153e KEY_PAUSE
0x153f KEY_FORWARD

Mit

 ir-keytable --read

kann man sich die eingelesenen Keycodes anzeigen lassen.

Hier ist mit dem reinen Kernel-Treiber Schluss.

Man kann es sich aber auch komplizierter machen und LIRC installieren:

 sudo aptitude install lirc
 

Die /etc/lirc/hardware.conf bekommt folgenden Inhalt:[20]

 LOAD_MODULES=true
 DRIVER="devinput"
 DEVICE="/dev/input/event6"

event6 muss dabei an den mit

 ir-keytable

Gerätenamen angepasst werden. Achtung: Nach einem Neustart kann der IR-Receiver einem anderen eventXXX zugeordnet sein.


Für die /etc/lirc/lircd.conf greift man auf die devinput-Datei zurück:

 sudo cp -av /usr/share/lirc/remotes/devinput/lircd.conf.devinput /etc/lirc/lircd.conf

Danach müssen noch Lircmap.xml in ~/.kodi/userdata/ und die remote.xml (jeweils auf korrektes Release/github-Branch achten)[21] in ~/.kodi/userdata/keymaps/ hineinkopiert werden, möchte man Kodi nutzen. Dabei ist in die Lircmap.xml in das device-Attribut des remote-Elements korrekt zu setzen. Beispiel:

 <remote device="/dev/input/event6">


Da udev insbesondere bei mehreren IR-Receivern immer wieder eine andere Gerätenummer (eventXX) zuweist, sollte man mit einer eigenen udev-Regel einen symbolischen Link erstellen. Dazu legt man eine Datei /etc/udev/rules.d/10-infrared.rules an und gibt ihr folgenden Inhalt:

 ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="ITE8713 CIR transceiver",  SYMLINK+="input/infrared"

Hilfe zum Finden der korrekten Attribute für den eigenen IR-Empfänger erhält man mit

 udevadm info -a -n /dev/input/event7

wobei natürlich event7 mit dem korrekten eventXX aus dem Aufruf von ir-keytable ersetzt werden muss.


Mit

 sudo udevadm test /devices/virtual/rc/rc0/input7/event7 

kann man die udev-Regel testen.

 sudo udevadm trigger

löst den udev-Zuweisungsvorgang aus (genauso wie beim Neustart).

Mit

 ls -als /dev/input/infrared

kann man sehen, ob man erfolgreich war.


Siehe

InputLirc

InputLirc nutzt das Kernel-Input-Subsystem (ir-keytable) und gibt die Events an LIRC weiter, das dann für die Aktionen in den Anwendungen sorgt.

Installation:

 sudo aptitude install lirc lirc-x inputlirc


In /etc/default/inputlirc muss die Variable EVENTS auf den von der oben angegebenen udev-Regel erstellten symbolischen Link gesetzt werden:[22]

 EVENTS="/dev/input/infrared"

Das ist dann auch der korrekte Name für das <remote>-Tag in der .kodi/userdata/Lircmapxml. Kernel-Input kann mit ir-keytable -t getestet werden (siehe oben).

Die LIRC-Tastencodes können mit

 irw

angezeigt werden (einzelne Tasten auf der Fernbedienung betätigen).

Kodi-Funktionen: Die ~/.kodi/userdata/Lircmap.xml erhält folgenden Inhalt:

  <?xml version="1.0" encoding="UTF-8"?>
  <!-- This file contains the mapping of LIRC keys to XBMC keys used in Keymap.xml  -->
  <!--                                                                              -->
  <!-- How to add remotes                                                           -->
  <!-- <remote device="name_Lirc_calls_the_remote">                                 -->
  <!--                                                                              -->
  <!-- For the commands the layout following layout is used                         -->
  <!-- <XBMC_COMMAND>LircButtonName</XBMC_COMMAND>                                  -->
  <!--                                                                              -->
  <!-- For a list of XBMC_COMMAND's check out the <remote> sections of keymap.xml   -->

  <lircmap>
	<remote device="/dev/input/event6">
		<!-- new kernel-based lirc button names -->
		<eject>KEY_EJECTCD</eject>
		<left>KEY_LEFT</left>
		<right>KEY_RIGHT</right>
		<up>KEY_UP</up>
		<down>KEY_DOWN</down>
		<select>KEY_OK</select>
		<start>KEY_HOME</start>
		<back>KEY_BACK</back>
		<record>KEY_RECORD</record>
		<play>KEY_PLAY</play>
		<pause>KEY_PAUSE</pause>
		<stop>KEY_STOP</stop>
		<forward>KEY_FORWARD</forward>
		<reverse>KEY_REWIND</reverse>
		<volumeplus>KEY_VOLUMEUP</volumeplus>
		<volumeminus>KEY_VOLUMEDOWN</volumeminus>
		<pageplus>KEY_CHANNELUP</pageplus>
		<pageminus>KEY_CHANNELDOWN</pageminus>
		<skipplus>KEY_NEXT</skipplus>
		<skipminus>KEY_AGAIN</skipminus>
		<mute>KEY_MUTE</mute>
		<power>KEY_POWER</power>
		<myvideo>KEY_VIDEO</myvideo>
		<mymusic>KEY_AUDIO</mymusic>
		<livetv>LiveTV</livetv>
		<guide>KEY_EPG</guide>
		<one>KEY_1</one>
		<two>KEY_2</two>
		<three>KEY_3</three>
		<four>KEY_4</four>
		<five>KEY_5</five>
		<six>KEY_6</six>
		<seven>KEY_7</seven>
		<eight>KEY_8</eight>
		<nine>KEY_9</nine>
		<zero>KEY_0</zero>
		<red>KEY_RED</red>
		<green>KEY_GREEN</green>
		<yellow>KEY_YELLOW</yellow>
		<blue>KEY_BLUE</blue>
		<menu>KEY_DVD</menu>
		<clear>KEY_CLEAR</clear>
		<enter>KEY_ENTER</enter>

                <!-- extensions -->
                <back>KEY_EXIT</back>
	</remote>
  </lircmap

Siehe

ir-keytable und Kodi

Für neuere Linux- und Kodi-Versionen braucht man im Regelfall LIRC nicht. ir-keytable reicht aus. Beispiel für eine TT-Fernbedienung an einem Intel NUC mit eingebautem IR-Empfänger: Man bastelt auf Basis der /lib/udev/rc_keymaps/tt_1500 eine neue Datei namens /etc/rc_keymaps/meine_tt mit folgendem Inhalt:

# table tt_1500, type: RC5
0x1501 KEY_POWER
0x1502 KEY_SHUFFLE
0x1503 KEY_1
0x1504 KEY_2
0x1505 KEY_3
0x1506 KEY_4
0x1507 KEY_5
0x1508 KEY_6
0x1509 KEY_7
0x150a KEY_8
0x150b KEY_9
0x150c KEY_0
0x150d KEY_UP
0x150e KEY_LEFT
0x150f KEY_ENTER
0x1510 KEY_RIGHT
0x1511 KEY_DOWN
0x1512 KEY_C
0x1513 KEY_BACKSPACE
0x1514 KEY_RED
0x1515 KEY_GREEN
0x1516 KEY_YELLOW
0x1517 KEY_BLUE
0x1518 KEY_MUTE
0x1519 KEY_TEXT
0x151a KEY_MODE
0x1521 KEY_OPTION
0x1522 KEY_E
0x1523 KEY_CHANNELUP
0x1524 KEY_CHANNELDOWN
0x1525 KEY_VOLUMEUP
0x1526 KEY_VOLUMEDOWN
0x1527 KEY_SETUP
0x153a KEY_RECORD
0x153b KEY_SPACE
0x153c KEY_X
0x153d KEY_REWIND
0x153e KEY_PAUSE
0x153f KEY_FORWARD


Diese schreibt man auf den Intel-IR-Receiver (hier: rc0) mit

  sudo ir-keytable -c -w /etc/rc_keymaps/meine_tt -s rc0

Um nicht noch durch den im DVB-Stick enthaltenen IR-Receiver (hier: rc1) verwirrt zu werden, kann man dessen Zuordnungstabelle löschen:

sudo ir-keytable -c  -s rc1

Kodi muss zur Wirksamkeit wohl neu gestartet werden.

IR Probleme

Zu Testzwecken hilft das Anzeigen einzelner Tastendrücke:

 irw


Mit Intel NUCs scheint es manchmal Probleme mit dem internen IR-Receiver zu geben. [23]

Wenn man zwei IR-Receiver (z.B. eingebauten und den einer TV-Karte) hat, kann es passieren, dass man das Protokoll für den zweiten nicht einstellen kann.[24],[25], [26]

Möglicherweise gibt es auf einem Debian Jessie ein LIRC zuviel und die Tasten werden ununterbrochen wiederholt. Dann hilft evtl.:

 sudo service lircd-uinput stop

Den lircd-uinput - Service kann man auch dauerhaft deaktivieren:

 sudo systemctl disable lircd-uinput
IR-Fernbedienung erzeugt doppelte Tastendrücke

Wenn man Kodi über eine Infrarot-Fernbedienung steuern will und sie wie oben dargestellt mit LIRC und Kodis Lircmap.xml eingerichtet hat, dann kann es vorkommen, dass die Fernbedienung Tastendrücke doppelt an Kodi meldet. Wenn dies der Fall ist, schaltet man das entsprechende Input-Device im X-Server ab. Dazu sucht man mit

 export DISPLAY=:0.0
 xinput list

die Id (z.B. 9) des IR-Adapters (üblicherweise benannt nach dem TV-Stick, der den IR-Empfänger integriert hat). Mit

 xinput list-props 9

(statt 9 ggf. andere ID angeben) kann man dann die Eigenschaften des IR-Empfängers ausgeben lassen. Hinter jeder Eigenschaft ist in Klammern eine Eigenschaftsnummer angegeben. Die Eigenschaft mit dem "Enabled" im Text, muss auf 0 gesetzt werden, z.B. so:

 xinput set-prop 9 138 0 

Oft funktioniert auch direkt

 xinput set-prop 9 "Device Enabled" 0

Dazu gibt es auch ein fertiges Skript.

Prozessverwaltung

nohup

  • Mit dem Befehl nohup kann man Prozesse starten, die nicht beendet werden, wenn die Shell verlassen wird. Die Standardausgabe stdout wird nach nohup.out im aktuellen Verzeichnis umgeleitet (kann z.B. mit cat nohup.out angesehen werden.

cron

crontab

  • Mit dem Befehl crontab lassen sich Prozesse zu einem bestimmten Zeitpunkt ausführen. Anleitungen finden sich z.B. bei Wikipedia, Newbie-Net. Mit
 crontab -l

wird die crontab des aktuellen Benutzers ausgegeben. Mit

crontab -e

kann die crontab geändert werden. Eine Crontab-Datei enthält Zeilen mit normalerweise sechs durch Leerzeichen getrennte Spalten:

  • Minuten
  • Stunden
  • Tage
  • Monate
  • Wochentage
  • Auszuführender Befehl / Datei

Beispiel:

2 3 * * * cp src backup
@reboot echo "hallo"
*/10 * * * * echo "schon wieder"

In der ersten Zeile wird der cron-Dämon angewiesen, immer um 3:02 Uhr morgens an jedem Tag die Datei src nach backup zu kopieren. In der zweiten Zeile wird bei jedem Boot-Vorgang ein "hallo" per Mail(?) an den jeweiligen Benutzer geschickt. Die letzte Zeile wird alle 10 Minuten ausgeführt. Zu den weiteren "@-Zeiten" siehe http://library.linode.com/linux-tools/utilities/cron.

/etc/cron.weekly u.a.

Ausführbare Dateien in den Verzeichnissen /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly werden von anacron und/oder cron periodisch ausgeführt.

Gegenüber der crontab-Methode ergibt sich daraus ein Vorteil bei Rechnern, die nicht 24 Stunden im Betrieb sind. Bei Debian muss dafür jedoch anacron nachinstalliert werden (als root):

 aptitude install anacron

Die Dateinamenskonvention in den Verzeichnissen /etc/cron.daily etc. ist recht restriktiv. Siehe dazu die man-pages von run-parts. Um zu sehen, ob das eigene Skript die Namenskonvention einhält, kann man

 run-parts --test /etc/cron.daily

ausführen. Es wird eine Liste derjenigen Skripte ausgegeben, die die Namenskonvention einhält.


Feststellen, ob Script von Cron gestartet wurde

Siehe https://stackoverflow.com/questions/33354864/how-to-check-if-linux-shell-script-is-executed-by-a-cronjob :


if [ -t 0 ]; then
   echo "I'm on a TTY, this is interactive."
else
   logger "My output may get emailed, or may not. Let's log things instead."
fi

Benutzerverwaltung

neuer Benutzer

  • Einen neuen Benutzer legt man am Besten mit adduser NEUERNUTZER an. Im Gegensatz zu useradd wird dabei gleich ein /home-Verzeichnis angelegt. Ein Passwort wird dabei auch gleich abgefragt.

Benutzer-Nummer


Konsolen-Benutzer ohne Passwort

  • Für einen Benutzer ohne Passwort (beim Login auf Shell-Ebene muss man nur den Login-Namen, aber kein Passwort eingeben)[27] legt man ihn in folgenden zwei Schritten an:
 adduser userWithoutPassword
 passwd -d userWithoutPassword

AutoLogin auf Konsole

AutoLogin unter SysV

Ein automatisches Login erreicht man mit dem Paket rungetty:

 aptitude install rungetty


Danach muss man in /etc/init/tty1.conf die Zeile exec /sbin/getty 38400 tty1 durch folgende Zeile ersetzen:

 exec /sbin/rungetty --autologin namedesbenutzers tty1

Bei anderen Linux-Systemen (z.B. Debian 6.0 Squeeze) muss man in der /etc/inittab die Zeile 1:2345:respawn:/sbin/getty 38400 tty1 durch folgende Zeile ersetzen:

 1:2345:respawn:/sbin/rungetty --autologin namedesbenutzers tty1

Nach dem Parameter tty1 kann man noch ein Kommando angeben, das automatisch ausgeführt wird. Ein textbasierter Music-Client lässte sich daher durch Aufruf von ncmpcpp erstellen; bei Beenden des Programms wird es dann automatisch wieder gestartet. Dazu muss allerdings zuvor der MPD-Server installiert sein.

AutoLogin unter Systemd

Siehe dazu http://noctus.net/2011/mingetty-und-systemd

Weiterführendes

Virtualisierung

  • freiesmagazin.de Mai 2009 zeigt, wie man einen virtuellen Rechner mittels KVM am Heimrechner einrichtet.
  • Open VirtualBox (von Oracle) wird z.B. bei Ubuntu mitgeliefert.
  • LXC ist ebenfalls eine Container-Lösung

Shells

Dokumentation für bash (Kommandozeile/Konsole)

Tab-Completion

Wenn man in der Bash die Tabulatortaste drückt, wird der gerade angefangene Befehl, der gerade angefangene Dateiname usw. vervollständigt bzw. bei zweimaligem Drücken weitere Vervollständigungen angeboten.

Eine deutliche Erweiterung dieser Funktionalität auch für Optionen für verschiedene Kommandozeilentools bietet das Paket bash-completion:

 sudo aptitude install bash-completion

Autovervollständigung für Rechnernamen

Bei der Vervollständigung für Rechnernahmen, z.B. für den ssh-Befehl, schaut die Vervollständigung regelmäßig in die Datei /etc/hosts. Möchte man weitere Rechnernamen aufnehmen, muss man die Umgebungsvariable $HOSTFILE auf eine Datei mit Rechnernamen setzen:[28]

 export HOSTFILE="/home/USER/myhostfile"

Um dies bei jedem Start der Bash automatisch zu tun, fügt man diese Zeile am Ende der .bashrc im Homeverzeichnis des jeweiligen Benutzers ein.


In der entsprechenden Datei (im Beispiel /home/USER/myhostfile) werden die Rechner Zeile für Zeile eingetragen:

 fritz.box
 pia2016.de

Gefrorene Shell

Mittels Strg-S kann man das Terminal anhalten (XOFF). Mittels Strg-Q geht es wieder weiter (XON).

Ablaufsteuerung

if-Verzweigung

Der Rückgabewert 0 einer Funktion oder eines Kommando wird als wahr gewertet.

Damit gibt

 if true; then echo eins; else echo zwei; fi;

"eins" aus.

Die Negation erreicht man mit dem Operator !:

 if ! true; then echo eins; else echo zwei; fi;

liefert "zwei".


while-Schleife

  • Die bash-Shell bietet auch eine einfach zu nutzende While-Schleife. Beispiel:
 while true; do df -h; sleep 50s; echo `date`; done;
  • Das kann man auch mit einer Pipe kombinieren (diese Schleife konvertiert Musikdateien, die nur nach der Tracknummer benannt sind, in TrackNr.mp3 um):
 find /mnt/Daten/MusikSorted/ | grep ".*/[0-9][0-9]$" | (while read i; do mv "$i" "$i.mp3"; done; )

Funktionen

  • Funktionen in einem Shell-Script sind einfach definiert:
 function meineFunktion() {
   echo Hallo welt und $1;
 }
 # Aufruf:
 meineFunktion Tina
 # Ausgabe: Hallo welt und Tina

Variablen

  • Array-Variablen können z.B. folgendermaßen Werte zugewiesen werden:
 meinArray=(eins zwei drei vier)
  • Ein komisches Verhalten zieht declare innerhalb einer Funktion bei: Es begrenzt die Sichtbarkeit der Variablen auf den Funktionsbereich. Wenn globale Variablen zum Informationsaustausch zwischen Funktion und aufrufendem Skript genutzt werden sollen, sollte declare in der Funktion also besser nicht genutzt werden.

Parameteroptionen verarbeiten

getopts, ein in der Bash enthaltenes Kommando, hilft Kommandozeilenoptionen zu verarbeiten.

Exit-Status

Mit

 echo $?

wird der Rückgabewert des unmittelbar davor ausgeführten Shell-Kommandos/Skripts ausgegeben.

Das kann z.B. für einen Abbruch genutzt werden:

 do_something;  
 exit_status=$?;
 if (($exit_status)); then
   echo do_something failed.;
   exit $exit_status;
 fi;

Die Kurzform für die ersten drei Zeilen wäre:

 if do_something; then

Debugging

Mit

 set -x

wird Tracing eingeschaltet: Jeder Script-Befehl wird vor der Ausführung auf der Konsole ausgegeben.

Mit

 set -e

wird grundsätzlich das Script bei einem erfolglosen Befehl abgebrochen.

Unit Tests

Bash_unit ist ein Paket zum Erstellen von Unit-Tests für Bash.

Verarbeiten von Textstreams

  • Sinnvolle Hilfen zum Verarbeiten von Textstreams/Auslesen von Dateien
    • wc zählt Worte und Zeilen
    • cut liefert bestimmte Teile einer Zeile
    • grep sucht nach Textbestandteilen
    • sed hilft beim Editieren einer Datei auf der Kommandozeile bzw. in Shell-Skripten, siehe z.B. der Artikel zu sed im "freien Magazin".
    • printf ermöglicht wie in der Programmiersprache C das formatierte Ausgeben von Zahlen und Zeichen
 printf '%s mit führenden Nullen: %05d' Zahl 76

Falls die Standardausgabe zu viel gepuffert wird kann man dies durch das Kommando stdbuf -oL in Zeilenpufferung ändern.[29]

Piping

Linux kennt zwei Standard-Ausgabe-Streams, stdout und stderr.

Die für stderr bestimmten Ausgaben können mit dem Operator "2>" in eine Datei umgeleitet werden. Beispiel:

 find / -name '*.mp3' 2> /dev/null

heredoc

Man kann auch kleine Textschnipsel in ein Skript selbst schreiben und dann weiterleiten:

 cat <<EOF
 Dies ist ein Text, der
 an cat weitergegeben wird.
 EOF

Statt EOF kann in den so genannten "heredocs" auch irgendein anderes Wort zur Bezeichnung des Endes des heredocs geschrieben werden. Es muss nur das Gleiche am Anfang und am Ende sein.

sed

Beispiel für sed für die Umwandlung in eine Playlist:

 sed -e 's/..\/Musik\/Music/dhMusic/' -e 's/\/[0-9][0-9] /\//' <playlistOriginal.m3u > playListNeu.m3u

In der neuen Playlist

  • ist der Pfadanfang geändert von ../Musik/Musik nach dhMusic und
  • sind die Trackziffern inklusive des Leerzeichens weggelassen.

Etwas komplizierter

 sed -e 's:\\:/:g' -e 's:../Musik/Music/\(.\):sortedMusic/\1/\1:' -e 's:/\([0-9][0-9]\) :/\1_-_:' -e 's/ /_/g' < playlistOriginal.m3u > playListNeu.m3u
  • Zunächst wird der Backslash durch den Slash ersetzt.
  • Dann der Pfadanfang geändert
  • Außerdem wird die Pfadstruktur um eine Ebene erweitert: Den Anfangsbuchstaben des Interpreten
  • Zwischen die Trackziffern und den Namen des Lieds werden noch ein Trennstrich mit zwei Leerzeichen eingefügt.
  • Schließlich werden alle Leerzeichen durch einen Unterstrich ersetzt.

Mit dem Modifizierer -i (oder --in-place) kann eine Datei geändert werden, die zugleich als Eingabestream fungiert.

Datum

 date

zeigt das aktuelle Datum an.

 date +%s

zeigt die seit 1970 vergangenen Sekunden an.

 date -d "2100-1-1 -1 day"

zeigt den letzten Tag des 21. Jahrhunderts (31.12.2099) an.

Siehe

Interaktion mit Desktop

Zwischenablage

  • Mit xclip lässt sich der Inhalt der Shell-Pipe in die Zwischenablage kopieren. Der Inhalt steht dann beispielsweise in einer KDE- oder Gnome-Anwendung zur Verfügung.

Nachricht an Desktop

Mit

 notify-send text

kann eine Nachricht (text) an den Desktop gesendet werden, die dem Benutzer angezeigt wird.[30]

Dafür ist allerdings das Paket libnotify-bin zu installieren:

 sudo aptitude install libnotify-bin

User-Dialog

Unter Gnome lässt sich mit zenity von der Bash mit dem Nutzer in Dialog treten (Ja/Nein, User-Eingabezeile, ...).

Arbeitsflächen wechseln

Das Paket wmctrl erlaubt den Wechsel zwischen den Arbeitsflächen des Desktops:

 wmctrl -s arbeitsflächennummer

wobei arbeitsflächennummer die mit 0 beginnende Nummer des Desktops ist.[31]

Das Paket devilspie erlaubt es, Programme nach bestimmten Kriterien auf andere Arbeitsflächen/Viewports zu verfrachten. Dazu muss beispielsweise für xterm folgende Datei ~/.devilspie/xterm.ds (Die Endung .ds ist wichtig) erstellt werden:

 (if 
    (is (application_name) "xterm")
    (begin
       (set_viewport 3)
    )
 )

Anschließend muss devilspie gestartet werden. Bei den folgenden Aufrufen von xterm wird das Fenster automatisch auf die Arbeitsfläche 3 landen.

Eine Möglichkeit, mittels wmctrl und bash-Script Compiz-Viewports zu kontrollieren, findet sich hier und hier, letzteres basierend auf diesem Blog.

Terminalfenstertitel

Der Terminaltitel lässt sich mit einer Escape-Sequenz setzen:

 echo -ne "\033]0;SOME TITLE HERE\007"

Achtung: Das funktioniert bei mir aber nur innerhalb eines Shell-Skripts!

Im Normalfall bringt das aber nichts, wenn der Prompt wieder angezeigt wird, der normalerweise eine Escape-Sequenz zum Ändern des Terminaltitels beinhaltet. Daher sollte man diesen zurücksetzen:

 PS1="\u@\h:\w\$ "

Siehe

Interaktion der Shell mit Maus

Siehe

Dateiverwaltung

Dateisuche

Suchen auch in Unterordnern

Ein rekursives MS-DOS-dir lässt sich mit dem Befehl find erreichen:

 find / -name "*xy*"
  

Es findet alle Dateien, die ein xy im Dateinamen enthalten und gibt den vollständigen Pfad aus. Die Anführungszeichen sind wichtig, ansonsten würde die Shell bereits die Sternchen auswerten.

Suchen nach Dateinamen und Wörtern im Dateiinhalt

Will man an Hand des Dateinamens eine Vorauswahl der Dateien treffen, deren Inhalt auf ein bestimmtes Wort untersucht wird, kann man find und grep kombinieren:

 find . -name package.json -print0 | xargs -0 grep mylib

Dieser Befehl sucht im aktuellen Verzeichnis und dessen Unterverzeichnissen nach Dateien mit dem Namen package.json. In diesen sucht es nach der Zeichenfolge "mylib".

Berechtigungen

Mit

 namei -om PATH

können die einzelnen Berechtigungen eines Pfades PATH angezeigt werden.

SUID

Mit Setzen des SUID-Bits für ein binäres Programm (also keinem Shell-Skript) mit

 chmod u+s PROGRAMM

wird der Benutzer, der das Programm aufrufen darf (z.B. Ausführungs-Bit "x" bei der einschlägigen Gruppe gesetzt), das Programm unter dem Benutzer, der Eigentümer des Programms ist, ausführen.

SGID

Mit Setzen des SGID-Bits für ein Verzeichnis erben neu angelegte Dokumente/Verzeichnisse in diesem Verzeichnis dessen Gruppe als Gruppenzugehörigkeit.

umask

In den Konfigurationsdateien /etc/profile, ~/.profile (z.B. umask 027) oder /etc/login.defs (z.B. UMASK 027), je nach Linux-Ausgabe, kann zentral die Standard-Umask vorgegeben werden. Damit kann insbesondere standardmäßig vorgegeben werden, dass die erzeugten Dokumente nicht world-readable sind (umask 007).

Angeblich[32] kann man auch user-spezifisch die Default-Umask setzen: Siehe dazu /etc/default/useradd oder /etc/adduser.conf

Speicherplatz

  • Den freien Platz auf der Festplatte erfährt man durch
 df -h 
  • Den vom aktuellen Verzeichnis und seinen Unterverzeichnis belegten Platz erfährt man durch
 du --human-readable --summarize
  • Um zu sehen, welcher Platz von den einzelnen Dateien bzw. Verzeichnisse des Arbeitsverzeichnisses eingenommen wird, hilft das Tool xargs. Z.B. um alle Dateien/Verzeichnisse im Gigabyte-Bereich zu finden:
 ls --almost-all -1  | xargs -n1 -d '\n'  du -h --summarize |  sed -n -e '/digit:G\s/p'

Mounten

Erkennen einer CD-ROM

Möglicherweise hilft bei Nichterkennung einer CD-ROM das Einschalten des Kernel-Pollings (siehe unteren Teil der verlinkten Seite).

UUID

Die UUIDs der Festplattenpartitionen lassen sich mit sudo blkid anzeigen. In der /etc/fstab ersetzt man das übliche /dev/sdXX durch UUID=12345678.

LABEL

Eine ext2/ext3/ext4-Partition lässt sich mit sudo e2label mit einem Label versehen. In der /etc/fstab ersetzt man das übliche /dev/sdXX durch LABEL=MyPart.

Dauerhaftes Mounten einer NTFS-Partition

Um eine NTFS-Partition (z.B. auf /dev/sda2) dauerhaft (also schon beim Booten) zu mounten, fügt man in die Datei /etc/fstab folgende Zeile hinzu:

 /dev/sda2       /mnt/winC    ntfs    defaults,umask=011,uid=BENUTZER,gid=BENUTZERGRUPPE	0	0

wobei BENUTZER und BENUTZERGRUPPE durch die entsprechenden Benutzernamen bzw. Gruppennammen zu ersetzen sind.

Außerdem muss der Mount-Point erzeugt werden:

 mkdir /mnt/winC

Damit werden können aber alle Benutzer alle Daten dieses Laufwerks lesen und schreiben. Will man dies nicht, muss man mit den Optionen uid=, gid= und umask= eine Lösung finden.

Unter Debian ist für den Schreibzugriff auf NTFS die Installation des Pakets ntfs-3g notwendig:

 aptitude install ntfs-3g


Korrupte NTFS-Partition

Mit

 sudo ntfsfix /dev/sdb1

kann die NTFS-Partition auf /dev/sdb1 repariert werden.[33]

USB-Datenträger unter Systemd

Wenn man eine USB-Disk nur manchmal beim Start eingesteckt hat, sie in dem Fall aber automatisch mounten will, helfen möglicherweise die /etc/fstab-Optionen nofail,nobootwait.[34]

Unter Systemd kann man auch die Optionenkombination noauto,x-systemd.automount in /etc/fstab verwenden. Dann wird die entsprechende Platte erst dann gemountet, wenn auf den Mountpunkt zugegriffen wird.[35]

Siehe

Mounten eines CD-Images

Um ein CD-Image zu betrachten kann man dieses folgendermaßen ins normale Dateisystem einhängen:

 mkdir zielpunkt
 sudo  mount -o loop -t iso9660 /pfad/zum/iso.image zielpunkt
 

Am Ende lässt es sich ganz normal mit

umount /zielpunkt

aushängen

Mounten eines FTP-Verzeichnisses

Mounten eines ZIP-Archivs

Mounten via SSH

  • Übers Netzwerk kann man auch per SSH-FUSE-Dateisystem auf einen entfernten Rechner zugreifen. Das ist ein recht sicherer Zugriff, aber auch transparent, da die Dateien ins lokale Verzeichnis eingehängt (gemountet) werden können.

Mounten von NFS

Eine NFS-Freigabe (siehe /etc/exports auf dem Host) kann folgendermaßen gemountet werden:

 sudo mount 192.168.0.5:/srv/nfs/myhome /mnt/nfshome

Mounten eines WebDAV-Verzeichnisses

  • WebDAV-Verzeichnisse können auch dauerhaft gemountet werden, siehe hier.

Um als normaler User WebDAV-Verzeichnisse einzuhängen benötigt die /etc/fstab etwa folgende Zeile (Beispiel für T-Online Mediencenter und Benutzer USER):

 https://webdav.magentacloud.de/ /home/USER/t-online  davfs   noauto,user,rw  0       0

Zusätzlich muss der Mountpunkt noch angelegt werden:

 mkdir ~/t-online

Davfs2 muss installiert werden und normalen Nutzern das Mounten erlaubt werden

 sudo aptitude install davfs2
 sudo dpkg-reconfigure davfs2 # Frage nach setuid mit "Ja" beantworten

Der Benutzer muss noch der Gruppe davfs2 hinzugefügt werden:

 sudo addgroup USER davfs2

Zur Vermeidung der Passwortabfrage sollte noch die Datei /home/USER/.davfs2/secrets mit folgendem Inhalt angelegt werden:[36]

 /home/USER/t-online   xy@t-online.de   password

Die Datei sollte nur von USER einsehbar sein:

 chmod 600 /home/USER/.davfs2/secrets

Dann kann das WebDAV-Verzeichnis gemountet werden:

 mount /home/USER/t-online

Ein auto-Einbinden in der /etc/fstab funktioniert nicht ohne Weiteres. Möglicherweise hilft die zusätzliche Option _netdev, um das Einbinden bis zum Etablieren des Netzwerks zurückzustellen.[37]


Siehe auch diese Anleitung zum Mounten des Telekom Mediencenters.

Mounten einer Windows-Freigabe/Samba-Share

  • Um die Samba-Server im Netzwerk anzuzeigen, bitte
 nmbstatus

eingeben.[38]

  • Um die von einem Samba-Server (z.B. Windows-Rechner) freigegebenen Ressourcen anzusehen, bitte
 smbclient -L sambaserver

eingeben, wobei sambaserver der Name des Samba-Servers ist.[39]

  • Mit Konqueror lässt sich graphisch durch die Samba-Freigaben browsen: Einfach smb:/ in die Adresszeile eingeben.


Mounten eines Loop-Devices

Das Mounten eines Loop-Devices geht wie das Mounten eines normalen Block-Devices. Bei den Optionen in der /etc/fstab steht zusätzlich loop.

Siehe

Mounten eines Sandwich-Dateisystems

Das UnionFS und das AUFS wird in moderneren Linux-Distributionen von OverlayFS abgelöst.

Beispiel: Der Inhalt des Verzeichnisses lower sollte im Verzeichnis together erscheinen, soweit er nicht vom Inhalt von upper verdrängt wird:

 sudo mount -t overlayfs -o lowerdir=lower,upperdir=upper overlayfs together

Ist upper beim Einhängen leer, sieht man alle Änderungen im Verzeichnis together in upper. lower ändert sich nicht.

Siehe


Ähnliche Funktionalität wie OverlayFS scheint Ovl.o zu bringen:

Mounten eines iPhone-Dateisystems

Sollte beim Anstecken eines iPhones über USB-Kabel an einen Linux-Rechner und anschließendem Entsperren des iPhones durch Wischen von unten nach oben der Ordner mit den Fotos und Videos nicht automatisch gemountet werden, hilft wahrscheinlich die Installation von ifuse:

 sudo aptitude install ifuse


weitere Infoquelle für mount

Siehe

Kopieren einer Audio-CD

Angeblich funktioniert dd nicht mit Audio-CDs.

Das einfachste Kommando zum Kopieren einer CD ist[40]

 cdrdao copy

Um trotzdem von der Kommandozeile (und nicht z.B. mit den grafischen Tools Brasero oder K3b) eine Audio-CD kopieren nutzt man cdrdao:

 cdrdao read-cd --device /dev/cdrom --read-raw --datafile INHALT.bin VERZEICHNIS.toc # Kopiert CD-Inhalt und -Verzeichnis auf die Festplatte
 cdrdao write-cd --device /dev/cdrom VERZEICHNIS.toc # Kopiert CD-Inhalt auf neue Audio-CD

Falls man beim Lesen Probleme bekommt und cdrdao an einer bestimmten Stelle hängen bleibt, sollte man den Paranoia-Mode reduzieren:

 cdrdao read-cd --device /dev/cdrom --paranoia-mode 0 --read-raw --datafile INHALT.bin VERZEICHNIS.toc

Backup


Open-Source Backup Produkte:

Linux-Bordmittel: dump, tar, smbtar, rsync, Tipps vom BSI, linux-backup.net

Umfangreiche Anleitung zu inkrementellem Backup mit Hilfe von rsync

Backup mit Borg

Backup

Initialisiere Repository mit Borg Backup

 borg init --encrypt none <repoPath>
 

Erstelle Snapshot

 borg create --stats --progress  <repopath>::documents_$(date -I) $(realpath ~/documents)


Man kann auch einen Lauf starten, bei dem nichts verändert wird:

 borg create --dry-run --list \
     --progress  <repopath>::documents_$(date -I) $(realpath ~/documents)
Borg-Repo-Pfad

Auf dem lokalen Rechner ist <repopath> eine schlichte Pfadangabe wie /mnt/externUSB/backup.

Via SSH kann man aber auch auf einen entfernten Rechner backupen. <repopath> lautet dann:

 ssh://user@host:port/path/to/repo

Die Angabe des Repository-Pfades kann man sich sparen, indem man ihn mit

 export BORG_REPO=<repopath>

als Umgebungsvariable borg zur Verfügung stellt.

Backup mit Restic

Anlegen eines Backup-Repositorys mit restic:

 restic -r sftp:BACKUP_RECHNER:/pfad/zum/repository init

Eine Passwortdatei ist eine einfache Textdatei mit dem Passwort in einer Zeile.

Anzeigen der vorhandenen Snapshots

 restic -r sftp:BACKUP_RECHNER:/pfad/zum/repository -p /pfad/zur/Passwortdatei snapshots

Backup

 restic -r sftp:BACKUP_RECHNER:/pfad/zum/repository -p /pfad/zur/Passwortdatei backup /pfad/zu/den/zu/sichernden/dateien

restic folgt symbolischen Links (symlinks) nicht, sondern sichert sie als solche. Wenn man ein Verzeichnis, auf das ein Symlink verweist sichern will, kann man sich readlink zunutze machen:

 restic -r sftp:BACKUP_RECHNER:/pfad/zum/repository -p /pfad/zur/Passwortdatei backup $(readlink -f /pfad/zum/Symlink)

restic hat viele Möglichkeiten zum Wiederherstellen. Beispiel:

 restic -r sftp:BACKUP_RECHNER:/pfad/zum/repository -p /pfad/zur/Passwortdatei restore latest \
 --target /pfad/wo/die/dateien/wiederhergestellt/werden/sollen --path "/pfad/der/wiederhergestellt/werden/soll"

Festplatten in Ruhezustand versetzen

Mittels

 sudo hdparm -y /dev/sdc

lässt sich die Festplatte sdc in den Standby-Modus versetzen.[41]

Mittels

 hdparm -S 30 /dev/sdc

lässt sich eine Festplatte nach 30*5=150 Sekunden in den Ruhezustand versetzen.

Über die /etc/hdparm.conf lässt sich das auch automatisch einrichten.

Festplattenfehler

Festplattenfehler lassen sich u.a. mit

  • smartmontools
  • badblocks
  • e2fsck
  • dd_rescue
  • debugfs

finden.

Z.B. kann man ein fehlerhaftes EXT2/EXT3/EXT4-Dateisystem mit folgendem Befehl (interaktiv) reparieren lassen:

 sudo e2fsck /dev/sda5

Siehe

Verschlüsselung

Dateien verschlüsseln

Dateisysteme verschlüsseln

SSL

SSL-Zertifikate kopiert man unter Ubuntu ins Verzeichnis /usr/share/ca-certificates und macht sie dem System so bekannt:

 sudo dpkg-reconfigure ca-certificates

Siehe auch SSL

Leere Verzeichnisse löschen

Mit folgendem Befehl werden alle leeren Unterverzeichnisse gelöscht:[42]

 find -depth -type d -empty -exec rmdir "{}"  \;

Dateien im Netzwerk

Siehe

Netzwerk

Allgemeines

Konfiguration in /etc/network/interfaces

In /etc/network/interfaces kann man manuelle Einstellungen für das Netzwerk vornehmen. Siehe diese Anleitung für Ubuntu. Dann kann man aber für das betreffende Interface den NetworkManager nicht mehr verwenden.

Konfiguration des Netzwerks mit systemd

Systemd kann alles, aber hält sich nicht an das KISS-Prinzip (Keep it simple stupid). So kann Systemd auch das Netzwerk konfigurieren. Siehe

Network-Manager

In Desktop-Distributionen ist üblicherweise der "Network-Manager" installiert. Er lässt sich auch auf der Kommandozeile nutzen:

 sudo aptitude install Network-Manager

Hinzufügen einer WLAN-Verbindung:

 sudo nmcli device wifi connect SSID password PASSWORD

SSID ist der WLAN-Name und Passwort ist der WLAN-Schlüssel.

Der Network-Manager lässt sich auch deaktivieren:[43] Unter Linux Mint 17 (wahrscheinlich auch unter Ubuntu 14.04 LTS Trusty) geht das so:

 echo manual | sudo tee /etc/init/network-manager.override


wicd

Eine Alternative zum Network-Manager ist wicd. Neben der grafischen Oberfläche (auch mit Tray-Icon) bietet wicd auch eine Kommandozeile und eine ncurses-Version zur halbgrafischen Bedienung im Terminal.

Sollte wicd unter Linux Mint 17.3 vor dem Start nach einem Passwort fragen, hilft folgende Befehlsfolge (man beachte die Punkte).[44]

Ping ohne sudo

Sollte das einfache Pingen eines Rechners Root-Rechte benötigen, kann man Ping mit den nötigen Rechten ausstatten:[45]

sudo setcap cap_net_raw+ep /bin/ping

Fehlersuche

  • Falls der Rechner etwas älter ist und die Netzwerkkarte nicht erkannt wird, hat es vielleicht mit einer Unverträglichkeit mit dem Power-Management zu tun. Vielleicht helfen dann die Boot-Optionen noapic nolapic weiter.
  • Falls der Rechner seine IP-Adresse von einem DHCP-Server beziehen soll, hilft vielleicht
 /sbin/dhcpcd -d -t 10 eth0

Mit

 dmesg|less

kann man sich die Ausgaben während des Bootvorgangs ansehen. Siehe bei Netzwerk-Problemen unter Linux auch http://www.adsl4linux.de/howtos/lan22/ und das Ethernet-HOWTO.


Netzwerktool ip

Siehe

Netzwerktool ss

Mit

 ss -ntlp

kann man sich die offenen Ports und die daran lauschenden Anwendungen anzeigen lassen.

Netzwerktool netstat

Zur Installation:

 sudo aptitude install net-tools

Zum Anzeigen der am Netzwerk lauschenden Programme:

 sudo netstat -tulpn

lsof

Mit Hilfe von

 sudo lsof -nP -i | grep LISTEN

kann man sich ebenfalls die offenen Netzwerk-Ports (und die daran angedockten Prozesse) anzeigen lassen.

Netzwerkanalyse

Siehe Netzwerk

WLAN

WLAN-Hardware

USB-WLAN mit RT3070 Chip

Der RT3070 ist u.a. im LogiLink WL00049A verbaut.

  • Auch in Debian muss das Modul rt2800usb gesperrt werden und das Paket firmware-ralink aus dem non-free-Repository installiert werden.
RT2500
rt2070-Chip
ZD1211-Chipsatz
 zypper install zd1211-firmware

Vermeidung der Passwortabfrage

Wenn man unter Gnome ein WLAN einrichtet, kann man das dafür nötige Passwort im Gnome-Schlüsselbund abspeichern. Wenn man beim Hochfahren sich automatisch anmelden lässt (ohne Login mit Passwort), benötigt der NetworkManager Zugriff auf den Schlüsselbund. Daher wird man vor Aufbau der Verbindung nach dem Schlüsselbund-Passwort gefragt. Das lässt sich vermeiden, indem man dem Standardschlüsselbund ein leeres Passwort gibt[47]. Das ist aber ein Sicherheitsrisiko.


Linuxbox als WLAN-Accesspoint

Den Linux-Rechner kann man auch als Accesspoint für Geräte ohne WLAN nutzen, also Kabel zwischen Client und Linux-Rechner und drahtlose Übertragung zwischen Linux-Rechner und entferntem Internet-Router:

Bluetooth

Siehe Bluetooth


Using Android-Phone as Internet-Modem

Normalerweise kann das Android-Smartphone einfach an einen USB-Port des Linux-Rechners angeschlossen werden. Im Android muss dann in den Einstellungen noch das USB-Tethering aktiviert werden.

Leider funktioniert das nicht immer, eventuell hilft

Wake up on LAN

Siehe Wake up on LAN

Webserver

Mail

Siehe

Fernzugriff

Grafiksystem

Monitorinfos

Ob der Monitor angeschaltet oder im StandBy ist, kann man mit

 ddccontrol -p

erfahren.

Ansonsten bekommt man auch noch über folgende Befehle Infos über den Monitor (ggf. DISPLAY=:0 voranstellen):

 xrandr

oder

 xset -q

Framebuffer

Auch ohne X-System kann man unter Linux Grafiken anzeigen: Dazu gibt es den Framebuffer.

Siehe z.B.

  • mplayer zum Anzeigen von Videos
  • fbi zum Anzeigen von Bildern
  • fbtv zur Anzeige von Fernsehen
  • directvnc, eine VNC-Client für den Framebuffer

Weitere Infos

mplayer für Framebuffer

Der Kommandozeilen-basierte Audio- und Video-Abspieler mplayer kann auch Videos auf der Linux-Konsole mittels Framebuffer anzeigen:

 mplayer -vo fbdev2 VIDEO.MOV

Evtl. muss der Nutzer der Gruppe video hinzugefügt werden.

vlc für Framebuffer

Auch vlc kann den FrameBuffer nutzen. Das funktioniert z.B. mit der NCURSES-basierten Oberfläche, die man mit

 nvlc

oder

 vlc -I

erreicht.

Die Installation erfolgt über

 sudo aptitude install nvlc

oder

 sudo aptitude install vlc-bin vlc-base-plugins

Hier ist erforderlich, dass der ausführende Benutzer der Gruppe video hinzugefügt wird:

 sudo adduser USER video


Damit können z.B. auch rtsp-Streams (z.B. vom Kabeltuner der Fritz!box 6490) abgespielt werden:

 nvlc 'rtsp://....'

X

Display Manager

Die Auswahl der Desktopumgebung wird nicht mehr unter ~/.dmrc gespeichert, sondern in /var/lib/AccountsService/users/$USER.

Man kann die Wahl aber auch über den dbus speichern:

 dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetXSession string:cinnamon

Window Manager

Siehe Einführung in Nur-Fenstermanager.

Fluxbox ist ein im Verhältnis zu GNOME und KDE schneller und kleiner Window Manager.

  • Das Umsteigen von Windows würde es erleichtern, wenn er nicht nur ein Startmenü durch Rechtsklick auf den Desktop hätte, sondern auch bei Klicken eines Icons links unten. Dazu gibt es wohl auch Lösungen:

Menüeinträge fürs "Startmenü" oder den Desktop

Mit Hilfe von .desktop-Dateien können Einträge fürs Startmenü oder den Schreibtisch zum Starten von Programmen ("Apps") erstellt werden. Siehe

Diese kann man auch nutzen, um die Programme beim Start des graphischen Desktops automatisch zu starten. Dazu müssen sie ins Verzeichnis /etc/xdg/autostart/ bzw. /home/USER/.config/autostart eingefügt und als ausführbar markiert werden.

Programme minimiert starten

In den .desktop-Dateien fehlt leider eine Option zum minimierten Starten.

Aber es gibt Abhilfe mittels wmctrl und xdotool: https://www.reddit.com/r/kde/comments/b0k01e/start_application_at_login_minimized/

Linux wäre nicht Linux, wenn es nicht noch einen zweiten Weg gäbe (hier devilspie): http://www.webupd8.org/2011/02/how-to-start-applications-minimized.html

Grafische Fernsteuerung

Siehe Remote Desktop

Multimedia

Audio

Siehe auch Audio#Linux und Audio

Siehe auch Videotelefonie

Videos

Siehe auch Fotografie#Film_und_Video

Abspielen

Die Versorgung mit Codecs ist unter Linux ein - lösbares - Problem. Z.B. hilft die plattformübergreifende Software VLC.

Ein Projekt namens Moonshine ermöglicht unter Linux Windows Media Content mit Original-Microsoft-Codecs abzuspielen. Es nutzt dazu Moonlight.

Herunterladen

Videos von YouTube lassen sich mit

 youtube-dl -t http://www.youtube.com/watch?v=j09hpp3AxIE

herunterladen. Dabei ist die anzugebende URL diejenige, die man im Browser-Adressfeld beim Surfen auf youtube findet.

Wenn der Download nicht funktioniert, hilft wahrscheinlich ein Update

 youtube-dl -U

TV

Neben Projekten wie

gibt es auch Konsolenprogramme:

Für den Electronic Program Guide - EPG gibt es

Wichtig ist, dass der den TV-Stick nutzende User der Gruppe video zugeordnet ist, z.B. für den Tvheadend-Nutzer:

 sudo adduser hts video

Die Pakete dvbsnoop, dvb-apps, dvb-tools und w-scan bieten Werkzeuge, um die Einrichtung von DVB-C-Adaptern zu debuggen. Beispielsweise lässt sich mit

 dvb-fe-tool -d DVBC/ANNEX_A

der ein DVB-T/C-Adapter auf DVB-C umschalten.


Siehe auch DVB-C

Webcam

  • Einfach Bilder von der Shell aufnehmen geht mit dem Paket streamer:
 sudo aptitude install streamer
 streamer -f jpeg -o test.jpeg

Videotelefonie

Skype

Videotelefonie funktioniert auch unter Linux, z.B. mit Skype, auch wenn man zur Vermeidung von Abstürzen noch Workarounds benötigt.

Alternativen

Wer nur telefonieren will, findet freie Alternativen, die das SIP-Protokoll nutzen.

Alternativen auch mit Video scheinen

zu sein.

Bekannte kommerzielle Alternativen zum veralteten Skype sind

  • Microsoft Teams
  • Cisco Webex
  • Zoom

Digitalkameras unter Linux

Bildanzeige

In den graphischen Desktop-Umgebungen ist die Anzeige von Bildern selbstverständlich kein Problem.

Aber es gibt auch Möglichkeiten auf der Konsole:

Bildbearbeitung

Siehe

  • Fotografie
  • GIMP
  • pixelize - ein Programm, mit dem man ein größeres Bild aus unzähligen kleineren Bildern zusammensetzen kann

ImageMagick

Auf der Kommandozeile unter Linux helfen die Tools von ImageMagick:

Beispielsweise lassen sich mit folgendem Befehl Bilder als Kacheln auf einem neuen Bild getrennt mit einem transparenten Rahmen darstellen:

 montage -monitor -resize x200+0+0 -crop 300x200+20+0 -geometry 200x200+50+50 -background transparent bilder*.jpg uebersicht.png

Bildinformationen

Mit den Exiflow-Tools können Bilddateien einfach gemäß dem Erstellungsdatum umbenannt werden.

Mit exiv2 lässt sich auf der Kommandozeile die Informationen eines Bildes auswerten.

Auch exiftags und exif bieten die Informationen aus dem EXIF-Teil des JPEG-Bilds über die Kommandozeile an.

Aufnahmedatum in Dateinamen

Schließlich bietet auch jhead (man-page) alle textuellen Informationen. Dieses Programm läuft nicht nur unter Linux, sondern auch unter Windows. Ein Verwendungsbeispiel:

    jhead -nfhm%04Y.%02m.%02d-%H%M%S.%f *.jpg

Das macht aus der Datei p104711.jpg z.B. hm2007,11,12-110048.p104711.jpg.

In den OpenSuse-Forums findet sich ein Shell-Skript zum Umbenennen von Movies (.MOV) basierend auf dem Dateimodifikationsdatum. Damit lässt sich obiger jhead-Befehl nachbilden (der Unterschied bleibt natürlich, dass nicht das EXIF-Datum, sondern das Dateidatum in den Namen aufgenommen wird):

 #!/bin/sh
 for file in ${@}; do
   if [ -e $file ]; then
     timestamp=`ls -l --time-style=+%Y.%m.%d-%H%M%S $file |cut -d' ' -f6`
     newfile="hm$timestamp.$file"
     echo Aus $file wird $newfile ...
     mv -v "$file" "$newfile"
   fi
 done

Geotagging von Fotos

Möchte man seine Fotos von einer Kamera ohne GPS-Receiver mit GPS-Daten z.B. aus dem mitgeführten Smartphone aufwerten, dann hilft das exiftool, z.B.:

  exiftool  -api GeoMaxExtSecs=9999 -geotag '*.gpx' images 

Dieses Beispiel nutzt als Geodaten-Quelle alle Dateien mit der Endung gpx im aktuellen Verzeichnis und versieht alle Bilder im images-Ordner mit den entsprechenden Daten. Siehe dazu näher die Beschreibung auf der Projektseite.

Die Geodaten bekommt man z.B. mit der Android - Open Source-Software gpslogger.

Fernzugriff

Drucken

Allgemeines

Beim Netzwerk-Server, an den der Drucker angeschlossen ist, muss man den Clients den Zugriff auf den Drucker erlauben:

 cupsctl --share-printers

Von der Shell kann man einen Netzwerkdrucker folgendermaßen zum Client hinzufügen:

 lpadmin -p "$PRINTER" -E -v "ipp://$SERVER/printers/$PRINTER" 

wobei man $PRINTER jeweils durch die CUPS-Drucker-Bezeichnung, z.B. "DESKJET-840C" ersetzen muss.

Mit

 lpstat -p -d

kann man sich die vorhandenen Drucker anzeigen lassen.

Mit

 lpoptions -d DRUCKER

kann man den Standard-Drucker auswählen.


Mit

 lpstat  -o -a

kann man sich alle noch offenen Druckaufträge anzeigen lassen.

Mit

 lpstat -W completed -o -a

kann man sich alle abgeschlossenen Druckaufträge anzeigen lassen.

Siehe auch

Troubleshooting

CUPS in Docker

https://hub.docker.com/r/olbat/cupsd

Drucker deaktiviert sich von selbst

Um zu vermeiden, dass man jedes Mal den Drucker wieder auf "aktiviert" stellen muss, fügt man in der Datei /etc/cups/printer.conf die Zeile

 ErrorPolicy retry-job

hinzu. Siehe

HP-Drucker

HP bietet mit HPLIP eine Open Source - Unterstützung für Linux.

Falls HPLIP-Status sich wegen eines fehlenden Systray meldet, sollte man auf das GNOME-Panel gehen, rechts klicken -> "Zum Panel hinzufügen " -> "Benachrichtigungsfeld" wählen

Um einen HP-All-In-One-Drucker/Scanner wie der HP OfficeJet 8600 Pro Plus im Netzwerk zu installieren, startet man als Root

 hp-setup -i

und wählt 2 für net aus.

HP OfficeJet Pro 7740

Jedenfalls im Zusammenspiel mit Linux hat der HP OfficeJet Pro 7740 nicht die Qualität und Zuverlässigkeit des HP OfficeJet 8600 Pro Plus.

Aber er funktioniert, wenn nicht mal wieder ein Firmware-Update das Zusammenspiel mit Linux oder Windows zerschießt.

Nach dem letzten Firmware-Update konnten manche Linux-Systeme den Drucker nicht finden. Bei den Systemen mit Ubuntu 24.04 musste der Drucker manuell eingerichtet werden. Beim Drucker hinzufügen musste man folgende URL angeben:

 ipps://hpofficejet.fritz.box:443/ipp/print

Dann hplip bzw. hpcups auswählen. Dann funktioniert es manchmal.

Allerdings nicht überall. Dann kann man versuchen, die o.a. ipp-Adresse zu nutzen und den Drucker als generischen PCL-Drucker anzulegen. Ich habe als Marke "Generic" gewählt und als Modell "PCL 6/PCL XL"' und als Treiber "Generic ... /hpijs-pcl5e" (Ubuntu 24.04). Dann geht es aber nur schwarzweiß und nur in A4. Außerdem musste ich hpijs installieren:

 sudo aptitude install printer-driver-hpijs hpijs-ppds

Brother

Die Installation von Brother-Drucker wird seitens Brother mit eigenständigen rpm- bzw- deb-Paketen unterstützt.

Bei der Installation des Brother MFC-260C unter Linux Mint 17 32bit bedarf es folgender Schritte nach dem Download der DEB-Files vom Brother Solutions Center:

 sudo mkdir /var/spool/lpd
 sudo chgrp lp /var/spool/lpd
 sudo dpkg -i  mfc260clpr-1.0.1-1.i386.deb
 sudo dpkg -i  mfc260ccupswrapper-1.0.1-1.i386.deb

Außerdem sollte der Benutzer in der Gruppe lp sein.

Auf 64bit-Systemen müssen zusätzlich die Pakete ia32libs und libstdc++ installiert sein.

Scannen

Scanner im Netzwerk

Siehe die Anleitung zum Scannen im Netzwerk unter Ubuntu.

Zusätzlich muss noch in /etc/default/saned der Start von Saned eingestellt werden:

 RUN=yes


Scannen und OCR

Mit Hilfe von scanimage und tesseract lassen sich auch PDFs mit per OCR erkanntem (überlagerndem) Text erstellen.

Das Projekt Paperwork bietet auf dieser Basis eine Volltextsuche über sämtliche gescannten Dokumente. Die Installation hat bei mir gut über AppImage funktioniert. Siehe die Anleitung auf der Projekt-Seite.

Einzelne Scanner

Scanner Mustek 1200 UB Plus

Für den Scanner Mustek 1200 UB Plus ist neben einer SANE-Installation einschließlich des gt68xx-Backends (bei OpenSuse 10.3 automatisch) noch Folgendes zu tun:

  • Verzeichnis für Firmware anlegen
 sudo mkdir -p /usr/share/sane/gt68xx
  • Die Firmware-Datei sbfw.usb herunterladen und im Verzeichnis /usr/share/sane/gt68xx speichern sowie
  • Von der bisher in der Datei /etc/sane.d/gt68xx.conf enthaltene Zeile
    #override "mustek-scanexpress-1200-ub-plus" 

das führende Kommentarzeichen (#) entfernen. Ansonsten wird der Scanner fälschlicherweise als Mustek BearPaw 1200 CU erkannt.

  • Das erkannte Scanner-Modell kann man sich ausgeben lassen:
 scanimage -L
  • Mit der Anwendung xsane kann man dann scannen.

Brother MFC 260C

Das Multifunktionsgerät Brother MFC 260 C lässt sich sowohl als Scanner als auch als Drucker unter Linux einrichten. Dazu ist der Treiber brscan2 von Brother herunterzuladen.

Für neuere Ubuntu / Linux Mint 64 bit -Versionen müssen symbolische Links angelegt werden:[48]

 sudo ln -sf /usr/lib64/sane/libsane-brother* /usr/lib/x86_64-linux-gnu/sane
 sudo ln -sf /usr/lib64/libbrcolm* /usr/lib/x86_64-linux-gnu
 sudo ln -sf /usr/lib64/libbrscandec* /usr/lib/x86_64-linux-gnu


Bei manchen Rechnern funktionieren die Treiber für den Brother MFC-260C nicht mit USB 3.0. Dann muss USB 3.0 im BIOS deaktiviert werden, so dass die Ports als USB 2.0-Ports genutzt werden können.

Scannen in verschiedenen Distributionen

OpenSuse

  • Mit dem Scanner-Modul von yast kann man die korrekte Installation testen.

Debian

  • Unter Debian
    • ist neben der Installation von xsane auch die Installation von sane-utils erforderlich.
    • Außerdem muss der jeweilige Benutzer Mitglied der Gruppe scanner oder aber der Gruppe lp[49] sein.

Ubuntu

Achtung wohl veraltet

  • Unter Ubuntu benötigt man jedenfalls in 9.10 Karmic Koala folgende Zeile in /etc/fstab:
 none    /proc/bus/usb   usbfs           auto                    0       0

Evtl. funktioniert auch

 none    /proc/bus/usb   usbfs           auto,devmode=0666       0       0


  • Ob die Zeile funktioniert lässt sich mit mount testen:
 sudo mount -a
  • Damit man auch als normaler User auf den Scanner zugreifen kann,[50] kreiert man mit
 sudo joe /etc/udev/rules.d/40-basic-permissions.rules

(oder irgendeinem anderen Editor) eine Datei mit folgendem Inhalt

  # USB devices (usbfs replacement)
 SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
 SUBSYSTEM=="usb_device", MODE="0666"

Anschließend muss man das udev-System neustarten:

 sudo restart udev

Hinweis: Auf ubuntuusers.de findet sich eine davon leicht abweichende Möglichkeit für das Scannen als normaler User. Hinweis 2: Für Ubuntu 9.10 muss man es wohl inzwischen anders machen.

Energiemanagement

Akku

Mit upower kann man sich den Stand des Akkus anzeigen lassen.[51]

 upower -i /org/freedesktop/UPower/devices/battery_BAT0

Den Pfad für das oben angegebene Kommando findet man durch

 upower -e

Eine komplette Übersicht erhält man mit

 upower --dump

Festplatte im Leerlauf ausschalten

Siehe

Energieverbrauch minimieren

Zur Ermittlung der Verbraucher helfen

Siehe

Verbindung mit Handy/PDA

Weitere Anwendungen

Editoren

Grafische Editoren und Entwicklungsumgebungen

Editoren fürs Terminalfenster

  • vim
  • nano
  • joe - Benutzerführung wie MS WordStar (etwas antiquiert)
  • emacs

Textverarbeitung

Die Standard-Textverarbeitung unter Linux ist derzeit LibreOffice Writer.

Plattformübergreifende Software

Siehe Plattformübergreifende Software

CAD

Business Software

Siehe auch

Groupware-Server


  1. Hängen bei Aufbau der Druckerdatenbank bei 4%.
  2. Siehe How to use Labels for GRUB2.
  3. Vgl. https://unix.stackexchange.com/questions/405515/how-to-preview-my-grub-menu-without-rebooting
  4. Siehe ubuntuusers
  5. Siehe http://www.rodsbooks.com/efi-bootloaders/grub2.html; für GRUB Legacy siehe http://www.denraf.be/content/efi-dualboot-windows-7-and-fedora-16 oder http://www.rodsbooks.com/efi-bootloaders/grub_legacy.html
  6. Siehe http://www.rodsbooks.com/efi-bootloaders/elilo.html
  7. http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions/
  8. https://wiki.archlinux.org/index.php/systemd#Syntax_highlighting_for_units_within_Vim
  9. https://wiki.archlinux.org/index.php/systemd#Syntax_highlighting_for_units_within_Vim
  10. http://unix.stackexchange.com/questions/52643/how-to-disable-auto-suspend-when-i-close-laptop-lid
  11. https://www.archlinux.org/news/linux-313-warning-ps2-keyboard-support-is-now-modular/
  12. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=641267
  13. Siehe http://www.aptosidusers.de/index.php?name=PNphpBB2&file=viewtopic&p=12101
  14. Siehe http://forums.debian.net/viewtopic.php?f=17&t=105344 .
  15. Vgl. http://lightrush.ndoytchev.com/random-1/i8042quirkoptions
  16. Siehe https://blog.mypapit.net/2008/05/how-to-use-usb-serial-port-converter-in-ubuntu.html, http://www.linux-usb.org/USB-guide/x356.html
  17. Siehe [1] .
  18. Vgl. http://www.lirc.org/html/configuration-guide.html
  19. Vgl. http://www.lirc.org/html/devinput.html
  20. Vgl. ir-keytable or: How I Learned to Stop Worrying about the LIRC Kernel
  21. Siehe http://kodi.wiki/view/Keymap.xml#Remote_Buttons
  22. Vgl. http://kodi.wiki/view/HOW-TO:Set_up_an_MCE_remote_control_in_Linux
  23. Siehe https://communities.intel.com/thread/52072?start=15&tstart=0
  24. Vgl. https://github.com/OpenELEC/OpenELEC.tv/issues/3137
  25. Siehe http://ilostmynotes.blogspot.de/2012/12/fintek-ir-receiver-and-xbox-remote-to.html
  26. https://bbs.archlinux.org/viewtopic.php?id=151479&p=2
  27. Vergleiche http://onlyubuntu.blogspot.com/2008/06/howto-enable-empty-password-login-in.html.
  28. Vgl. http://www.linux-magazine.com/Online/Features/Bash-Tips-Autocompletion .
  29. Vgl. https://www.turnkeylinux.org/blog/unix-buffering .
  30. https://linuxnetz.wordpress.com/2010/04/21/notify-send/
  31. http://www.linuxquestions.org/questions/linux-desktop-74/how-to-specify-a-gnome-workpace-an-application-will-launch-in-555764/
  32. Vgl. https://forum.chip.de/discussion/1838389/default-umask
  33. http://askubuntu.com/questions/74105/how-do-you-repair-an-input-output-error-in-an-ntfs-partition
  34. Siehe http://www.reddit.com/r/archlinux/comments/1lafu2/fstab_how_to_automount_but_ignore_if_its_not/ , https://bbs.archlinux.org/viewtopic.php?id=147478
  35. Vgl. https://bbs.archlinux.org/viewtopic.php?id=147478
  36. http://tomalison.com/reference/2010/04/03/webdav/
  37. Vgl. http://askubuntu.com/questions/277873/mount-webdav-fails-on-reboot
  38. Vgl. http://de.opensuse.org/SDB:Drucken_via_SMB_(Samba)_Share_bzw._Windows_Freigabe.
  39. http://www.tldp.org/HOWTO/SMB-HOWTO-8.html.
  40. Siehe http://www.togaware.com/linux/survivor/Duplicate_Audio.html
  41. Vgl. https://www.pks.mpg.de/~mueller/docs/suse10.3/opensuse-manual_de/manual/sec.pmanage.silenthd.html
  42. http://www.unixboard.de/vb3/showthread.php?28301-leere-Verzeichnisse-finden
  43. Siehe http://xmodulo.com/disable-network-manager-linux.html .
  44. Siehe https://answers.launchpad.net/ubuntu/+source/wicd/+question/94845/ Post #7.
  45. Vgl. https://debianforum.de/forum/viewtopic.php?t=156254
  46. http://www.xadux.eu/wireless-lan-und-lan/3423-rt3070-2.html
  47. http://wiki.ubuntuusers.de/GNOME_Schl%C3%BCsselbund#Automatische-Anmeldung-in-GDM
  48. Vgl. https://wiki.ubuntuusers.de/Scanner/Brother/#Scanner-Treiber-ab-Bionic-Beaver-18-04-64-Bit
  49. Vgl. https://www.linuxquestions.org/questions/slackware-14/sane-and-usb-permission-4175421150/
  50. http://www.ubuntu-forum.de/artikel/41977/scanner-wird-als-user-nicht-erkannt-nur-als-root.html
  51. Siehe http://askubuntu.com/questions/69556/how-to-check-battery-status-using-terminal .