Rechnen in der Shell

Rechnen mit der Bash selbst

echo $(( (11-1)/10*20 ))

Jedoch mach die Bash aus jede Zahl einen Integer Wert. ->

var=11; echo $(( $var/2 ))

Rechnen mit bc

echo "44/3" | bc -l

oder…

bc -l <<< "44/3"

Nachkommastellen angepassen

echo "scale=2; 44/3" | bc -l

oder…

bc -l <<< "scale=2; 44/3"

weitere Beispiele…

chmod – HowTo

chmod (von englisch: change mode) ist ein Kommandozeilenprogramm unter Unix, mit dem sich die klassischen Unix-Dateiattribute (Zugriffsrechte) verändern lassen. Das

chmod

-Kommando gibt es bereits seit der ersten Version des AT&T-Unix (Ende der 1970er Jahre). – Wikipedia

chmod (-R) (u|g|o|a) (+|-|=) (r|w|x|s|t) Datei/Verzeichnis

-R -> auch Unterverzeichnisse ändern (rekursiv)
-u -> user (Eigentümer)
-g -> group (Gruppe)
-o -> others (Andere)
-a -> all (Alle anderen)

+ -> Hinzufügen
– -> entfernen
= -> gleich

r -> read (Lese-Rechte)
w -> write (Schreib-Rechte)
x -> execute (Ausführ-Rechte)
s -> beim ausführen, startet das Programm mit dem Rechten des Eigentümer (u+s) oder der Gruppe (g+s)
t -> Lese-, Schreib-, Ausführrechte für den Inhalt eines Verzeichnisses, jedoch darf man nur seine eigenen Dateien löschen, mit Ausnahme des Eigentümers des Verzeichnisses

Zudem kann man die Zugriffsrechte auch per Ziffer (Oktalzahl) angeben: im folgendem Beispiel beschränke ich mich mal auf u|g|u und r|w|x

Die Oktalzhl ist eine Zusammenfassung von Binärzahlen, welche wiederum verschiedene Zugriffsrecht und Wertigkeiten haben.

Wertigkeiten: x = 1 ; w = 2 ; r = 4

Beispiel:

chmod -R 640 /home/User/Desktop/test

Symbolisch: r w | r |

Oktal: 6 | 4 | 0

Binär: 1 1 0 | 1 0 0 | 0 0 0

User: w (2) + r (4) = 6
Gruppe: r (4) = 4
Other: (0) = 0

0 <-> — <-> keine Berechtigung

1 <-> –x <-> ausführ-Rechte

2 <-> -w- <-> schreib-Rechte

3 <-> -wx <-> schreib-, ausführ-Rechte

4 <-> r– <-> lese-Rechte

5 <-> r-x <-> lese-, ausführ-Rechte

6 <-> rw- <-> lese-, schreib-Rechte

7 <-> rwx <-> lese-, schreib-, ausführ-Rechte

um nun z.B. alle Dateien einer Webseite, welche im aktuellen Verzeichnis liegen die ausführ-Rechte zu entziehen kann man sich einen find-Befehl zusammenbasteln:

find . -type f -exec chmod -x {} \;

bzw. folgendermaßen, um die schreib-rechte nur für den Besitzer der Dateien zu erlauben:

find . -type d -exec chmod 750 {} \;
find . -type f -exec chmod 640 {} \;

Festplatten-Auslastung anzeigen lassen

iotop zeigt die I/O Auslastung, benötigt jedoch einen Linux Kernel >= 2.6.20, zudem wird die Auslastung per Programm angezeigt.

Installation unter Debian / Ubuntu:

sudo aptitude install iotop

Nrg2Iso: Nero-Image -> ISO

Nrg2Iso ist ein linux Tool welches eine CD (ooder DVD) image von Nero Burning Rom zu ISO konvertieren kann.

Installation von Hand:

sudo bash
cd /usr/src/
wget http://gregory.kokanosky.free.fr/v4/linux/nrg2iso-0.4.tar.gz
tar xvf nrg2iso-0.4.tar.gz
cd nrg2iso-0.4/
make

./nrg2iso image.nrg image.iso

Installation mit Paketmanager (aptitude):

aptitude install nrg2iso

Link:
gregory.kokanosky.free.fr/v4/linux/nrg2iso.en.html

localepurge – macht Platz auf der Platte

localepurge ist ein Tool, um automatisch überflüssige Sprach-Dateien nach Abschluss jeder Paketinstallation löscht. Dadurch kann man Plattenplatz wieder freigeben, der ansonsten nur von nutzlosen locale-Dateien für Sprachen belegt ist.

Installation unter Debian / Ubuntu:

aptitude install localepurge

Safe-rm can save your life

Safe-rm ist ein Tool welches davor bewahrt wichtige Dateien und Verzeichnisse zu löschen, indem es /bin/rm mit einem wrapper ersetzt, welcher vor dem löschen die konfigurierbare Blackliste abgleicht und somit die Datei ggf. nicht löscht.

Installation unter Debian / Ubuntu:

aptitude install safe-rm

Bild:


safe-rm
safe-rm


nethogs und iftop – Traffic analysieren

nethogs erlaubt es dir den Netzwerk-Traffic pro Prozess zu sehen. Es zeigt sowohl upload and download Geschwindigkeiten. Unterstützung für Ethernet, PPP und unterstützt sowohl IPv4 als auch IPv6.

Installation unter Debian:

aptitude install nethogs

_________________________

Wer hingegen sehen möchte, wer (IP-Adresse) die Daten gerade anfordert bzw. empfängt, sollte sich mal folgendes Programm anschauen -> Iftop.

Installation unter Debian:

aptitude install iftop

_________________________

Video:

Migration von Debian 32-Bit zu 64-Bit

Wenn wir nun von einen 32-Bit System auf ein 64-Bit System umsteigen wollen, installieren wir als erstes ein “64-Bit System” von der selber Distribution z.B. Debian Lenny, damit wir nicht alle Standard-Pakete selber neu installieren müssen, als nächstes wird mithilfe von aptitude und dpkg die alten Pakete auf das neue System gebracht:

Auf dem 32-Bit System:

sudo aptitude search '~i !~M' -F '%p install' > packages-list

Dies generiert eine Liste von allen manually installierent packages in packages-list.
Auf dem 64-Bit System:

sudo dpkg --set-selections < packages-list

… und …

sudo apt-get update && sudo apt-get dselect-upgrade

Diese Befehle installieren nun alle packages von der packages-list. (und apt-get wird die packages Abhängigkeiten auflösen) Das war es schon. :) Wenn man nun nur dpkg –get-selections auf dem 32-Bit System auführt, würde man alle Informationen zu den “automatically installed packages” verlieren, daher könnte man noch folgendes ausführen, so dass du eine weitere Liste mit automatisch installieren packages bekommst:
Auf dem 32-Bit System:

sudo aptitude search ~M -F %p > autoremove-packages-list

Auf dem 64-Bit System:

sudo aptitude markauto `cat autoremove-packages-list`

vim – HowTo

Text suchen mit vi(m):

/Muster sucht vorwärts nach dem eingegebenem Suchmuster
/Muster/e sucht vorwärts, springt jedoch an das Ende des gefundenen Wortes
?Muster sucht rückwärts nach dem eingegebenem Suchmuster
n die letzte Suche wird wiederholt (weiter suchen)
? wiederholt die Suche – rückwärts
% zeigt die zugehörige Klammer an
v% markiert den Text zwischen zugehörigen Klammern an

Text ersetzen mit vi(m):

:s/alt/neu/ ersetzen von alt durch neu (nur erstes Auftreten in aktueller Zeile)
:s/alt/neu/c ersetzen von alt durch neu (erste Auftreten + Nachfrage)
:s/alt/neu/g sucht und ersetzt alt durch neu in der ganzen Zeile
:s/alt/neu/gc sucht und ersetzt alt durch neu in der ganzen Zeile + Nachfrage
:s/alt/&…/g sucht und ersetzt alt durch alt… in der ganzen Zeile
:1,7s/alt/neu/g ersetzt von Zeile 1 bis 7 alt durch neu
:%s/alt/neu/g ersetzt im ganzen Dokument alt durch neu
:%s/alt/neu/gc ersetzt im ganzen Dokument alt durch neu + Nachfrage
:%s/\<alt\>/neu/g ersetzt im ganzen Dokument nur “exakt” das Wort alt durch neu
:s/\<alt\>.*// “exakt” das Wort alt und den folgenden Text, bis zum Zeilenende löschen
:%s/alt.\{2}/neu/g ersetzt im ganzen Dokument nur altXX, wobei X jeweils ein beliebiges Zeichen ist
:%s/alt/neu/gci ersetzt im ganzen Dokument alt durch neu + Nachfrage + Case insensitive
:%s/alt/neu/gcI ersetzt im ganzen Dokument alt durch neu + Nachfrage + Case sensitive
:s/^/text/ Text am Zeilenanfang einfügen
:s/$/text/ Text am Zeilenende einfügen
:%s/Copyright \zs2007\ze All Rights Reserved/2008/ “\zs” + “\ze” markieren den zu ersetzenden Bereich, des Such-Strings

Info:

\t -> steht für einen Tab

\n -> Null Byte (0x00)

\r ->  carriage return (^M)

\1 -> 1. backreference  -> z.B.: \(.*\)

\2 -> 2. backreference … u.s.w.

Text löschen mit vi(m):

x (Entf) ein Zeichen unter der Cursor-Position löschen
r Zeichen unter der Cursor-Position ersetzen
dd aktuelle Zeile ausschneiden (in Zwischenablage kopieren & löschen)
[Anzahl]dd die nächsten [Anzahl] Zeilen ausschneiden
C Zeile ab aktueller Cursor-Position löschen
V Zeile markieren
<Strg> + v Zeichen dynamisch markieren
v Zeichen markieren
d markierte Textstellen löschen bzw. ausschneiden
cw aktuelles Wort ersetzen
dw aktuelles Wort löschen (incl. angehängtem Leerzeichen)
db Vorhergehendes Wort löschen
de aktuelles Wort löschen (über Zeile hinaus)
dl Zeichen unter Cursor-Position löschen
dj zwei Zeilen löschen (Cursor-Position ist 1. Zeile)
dk zwei Zeilen löschen (Cursor-Position ist 2. Zeile)
:5,10d Zeilen 5 bis 10 löschen
d$ aktuelle Zeile ab dem Cursor löschen
:.,$d alle Zeilen löschen (“.” = Anfang der Datei, “$” = Ende der Datei)
:v/./d alle leeren Zeilen löschen

Text kopieren mit vi(m):

Y oder yy setzt die aktuelle Zeile in den Speicherpuffer (y – yank – herausziehen)
y markierte Textstellen in den Speicherpuffer
ny kopiert die nächsten n-Zeilen (n=Zahl)
yw kopiert ein Wort (rechts vom Cursor)
nyw kopiert n-Wört (rechts vom Cursor) (n=Zahl)
yb kopiert ein Wort (links vom Cursor)
nyb kopiert n-Wörter (links vom Cursor) (n=Zahl)
“[a-z]y(Objekt) speichert das angegebene Objekt in den Puffer [a-z]


z.B. “ayw ->Speichert das Wort, das nach dem Cursor steh, in den Puffer “a”

“[a-z]p fügt den Inhalt des Puffers [a-z] nach der Cursorposition ein


z.B. “ap ->fügt den Inhalt des Puffers “a” ein

“np fügt die n-te Speicherung/Löschung ein


z.B. “4p ->fügt nun die 4-letzte Speicherung/Löschung nach der Cursorposition ein

xp vertauscht 2 Buchstaben an der Cursorposition


z.B. wird aus “hc” <-> “ch”

Text einfügen mit vi(m):

p fügt die letzte Speicherung/Löschung an der Cursor-Position ein (p – paste – einfügen)
P Zwischenablage vor aktueller Zeile einfügen
R Text ab Cursor-Position überschreiben
r Zeichen Cursor-Position überschreiben
J aktuelle Zeile an das Ende der vorhergehenden Zeile anhängen
o fügt eine Zeile unterhalb des Cursors ein
O fügt eine Zeile oberhalb des Cursors ein
a Text einfügen, nach dem Cursor
A Text einfügen, am Zeilenende
i Text einfügen, vor dem Cursor
I Text einfügen, am Zeilenanfang
cc bis zur nächsten Zeilengrenze überschreiben
:r DATEI fügt eine DATEI hinter den aktuellen Zeile ein

Navigieren mit vi(m):

G an das Ende des Dokuments springen
:n springt zur n-Zeilennummer (n=Zahl)
gg an den Anfang des Dokuments springen
5G in die 5 Zeile des Dokuments springen
0 (null) an den Anfang der Zeile springen (für z.B. Putty besser)
^ an den Anfang der Zeile springen
$ an das Ende der Zeile springen
b an den Anfang des letzten Wortes springen
w an den Anfang des nächsten Wortes springen
e an das Ende des nächsten Wortes springen
h (Pfeiltasten) ein Zeichen nach links
j (Pfeiltasten) ein Zeile nach unten
k (Pfeiltasten) eine Zeile nach oben
l (Pfeiltasten) ein Zeichen nach rechts
<Strg> + u (Bild oben Taste) nach oben blättern
<Strg> + d (Bild unten Taste) nach unten blättern
:split DATEI teilt das Fenster in der Mitte, um zwei Dateien gleichzeitig zu bearbeiten
:vsplit DATEI teilt das Fenster vertikal, um zwei Dateien gleichzeitig zu bearbeiten
<Strg> + W um in den nächsten geteilten Bereich zu geladen
:tabnew DATEI öffnen einen neuen Tab in dem eine weitere Datei bearbeitet werden kann,

zudem ist der Buffer nun Datei-übergreifend verfügbar

:tabnext wechselt zum nächsten Tab ggf. “<Strg> + <Alt> + Bild hoch/runter”

Speichern und / oder Schließen mit vi(m):

:q vi beenden
:q! vi beenden, nicht gespeicherte Änderungen gehen verloren !!!
:w Datei speichern
:w test.txt Datei speichern als test.txt
:w! Speichern der Datei erzwingen
:wq (oder) ZZ Datei speichern und vi beenden
<Strg> + z Shell starten; vi wird in Hintergrund geschoben; Rückkehr durch Eingabe von “fg”

Set-Befehle mit vi(m):

:set all anzeigen aller Set-Befehle
:se nu Zeilennummern einblenden
:set number
:se nonu Zeilennummern ausblenden
:set nonumber
:set list Zeilenende markieren
:set nolist Zeilenende nicht markieren
:set ic ignoriert Groß-/ Kleinschreibung, bei der Suche
:set ignorecase
:set noic schaltet das ignorieren wieder ab
:set noignorecase
:set hlsearch hervorheben von Suchergebnissen
:set nohls hervorheben wieder abschalten
:syntax on hervorheben von Code, Konfiguration etc.
:syntax off Hervorhebung wieder abschalten
:ab rtfm read the fucking manual legt eine neue Abkürzung fest, aus “rtfm” wird nun automatisch “read the fucking manual”
:ab zeigt die verfügbaren Abkürzungen an
:set incsearch bei der Suche werden die Zeichenketten direkt angezeigt
:set tabstop=n gibt an aus wie vielen Leerzeichen ein Tab bestehen soll (n=Zahl)
:set shiftwidth=n gibt an wie viele Leerzeichen expandtab verwendet
:set expandtab es werden Leerzeichen anstatt Tabs verwenden
:set noexpandtab es werden Tabs anstelle von Leerzeichen verwendet
:retab existierende Tabs werden in Leerzeichen umgewandelt
:set laststatus=2 die untere Status-Leiste wird nun immer angezeigt
:set backspace=2 erlaubt die Backspace-Taste zum löschen im Schreib-Modus
:noremap <Leader>c :%s://\(.*\):/*\1 */:<CR> auf die Tastenkombination \c erfolgt die Änderungen von C++-Kommentaren (// test), in C-Kommentaren (/* test */)
:noremap <Leader>C :%s:/\*\(.\{-\}\)\s*\*/://\1:<CR> auf die Tastenkombination \C erfolgt die Änderungen von C-Kommentaren (/* test */), in C++-Kommentaren (// test)
:nmap _Y :!echo “”> ~/.vi_tmp<CR><CR>:w! ~/.vi_tmp<CR>

:vmap _Y :w! ~/.vi_tmp<CR>

:nmap _P :r ~/.vi_tmp<CR>

diese drei Zeilen bewirken, dass man zwischen verschiedenen Vim-Sessions kopieren kann.

_Y -> kopieren

_P -> einfügen

Y oder yy

 

Info: Du kannst diese Befehle auch fest in der “~/.vimrc“-Datei eintragen !!!

Sonstiges mit vi(m):

u UNDO der letzten Befehle
U alle Änderungen der aktuellen Zeile rückgängig machen
<Strg> + r REUNDO derletzten Befehle
v Bereich markieren
<Strg> + v Bereich dynamisch markieren
. (ein Punkt) Wiederholt das letzte Einfüg-/ Löschkommando
<ESC> Bearbeitungsmodus beenden
:s/”/\”/g Sonderzeichen müssen teilweise mit gekennzeichnet werden (ersetzt ” durch “)
:jumps zeigt die Dateien an, in denen man zuletzt gesucht, markiert etc. hat

(Dateien anschauen reicht nicht aus, so dass Dateien eingetragen werden)

:for erzeugt eine Schleife direkt im Editor

z.B. :for i in range(1,254) | put =’192.168.0.’.i | endfor

:! führt System-Befehle direkt im vim durch

z.B. “:!mkdir ~/vim”

Y oder yy

Installiere Nvidia Treiber für Ubuntu – HowTo

Ein einfacher, quell-offener Treiber ohne 3D-Beschleunigung (“nv”) ist bereits bei Ubuntu vorinstalliert. Es folgt eine Übersicht von Nvidia Treiber, welche für Ubuntu verführbar sind:

Treiber – Übersicht:

Hardy Heron (8.04):

  • nvidia-glx-new – für GeForce5/FX
  • nvidia-glx – für GeForce2 MX bis GeForce4
  • nvidia-glx-legacy – für Karten älter als 5 Jahre wie z.B. TNT, TNT2, TNT Ultra, GeForce und GeForce2 ohne MX

Ubuntu Intrepid (8.10):

  • nvidia-glx-96 – für GeForce2 MX bis GeForce 4
  • nvidia-glx-173 – für GeForce FX
  • nvidia-glx-177 – für GeForce 6 und neuer
  • nvidia-glx-180 – für GeForce 6 und neuer (intrepid-updates)
  • nvidia-glx-190 – für GeForce GT(S) und neuer
  • nvidia-glx-195 (Beta) – für GeForce GT(S) und neuer

Ubuntu Jaunty Jackalope (9.04):

  • nvidia-glx-96 – GeForce2 MX bis GeForce 4
  • nvidia-glx-173 – GeForce FX
  • nvidia-glx-180 – Ab GeForce 6
  • nvidia-glx-190 – für GeForce GT(S) und neuer
  • nvidia-glx-195 (Beta) – für GeForce GT(S) und neuer

Karmic Koala (9.10):

  • nvidia-glx-96: GeForce2 MX bis GeForce 4
  • nvidia-glx-173: GeForce FX
  • nvidia-glx-185: Ab GeForce 6
  • nvidia-glx-190 – für GeForce GT(S) und neuer
  • nvidia-glx-195 (Beta) – für GeForce GT(S) und neuer

Automatische Installation von den neusten Treibern:

Als erstes müssen eine Konsole öffnen und uns als root anmelden.

sudo su -

Bei Ubuntu => Karmic Koala (9.10) können wir die Quellen und Keys sehr bequem mit einem Befehl in unser System aufnehmen.

add-apt-repository ppa:nvidia-vdpau/ppa

Falls du noch eine frühere Version von Ubuntu verwendest, kannst du dies mit folgenden Befehlen bewerkstelligen.

echo 'deb http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu UBUNTU_VERSION main' >> /etc/apt/sources.list
echo 'deb-src http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu UBUNTU_VERSION main' >> /etc/apt/sources.list

Wenn es sich bei der Distribution um z.B. Ubuntu Intrepid Ibex handelt, ersetzt du “UBUNTU_VERSION” durch “intrepid” bzw. durch “hardy” oder “jaunty”!!!

Strg + D
(logout)

Wie bereits zuvor erwähnt, benötigen wir nun noch den passenden Key vom Server, falls du die Quellen per Hand in die sources.list aufgenommen hast.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CEC06767

Ab hier geht es für alle Ubuntu Versionen weiter…

sudo apt-get update
sudo aptitude install linux-restricted-modules-$(uname -r)
sudo aptitude install nvidia-190-modaliases nvidia-glx-190

“System -> Systemverwaltung -> Hardware-Treiber” (Hardy, Intrepid, Jaunty)

“System -> Systemverwaltung -> Verwaltung eingeschränkter Treiber” (Gutsy, Feisty)

… und aktiviere dort den glx-190-Treiber.

Um gleich zu prüfen, ob der Treiber ordnungsgemäß funktioniert, laden wir das folgenden Shell-Skript herunter.

cd ~/Desktop/
wget http://blogage.de/files/9124/download -O compiz-check
chmod +x compiz-check

Falls du nach einen “reboot” nicht den richtigen Treiber per “./compiz-check” angezeigt bekommst, kannst du noch folgendes ausprobieren.

sudo nvidia-xconfig

In der Datei “/etc/X11/xorg.conf” unter dem Punkt ‘Section “Device”‘ muss nun als ‘Driver “nvidia”‘ eingetragen sein. Zudem kann man das Logo von Nvidia an dieser Stelle auch deaktivieren, dazu musst du unter dem Punkt ‘Section “Device”‘ ‘Option “NoLogo” “True”‘ einfügen.

…falls dies nach einen erneuten “reboot” nicht geholfen hat, kannst du noch folgendes probieren

sudo echo 'nvidia' >> /etc/modules

Manuelle Installation von den neusten Treibern:

Falls bereits Treiber automatisch installiert wurden, müssen diese mit folgendem Kommando entfernt werden.

sudo aptitude remove nvidia-glx*

Anschließend müssen folgende Pakete ggf. noch installiert werden.

sudo aptitude install linux-restricted-modules-$(uname -r) build-essential xserver-xorg-dev libc6-i386 nvidia-xconfig

Nun laden wir uns den neusten Nvidia-Treiber herunter ->www.computerbase.de

z.B.:

cd /tmp
wget http://de.download.nvidia.com/XFree86/Linux-x86/190.53/NVIDIA-Linux-x86-190.53-pkg1.run

nun verlassen wir unsere Desktop-Umgebung und beenden diese, dafür wechseln wir zur Konsole …

ALT + STRG + F1

… und melden uns als root an und schalten den Desktop aus.

sudo /etc/init.d/gdm stop
cd /tmp
(bei GNOME)
sudo /etc/init.d/kdm stop

(bei KDE)

cd /tmp
sh NVIDIA-Linux-x86-190.53-pkg1.run
nvidia-xconfig

In der Datei “/etc/X11/xorg.conf” unter dem Punkt ‘Section “Device”‘ muss nun als ‘Driver “nvidia”‘ eingetragen sein. Zudem kann man das Logo von Nvidia an dieser Stelle auch deaktivieren, dazu musst du unter dem Punkt ‘Section “Device”‘ ‘Option “NoLogo” “True”‘ einfügen.

…falls dies nach einen “reboot” nicht geholfen hat, kannst du noch folgendes probieren

sudo echo 'nvidia' >> /etc/modules

falls das “./compiz-check” Skript noch immer ausgibt, dass du die 3D-Effekte nicht aktivieren kannst, obwohl der Treiber nun installiert sind, dann versuch noch folgendes…

sudo nvidia-xconfig --composite --render-accel --add-argb-glx-visuals