Tanelorn.net

Medien & Phantastik => Multimedia - Software & Betriebsysteme => Multimedia => Linux/Unix => Thema gestartet von: Bitpicker am 1.02.2007 | 13:38

Titel: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 1.02.2007 | 13:38
*Düstere Akkorde* :ctlu:

Der Alptraum der meisten Umsteiger heißt 'Befehlszeile'. Leicht entsteht der Eindruck, dass man bei Linux unglaublich viel von Hand machen muss, indem man obskure Befehle auf einer spartanischen Befehlszeile eingibt. Das schreckt manchen ab.

Zunächst mal sollte man sich vor Augen halten, dass das bei Windows früher nicht anders war. Bis Win ME einschließlich war Windows nur eine grafische Oberfläche für MS DOS - alte Hasen erinnern sich. Daran änderte auch die Tatsache nichts, dass man ab Win95 die grafische Oberfläche automatisch vorgesetzt bekam und sie nicht erst über die Eingabe von win.com an der Befehlszeile starten musste. Wer damals schon keine Befehlszeile brauchte, schrieb win.com einfach als letzte Zeile in seine autoexcec.bat und bekam die Oberfläche ebenfalls beim Booten automatisch.

Die Befehlszeile hat aber durchaus ihren Sinn, selbst unter Windows. Da heißt das Ding 'DOS Box' oder 'Eingabeaufforderung' und fristet sein Dasein irgendwo im Zubehör, läuft in einem kleinen Fensterchen und ist generell meist so bedeutungsvoll für die tägliche Arbeit wie Blinddarm und Mandeln für den Körper. Wie diese hat aber auch die Windows-Befehlszeile noch einen gewissen Sinn, wie wohl jeder nachvollziehen kann, der schon mal einen Rechner angepingt hat oder über ipconfig seine Netzwerkverbindung überprüft hat. Es würde mich zwar nicht wundern, wenn selbst für ping eine grafische Oberfläche existiert, aber nötig ist sie nicht.

Unter Linux ist die Befehlszeile wesentlich mächtiger und bedeutungsvoller. Es gibt fast nichts, was man damit nicht tun kann. Wenn man zum Beispiel eine CD mit Daten brennen will, kann man das mit dem Befehl cdrecord tun - wenn man Lust hat, drei Zeilen Parameter hinten dran zu hängen. In diesem Fall ist es natürlich einfacher, zu einem Programm wie xcdroast oder k3b zu greifen, die aus der grafischen Oberfläche heraus CDs brennen; aber sie tun das, indem sie cdrecord aufrufen. Die Oberflächen sind nichts anderes als grafische Eingabeformulare für die Befehlszeilenparameter, die man sonst von Hand eingegeben hätte; im Hintergrund sorgt das Befehlszeilenprogramm dafür, dass die CD tatsächlich gebrannt wird.

Es gibt also kein Linux ohne Befehlszeile; aber es gibt ein Leben mit Linux ohne Befehlszeile. Allen Unkenrufen zum Trotz glaube ich, dass ein Normalanwender täglich mit Linux arbeiten kann, ohne je eine Befehlszeile benutzen zu müssen. Aber es ist schön zu wissen, dass sie immer da ist und im Notfall benutzt werden kann. Manche Dinge gehen auf der Befehlszeile auch schneller; aber da treffen Geschwindigkeit und persönlicher Geschmack schon mal aufeinander.

Ein großer Vorteil der Befehlszeile ist ihre Verlässlichkeit. Wenn ein Linuxanwender ein Problem hat, weil irgend etwas nicht funktioniert, dann fragt er in einschlägigen Foren (oder nicht ganz so einschlägigen wie diesem) nach. Oft erhält er eine Antwort, die mit der Befehlszeile zu tun hat. Das liegt daran, dass man sich auf das Vorhandensein der Befehlszeile verlassen kann. Die grafischen Oberflächen können sich beträchtlich unterscheiden, ebenso die Distributionenund vor allem deren Konfigurations- und Software-Installationsprogramme. Ich kann einem SuSE-Benutzer nicht erklären, was mit seinem Yast falsch läuft, weil es Yast nur unter SuSE gibt; aber ich kann ihm erklären, wie er die Software, die er haben will, auf der Befehlszeile selbst kompiliert. Ich weiß vielleicht nicht genau, wie man einen Drucker unter KDE einrichtet, aber an der Befehlszeile kriege ich es womöglich hin.

Wenn bei normalen Distributionen von der Befehlszeile die Rede ist, dann ist das meist die bash. Bash heißt 'Bourne Again Shell', was ein Wortspiel ist, da es sich um einen Nachbau der altehrwürdigen und kostenpflichtigen Bourne-Shell handelt, die seinerzeit unter Unix eingesetzt wurde. 'Shell' bedeutet zunächst einmal 'Befehlsumgebung'. Unter DOS war das früher command.com. Dieser Befehl wurde automatisch gestartet und stellt solche Befehle wie copy zur Verfügung. Es gab unter DOS kein copy.com, copy war ein interner Befehl der Shell command.com. In der Bash heißt der gleiche Befehl cp. Unter DOS gab es auch externe Befehle, wie zum Beispiel xcopy.com. Auch für Linuxsysteme gibt es viele externe Befehle, die von der Shell ausgeführt werden können.

Ich sage 'es ist meist die Bash', weil das nicht sein muss. Es gibt sicher noch ein gutes Dutzend weitere Shells mit solchen namen wie csh, zsh usw., die sich für bestimmte Aufgaben besser eignen mögen als die bash; aber die meisten Distris, die keine Spezialaufgaben haben, verwenden bash, und viele Informationen für die eine Shell gelten auch auf anderen.

Dazu gleich mehr.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Monkey McPants am 1.02.2007 | 14:01
Sehr interessant. Irgendwie lustig das sich mein persönliches Interesse an Linux (das erst in den letzten Wochen so richtig angefangen hat) zeitlich so gut mit dem kollektiven Interesse einiger GroFaFoler trifft. ;D

Ich lese in diesem Channell auf jeden Fall gespannt weiter. ;)

M
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 1.02.2007 | 14:05
Wie kommt man jetzt zur Befehlszeile?

Die meisten Distributionen booten heutzutage in einen grafischen Loginmanager. Dort gibt man Benutzernamen und Passwort ein und ist in seiner grafischen Oberfläche. Das muss aber nicht sein; ich selbst verzichte z.B. auf grafische Loginmanager und boote immer erst auf eine Befehlszeile, von der aus ich den Desktop auswähle, der meiner Tagesform entspricht, sofern ich überhaupt einen brauche. Aber es führen noch andere Wege zur Befehlszeile.

Zunächst einmal ist Linux, da auf Unix basierend, schon immer ein Mehrbenutzersystem mit umfassender Netzwerkunterstützung gewesen. Ein Relikt aus der Zeit, als mehrere Benutzer mit Teletype-Geräten (http://en.wikipedia.org/wiki/Teletype) sich einen Rechner mit Prozessor teilten, ist die Konsole. Damals hingen eben mehrere dieser Tele-Schreibmaschinen an einem Unix-Rechner, jeweils an einer Konsole. An Monitore war da noch gar nicht gedacht. Diese Konsolen existieren bis heute: bei gebootetem Linux mit grafischer Oberfläche, drückt doch einfach mal Strg+Alt+F2 (oder F3, F4... F6) und ihr seht, wie die grafische Oberfläche verschwindet und durch eine Befehlszeile ersetzt wird, an der ein Login blinkt. Das ist eine Konsole, die folgerichtig als tty2, tty3 usw. bezeichnet wird. Keine Panik, mit Strg + F7 (selten F8, je nach Distri - Achtung, kein Alt notwendig beim Wechsel weg von Text-Konsolen) kommt ihr wieder zurück zur grafischen Oberfläche; die läuft nämlich in der Regel auf Konsole 7. Auf Konsole 1 (Strg+Alt+F1 aus der grafischen Oberfläche, sonst Strg+F1) findet ihr die Ausgaben eures X-Servers; von dieser Konsole aus wurde die grafische Oberfläche gestartet. Auf Konsolen 8 und höher findet ihr je nach Distri noch weitere Ausgaben.

Diese verschiedenen tty-Konsolen können jederzeit auch von verschiedenen Benutzern verwendet werden, selbst übers Netzwerk, und es ist auch möglich, weitere grafische Oberflächen von diesen Konsolen aus wiederum auf weiteren Konsolen zu starten, so dass man z.B. zwischen einer KDE- und einer Gnomeoberfläche im laufenden Betrieb hin und her wechseln kann.

Das wäre die erste Möglichkeit, an eine Konsole zu kommen, und ist auch ein schöner Rettungsanker, wenn die grafische Oberfläche einfriert; das sollte zwar eigentlich nicht passieren, aber es ist möglich, insbesondere, wenn man mit experimenteller Software wie 3D-Desktops rumspielt. Von einer Konsole aus kann ich ein grafisches Programm, das in meiner grafischen Oberfläche läuft und diese blockiert, mittels des kill-Befehls abschießen. Wenn ich dann auf die grafische Oberfläche zurückkehre, ist in der Regel alles wieder normal.

Natürlich gibt es auch Befehlszeilen im Fenster, sogenannte Terminals. (Ich will hier mal 'Konsole' und 'Terminal' in dieser Art trennen, obwohl tty eigentlich 'teletype terminal' heißen soll und die Befehlszeile im Fenster unter KDE 'Konsole' heißt. Die Begriffe sind austauschbar, aber hier trenne ich mal künstlich.)

Terminals sind, im Gegensatz zu den Konsolen, keine Funktionen des Betriebssystems, sondern eigenständige Programme. Wie meist unter Linux gibt es nicht nur eins, sondern ziemlich viele. Praktisch auf jedem System vorhanden ist xterm. Das ist das grundlegende Terminal, viele andere setzen sogar auf diesem auf und motzen es nur durch konfigurierende Startparameter auf. Es gibt aber noch eine Reihe weiterer Befehlszeilenprogramme wie das genannte 'Konsole' von KDE, das ähnlich prosaisch benannte 'Terminal' von XFce oder solche netten Spielereien wie quadkonsole, ein Programm, das gleich ein Carré aus vier Terminals öffnet, so dass man mit mehreren Befehlszeilen gleichzeitig rumspielen kann. Ja, so Leute gibt es... Mich zum Beispiel. Manche Terminals lassen auch den Betrieb mehrerer Befehlszeilen in unterschiedlichen Registern oder Tabs zu. Manche lassen sich leicht transparent schalten und ohne Fensterränder darstellen, so dass die Eingabezeile gleich auf den Desktop liegt. Es ist für jeden etwas dabei.

Gleich: jetzt habe ich das Ding, was mach ich jetzt damit?

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 1.02.2007 | 14:20
So, da prangt sie nun vor dir, die Befehlszeile. Da steht vorne dein Benutzername, daneben steht noch mehr Zeuch, und ein frecher Cursor blinkt da. Was nun?

Zunächst einmal eine frohe Botschaft: man kann sich das Lernen vieler Befehlszeilenprogramme sparen, wenn man den Midnight Commander benutzt. Aufgerufen wird er durch den Befehl mc, wenn er installiert ist, ansonsten würde ich empfehlen, das schnell nachzuholen. Allerdings weiß ich leider gerade bei Ubuntu nicht, wo er sich im Paketmanagement versteckt - aber das finde ich noch heraus. Bei anderen Distris sollte das kein Problem sein.

Der Midnight Commander ist ein Klon des alten Norton Commander, den der eine oder die andere vielleicht noch aus DOS-Zeiten kennt. Natürlich hat er mehr Funktionen, die man unter DOS nicht brauchte, z.B. zum Manipulieren von Benutzerinformationen. Ich benutze mc auch als Dateimanager, weil ich die Explorer-ähnlichen Dinger, die es sonst so gibt, eher lästig als nützlich finde, besonders beim Kopieren von Daten.

Der Midnight Commander kann mit tar.gz und bz2 Dateien umgehen, als wären es Verzeichnisse. Es ist also nicht notwendig, sich die Parameter für Befehle wie tar zu merken, die man braucht, um solche Archive zu benutzen. Man geht einfach auf einer Seite in das Archiv und markiert dort die auszupackenden Dateien, auf der anderen in das Zielverzeichnis, drückt die Funktionstaste für Kopieren, und schon werden die Dateien rüberkopiert. Markiert wird übrigens entweder durch die Einfügen-Taste, wenn die zu markierende Datei unterlegt ist, wodurch diese heller und fetter wird; oder durch die Plus-Taste auf dem Ziffernblock, wo eine Maske eingegeben werden kann. * steht hier für alle Dateien, */ für alle Verzeichnisse.

Der Midnight Commander kann natürlich auch Dateien verschieben, kopieren, löschen, umbennen (fürs Verschieben wird Umbenennen benutzt) usw. Er kann auch Dateiberechtigungen ändern, was das Erlernen von chmod unnötig macht, sowie Dateien und Verzeichnisse anderen Benutzern zuweisen (chown), was hilfreich ist, wenn man in seinem Heimatverzeichnis mal wieder irrtümlich als Root ein Verzeichnis angelegt hat und sich nun wundert, warum man damit nix mehr machen kann. (mc als Root starten, übers Menü Besitzer ändern, fertig).

Der Midnight Commander hat auch Editor-Funktionen, wenn auch nur einfache, aber für das Ändern von Einträgen in Konfigurationsdateien ist das völlig ausreichend. Kein Mensch muss sich mit vi, vim oder emacs rumschlagen, was m.E. die Hölle ist, wenn es nur darum geht, eine falsche Zeile in einer Konfigurationsdatei zu ändern.

Wer mit dem mc umgehen kann, dürfte um eine ganze Menge von Befehlszeilenberührungen herumkommen. Da es aber doch gelegentlich unvermeidlich ist, gleich mehr zu den Befehlen.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Dr.Boomslang am 1.02.2007 | 14:35
Sehr interessant. Das ist das tolle an Linux: Es ist das totale Chaos! ;D Jeder macht irgendwas oder sogar alles anders. Es ist schon interessant zu sehen wie andere damit arbeiten. Das mit dem Midnight Commander muss ich mal ausprobieren.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Gast am 1.02.2007 | 14:45
Der MidnightCommander ist mittlerweile auch Maussensitiv ;) Wobei Ich nicht sicher bin ob das nicht eher ein Feature von Putty ist... ::) Aber der MC ist das was Ich auf nem neuen Server nach der Auslieferung als erstes installiere und auch so mancher Kunde hat nach nem Supportcall mit Mir den MC auf der Kiste... ;)
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Ein am 1.02.2007 | 14:47
Jetzt frag ich mich natürlich, warum man auf der Shell arbeiten sollte, wenn man doch nur eine TUI benutzt... ::)
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Crazee am 1.02.2007 | 14:50
*Lauscher aufstellt*
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Gast am 1.02.2007 | 14:50
Jetzt frag ich mich natürlich, warum man auf der Shell arbeiten sollte, wenn man doch nur eine TUI benutzt... ::)

bei Fernadministration kann man NUR per SSH arbeiten. Auch gehen bestimmte Dinge nach einer Weile über die SSH einfach schneller ...
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Haukrinn am 1.02.2007 | 14:51
Kein Mensch muss sich mit vi, vim oder emacs rumschlagen, was m.E. die Hölle ist, wenn es nur darum geht, eine falsche Zeile in einer Konfigurationsdatei zu ändern.

Und jeder, der einmal gelernt hat, mit vim umzugehen kann sich nur noch darüber wundern, wie langsam und unproduktiv es sich mit anderen Editoren arbeitet...  ;)

@Midnight Commander: mc ist eins der wichtigsten Tools überhaupt. Er ist übersichtlich, schnell und IMHO gibt es nichts besseres, wenn es mal wieder an der Zeit ist, das eigene Homeverzeichnis zu ordnen.

Jetzt frag ich mich natürlich, warum man auf der Shell arbeiten sollte, wenn man doch nur eine TUI benutzt... ::)

Weil nun einmal nicht für jeden
find -maxdepth 3 -name "*.h" -exec fgrep -i -n --with-filename "void*" \{\} \;verständlich ist und es eine Weile dauert, bis man sich soweit ins skripten eingearbeitet hat, dass man Routineaufgaben auch problemlos automatisieren kann.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 1.02.2007 | 14:54
Linuxbefehle kommen häufig ziemlich unintuitiv daher. Eine Faustregel, nach der diese Befehle häufig benannt wurden, scheint die zu sein, dass man die ersten beiden Konsonanten des eigentlich gemeinten Befehls verwendet. Deshalb heißt cp copy, rm remove, ls list und ln link (ok, eigentlich 'create symlink', aber wie gesagt, es ist eine Faustregel).

Befehle können Parameter haben. Parameter erfüllen die Aufgabe, die in der grafischen Oberfläche in Einstellungsfenstern und Ankreuzfeldchen zu finden sind: sie sagen dem Befehl, was er eigentlich machen soll. cp alleine kopiert nichts; man muss dem Befehl zumindest mitteilen, was er kopieren soll und wohin.

Parameter kommen meist in zwei Arten vor: solchen, vor denen ein einzelner Bindestrich steht (-f) und solche, vor denen doppelte Bindestriche stehen (--compress). Wie ihr vielleicht schon ahnt, bedeutet ein einzelner Strich 'hier folgen Ein-Zeichen-Parameter', während der Doppelstrich bedeutet 'hier folgt ein Parameter in einer Art Klartext, weil ich mir keine Einzelbuchstaben merken kann und mag'. Hinter einem Einzelstrich ist also jeder Buchstabe ein eigener Parameter für sich.

tar -cvzf meinarchiv.tgz /home/meinverzeichnis

bedeutet also das Gleiche wie

tar -- compress --verbose --use-compress-program gzip --file meinarchiv.tgz /home/meinverzeichnis

was wiederum so viel heißt wie

Zitat
Liebes tape archive Programm, das nur so heißt, weil man früher Backups auf Bänder machen musste, nimm mein Verzeichnis /home/meinverzeichnis, packe es zusammen, benutze dafür gzip, stopfe es in die Datei meinarchiv.tgz und sag mir genau, was du da tust.

Eine Anmerkung zum letzten Teil (und dem --verbose Parameter): Befehlszeilenprogramme sind viel weniger redselig als ich. Meistens, wenn man sie ausführt, sagen sie nix, wenn das nicht ihre Aufgabe ist. ls, das einen Verzeichnisinhalt ausgeben soll, tut das natürlich, aber auf ökonomischste Weise. Andere Befehle halten einfach die Klappe, wenn sie erfolgreich abgelaufen sind. Das hängt noch mit den ttys von früher zusammen: wer will schon viel Papier und Zeit für 'Jau, das hat mal wieder sauber geklappt, herzlichen Glückwunsch zu dieser gekonnten Eingabe'-Ausgaben verschwenden.

Die meisten Befehle kommen aber mit einem Redeschwall-Parameter oder gleich mehreren von 'nickt'- bis zu 'fängt bei Adam und Eva an'-Qualität daher. Meist geht --verbose.

Genaues darüber, welche Parameter ein Befehl nun kennt, erfährt man auf mehrere Weisen. Die erste ist der Parameter -h oder --help, der meist eine kurze Liste möglicher Parameter für den jeweiligen Befehl ausgibt, also z.B.

mount -h

Wenn diese Liste nicht deutlich genug ist, kann man sich die Dokumentation des Befehls ansehen, die sogenannte manpage (Seite des Manuals, also Handbuchs). Dafür gibt es einen Befehl:

man mount

gibt die Handbuchseite für den Befehl mount aus.

Leider haben diese Handbuchseiten einen Nachteil: sie sind in der Regel von Gurus für Gurus geschrieben und listen daher Parameter und Funktionen nicht nach Wichtigkeit, sondern nach dem Alphabet auf. Das kann schon mal in fiese Sucherei ausarten. Alle manpages sind übrigens auch im Internet verfügbar, wer sich also eine ansehen will, kann auch auf Google z.B. man mount eingeben. Dabei ist die Formatierung auf HTML-Seiten sogar meist augenfreundlicher.

Bei Befehlen, die zwingend Parameter erwarten, führt übrigens oft auch die Eingabe des Befehlsnamens ohne Parameter zur Ausgabe von Hilfsinformationen.

Es gibt noch weitere Befehle, die wie man Informationen über andere Befehle bereithalten:

apropos samba

durchsucht alle Manpages nach Informationen zu samba und gibt eine kommentierte Liste der Manpages aus, die was mit samba zu tun haben.

info mount

gibt eine hypertext-formatierte alternative Manpage für mount aus, sofern sie für diesen Befehl auf diesem System existiert, ansonsten bekommt man eine allgemeine Infodatei angezeigt.

whatis mount

gibt Kurzbeschreibungen aus den manpages, die mit mount zu tun haben, aus.

Gleich: weitere interessante Befehle.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 1.02.2007 | 14:57
@ Axx: mc ist maussensitiv, wenn ncurses installiert ist.

@ Haukrinn: für Einsteiger ist das Einarbeiten in vim, wenn es darum geht, mal ein Zeichen in eine Textdatei zu packen, m.E. etwas viel. Natürlich ist vim trotzdem komfortabler als der mc-Editor. Ich selbst benutze derzeit meist nano. Jedem das Seine und mir das Meiste! ;)

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 1.02.2007 | 15:31
Hier nun ein paar weitere Befehle ohne Vortäuschung der Vollständigkeit und ohne lange Parameterlisten, wie ihr da dran kommt, habt ihr ja eben gelernt.

su

Dieser Befehl heißt, je nachdem, wen man fragt, substitute user, switch user oder superuser. Die ersten beiden sind sachlich richtig: man wechselt damit den Benutzer. Gibt man als Parameter den Namen eines anderen Benutzers an, dann kannn man dieser Benutzer werden, wenn man anschließend dessen Passwort eingeben kann. Gibt man keinen Namen an, dann wird man zu Root (Passwort vorausgesetzt), also dem Systemadministrator, der alles darf, auch zerstören. Daher auch die Interpretation 'superuser' weil das eine häufige Anwendung ist.

Wenn man den Parameter -c verwendet, kann man sich das Hemd des anderen Benutzers für einen Befehl anziehen, der in Anführungsstrichen auf den Parameter folgt. Nach Abarbeitung des Befehls ist man automatisch wieder der alte. Beispiel:

su -c "shutdown -h now"

fährt das System herunter, was der normale Benutzer in der Regel nicht darf, jedenfalls nicht von der Komandozeile aus. Die Anführungsstriche sind notwendig, damit su weiß, dass die darin enthaltenen Parameter nicht für su bestimmt sind, sondern in diesem Fall für 'shutdown' (-h steht übrigens für 'Computer anhalten', also abschalten, und die Anweisung now ist wohl deutlich; man kann dem System nämlich auch mitteilen, dass es erst pünktlich zum Abendessen oder nächste Woche runterfahren soll).

Nicht nur für Ubuntu-Benutzer interessant ist in diesem Zusammenhang der Befehl

sudo

Dieser Befehl bedeutet 'mach das als Superuser'. 'Das' ist dabei ein Befehl, der im Parameter übergeben wird. Aber nicht jeder User darf mit sudo arbeiten, das dürfen nur User, die in die Gruppe 'wheel' eingetragen sind. Für sudo existiert eine Datei sudoers (meist in /etc), in der genau aufgeschlüsselt werden kann, welcher sudo-Benutzer welche Root-Befehle ausführen darf, ob er dafür ein Passwort eingeben muss oder nicht usw. Interessierte verweise ich auf die manpage.

In Ubuntu braucht man dauernd sudo und nie su, außer als

sudo su

welches einem Benutzer für eine gewisse Zeit Root-Rechte einräumt. Das liegt daran, dass der Root-User unter Ubuntu im Gegensatz zu anderen Distris deaktiviert ist und der Erstbenutzer (und später angelegte, sofern sie in wheel stehen) über sudo an die wichtigen Root-Befehle darf.

Wer im Kapitel über mc aufgepasst hat, weiß, dassman viele Dinge mit Dateien in mc anstellen kann, aber eins kann man nicht: neue Dateien erstellen. Außer, man kopiert eine Datei, gibt ihr dabei einen neuen Namen und löscht dann ihren Inhalt. Zum Erstellen einer jungfräulichen Datei aus dem Nichts gibt es folgenden Befehl:

touch Datei

was direkt an die Erschaffung Adams durch Gott in der sixtinischen Kapelle erinnert. Touch erstellt im aktuellen Verzeichnis die genannte Datei. Sie ist leer und kann anschließend mit dem Editor eures Vertrauens mit Inhalt gefüllt werden. Natürlich können andere Editoren wie vim, nano usw. auch einfach gestartet und mit Inhalt gefüllt werden und den Inhalt dann in eine neu anzulegende Datei schreiben, das kann der mc-Editor eben kurioserweise nicht.

Der Befehl

ls

listet den Inhalt des aktuellen Verzeichnisses oder den Inhalt des im Parameter angegebenen Verzeichnisses auf, ist also die Entsprechung zu 'dir' unter DOS. Nützlich ist der Parameter -l (kleines L), der zusätzliche Infos zu den Dateien ausspuckt.

mount

ist der Befehl, mit dem man Laufwerke, USB-Sticks, CD usw. ins Dateisystem einhängt, wenn die Automatik versagt oder man sich die Installation der Automatik versagt. ;) Wenn das Laufwerk aus irgend einem Grund bereits in der Liste der bekannten Laufwerke steht (/etc/fstab), kann es einfach gemeountet werden, indem die Devicedatei oder der Mountpunkt, also das Verzeichnis, wo man den Datenträger hinhaben will, im Parameter angibt, und zwar so, wie diese in der fstab stehen:

mount /dev/hda1
mount /mnt/win98

tun auf meinem System dasselbe, sie nehmen nämlich meine Windows 98 Partition und hängen sie im Verzeichnis /mnt/win98 ein (was aber beim Booten sowieso passiert).

Übrigens kann man fstab (Liste der einhängbaren Dateisysteme) und mtab (Liste der eingehängten Dateisysteme) vergleichen, um zu schauen, ob ein Dateisystem nun drin ist oder nicht.

Ist das Dateisystem des einzuhängenden Laufwerks nun nicht in der fstab, muss man genauere Angaben machen. Weiteres dazu steht in der manpage, im Falle des Windows-Laufwerkes wäre z.B.

mount -t vfat /dev/hda1 /mnt/win98

notwendig.


Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Jens am 1.02.2007 | 15:44
Ui, ich finde Befehlszeilen immer gut. Weil ich früher immer so gern mit command.com und batch-Dateien gearbeitet habe :)
Und unter der Befehlszeile in Windows gibts auch das eine oder andere Tool, dass sich über das GUI nicht erreichen lässt - cipher zum Beispiel wenns darum geht, Spuren zu verwischen.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 1.02.2007 | 16:20
Verzeichnisse wechselt man wie unter DOS mit

cd /Pfad

Der Befehl
top

listet alle derzeit laufenden Programme auf. Ich empfehle aber stattdessen die Installation des Programms htop, welches diese Auflistung in bunt in einer mc-ähnlichen Oberfläche mit dauernder Aktualisierung vornimmt. Das Schöne daran ist, dass man in htop auch auf die vielen Optionen des Befehls 'kill' zugreifen kann, ohne sich mit diesem Befehl auseinandersetzen zu müssen.

Den Befehl kill brauche ich also nicht aufzuführen; innerhalb einer funktionsfähigen grafischen Oberfläche gibt es aber die Möglichkeit, über ein Terminal xkill aufzurufen, wenn ein grafisches Programm hängt, ohne dabei die ganze Oberfläche zu blockieren; dann wird der Cursor zum Totenkopf und das Programm, auf dessen Fenster man als nächstes klickt, wird gekillt.

Ähnlich wie top listet

ps

alle derzeit laufenden Prozesse auf. Da gibt es viele, viele Parameter...

reboot

ist ein Root-Befehl, der genau das ausführt, was er besagt, während

reset

das aktuelle Terminal in den Ausgangszustand versetzt. Normale Anwender verwenden zum Löschen des Konsolen- oder Terminalinhalts das dem DOS-Befehl cls entsprechende

clear

Eben habe ich Schussel noch

umount /mnt/win98

vergessen, welches mein als Beispiel genanntes Windows 98-System wieder aushängen würde. Es ist eines der ungelösten Rätsel der Linuxwelt, warum das Ding nicht einfach unmount heißt. Sparwut kann auch zu weit führen...

Sehr schön ist der Befehl alias. Man gibt ihn allerdings nur selten ein. Er dient dazu, lange Befehlszeilen handlich zu machen. Ich habe beispielsweise ein Befehlszeilenprogramm namens rdiff-backup, welches ich benutze, um von meinem gesamten System ein Backup zu machen; dabei hat dieses Programm eine lange Liste von Parametern mit Verzeichnissen wie /sys, /proc und /tmp, die zu sichern Blödsinn wäre, und die deshalb über diese Parameter ausgeklammert werden. Das jedes Mal einzutippen, wäre viel Arbeit. Stattdessen habe ich in der Datei .bashrc ein Alias definiert, einfach mit:

alias backup=rdiff-backup und-der-ganze-Rattenschwanz-von-Parametern

Jetzt muss ich nur noch backup eingeben, und das Ding wird abgearbeitet. Weil die Zuweisung in der .bashrc steht, liegt dieses Alias nach jedem neuen Login wieder vor, wäre ja sonst auch blöd.

Aliasse können sogar andere Aliasse enthalten, so dass bei mir z.B. der Befehl sysup mittlerweile alte Backup-Inkremente löscht, über backup das genannte Backup macht, Gentoo-Overlays aktualisiert, Portage aktualisiert und ein systemweites Upgrade anstößt, das ich nur noch akzeptieren oder verwerfen muss. Nein, das muss euch alles nichts sagen... ;)

Wer aber z.B. vom DOS-Befehl 'dir' nicht loskommt, kann ihn durch ein einfaches

alias dir=ls

zum Linuxbefehl machen. In meinem Buch über Konsolenbefehle steht 'dir' sogar drin, aber ich bin ziemlich sicher, dass das kein Standardbefehl ist...

Alias alleine zeigt euch übrigens die Liste der für den aktuellen Benutzer definierten Aliasse an.

Den Inhalt einer Datei ohen Editor recht komfortabel anzeigen kann man mit

less Dateiname

wobei das ein Wortspiel auf 'more' ist, einen anderen Befehl, der das Gleiche tut, aber weniger kann. Ja, das Linuxvölkchen besteht schon aus Scherzkeksen.

Eine Konsole oder ein Terminal bzw. eine Identität als anderer Benutzer verlässt man mit dem Befehl

exit

Ein Terminal kann man natürlich auch einfach übers X am Fenster schließen. Auch der Befehl 'logout' kann verwendet werden.

Hilfreich ist auch der Befehl 'tail', z.B. in der Form

tail -f /var/log/messages

Dieser Befehl zeigt nämlich das Ende (den Schwanz, tail) der genannten Datei an, und dank des Parameters -f (follow) wird diese Anzeige auch aktualisiert. Systemmeldungen bzgl. von Ereignissen, die vor kurzem im Betriebssystem aufgetreten sind oder ab Eingabe dieses Befehls auftreten, kann man so bequem verfolgen, was bei der Fehlersuche hilfreich ist. Man verlässt diese Anzeige wie auch die vieler anderer dauerhaft laufender Befehle mit Strg + C. Manche Befehle wie z.B. 'man' und 'less', die auf Editorfunktionen aufsetzen, beendet man mit q. (Oh je, was für ein Durcheinander das hier wird...)

So, ich würde sagen, dass das alle Befehlszeilenbefehle sind, die ich selbst öfter mal benutze und für allgemein recht wichtig halte, die man aber nicht durch mc umgehen kann. Es gibt natürlich noch sehr viel mehr, und nicht zuletzt gibt es eine Menge von Befehlen und Programmen, Skripten usw., die ebenfalls sehr nützlich sind. Ein Beispiel dafür ist locate, welches man benutzen kann, um blitzschnell (weil es eine Datenbank verwendet) eine Datei im Dateisystem zu suchen.


Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Dom am 1.02.2007 | 18:04
Vielleicht eine kleine Ergänzung: Dieser ganze Befehlszeilen-Krempel, den Robin hier so toll aufführt, geht (fast) 1:1 auch unter Mac OS X, da das auch ein auf Unix basierendes Betriebssystem ist. Dabei gilt auch das gleiche, wie unter Ubuntu: Der root-User hat normalerweise kein Passwort.
Dom
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 1.02.2007 | 18:32
Mir fällt auch noch was ein: Nehmen wir mal an, die grafische Oberfläche klappt nicht mehr, aber das System bootet noch. Es gibt textbasierte Befehlszeilenbrowser, so dass man zumindest rudimentär im Internet surfen kann und dort Hilfe suchen kann. Die Dinger heißen lynx oder links (es gibt beides), und wer Schmerzen mag, kann ja mal mit so einem Ding ins Internet gehen, damit er im Ernstfall weiß, was zu tun ist.

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 3.02.2007 | 16:01
Abseits von Befehlen gibt es noch ein paar schöne Features der Befehlszeile, auf die ich hinweisen möchte.

1. Verlauf

Die Befehlszeile besitzt einen Verlaufsspeicher, das heißt, sie merkt sich abgearbeitete Befehle, sogar über Rechner-Neustarts hinweg. Das gilt oft auch für solche Befehls-Eingabefelder in grafischen Oberflächen, wie man sie z.B. in diesem XFce-Screenshot (http://www.nyboria.de/images/gentoo_3.jpg) unten im Panel links von dem Notizblock sieht. Mit der Pfeiltaste nach oben blättert man in der Konsole in der Verlaufsliste zurück, mit Pfeil nach unten vor (wenn man schon etwas zurückgeblättert hat; zukünftige Befehle erahnen kann Linux derzeit noch nicht. ;) ). Die Befehle sind natürlich editierbar, und zwar nicht nur, wie bei DOS oder der Win-Eingabeaufforderung, durch Löschung von hinten.

2. Auto-Vervollständigung

Durch Druck auf die Tabulatortaste kann die Befehlszeile Teile von Pfadangaben automatisch ergänzen. Statt also lange Pfade einzugeben, kann man immer dann den Tabulator drücken, wenn die bereits eingegebenen Buchstaben eindeutig sind. Sind sie noch nicht eindeutig, weil mindestens zwei Verzeichnisse oder Dateien gemeint sein können, bringt ein zweiter Druck auf die Tabulatortaste eine Liste aller Möglichkeiten zur Anzeige, so dass man die weiteren Buchstaben des gewünschten Pfades eingeben kann, bis der Pfad eindeutig wird. Wenn zwei Verzeichnisse oder Dateinamen weitgehend übereinstimmen, ergänzt die Vervollständigung alle Zeichen bis zu dem Punkt, wo die Namen divergieren.

3. Einen länger dauernden Befehl eingeben und sofort an der Zeile weitermachen; Befehle verketten

Wenn an der Befehlszeile ein Befehl eingegeben wird, dessen Abarbeitung länger dauert (z.B. der Start eines grafischen Programms, für das aus irgend einem Grund kein Icon zur Verfügung steht), dann ist diese Befehlszeile normalerweise nicht mehr verfügbar, solange das Programm läuft (andere Terminals und Konsolen sind davon nicht betroffen, nur die, wo der Befehl gestartet wurde). Um das zu vermeiden, wird nach dem Befehl ein & nach einem Freizeichen eingegeben, also z.B.

firefox &

Dies würde den Browser Firefox starten, sofern eine grafische Oberfläche verfügbar ist, und anschließend die Kommandozeile wieder freigeben. Fehlt das &, werden an der Befehlszeile, von der aus Firefox gestartet wurde, sämtliche Fehlermeldungen und Hinweise ausgegeben, die Firefox so von sich gibt und die beim Start über ein Icon normalerweise im Nirvana verschwinden.

In beiden Fällen gilt, dass ein Schließen der Befehlszeile auch sämtliche von dort gestarteten Programme schließt!

Mit && kann man mehrere Befehle gleich miteinander verketten. Der -relativ unsinnige- Befehl

cd /etc && ls /etc

wechselt zuerst in das Verzeichnis /etc und listet dann den Inhalt des Verzeichnisses auf (was ohne den Wechsel aber auch funktioniert hätte).

Robin


Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Haukrinn am 3.02.2007 | 19:18
Kurze Ergänzung von mir dazu:

1. Verlauf
2. Auto-Vervollständigung

Verlauf und Autovervollständigung beherrscht das Windowsbefehlsfenster mittlerweile auch, ebenso die etwas komfortablere Editierfunktion. Was oft ganz praktisch ist, ist die Suchfunktion der bash-Shell unter Linux. Mittels strg-R bzw. strg-S kommt ihr in den incremental search mode, wo ihr wie in einem modernen Suchendialog alte Befehle eingeben könnt, die dann in der History der Shell gesucht werden. Praktischerweise geschieht dies bereits, während ihr tippt.

3. Einen länger dauernden Befehl eingeben und sofort an der Zeile weitermachen; Befehle verketten
[...]
Fehlt das &, werden an der Befehlszeile, von der aus Firefox gestartet wurde, sämtliche Fehlermeldungen und Hinweise ausgegeben.

Die Ausgabe passiert auch, wenn ihr das &-Zeichen verwendet. Die einzige Bedeutung des Ganzen ist, daß ihr das Programm nicht im Vordergrund (d.h. als einzig aktive Applikation, die die Shell blockiert) ausführt, sondern im Hintergrund. Natürlich könnt ihr Prozesse auch nach dem Starten wieder in den Vordergrund holen. Dazu dient das Kommando fg. Ihr könnt Vordergrundprozesse auch mittels Strg-Z anhalten und dann mit dem Kommando bg in den Hintergrund verschieben.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Gast am 3.02.2007 | 20:19
uptimegibt an wie lange das System schon läuft, und wie die durchschnittliche Auslastung in dieser Zeit war.

Beispiel unser Server:

p15196047:~ # uptime
  8:09pm  up 6 days  2:19,  1 user,  load average: 0.65, 0.39, 0.26

Der erste Wert gibt die aktuelle Uhrzeit an
"up" gibt an wie lange das System seit dem letzten reboot läuft.
"load average" gibt die durchschnittlichen Lastwerte in % an.

So lange load average <=1 ist, ist soweit alles OK. Geht dieser Wert dauerhaft über 1 ist es grenzwertig, da die Maschine dann mehr als 100% Leistung bringen muss; geht der Wert sogar auf ein vielfaches von 1, ist die Maschine eindeutig überlastet. Auf Dauer verringert dies die Lebenserwartung der Hardware.

Abhilfe kann hier neue, leistungsstärkere Hardware bringen, oder auch eine Optimierung der laufenden Prozesse. Wobei letzteres ohne profunde Kenntnisse der Materie eher schwierig zu erreichen sein dürfte.

Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Gast am 3.02.2007 | 20:28
fdisk -l
gibt eine Liste der Partitionen bzw. devices aus und zeigt deren Start- und Endpunkt sowie die Anzahl der Blocks und das verwendete System sowie eine weitere Reihe von Informationen über die Festplatte (genauere Erklärung hab Ich hier nicht, die Moderation darf hier gerne ran ;) )

Wieder am Beispiel Fantahost:

p15196047:~ # fdisk -l

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          63      506016   83  Linux
/dev/sda2              64         307     1959930   82  Linux swap / Solaris
/dev/sda4             308        9729    75682215    5  Extended
/dev/sda5             308         916     4891761   83  Linux
/dev/sda6             917        1525     4891761   83  Linux
/dev/sda7            1526        9729    65898598+  83  Linux

Disk /dev/sdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table (diese Meldung wird durch das RAID1-Array verursacht. Der Server hat zwei Platten, /dev/sda und /dev/sdb, die beide zusammen EINE Festplatte bilden, d.h. eine Master- und eine Mirror-device. Fällt eine davon aus, sind die Daten noch auf der anderen und können ggf. auf eine neue Platte synchronisiert werden)

df -hgibt eine Auflistung der, hm, Mountpoints? und deren Belegung an, d.h. man sieht wohin die devices gemounted sind und wieviel Platz auf diesen belegt ist.

Wieder am Beispiel Fantahost:

p15196047:~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             479M  187M  268M  42% /
tmpfs                 501M     0  501M   0% /dev/shm
/dev/sda5             4.7G  1.4G  3.3G  31% /usr
/dev/sda6             4.7G  2.9G  1.8G  62% /var
/dev/sda7              63G   24G   40G  38% /home
none                  501M     0  501M   0% /tmp

Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Gast am 3.02.2007 | 20:31
Ich empfehle aber stattdessen die Installation des Programms htop, welches diese Auflistung in bunt in einer mc-ähnlichen Oberfläche mit dauernder Aktualisierung vornimmt. Das Schöne daran ist, dass man in htop auch auf die vielen Optionen des Befehls 'kill' zugreifen kann, ohne sich mit diesem Befehl auseinandersetzen zu müssen.

Den Befehl kill brauche ich also nicht aufzuführen; innerhalb einer funktionsfähigen grafischen Oberfläche gibt es aber die Möglichkeit, über ein Terminal xkill aufzurufen, wenn ein grafisches Programm hängt, ohne dabei die ganze Oberfläche zu blockieren; dann wird der Cursor zum Totenkopf und das Programm, auf dessen Fenster man als nächstes klickt, wird gekillt.

gerade eben mal gezogen und installiert:

SEHR. GEIL. UND. SEHR. NÜTZLICHST! :d
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 5.02.2007 | 10:16
Hier noch ein Tipp für die Bash:

So wie die Variable PATH (ansehen mit 'echo $PATH') die Verzeichnisse enthält, in denen Linux nach Befehlen suchen soll, gibt es auch eine Variable CDPATH, die Verzeichnisse enthält, in denen der Befehl CD nach Verzeichnissen suchen soll.

Praxisbeispiel:

Ich habe ein Verzeichnis /var/log/portage/elog, in das bei Installationen von Paketen unter Gentoo Meldungen aller Pakete geschrieben werden. Normalerweise würde ich mit folgender Zeile in dieses Verzeichnis wechseln:

cd /var/log/portage/elog

Stattdessen habe ich in die Datei .bashrc im Homeverzeichnis des Root-Users (weil dieses Verzeichnis nur für Root interessant ist; andere User können die gleichnamige Datei in ihrem eigenen Userverzeichnis verwenden) folgende Zeile eingesetzt:

export CDPATH=.:/var/log/portage

Bei jedem weiteren Login von Root wird diese Variable nun gesetzt. Gebe ich nun an einer Befehlszeile irgendwo im Dateisystem 'cd elog' ein, lande ich in dem oben angeführten Verzeichnis, weil 'elog' im aktuellen Verzeichnis (der Punkt hinter dem Gleichheitszeichen) und anschließend in /var/log/portage gesucht wird.

Bei der Formulierung der export-Anweisung ist darauf zu achten, dass . wirklich so angegeben wird, sonst verlernt cd das Suchen im aktuellen Verzeichnis. Es können beliebig viele Verzeichnisse angegeben werden, die jeweils mit : voneinander zu trennen sind. Ein /home/username oder einfach ~ macht z.B. alle Verzeichnisse im eigenen Home-Verzeichnis direkt anspringbar.

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Xardok am 14.02.2007 | 16:02
Ich mach gerade meine ersten Schrittchen mit der Befehlszeile und habe dabei diese Zusammenfassung (http://cip.iam.uni-bonn.de/unix-refcard.pdf) auf der Seite meines Instituts gefunden. Ich find die gerade recht hilfreich, deswegen wollte ich sie mal nicht der weiten Welt vorenthalten.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Haukrinn am 14.02.2007 | 16:09
Oh ja, nett.  :)

Beim Zentralinstitut für Mathematik des Forschungszentrums Jülich (http://www.fz-juelich.de/zam/docs/rfk_d.html) gibt es noch viel, viel mehr davon (man beachte auch die anderen Menüpunkte für Betriebshandbücher und Technische Kurzinformationen):
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 20.02.2007 | 15:01
Habe eben eine englische Seite gefunden (http://searchopensource.techtarget.com/tip/0,289483,sid39_gci1244256,00.html), die interessante Informationen über den Befehl dd bereithält. Ich fasse mal zusammen:

dd ist ein Befehl für bitweises und blockweises Kopieren von Informationen. Es macht also nicht bloß eine Kopie von Daten, sondern von Bits oder Blocks. Dafür gibt es einige interessante Anwendungen:

dd if=/dev/sda of=/dev/sdb

Dieser einfache Befehl macht das, was unter Windows leicht viel Geld kostet, nämlich eine Klon-Kopie der Festplatte sda (SATA oder SCSI-Platte, bei IDE wäre es hda) auf Festplatte sdb. 'If' steht für input file', 'of' für 'output file' (wie oben gesagt, für Linux ist alles eine Datei). So leicht kann man ein komplettes Backup unter Linux erstellen.

dd if=/dev/cdrom of=/tmp/cdrom.iso

Hier geschieht etwas Ähnliches: vom Datenträger im Laufwerk /dev/cdrom wird eine Iso-Datei geschrieben, die man anschließend z.B. mit einem Brennprogramm auf einen CD- oder DVD-Rohling schreiben kann. Gut, man kann auch die Kopierfunktion des Brennprogramms benutzen, aber diese Iso-Datei kann außerdem auch als Laufwerk eingebunden und benutzt werden:

mount -o loop /tmp/cdrom.iso /mnt/meinecd

Vorausgesetzt, dass man zuvor das Verzeichnis /mnt/meinecd angelegt hat, wird der Inhalt der Iso-Datei an dieser Stelle des Verzeichnisbaumes eingeblendet und kann einfach benutzt werden.

dd if=/dev/sda of=/boot/mbr_backup bs=512 count=1

Dieser Befehl macht eine Sicherungskopie des Bootsektors der Platte. Durch das Vertauschen von if und of-Dateien kann er zurückgeschrieben werden. Außerdem wird die Zahl 512 auf 446 verringert, um die in den letzten Bytes liegende Partitionstabelle nicht zu überschreiben, die sich ja zwischenzeitlich geändert haben könnte:

dd if=/boot/mbr_backup of=/dev/sda bs=446 count=1

Denkbar wäre z.B. auch für Windows-Benutzer die Verwendung eines bootfähigen Linuxsystems auf USB-Stick, das per dd den Bootsektor von Windows auf den Stick sichert, und falls mal etwas mit dem Windows-Bootsektor geschieht, kann er einfach von diesem Stick aus zurückgesichert werden.

Für Interessierte gibt es auf der oben genannten englischen Seite noch eine Möglichkeit, mit dd den Auslagerungsplatz im laufenden Betrieb zu erweitern.

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Dom am 20.02.2007 | 16:09
Zitat
Denkbar wäre z.B. auch für Windows-Benutzer die Verwendung eines bootfähigen Linuxsystems auf USB-Stick, das per dd den Bootsektor von Windows auf den Stick sichert, und falls mal etwas mit dem Windows-Bootsektor geschieht, kann er einfach von diesem Stick aus zurückgesichert werden.
Ein ergänzender Tipp von mir: Ich habe mit dd nach der Windows-Installation (nachdem ich alle Treiber und Standard-Programmchen mit drauf gepackt hatte) ein Image erstellt, das gepackt und auf eine DVD gebrannt. Damit kann ich dann problemlos innerhalb von unter einer Stunde eine Windows-Neuinstallation machen, bei der dann schon alles wichtige mit drauf ist.

Dom
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Gast am 20.02.2007 | 16:19
Ja, brauchbar :d

Ahm, wie kann Ich diese Postscriptfiles, ähm, lesen!?

Hab da in der Datei von Xardok entsprechende Befehle entdeckt ;) :d
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 20.02.2007 | 16:20
Was für Postscript Files?

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Gast am 20.02.2007 | 16:26
Die Files die man hier findet:

Zentralinstitut für Mathematik des Forschungszentrums Jülich (http://www.fz-juelich.de/zam/docs/rfk_d.html)

entsprechende Befehle zum umwandeln von PS in PDF gibts dann hierdrin:

diese Zusammenfassung (http://cip.iam.uni-bonn.de/unix-refcard.pdf)


Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 20.02.2007 | 16:38
Ach so, ich dachte, es ging um die heute geposteten Beiträge...

Ghostview kann, soweit ich weiß, PS-Dateien anzeigen.

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Xardok am 21.03.2007 | 17:59
Ich hab nochmal eine Frage zu dem dd...

Was genau geschieht dabei? Wird wirklich jedes Byte der partition kopiert oder nur die wirklich benutzten (sprich die die in irgendwelchen Tabellen eingetragen sind)..

Hintergrund der Frage ist folgender:
Da ich mittlerweile mit Linux ganz gut klar komme habe ich überlegt meine Windows Partition einzumotten, damit ich aber falls ich dann doch etwas machen möchte wofür ich Windows brauche nicht jedesmal alles neu installieren will, habe ich überlegt mein Windows in einen Zustand zu versetzen in dem es schön und aufgeräumt ist und es so einzumotten und extern auf einer Festplatte abzuspeichern.

Kann ich wenn ich dies mittles dd getan habe die Partition (NTFS) auch killen und was auch immer damit machen und wenn ich mein Windows dann wieder brauche einfach eine NTFS Parition (die allerdings dann vlt an anderer Stelle auf der Festplatte liegt) erstellen und das Backup dahin zurück spielen?
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 21.03.2007 | 20:08
Da wage ich nicht, 'ja' zu sagen... ;) Ich würde zwar annehmen, dass das geht, aber bei Windows bin ich mir nie sicher. Ich will's nachher nicht Schuld sein.

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Boba Fett am 21.03.2007 | 20:18
Soweit ich weiss kopiert dd auch die (absichtlich fälschlich) als defekt markierten cluster in denen einige softwaresysteme ihre Lizenzfreischaltungen verstecken...
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Dom am 21.03.2007 | 20:41
@Xardok:
Ein ergänzender Tipp von mir: Ich habe mit dd nach der Windows-Installation (nachdem ich alle Treiber und Standard-Programmchen mit drauf gepackt hatte) ein Image erstellt, das gepackt und auf eine DVD gebrannt. Damit kann ich dann problemlos innerhalb von unter einer Stunde eine Windows-Neuinstallation machen, bei der dann schon alles wichtige mit drauf ist.

Das meinst du doch, oder? Ich hab damit gute Erfahrung.

Dom
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Wodisch am 21.03.2007 | 23:05
Das Problem werden eher die "echten" kaputten Sektoren - dann bricht "dd" nämlich ab!
Und macht auch nicht weiter!
Für Xardoks Zwecke würde ich lieber "partimage (http://www.partimage.org)" nehmen, das leistet genau das Sichern und Wiederherstellen von Partitionen!
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Xardok am 22.03.2007 | 15:46
@Dom
Im Grunde genommen meine ich, das was du schon praktizierst (dadurch bin ich eigentlich auch nur auf die Idee gekommen das mit dd zu machen)
Allerdings bin ich mir sehr unsicher was der Befehl eigentlich genau macht (auf der Seite von partimage steht übrigens, dass auch die leeren Blöcke kopiert werden).
Deswegen kann ich schlecht beurteilen was geschieht wenn man eine NTFS festplatte auf die Art und Weise sichern möchte...
So weiß ich zum Beispiel nicht ob dd überhaupt auf NTFS Platten schreiben kann oder ob ihn das file-system überhaupt nicht interessiert, da er eh nur stupide die einzelnen Bits kopiert.
Außerdem würde ich ja gerne die NTFS Partition zwischenzeitig formatieren...
Aber vermutlich sind das zu spezielle Fragen und ich sollte mich damit mal auf die Suche in den weiten des Internets begeben..

@Wodisch
Ich werd mal versuchen mit partimage ein Abbild zu erstellen, allerdings steht da bei NTFS noch ein "experimental" daneben ;D

Und dann noch eine Frage: Wie muss ich wenn ich mein Windows dann runterschmeiße meinen Bootsektor anpassen? Bzw meine Einstellungen im Grub?
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 22.03.2007 | 16:37
Am Bootsektor machst du nichts, und den Eintrag für Windows schmeißt du aus der grub.conf (manchmal auch menu.lst oder so) in /boot oder /boot/grub einfach raus.

Das Dateisystem ist Sache des Betriebssystems, ob und wie es gesichert werden kann, ist also eher eine Frage des Kernels als deiner Software. Bei bitweisem Kopieren sollte das Dateisystem aber meiner Meinung nach egal sein.

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Wodisch am 22.03.2007 | 22:15
Mit "partimage" sichere und restauriere ich NT4, W2K und WXP (neben diversen Linuxen) seit Jahren - das "experimental" überlebt den Alltagseinsatz bei mir bisher...
:d
Und weil es den Bootsektor mitsichert und auch wieder herstellen kann, sehe ich da auch keine Probleme.
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Xardok am 23.03.2007 | 11:40
Dann werd ich das mal ausprobieren..
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 24.03.2007 | 20:11
Noch 'ne Lösung, soeben im PC Magazin Linux gefunden: ntfsclone. Dieses Kommandozeilenprogramm hat den Vorteil, dass es keine leeren Blöcke mitsichert. Als Beispiel für die Sicherung der Partition /dev/hda1 in eine Datei hda1.ntfs wird folgende Eingabe genannt:

ntfsclone -s -o hda1.ntfs /dev/hda1

Das könnte sogar eine gute Lösung sein, wenn man Platz für ein Linux schaffen will, die Windows-Partition aber nicht verkleinert bekommt, weil irgendwelche Daten in der Nähe des Endes rumgammeln. Einfach klonen, löschen, zurückschreiben, und schon sind alle leeren Bereiche gefüllt.

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Wodisch am 24.03.2007 | 21:05
partimage sichert auch keine unbenutzen Blöcke mit, kann beim Restaurieren aber diese Blöcke mit Nullbytes füllen.
Ausserdem komprimiert es die Daten nach Wunsch mit "gzip" oder "bzip"...
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Bitpicker am 4.03.2008 | 14:07
Noch eine Ergänzung zum Thema htop:

Neben der Anzeige der laufenden Prozesse und dem Zugriff auf Kill-Signale ermöglicht htop auch die Veränderung des Nice-Wertes eines laufenden Prozesses. Das ist dann praktisch, wenn irgend etwas mal wieder länger dauert und irgendwo vor sich hinwerkelt, wärhend man die Zeit eigentlich für etwas anderes nützen möchte.

Beispiel: ich lasse in einem Terminal ein Programm kompilieren. Unter Gentoo wird dieser Vorgang vom Root-User ausgeführt. Da Kompilieren recht prozessor-intensiv ist, wird das gleichzeitige Surfen im Netz unter Umständen zu einem Geduldsspiel, weil der Kompiliervorgang von Root dem Firefox meines Users nur relativ wenig Rechenzeit übrig lässt. Hier kommt der Nice-Wert ins Spiel.

In der Oberfläche von htop gibt es eine spalte 'NI'. Der in dieser Spalte genannte Wert gibt an, wie nett sich das Programm anderen gegenüber verhält, d.h., wie viel Rechenzeit es anderen Programmen zugesteht. Interessant sind die Werte der Programme, die während der Arbeit in der Spalte S ein R für Running stehen haben, und davon wiederum die, die das R ziemlich lange behalten oder in der Spalte 'Time+' relativ hohe Zahlen stehen haben, weil das bedeutet, dass sie sehr viel Rechenzeit akkumuliert haben.

Um die Nice-Werte zu verändern, verwendet man die Funktionstasten F7 zum Senken und F8 zum Heben, wobei nur Root den Nice-Wert senken kann und ein User nur die Nice-Werte seiner eigenen Prozesse anheben kann (also Rechenzeit abgeben kann). Meist sollte man htop also als Root aufrufen, wenn man Nice-Werte anpassen will.

Der Normalwert ist 0. Um jetzt in meiner Beispiel-Situation dafür zu sorgen, dass ich flüssiger surfen kann, kann ich entweder als Root den Nice-Wert meines Kompiliervorganges anheben (wobei ein Prozess, dessen Nice-Wert angehoben wird, seinen Nice-Wert vererbt, wenn er neue Kindprozesse startet), damit dem übrigen System und damit dem Browser mehr Rechenzeit zur Verfügung steht, oder ich kann (allerdings wie gesagt ebenfalls nur als Root) den oder die Prozesse des Browsers im Nice-Wert absenken (auch unter 0), damit der Browser rücksichtslos mehr Rechenzeit an sich rafft. So oder so ist nachher in der Regel flüssigeres Browsen möglich.

Das wirkt sich natürlich auch auf alle möglichen anderen Programme aus. Meistens sind die voreingestellten Werte auch in Ordnung, aber auf schwächeren Systemen könnte es z.B. sein, dass z.B. der Start eines Cron-Jobs im Hintergrund zu merklichen Leistungseinbußen führt. Solche Cron-Jobs haben zwar meist schon freundliche Nice-Werte, aber man kann sie noch freundlicher machen oder den wichtigen Prozess, den man gerade benutzt, den anderen Prozessen gegenüber unfreundlicher machen, damit er mehr von der Prozessorzeit, die der Cron-Job übrig lässt, bekommt als alle übrigen Prozesse.

Wie bei allen Manipulationen als Root sollte man natürlich eine gewisse Vorsicht walten lassen. Ich kann mir vorstellen, dass man sein System auch zur Unbeweglichkeit versteinern kann, wenn man es mit der Veränderung der Nice-Werte übertreibt.

Robin
Titel: Re: [Tipp] Die Befehlszeile
Beitrag von: Darkwalker am 4.03.2008 | 19:08
Ein empfehlenswertes Buch sind

"Unix Power Tools" von O'reilly(sp?)

einige hundert Skripte und Tips für sh/bash. Notfalls auch gut geeignet zum Erschlagen lästiger Fragesteller.

Oh und Nitpick:

Mac OS-X ist ein MACH-3 Microkernel auf dem eine BSD-Persöhnlichkeit aufsitzt, kein UNIX. Und MS-DOS wechselt seine Verzeichnisse wie Unix, Granddaddy Unix ist einige Jährchen älter als MS-DOS