Die wichtigsten Linux Befehle: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 381: Zeile 381:
  
 
Siehe auch: [[Typo3 - Patch einspielen]]
 
Siehe auch: [[Typo3 - Patch einspielen]]
 +
 +
[[Programmieren - Patch und Diff]]
  
 
Ein "diff" erzeugen mit dem GNU Programm diff
 
Ein "diff" erzeugen mit dem GNU Programm diff

Version vom 4. Dezember 2012, 13:17 Uhr

Links

http://cb.vu/unixtoolbox.xhtml

Die wichtigsten LINUX Befehle auf der Kommandozeile

Basics
startx startet das X-Window-System und eine grafische Benutzeroberfläche
logout ordnungsgemäßes Abmelden von der Konsole
[BEFEHL] --help gibt einen kurzen Hilfetext zum [BEFEHL] aus
man [BEFEHL] zeigt die Manual-Page zum [BEFEHL] an
info [BEFEHL] zeigt Dokument zu [BEFEHL] im Info-System an
shutdown -r now Rechner neustarten
shutdown -h now Rechner herunterfahren
Suchen
whereis [PROGRAMM] sucht in den Verzeichnissen der Umgebungsvariablen PATH nach [PROGRAMM]
find . | grep [DATEI] sucht ausgehend vom aktuellen Verzeichnis nach [DATEI]
grep [SUCHSTRING] [DATEI] durchsucht DATEI nach dem Suchbegriff [SUCHSTRING]
locate [DATEI] durchsucht die Locate-Datenbank nach [DATEI]
Programme starten
[PROG] Programm [PROG], welches sich im Pfad befindet, starten
./[PROG] Programm [PROG], welches sich im aktuellen Verzeichnis befindet, starten
[PFAD]/[PROG] Programm [PROG], welches sich im Verzeichnis [PFAD] befindet, starten
Navigation im Dateisystem
pwd gibt das aktuelle Verzeichnis aus
cd / wechselt ins Hauptverzeichnis
cd .. wechselt in das übergeordnete Verzeichnis
cd [VERZ] wechselt ins Verzeichnis [VERZ]
cd - wechselt in das vorherige Verzeichnis
cd wechselt ins Home-Verzeichnis des Benutzers
Dateien
cat [DATEI] zeigt den Inhalt der Datei [DATEI] auf dem Bildschirm an
more [DATEI] zeigt den Inhalt der Datei [DATEI] seitenweise an
less [DATEI] wie more, man kann aber auch nach oben blättern
cp [DATEI1] [DATEI2] kopiert Datei [DATEI1] in Datei [DATEI2]
mv [DATEI1] [DATEI2] benennt Datei [DATEI1] in [DATEI2] um
mv [DATEI] [VERZ] verschiebt Datei [DATEI] ins Verzeichnis [VERZ]
rm [DATEI] löscht die Datei [DATEI]
touch [DATEI] erzeugt die leere Datei [DATEI]
Verzeichnisse
ls kurze Liste des Verzeichnisinhaltes
ls -l ausführliche Liste des Verzeichnisinhaltes
ls -la alle Dateien des Verzeichnisses ausführlich auflisten
mkdir [VERZ] neues Verzeichnis [VERZ] erstellen
rmdir [VERZ] das leere Verzeichnis [VERZ] löschen
rm -rf [VERZ] alle Dateien/Verzeichnisse unterhalb des Verzeichnisses [VERZ] löschen
Geräte partitionieren, formatieren, überprüfen, mounten
fdisk [DEVICE] Partitionierung der Festplatte [DEVICE]
mke2fs [DEVICE] Anlegen eines ext2-Dateisystems auf dem Gerät [DEVICE]
fsck [DEVICE] Gerät [DEVICE] auf Fehler überprüfen
mount /mnt/cdrom bindet eine eingelegte CD-ROM in das Dateisystem ein
umount /mnt/cdrom entfernt eine CD-ROM aus dem Dateisystem
Zugriffsrechte
chmod [OPTIONEN] [DATEI] ändert die Zugriffsrechte der Datei [DATEI]
chgrp [GRUPPE] [DATEI] ändert die Gruppe der Datei [DATEI] in [GRUPPE]
chown [OWNER] [DATEI] ändert den Eigentümer der Datei [DATEI] in [OWNER]
Systeminformationen
mount Ausgabe aller gemounteter Partitionen/Geräte
df Ausgabe der Nutzung der gemounteten Geräte
date Anzeige von Datum und Uhrzeit
free gibt die Nutzung des Arbeitsspeichers aus
uptime zeigt die Prozessorauslastung und -laufzeit an
top zeigt die höchsten Ressourcenverbraucher an
ps ax zeigt Informationen über laufende Prozesse an
kill [PID] beendet den Prozess mit der Prozess-ID [PID]
killall [PROZESSNAME] beendet alle Prozesse mit dem Namen [PROZESSNAME] (z. B. mozilla)
uname -a gibt Kernel-Informationen aus
arch zeigt die Prozessorfamilie an
Benutzerverwaltung
id gibt deinen Benutzernamen und die Gruppenmitgliedschaften aus
whoami Wer bin ich? Ausgabe des Benutzernamens
who Wer ist alles eingeloggt? Ausgabe der Benutzernamen, des Terminals und der Login-Zeit.
passwd ändert das Passwort des aktuellen Benutzers
useradd -m [USERNAME] legt den neuen Benutzer [USERNAME] an und erzeugt ein Homeverzeichnis
passwd [USERNAME] ändert das Passwort des Benutzers [USERNAME] (nur als root)
userdel -r [USERNAME] löscht den Benutzer [USERNAME] und sein Homeverzeichnis
groupadd [GRUPPE] erzeugt eine neue Gruppe [GRUPPE]
groupdel [GRUPPE] löscht die Gruppe [GRUPPE]
screen
screen -S [name] Erzeugt einen "Screen" den sich ein anderer Benutzer "holen" kann um die Aktionen zu beobachten
screen -x [name] Hole dir den Screen "name"
STRG+D+A Deattached den Screen (um wieder zur Konsole zu gelangen)
STRG+A+SPACE Wechselt zwischen mehreren Screens
exit Killt den Screen
screen -ls Listet alle Screens

Weitere Befehle

diff und patch

Siehe auch: Typo3 - Patch einspielen

Programmieren - Patch und Diff

Ein "diff" erzeugen mit dem GNU Programm diff

Syntax:

diff  [-optionen ]  dateiname1.php  dateiname2.php


Beschreibung:

Diff vergleicht die beiden angegebenen Dateien und gibt auf die Standardausgabe aus, welche Zeilen wie geändert werden müssen. Ein "diff" kann dann unter Verwendung des GNU Programmes patch wieder in eine andere original Datei eingefügt werden, man nennt das auch Patchen. Das Programm patch weiß anhand der Informationen welche diff erzeugt hat, ganz genau an welcher Stelle (Zeile) was geändert werden muss.


Es besteht auch die Möglichkeit aus den Unterschieden von 2 Verzeichnissen ein "diff" zu erzeugen.


Wir erstellen erst mal ein "unified diff" mit Parameter -u (vereinheitlicht) aus zwei verschiedenen Dateien, diese Variante wird meistens angewendet bzw. gebraucht.

Die Ausgabe von diff wird dabei einfach mit > in eine neue Datei umgeleitet:

diff  -u  original.php  gaenderte.php  >  meinpatch.diff

Wir erstellen nun ein "unified diff" aus zwei Verzeichnissen.

Entscheidend hierfür ist der Parameter -r (Vergleiche jegliche Unterverzeichnisse rekursiv).:

diff  -ru  originalverzeichnis/  gaendertverzeichnis/  >  meindirpatch.diff


Einen Patch einspielen mit dem GNU Programm patch

Syntax:

patch  [-optionen]  <  name_des_Patch.diff


Beschreibung:

Das Unixprogram patch manipuliert Quelltext anhand eines Patches. Es ist somit das Gegenstück zu dem Programm diff, das Patches erzeugt.


Zum Testen kann der Parameter --dry-run (Keine änderungen an Dateien, nur die Ausgabe was währe wenn ...) verwendet werden. Weiter ist eventuell auch noch der Parameter -b oder --backup zu empfehlen, da hiermit automatisch Sicherheitskopien der betreffenden Dateien gemacht werden.


Der Parameter -p1 bringt patch dazu, die Änderungen der Dateien, die in dem Patch angegeben sind, anzuwenden und den ersten Teil des Pfades zu den Dateien zu überspringen. Patches werden oft so erstellt, dass das Hauptverzeichnis des Quellcode-Baumes in dem Patch enthalten ist, sollen die Dateien aber von innerhalb des Hauptverzeichnisses gepatcht werden, muss patch der Parameter -p1 übergeben werden.

Zum Beispiel unter der Annahme der Dateiname in der Patchdatei war:

/u/howard/src/blurfl/blurfl.c


Ein setzen des Parameters -p0 würde die Datei nicht modifizieren,


Paramenter -p1 würde daraus u/howard/src/blurfl/blurfl.c ohne den führenden "/" machen ,


Parameter -p4 würde daraus blurfl/blurfl.c machen


und ohne -p würde es blurfl.c sein.


Mit dem Parameter -R kann man Änderungen eines einmal angewendeten Patches zurücknehmen.

patch  -p1  <  patchdatei.diff

wget, scp und curl

Mit wget kann man Dateien von einem Server holen.

curl kann das gleiche und zusätzlich auch Dateien auf einen Server spielen. Außerdem kann es wenn richtig konfiguriert auch sftp und andere Protokolle.

scp ermöglicht ssh downloads

wget

wget -> siehe auch z.B. im Kapitel Typo3 Installation unter Linux

curl

curl - Tool zum Transfer von Daten von und zu einem Server. Diverse Protokolle möglich: (HTTP, HTTPS, FTP, FTPS, GOPHER, DICT, TELNET, LDAP or FILE)

curl kann ohne Benutzerinteraktion z.B. über Skripte ausgeführ werden.

# curl [options] [URL...]

Es gibt sehr viele Optionen.

Beispiele

Eine Webseite holen und auf der Standardausgabe (stdout) ausgeben:

# curl http://www.domain.com

Eine Webseite holen und in eine Datei speichern:

# curl http://www.domain.com -o "file1.txt"

Mehrere Dokumente holen und variable Ersetzungen mit dem aktuellen String der zu holenden URL durchführen:

# curl http://{one,two}.site.com -o "file_#1.txt"

To download go to http://curl.haxx.se Author: Daniel Stenberg

(Quelle: http://www.coolcommands.com/index.php?option=com_cccat&task=display&id=341 Zugriff am 26.1.)

Einfacher Download:

# curl -C - -O http://www.mirror.com/path/to/NeoOffice-Patch.dmg

Download mit Passwort

# curl -u username sftp://shell.example.com/deepdir/foo.txt

oder

curl -u username:password sftp://shell.example.com/deepdir/foo.txt

http://curl.netmirror.org/docs/manual.html

scp

http://www.linuxtutorialblog.com/post/ssh-and-scp-howto-tips-tricks

Kopiert wird immer von nach, der erste Server ist also der Quellserver

Es kann der Quell und der Zielserver oder beide ein Remoteserver sein. Im letzten Fall werden die Dateien direkt zwischen Quelle und Ziel transferiert.

Remote zu Lokal

scp user@domain.com:/path/to/remote/file /path/to/local/file

Lokal zu Remote mit Passwort und User für Remote

scp examplefile yourusername@yourserver:/home/yourusername/

Von Remote zu aktuellem Verzeichnis auf Lokalem Server

scp yourusername@yourserver:/home/yourusername/examplefile .

Zwei Remote Server

scp yourusername@yourserver:/home/yourusername/examplefile yourusername2@yourserver2:/home/yourusername2/

Alle Dateien in einem Verzeichnis kopieren

scp yourusername@yourserver:/home/yourusername/* .

Verzeichnis rekursiv kopieren

scp -r yourusername@yourserver:/home/yourusername/ .

Mit Bandbreitenlimit kopieren (für langsame Internetverbindungen) bandwidthlimit wird in kB/s angegeben)

scp -l bandwidthlimit yourusername@yourserver:/home/yourusername/* .