[TUTORIAL]Free-BSD/Bash Anfänger Tutorial

04/22/2013 16:43 TheMarv :<#1
Heyho,

Zuerst einmal, bevor die Flames beginnen: [Only registered and activated users can see links. Click Here To Register...]

Ich wurde nicht mehrmals darauf nachgefragt, trotzdem denke ich es kann noch einigen helfen, daher mache ich mal eine Tutorial (Reihe, je nachdem wie es ankommt), welches sich auch im weiten Sinne auf Metin2 bezieht!

Ich werde hier nicht auf FreeBSD an sich eingehen, sondern lediglich die "Hauptcommands" aufzählen & erläutern und noch ein kleines Tutorial zu Bash am Ende.

Infos vorweg:
Quote:
a) Ich benutze für dieses Tutorial die Serverfiles von ".Howan". Das heißt nicht, dass ihr euch diese Serverfiles runterladen müsst, die hier besprochenen Befehle sind in jedem FreeBSD(sprich allen Serverfiles) gleich!
b) Standard-Verzeichnis für dieses Tutorial ist "/usr/home/game".
c) Dieses Tutorial ist für virtuelle Server, welche auf eurem Rechner laufen(in Programm wie Virtual Box)! PROBIERT DIES NICHT AN EINEM ROOT AUS(Da es sein kann, das zwischendurch die Netzwerkverbindung gekappt wird, könntet ihr den Zugang zum Root Server verlieren und müsstet somit den Support anschreiben)
d) Das Tutorial beginnt, sobald ihr euch eingeloggt habt! Sprich ihr startet eure virtuelle Maschine, gebt eure Login Daten ein und seht dann sowas wie:
"Tutorial-Maschine# "
e) Screens sind im Anhang zu finden!(Momentan noch nicht vorhanden)
f) Fachbegriffe werden durch ein * gekennzeichnet!
g) Ich gehe nicht auf jeden einzelnen Parameter* ein, nur die, die mir momentan einfallen! Parameter werden, in diesem Tutorial, in [ ] gesetzt!
h) Es ist eine Verlinkung* von "/home" nach "/usr/home" gesetzt, in dem Tutorial verwende ich "/usr/home"!

Dann fangen wir mal an:

1. pwd
Gibt aus, in welchem Verzeichnis wir uns befinden!
Beispiel:
Code:
Tutorial-Maschine# pwd
	/usr/home/game
2. cd [directory]
Wechselt in das angegebene Verzeichnis
Beispiel:
Code:
Tutorial-Maschine# cd /usr/home

	Hierbei erfolgt KEINE Ausgabe, ihr könnt jedoch gucken ob ihr euch in dem gewünschten Verzeichnis befindet, indem ihr den bei 1. genannten Befehl(pwd) eingebt!
	Tutorial-Maschine# pwd
	/usr/home
Beispiel 2:
Tutorial-Maschine# cd /bla

Hierbei erfolgt die Ausgabe "/bla: No such file or directory.", was heißt, dass das Verzeichnis /bla nicht existiert! Wie man Verzeichnisse erstellt, beschreibe ich weiter unten!

3. ls
Listet alle Dateien und Ordner in dem Verzeichnis, in dem wir uns befinden, auf!
Beispiel:
Code:
Tutorial-Maschine# ls
	auth
	channel1
	channel2
	.
	.
	.
Die ... stehen für weitere Dateien/Verzeichnisse, die folgen(Ich möchte nicht alle auflisten :P

Parameter: -l
Listet alle Dateien und Ordner in dem Verzeichnis, in dem wir uns befinden, detaillierter auf!
Beispiel:
Code:
Tutorial-Maschine# ls -l
		lrwxr-xr-x 1 root 1001    7 Jul 8  2011 auth -> g1/auth
		drwxrwrwx  3 root 1001  512 Jul 12 2011 channel1
		.
		.
		.
Nun stellt ihr euch wahrscheinlich die Frage, ob ihr das alles verstehen müsst. Müsst ihr natürlich nicht, für den normalen Verbraucher könnten Sachen wir Datum, Größe(die Zahl vor dem Datum) und vielleicht die Verlinkung(dargestellt durch "->") wichtig sein!

4. cat [Dateiname]
Gibt den Inhalt der angegebenen Datei aus
Beispiel:
Code:
Tutorial-Maschine# cat updategame.sh
	clear
	echo -e "\033[31m
	.
	.
	.
5. id
Gibt aus, als welcher Benutzer ihr eingeloggt seid
Beispiel:
Code:
Tutorial-Maschine# id
	uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
Für uns ist meist nur der Name wichtig, welcher zwischen den ersten Klammern steht( "root" ).

6. cp [Quelldatei] [Zieldatei]
Dieser Befehl wird zum Kopieren von Dateien verwendet
Beispiel:
Code:
Tutorial-Maschine# cp start.sh start2.sh
Ausgabe erfolgt keine, es sei denn ihr wollt die selbe Datei an den selben Ort verschieben( cp start.sh start.sh ).
Vorhandene Dateien werden überkopiert, also seit vorsichtig, das ihr eine Datei beim Kopieren nicht überschreibt!

7. mv [Quelldatei] [Zieldatei]
Dieser Befehl wird zum Verschieben von Dateien verwendet
Beispiel:
Code:
Tutorial-Maschine# mv start.sh start3.sh
Ausgabe erfolgt hier auch nicht. Die Datei start.sh existiert durch das Ausführen des Befehls nicht mehr, lediglich die Datei start3.sh

8. rm [Datei]
Löscht eine Datei
Beispiel:
Code:
Tutorial-Maschine# rm start2.sh
Entfernt die angegebene Datei. VORSICHT, könnte zu Datenverlust führen!
Hier erfolgt zumal keine Ausgabe.

Falls ihr ein "volles" Verzeichnis löschen wollt, benutzt folgenden Befehl:
Tutorial-Maschine# rm -rf [Ordner]
Dieser Befehl entfernt den Ordner mit Gewalt!

9. touch [Datei]

Erstellt eine leere Datei mit dem angegebenen Namen
Beispiel:
Code:
Tutorial-Maschine# touch start4.sh
Es erfolgt hier normalerweise keine Ausgabe!

10. edit [Datei]

Öffnet die Datei in einem Editor, sodass man diese bearbeiten kann.
ESC-Taste öffnet das Menü.

11. mkdir [Ordner]

Erstellt den angegebenen Ordner
Beispiel:
Code:
Tutorial-Maschine# mkdir game100
Hierbei erfolgt auch keine Ausgabe!

12. rmdir [Ordner]

Löscht den angegebenen Ordner
Beispiel:
Code:
Tutorial-Maschine# rmdir game100
Auch hierbei erfolgt keine Ausgabe!
Es sei denn, das Verzeichnis ist nicht leer, dann mekert FreeBSD rum.
Wollt ihr nicht jede Datei einzeln löschen, schaut euch Punkt 8 an.

13. ps

Gibt die laufenden Prozesse aus
Beispiel:
Code:
Tutorial-Maschine# ps
	PID TT STAT TIME COMMAND
	1246 v0 ls 0:00.04 login
Für uns sowas wie die PID, der COMMAND und vielleicht die TIME wichtig.
PID = Prozess ID*
COMMAND = Der Befehl/Prozess der ausgeführt wird
TIME = Wie lange der Befehl/Prozess schon ausgeführt wird

14. Kill [PID]

Hält den Prozess mit der angegebenen ID an.
Beispiel:
Code:
Tutorial-Maschine# kill 1246
Es erfolgt keine Ausgabe, es sei denn, der Prozess konnte nicht angehalten werden!

15. sh [Datei]

Führt die angegebene Datei aus(falls möglich)
Beispiel:
Code:
Tutorial-Maschine# sh start.sh
Es erfolgt eine Rückgabe, falls das Script/Programm ein Text ausgibt, andernfalls nicht!

16. top

Ähnlich wie ps, nur das die Prozesse interaktiv angezeigt werden und mehr Details verraten werden.
Beispiel:
Code:
Tutorial-Maschine# top
Ich gehe hierbei NICHT auf die Ausgabe ein, aber auf 3 Befehle in dem Programm
Code:
1. k [PID]
Fungiert wie der Kill Befehl
Code:
2. q
Beendet das Programm
Code:
3. h
Zeigt die Hilfe an


Das war es jetzt erstmal, ich werde später weitere Sachen hinzufügen(unter anderem die Shell-Programmierung. Zudem werde ich mich mehr auf Metin2 beziehen als bisher!)

MfG
TheMarv

PS: nen bisschen mehr als 6,900 Zeichen sollten fürs erste reichen :P
Sorry, falls das Copy&Pasten die Formatierung zerstört hat, ich habe das alles nicht in dem e*PvP Editor geschrieben, da man dort leicht den Überblick verliert & zudem funktionieren Tabs nicht :<
04/22/2013 17:07 Coniesan#2
ganz gute Befehle sind noch
Code:
whereis <paket>
Sucht nach einem Paket (z.B. whereis nano -> Pfad für den Nano Editor)
Code:
locate <datei/ordner>
Sucht nach einer Datei/Ordner usw und gibt die Pfade aus
Code:
df -h
Zeigt eure Festplatten Kapazitäten usw an
Code:
kill -9 <pid>
Killt einen Prozess, ohne auf eine Antwort dessen zu warten
Code:
killall -9 <prozess-name/id>
mit z.B. killall -9 game killt ihr alle Prozesse die über die game gestartet wurden, falls sich z.B. mehrere Cores aufhängen oder ihr einfach kein bock habt, zu warten, bis se sich runtergefahren haben ;)

EDIT:
wenn ihr genaueres über einen Befehl und dessen Syntax erfahren wollt:
Code:
man <Befehl>
als Beispiel man kill -> gibt euch alle Werte für kill aus und was sie bedeuten
04/22/2013 17:15 TheMarv :<#3
Quote:
Originally Posted by Coniesan View Post
ganz gute Befehle sind noch
Code:
whereis <paket>
Sucht nach einem Paket (z.B. whereis nano -> Pfad für den Nano Editor)
Code:
locate <datei/ordner>
Sucht nach einer Datei/Ordner usw und gibt die Pfade aus
Code:
df -h
Zeigt eure Festplatten Kapazitäten usw an
Code:
kill -9 <pid>
Killt einen Prozess, ohne auf eine Antwort dessen zu warten
Code:
killall -9 <prozess-name/id>
mit z.B. killall -9 game killt ihr alle Prozesse die über die game gestartet wurden, falls sich z.B. mehrere Cores aufhängen oder ihr einfach kein bock habt, zu warten, bis se sich runtergefahren haben ;)

EDIT:
wenn ihr genaueres über einen Befehl und dessen Syntax erfahren wollt:
Code:
man <Befehl>
als Beispiel man kill -> gibt euch alle Werte für kill aus und was sie bedeuten
Danke ^.^
Für locate muss man aber die whereis Datenbank updaten, dass hatte ich schon getestet. Ich füg das hinzu, wenn ich zuhause bin c:
04/22/2013 17:42 .Iscariot#4
Top! Danke :*

Es hilft sehr einmal ein ausführliches und verständliches TuT für nicht-pros zu lesen!

Mit freundlichen Grüßen Iscariot
04/22/2013 17:43 Retrograd#5
Habs nur überflogen aber ich wollte mich sowieso mit BSD beschäftigen
04/22/2013 17:53 .Hiяo#6
schönes ding marv :)
04/22/2013 21:53 ebert.tonna#7
Zum weiteren Verständis ist aber das Handbuch da.

[Only registered and activated users can see links. Click Here To Register...]
04/23/2013 00:38 .MaisKolben™#8
Danke Marv mein Nerdchen :D.
Super arbeit, sehr ausführlich und du hast einfach keine Hobbys :3.
Thankschen verdient :).

MfG