Tips und Tricks auf der Shell
 

1. Wo bin ich?

2. Standardin, Standardout, Standarderror umleiten

3. Nachrichten an andere Konsolen-Benutzer schicken

4. Nachrichten per ssh und kdialog verschicken

5. Mails auf der Konsole im lokalen Netzwerk verschicken

6. Schnellkursus vi

7. Mehrere Dateien auf einmal umbenennen - rename

8. Manipulation von Zeichen in Dateien - cat, sed, cut, tr

9. bc - Taschenrechner auf der Kommandozeile

10. Formatkonvertierung von Textdateien Linux <> Windows

11. Deutsche Tastatur auf einer der Konsolen F1-F6

 


Wo bin ich?

# pwd
/home/tux

pwd gibt das momentane Verzeichnis wieder.

# tty
/dev/tty3

tty gibt die momentan verwendete Konsole wieder.

# w
USER TTY FROM LOGIN@ IDLE JCPU....
udo tty1 - 01:55 7.00s 0.03s....
root pts/2 :0.0 01:15 12:44m 0.02s....

w zeigt an wer sich an welcher Konsole angemeldet hat.
tty sind Konsolen und pts sind x-term Fenster.
Eine einfachere Variante liefert
# who
Möchte man sehen, wer sich zuletzt angemeldet hat, hilft die Log-Datei der Anmeldungen, welche mit
# last
aufgerufen wird. Eine Überwachung der Konsolen in Echtzeit liefert
# whowatch


Standardausgabe (stdout) umleiten

# ls -al > inhalt
Leitet die Anzeige des Verzeichnisses in die Datei inhalt um. Falls die Datei noch nicht existiert, wird sie angelegt. Sollte bereits eine Datei namens inhalt existieren, wird sie überschrieben. Gibt man den vorhergehenden Befehl fehlerhaft ein, wird die Datei trotzdem angelegt, ist aber leer.

# ls -al >> inhalt
fügt die Ausgabe von ls an das Ende der Datei inhalt hinzu, ohne diese zu überschreiben.


Standardeingabe (stdin) umleiten

# wc -l < /etc/passwd
24
Der Inhalt der Datei passwd wird an wc (word count) geleitet, welches die Anzahl der Worte zählt und auf dem Bildschirm ausgibt.

# cat <<EOF > Datei.txt
> Erste Zeile
> Zweite Zeile
> EOF
# ls
Datei.txt
# more Datei.txt
Erste Zeile
Zweite Zeile

legt eine Datei namens Datei.txt an und schreibt alles, was man in der Kommando-Zeile mit dem vorangestellten > schreibt, zeilenweise in die Datei, bis EOF die Eingabe wieder beendet.


Standardfehlerkanal (stderr) umleiten

# find / -name datei 2> /dev/null
leitet sämtliche Fehler von find (z.B. Datei not found) in die Geräte-Datei /dev/null. /dev/null ist eine Gerätedatei, die alle in sie geschriebenen Daten verwirft. Die Angabe des Kanals ist bei stdin (0<) und stdout (1>) optional, bei stderr (2>) jedoch zwingend.

# find / -name datei > ergebnis 2> /dev/null
schreibt das Ergebnis von find in die Datei ergebnis und die Fehler in die Gerätedatei /dev/null.

# find / -name datei > ergebnis 2>&1
schreibt das Ergebnis von find inklusive der Fehler in die Datei ergebnis.
2>&1 bedeutet soviel wie "stderr(2) dahin leiten wo stdout(1) ist".


Nachrichten an andere Konsolen-Benutzer schicken

# write Benutzer
schreibt eine Nachricht an einen Benutzer der an einer anderen Konsole angemeldet ist.
Beispiel (angemeldet als root):
# write udo
Hallo, wie gehts?
Das Ende der Nachricht wird mit STRG-D eingeleitet.
Auf dem Terminal von udo erscheint:
Message from root@Fedora-LINUX on tty1 at 01:49...
Hallo, wie gehts?
EOF

Jede Zeile wird nach der Eingabe und drücken von Enter sofort übertragen.
Zu Beachten ist allerdings, ob der Nachrichtenempfänger seine Konsole für Benachrichtigungen aktiviert hat. Aktivieren kann man mittels
# mesg y
siehe hierzu auch man mesg.


Nachrichten per ssh und kdialog verschicken

Um jemandem eine kurze Mitteilung zukommen zu lassen, die er auch nicht überlesen kann, da sie in einem kleinem Fenster mit Sound aufpoppt, hilft eine Kombination aus ssh und kdialog:
# ssh udo@internet-deb 'kdialog --display :0 --msgbox "Nachricht"'
Zu beachten ist dabei, daß man sich als der User am Rechner anmeldet, unter dem der X-Server läuft.
Natürlich kann man die Nachricht auch umbrechen, falls sie zu lang wird. Dazu fügt man an der entsprechenden Stelle einfach ein Newline-Zeichen \n ein.

Eine etwas unkonventionellere Methode ist folgende: Man erstellt ein HTML-Dokument mit der Nachricht, kopiert dieses mittels scp auf den Rechner (siehe dazu ssh/scp) und loggt sich via ssh als User auf den Rechner ein. Mit folgendem Befehl kann man das HTML-Dokument im Browser öffnen:
# kstart --display :0 iceweasel Nachricht.php


Mails auf der Konsole im lokalen Netzwerk verschicken

# mail -s 'Betreff' benutzer@hostname
verschickt mails von der Konsole an Benutzer im lokalen Netzwerk. Beispiel:
# mail -s 'Das Neueste' udo@Fedora-LINUX
Hey, weißt Du schon das Neueste?
.
Cc:

#
verschickt eine Mail mit dem Betreff "Das Neueste" an den Benutzer udo auf dem Computer Fedora-LINUX. Die Mail landet normalerweise unter
/var/spool/mail/benutzername.
Zum beenden der Texteingabe muß man am Anfang der Zeile einen Punkt eingeben. Es folgt noch eine Frage nach einer Kopie, dann kommt wieder der Eingabe-Prompt. Ansehen kann man sich die Mails auf der Konsole mit mutt:
# mutt = startet den Mailagent mutt, sofern installiert.
Alle nötigen Tasten zur Bedienung werden im oberen Feld angezeigt. Eine Hilfe gibt es mit ?, ein Handbuch mit F2. Um Mails zu verfassen verwendet mutt standardmäßig den Editor vi, daher sollte der Umgang mit vi vertraut sein. mutt zeigt die Mails von /var/spool/mail/Benutzer an und verwaltet sie, genauer gesagt, bestehen sämtliche Mails aus einer einzigen Textdatei, die den Namen des Benutzers trägt. mutt kann diese Textdatei in die einzelnen Mails aufsplitten und sie korrekt anzeigen.


Schnellkursus vi

vi ist ein sehr schwer zu bedienender Editor unter Linux, aber leider eben der Standard-Editor. Es gibt verschiedene Bearbeitungsmodi:
Kommando-Modus = Alle Tastatureingaben stellen
Kommandos dar.
Eingabe-Modus = Alle Tastatureingaben werden als Text
behandelt.
Hier nur die wichtigsten Befehle zum ändern einer Konfigurations-Datei. Aufruf mit:
# vi File
Man befindet sich im Kommando-Modus. Am unteren Bildschirmrand werden Daten zum File angezeigt. Umschalten mit der Taste "i" (insert) in den Eingabe-Modus. Am unteren Rand wird -- INSERT -- angezeigt. Jetzt kann man den Text verändern.
Mit ESC verläßt man den Eingabe-Modus und befindet sich wieder im Kommando-Modus (-- INSERT -- verschwindet).
Mit der Eingabe von ":w" (write) speichert man die Datei (Anzeige unten:
"File" .... written). Die Doppelpunkte vor Befehlen beachten!
Die Datei unter einem anderem Namen speichern: ":w andererName"
Zum beenden ":q" (quit) eingeben. Will man es kürzer haben, kann man auch ":wq" auf einmal eingeben. Nochmal auf die Schnelle, die einzelnen Bearbeitungsschritte::
# vi Datei
Taste i drücken, vi wechselt in den Eingabe-Modus, Text eingeben.
Taste ESC drücken, Eingabe Modus verlassen.
:w
eingeben, Datei wird gespeichert.
:q
eingeben, vi wird beendet.


Mehrere Dateien auf einmal umbenennen - rename

Der Befehl mv funktioniert nur mit einzelnen Dateien.
Ein Aufruf wie
# mv *.txt *.bak
funktioniert nicht!

Dafür gibt es rename:
Syntax = rename perlexpression Dateien

Vorab zwei Beispiele:
# rename "s/$/.txt/" *
Fügt bei allen Dateien im Verzeichnis die Endung .txt hinzu.
# rename "s/.txt$//" *
Entfernt bei allen Dateien die Endung .txt, soweit vorhanden! Paßt das Muster nicht auf den Suchstring, also findet rename eine Datei ohne Endung .txt, macht es gar nichts!

Nähere Erläuterungen zum Aufbau von rename:
rename = der eigentliche Befehl

perlexpressions
Der Aufbau von perlexpressions sieht folgendermaßen aus:
Schalter/Suchstring/NeuerString/Optionen
s = Der Schalter s steht für suchen und ersetzen. rename sucht nach der Zeichenkette, die nach dem ersten Slash angegeben wird und ersetzt diese durch die Zeichenkette nach dem zweiten Slash.
^ = ^ im Suchstring besagt, daß die Zeichenkette nur am Anfang des Suchstrings vorkommt und muß daher vor der Zeichenkette stehen, z.B. ^datei
$ = $ im Suchstring besagt, daß die Zeichenkette nur am Ende des Suchstrings vorkommt und muß daher nach der Zeichenkette stehen, z.B. txt$
. = ein Punkt steht für ein beliebiges Zeichen.
* = der Stern steht für eine beliebig häufige Wiederholung des vorhergehenden Zeichens oder auch kein Zeichen! Somit steht
.* = für eine beliebige Anzahl von Zeichen oder auch kein Zeichen.
Die Optionen am Schluß kann man auch weglassen.

Hinweis: perlexpressions verwenden reguläre Ausdrücke, entgegen der Dateiangabe, die Wildcards benutzt!

Dateiangabe = kann explizit sein, z.B. datei.txt oder als wildcard, z.B. *.txt oder auch nur * für alle Dateien.

Weitere Beispiele zu rename:
# ls
haus1.txt haus2.txt

# rename "s/haus/testdatei/" haus*
Sucht nach Dateien mit "haus" im Dateinamen und ersetzt die Zeichenkette durch "testdatei".
# ls
testdatei1.txt testdatei2.txt
# rename "s/test//" test*

Ersetzt die Zeichenkette "test" durch gar nichts (//).
# ls
datei1.txt datei2.txt
# rename "s/DATEI/druck/i" datei*

Ersetzt das kleingeschriebene "datei" durch "druck", obwohl im Suchstring groß angegeben (option i am Ende steht für ignoriere Groß- und Kleinschreibung)

Noch mehr Beispiele:
# rename "s/ *//g" *.mp3
Entfernt sämtliche Leerzeichen in den Dateinamen der mp3-Files. (die Option g steht für gobal, also sämtliche Leerzeichen im Dateinamen). Man beachte die Kombi aus Leerzeichen und Stern ( *).
Im Gegensatz zu einem einzelnen Leerzeichen:
# rename "s/ //" *.mp3
Großgeschriebenes in Kleinbuchstaben verwandeln (Schalter y):
# rename "y/A-Z/a-z/" *
Teilweise kann auch umnummeriert werden:
# rename "y/1-3/4-6/" *
Verwandelt alle Zahlen 1 in 4, alle Zahlen 2 in 5 und 3 in 6.

Durchnummerierte Dateien mit führenden Nullen auffüllen:
Hat man Dateien die ohne führende Nullen nummeriert sind, z.B.
            1. Datei 1.mp3
            2. Datei 2.mp3
            3. Datei 3.mp3
so kann man mittels
# rename 's/^([1-9]\.)/0$1/' *.mp3
die Dateien mit führenden Nullen versehen:
            01. Datei 1.mp3
            02. Datei 2.mp3
            03. Datei 3.mp3

Zum Schluß noch was kompliziertes:
# rename 's/^\w/\U$&/g' *
Das letzte Beispiel sieht ein wenig komplex aus, ist aber leicht erklärt: es wir nach dem Wort (\w) am Anfang (^) der Zeile (/s) gesucht, dann aber nur der erste Buchstabe ($&) gross geschrieben (\U).


Manipulation von Zeichen in Dateien mit cat, cut, sed und tr

Mittels der Befehle cat, cut, sed und tr ist es ein leichtes auch ohne einen Editor Zeichen in Dokumenten zu bearbeiten. sed öffnet eine Datei zeilenweise und bedient sich dafür wie rename der perlexpressions.

Zwei Beispiele:
Die ersten drei Zeichen jeweils am Zeilenanfang eines Dokuments löschen:
# cat Datei.txt | sed "s/^...//" > neue_Datei.txt
Die letzten drei Zeichen löschen:
# cat Datei.txt | sed "s/...$//" > neue_Datei.txt
Erläuterung:
cat öffnet die Datei und übergibt sie an sed, welches mit den Perl-Expressions die Zeichen manipuliert.
Dabei steht ^ für den Zeilenanfang und $ für das Zeilenende. Anschließend wird die Ausgabe in die neue Datei geleitet (>, siehe Umleitung von Stdout).


sed

Man kann aber mit sed nicht nur zeilenweise nach Zeichenmustern suchen, sondern auch ganze Zeilen bearbeiten:
# sed "6,9p" Datei.txt
Die Option p bedeutet "print", also wird nicht nur die gesamte Datei ausgegeben, sondern die Zeilen 6 bis 9 zusätzlich, also gedoppelt! Möchte man nur die Zeilen 6 bis 9 ausgeben, hilft die Option -n:
# sed -n "6,9p" Datei.txt
verwirft alles und gibt lediglich die mit p angegebenen Zeilen 6 bis 9 aus.
# sed "6,9d" Datei.txt
Die Option d (delete) löscht die Zeilen 6 bis 9 aus dem Textstrom. Es geht auch
# sed '11,$d' Datei.txt
löscht ab der Zeile 11 alles bis zum Ende (das $-Zeichen steht für das Ende). Allerdings muß man hier einfache Anführungsstriche verwenden, denn bei doppelten Anführungsstrichen wird das $ Zeichen als Ende-Zeichen nicht erkannt (siehe Unterschied einfacher-doppelter Anführungszeichen). Man kann auch mehrere Anweisungen für eine Mehrfacheditierung hintereinander setzen. Dann braucht man allerdings die Option -e. Sie kennzeichnet alle Anweisungen:
# sed -e '1,5d' -e '10,$d'
löscht die Zeilen 1 bis 5 und ab Zeile 10 bis zum Ende, also werden lediglich die Zeilen 6 bis 9 ausgegeben. Sozusagen der umgekehrte Weg von "sed -n '6,9p' "

Es geht noch mehr:
# sed 'a\ '
Option a (append) fügt nach jeder Zeile das angegebene Zeichenmuster ein. Wenn -wie hier- ein Leerzeichen angegeben wurde, natürlich nur eine leere Zeile.
# sed 'a\\n'
fügt durch den Zeilenvorschub \n noch eine Leerzeile ein, also 2 Leerzeilen nach jeder Zeile.
# sed 'a\Zusatztext'
fügt nach jeder Zeile den angegebenen Zusatztext ein.
# sed '3a\ '
fügt nur nach der dritten Zeile eine Leerzeile ein. Ein Bereich geht auch:
# sed '3,5a\ '
fügt von Zeile 3-5 jeweils eine Leerzeile ein. Statt a kann auch i verwendet werden. Einziger Unterschied: i fügt VOR den Zeilen die neue Zeile ein und a DANACH.

Und noch mehr mit c (change, ersetzt Zeichen):
# sed '2c\Ausgetauscht'
tauscht die 2. Zeile gegen die angegebenen Zeichen aus. Auch das geht:
# sed '/zeichen/c\austausch'
sucht nach den angegebenen Zeichen im Textstrom und tauscht die gesamte Zeile gegen die neu angegebenen Zeichen aus.
Natürlich ist es auch möglich sämtliche hier vorgestellten Möglichkeiten von sed zu kombinieren, z.B.
# sed '2,5s/ä/ae/g'
sucht nur von Zeile 2 bis 5 nach sämtlichen ä Zeichen und ersetzt sie durch ae. Das g am Schluß steht für global und bedeutet eben alle. Ohne g würde nur das allererste ä pro Zeile behandelt und Nachfolgende nicht beachtet.
# sed '/ausdruck/d'
sucht nach ausdruck und löscht die komplette Zeile (delete).

Ein Beispiel um nach beliebigen Zahlenwerten zu suchen und diese zu manipulieren: Unsere Beispielzahlen sehen so aus -> 10 15 32 60 und wir möchten selbige in Anführungsstriche einfassen.
# sed 's/\([0-9]\{1,2\}\)/"\1"/g'
Der Befehl im Detail:
[0-9] = Zahlenwerte von 0-9.
{1,2} = mit 1 oder 2 Stellen.
\1 = sed kennt sogenannte "Platzhalter", die sich auf einen Ausdruck in runden Klammern beziehen, daher fassen wir unseren Zahlenausdruck in runde Klammern ein. Dabei müssen die runden und geschweiften Klammern mittels des Backslash escaped werden. Der Platzhalter \1 steht für unseren Zahlenwert und wird durch die Anführungsstriche eingefaßt. Folgendes Beispiel fügt nach jedem Zahlenwert ein Komma ein:
# sed 's/\([0-9]\)/\1,/'

sed und einfache Anführungsstriche
Wie wir gesehen haben, werden Anweisungsblöcke von sed entweder in einfache oder doppelte Anführungszeichen eingefaßt. Was aber, wenn man genau solche ersetzen oder einfügen will? Eine Maskierung mittels des Backslash funktioniert unter der bash leider nicht, auch nicht, wenn man den Backslash dreimal verwendet um den Backslash selbst zu maskieren, da der einfache Anführungsstrich in der bash eine Sonderbedeutung hat. Dazu ein Beispiel:
Wir haben eine Textdatei in der Namen stehen, die in doppelte Anführungszeichen eingeschlossen sind. Jetzt wollen wir die doppelten Anführungszeichen durch Einfache ersetzen. Der Befehl dafür lautet:
# sed 's/"/'"'"'/g' Textdatei.txt
Falls eine Schrift im Browser gewählt wurde, bei der nicht erkennbar ist, was einfache und doppelte Anführungsstriche bei dem Befehl sind, hier etwas ausführlicher:
# sed 's/<doppelt>/<einfach><doppelt><einfach><doppelt><einfach>/g'
Das Prinzip ist im ersten Moment verwirrend, aber dennoch simpel. Da wir unseren Anweisungsblock in einfache Anführungsstriche eingefaßt haben, kann man die zu ersetzenden Doppelstriche in der Suche ohne Probleme angeben. Für die Ersetzung durch die Einfachstriche sieht das Konstrukt so aus: wir unterbrechen mit einem einfachen Anführungsstrich unseren Anweisungsblock, maskieren unseren Ersetzungs-Einfachstrich in dem wir ihn in doppelte Anführungsstriche einfassen und führen durch einen weiteren Einfachstrich den Anweisungsblock fort. Noch ein weiteres Beispiel zu dem Thema:
# sed 's/img_..\.jpg/&\" onClick=\"return jsbefehl('"'"'&\?var=wert'"'"')/g'
sucht in einem HTML-Dokument nach einem Bilderlink und ergänzt ihn um eine Javascript-Anweisung die eine URL mit PHP-Variablen übergibt. Sieht der Link, z.B. so aus:
<a href="img_01.jpg">
sieht er nach der Bearbeitung durch sed so aus:
<a href="img_01.jpg" onClick="return jsbefehl('img_01.jpg?var=wert')">
Ein einzelner Punkt steht für ein einzelnes, beliebiges Zeichen. Der Backslash vor dem Punkt vor jpg maskiert den Punkt und so wird er auch nur als ein Punkt behandelt, also paßt der Suchbegriff auf Dateien mit zwei Zahlenwerten, z.B. img_01.jpg, img_02.jpg, img_03.jpg, usw. Dabei dient das &-Zeichen als Kopierzeichen für den Suchbegriff und fügt den gefundenen Bildnamen in die Ausgabe wieder ein. Da die Argumente des Javascript-Befehls in einfache Anführungsstriche eingefaßt sind, müssen sie mit unserem Konstrukt
einfach-doppelt-einfach-doppelt-einfach eingefügt werden.

Abschließend ein Hinweis zu sed: sed gibt es in unterschiedlichen Programmversionen (z.B. sed15, sed16, ssed, GNU sed) die sich in der Funktionalität stellenweise mehr oder weniger stark unterscheiden, z.B. kann folgende Zeile um das Zeilenendezeichen (\n Newline-Zeichen) zu löschen
# sed 's/\n//g'
in manchen Versionen funktionieren, in anderen Versionen muß man eventuell den Backslash maskieren, also
# sed 's/\\n//g'
In wieder anderen Versionen muß das Newline-Zeichen so aussehen:
# sed 's/^M//g'
was auf der Konsole durch drücken von STRG-V und STRG-M erreicht wird.
In GNU sed kommt das \n-Zeichen erst gar nicht in den Eingabe-Puffer, daher funktionieren die obigen Beispiele nicht. GNU sed liest die Zeile ein, entfernt das Newline-Zeichen und schreibt die Zeile in den Eingabe-Puffer. Nach der Bearbeitung mit s (suchen und ersetzen) wird an die Ausgabe wieder ein Newline-Zeichen angefügt, so bleibt es immer erhalten. Jedoch funktioniert für GNU sed folgende Methode:
# sed ':a;N;$!ba;s/\n//g'
Die Zeichenfolge :a;N;$!ba; bedeutet dabei vereinfacht ausgedrückt folgendes: Setze eine Markierung (:a), schreibe die folgende Eingabezeile in den Arbeitsspeicher inkl. Newline (N), springe zu der Marke und fahre mit dem Programm fort (b), schreibe den Text in die Standardausgabe bevor die nächste Zeile gelesen wird (a). Nur um das Newline-Zeichen zu löschen etwas umständlich, daher meine Empfehlung: tr
# tr -d '\n'
oder
# tr '\n' ' '
Im ersten Fall wird das Newline-Zeichen einfach gelöscht, im zweiten durch ein Leerzeichen ersetzt.


cut

Mit cut kann man im Gegensatz zu sed nicht zeilenweise arbeiten, sondern Spaltenweise. Es arbeitet sich sozusagen vertikal durch den Text, also von links nach rechts. Ein Beispiel:
# cut -c 1-3,5 Datei.txt
schneidet aus dem vorhandenem Text die ersten drei Zeichen (Option -c = character, also Zeichen) und zusätzlich das fünfte Zeichen aus. Möchte man Spaltenweise arbeiten hilft die Option -f für "einzelne Felder". Dabei wird mittels des Tabulator-Zeichens getrennt. Möchte man ein anderes Zeichen, muß man es mit -d für "delimiter (Begrenzer)" angeben, z.B.:
# cut -d" " -f2,4 Datei.txt
gibt als Trennzeichen das Leerzeichen an und gibt lediglich die Spalten 2 und 4 wieder. Ein Beispiel: Steht in einer Datei folgendes:
---------------------------------------
Name Straße PLZ Ort Land
---------------------------------------
werden lediglich die hier fettgedruckten Spalten wiedergegeben. Mit diesem Befehl zum Beispiel bekommen sie eine Liste aller Benutzer mit bürgerlichem Namen:
# cut -d: -f1,5 /etc/passwd
root:root
bin:bin
.....
Damit ist cut sehr gut geeignet um z.B. Dateinamen von mp3s in die Bestandteile <Artist>-<Titel> zu zerlegen (siehe Multimedia/mp3s kodieren). Ein Beispiel:
# ls
01-Anna Loos-My Truth.wav
# ls | cut -d- -f2
Anna Loos


Zeichen löschen mit tr

tr (translate) kann aus einem Textstrom Zeichen löschen oder durch andere Zeichen ersetzen.
# cat Datei.txt | tr -d "äöü"
cat öffnet wieder die Datei und übergibt sie an tr, welches mit der Option -d (delete) sämtliche Umlaute aus der Datei entfernt.


bc - Taschenrechner auf der Kommandozeile

Möchte man simple Rechenaufgaben auf der Kommandozeile erledigen, hilft das Programm bc. Mit einem simplen Aufruf
# bc
startet man das Programm. Eine Eingabe wie 4+2 gefolgt von ENTER bringt eine schlichte 6 in der folgenden Zeile zum Vorschein. Mit quit beendet man das Programm. Es ist auch möglich Textdateien als Eingabe zu nutzen. Zum Beispiel bringt folgender Inhalt der Datei "rechnung.txt"
24+7
quit
mit dem anschließende Aufruf
# bc rechnung.txt
die Zahl 31 auf der Konsole aus.
Enthält die Datei eine Liste von Zahlen und möchte man diese addieren, kann man mittels sed (siehe vorherigen Punkt) an das Ende jeder Zeile ein Plus-Zeichen und einen Backslash anhängen. Der Backslash maskiert das Return-Zeichen und so werden die Zeilen wie eine einzige behandelt. Also gibt der Inhalt der Datei
24+\
7
quit
ebenfalls 31 aus.
Noch ein Hinweis: bc arbeitet im Standardmode mit Ganzzahlen, also ohne Nachkommastellen. Möchte man die Genauigkeit auf 20 Stellen hinter dem Komma erhöhen, hilft die Option -l, welche eine Mathematik-Library lädt und so die Genauigkeit erhöht.
# bc -l
Möchte man nicht immer gleich das Programm abstarten, sondern nur eine kleine Rechenaufgabe lösen ohne quit einzugeben, kann man auch folgende Pipe verwenden:
# echo "24+7" | bc -l


Formatkonvertierung von Textdateien Linux <> Windows

Da Linux eine andere Formatierung verwendet als Windows wird das Zeilenende in Textdateien nicht richtig dargestellt. Dafür gibt es das simple, einfache Programm tofrodos, welches in der Lage ist, Dokumente von UNIX nach DOS oder auch umgekehrt zu konvertieren. Nach Installation des Pakets stehen folgende Befehle zur Verfügung:

# unix2dos Datei Konvertiert die Datei von Linux nach DOS. Es geht auch
# todos Datei

# dos2unix Datei Konvertiert von DOS nach Linux. Ebenfalls geht
# fromdos Datei


Deutsche Tastatur auf einer der Konsolen F1-F6

Auf Debian live Systemen ist standardmäßig die US-Tastatur Belegung aktiv. Um auf eine deutsche Tastatur zu switchen benötigt man das Paket console-data:
# apt-get install console-data
Anschließend kann man ganz einfach durch Eingabe des Befehls
# loadkeys de
die Tastatur auf Deutsch ändern.