PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe in der Bash für Anfänger



Seiten : [1] 2

McG.linux
12.04.02, 19:44
Kleine Tipps für neueinsteiger.. kann ja jeder mal was reinposten.. :)

um ein Programm im Hintergrund laufen zu lassen kann man am Ende des Befehls in der console ein & anhängen

prog &

Das Anhängen zweier &'s sorgt dafür das der Befehl nach den &-zeichen erst ausgeführt wird wenn der erste erfolgreich beendet wurde, also beim compilieren z.B.

./configure && make && make install && ldconfig

---

Verzeichniss-trees anlegen geht mit mkdir, z.B folgender tree:

folder1
|-1
|-2
|-3
folder2
|-1
|-1
|-2
|-2
|-3

kann man so anegen:

mkdir -p /folder{1,2}/{1,2,3} && mkdir /folder2/1/{1,2}

Gruß
McG.linux

keiner_1
12.04.02, 20:56
verzeichnisse löscht man mit rmdir oder rm -rf (das r steht für recursiv und f für force, also nicht nachfragen)

im hintergrund kann man auch programme mit screen oder nohup laufen lassen

McG.linux
13.04.02, 10:36
rm -rf is allerdings mit vorsicht zu genießen.. immer aufpassen beim tippen und vor ENTER noch mal überprüfen..
Ein unbeabsichtigtes Leerzeichen hinter dem ersten slash hätte fatale Folgen..

rm -rf / mnt/disk <- das würde weh tun..

Gruß
McG.linux

fs111
13.04.02, 11:26
Wenn man als root unterwegs ist sollte man sowieso mit allem vorsichtig sein, was man macht.

Trillian
13.04.02, 17:20
Ist in manchen Distributionen schon vorhanden:

alias rm="rm -i"

in root's .bashrc oder .bash_profile sorgt dafür, dass bei jedem rm Aufruf nochmal nachgefragt wird, ob wirklich gelöscht werden soll.

Geht analog mit cp, mv, etc.

fork
13.04.02, 22:02
Viel vorsichtiger ist man bestimmt wenn das eingestellt ist.

alias rm="rm -rf"

Gruß
fork

wd
13.04.02, 22:13
@fork


Viel vorsichtiger ist man bestimmt wenn das eingestellt ist.

alias rm="rm -rf"


Ist es nicht viel vorsichtiger, wenn du folgendes machst :


alias rm="rm -rfi"

Das -i fragt dich dann, ob du wirklich rekursiv löschen willst und das für:


rm: descend into directory `zzz'? y
rm: remove `zzz/datei'? y
rm: remove directory `zzz'? y

cyrip
14.04.02, 02:25
Original geschrieben von McG.linux
./configure && make && make install && ldconfig

ich würde eher

./configure && make && su -c "make install" && su -c "ldconfig"

sagen, wenn man sachen als user installiert... sonst macht er das nicht mit

hakre
18.04.02, 01:37
Hab mir jetzt auch mal mit tail ein syslog script gemacht (nunja, hat genau 1 zeile), das würde ich jetzt gerne im hintergrund laufen lassen und es soll die ausgabe auf eine andere console packen.

wie geht den das ?

tail -f /etc/log/messages > tty5 &

oder so ??

sauron
18.04.02, 08:45
Hi,
interresant ist auch "rm -- datei", zumindestens wenn man "spezielle" Dateinamen hat die z.B. mit "-" anfangen, oder andere Vorzeichen haben die als Steuerbefehle gelten.

CboyGeek
18.04.02, 08:52
was bedeutet denn in dem beispiel ganz oben bei ./configure && make && make install das "ldconfig"?

sauron
18.04.02, 10:57
Hi,
in Linux gibt es Bibliotheken (libraries), in denen Programmteile stehen, die von anderen Programmen (bzw.Programmteilen) aufgerufen werden, diese Programmteile müssen dem Rechner bekannt sein, um sie an die Programme binden zu können (linken). Das tut der dynamic linker. Der muß aber auch wissen wo welche library zu finden ist, dafür gibt es die Konfigurationsdatei /etc/ld.so.conf, in der diese Pfade stehen. Mit ldconfig wird in den dort eingetragenen Verzeichnissen nach Bibliotheken gesucht und ein Cache dafür aufgebaut. Zustätzlich erstellt ldconfig neue Links auf Bibliotheken, z.B. beim updaten einer lib.

sauron

siluan
18.04.02, 11:00
hakre:

tail -xf /var/log/messages >/dev/tty5 &

x=Anzahl anzuzeigener Zeilen

Siluan

hakre
19.04.02, 13:24
Zu Siluan: Merci :)

mezzo mix
19.04.02, 19:34
shortcuts wie strg backspace, strg oder alt t finde ich klasse.
auch das ! vor dem programm kann so manche zeile sparen.

CU

nahrstaedt
23.04.02, 16:24
Könntest du kurz die Funktion der Tastenkürzel auflisten? Hab bis jetzt nämlich noch nie welche benutzt. Was passiert bei einem ! vor einem Programm?

sauron
24.04.02, 09:12
Hi,
angenommen du schreibst einen ewig langen Befehl z.B. tar cvfz file.tar.gz datei1 datei2 dateiN, und machst dann etwas anderes und willst aber genau diesen Befehl nochmal ausführen, dann kannst du entweder mit den Cursortasten den Befehl wieder suchen, oder mit "!tar" den Befehl wiederholen. Also, noch mal genau: Das "!" mit einem Anfangsteil eines schon erteilten Befehls führt genau den letzten Befehl aus, der diesen Anfangsteil besitzt.

sauron

nahrstaedt
24.04.02, 23:22
Super, das ist wirklich hilfreich. Bis jetzt habe ich mich immer totgesucht um einen Bestimmten Befehl erneut auszuführen.

msi
27.04.02, 20:07
und nochmal was cooles:

wenn ein programm im fordergrund läuft kann man es mit
STRG+Z unterbrechen. Das Programm ist dann einfach gestoppt
und man hat die Shell wieder frei.
Wenn man dann fg eingibt läuft das Programm im Vordergrund weiter,
bei bg läuft es im Hintergrund weiter.

und noch was:
wenn man als user su eingibt und root wird kann man die shell leicht
stoppen indem man suspend eingibt. dann hat man wieder normale
userrechte. Wenn man dann wieder fg eingibt ist man wieder root.

badenser
06.05.02, 22:40
Hai!

Besser als das ! vor dem Befehl find ich folgendes:
Strg+R danach langsam schreiben. In der History wird nun nach dieser Zeichenfolge gesucht. Muss nicht der Anfang sein.
So hat man noch eine Kontrolle was ausgeführt wird.

Jeder wie er will

zander
08.05.02, 06:11
Um den [ctrl]-r Heinweis noch etwas auszubauen: bash benutzt die GNU Readline Bibliothek und kennt daher alle readline Tastaturkürzel. [ctrl]-r started eine Suche in der History Funktion, nach Eingabe eines Suchwortes kann man dann durch wiederholtes [ctrl]-r alle passenden Einträge durchgehen. [ctrl]-s macht das gleiche, lediglich in der anderen Richtung. [ctrl]-g stellt die ursprüngliche Zeile wieder her. [ctrl]-a/e springen zum Anfang/dem Ende der Zeile, [ctrl]-l löschte den aktuellen Terminalinhalt. Es gibt noch wesentlich mehr dieser Kürzel.

Die !/!!/!-x/... Kürzel stammen von der GNU History Bibliothek. Dokumentation mit allen möglichen Kürzeln und vielen weiteren nützlichen Hinweisen (sowie den Programmierhinweisen) finden sich auf den Seiten des GNU Projekts.

403
08.05.02, 14:46
Hi

habe da auch nen paar Tips.


Mehre Befehle auf einmal:



uptime; killall named; sleep 3; /usr/local/sbin/named -u named -c /etc/named.conf; ps U named




..grep -v grep angehangen lässt "grep" nicht in der Ausgabe auftauchen



ps fax |grep inetd |grep -v grep


NUR FÜR SYSADS:!!!!!
---------------------


# kill -9 `ps -augxww | sort -rn +8 -9 | head -1 | awk '{print $2}'`


(src: http://www.ugcs.caltech.edu/~werdna/sysadmins.html
netter artikel)

orion
14.06.02, 20:19
also ich muss echt sagen der Beitrag hat was :))))) irgendwie mal ne richtig tolle idee von demjenigen der dieses Topic ins Leben geruft hat. Naja hab da aber auch mal ne frage: Wie kann ich texte, die ich unter der grafischen Oberfläche (kde) kopiert habe in der konsole einfügen? Aber jetzt mein ich nicht die console unter kde sondern zB.: STRG+Alt+F1.
ich bräuchte das nämlich für so ein Downloadproggy und will nicht den ganzen Link abschreiben.

MfG orion

orion
14.06.02, 20:51
Kann mir wer auch Links geben zu Themen wie: "kompilieren des kernels", "was is kompilieren?", "kompilieren für Anfänger". Ich hab schon ein paar einzelne Seiten gefunden über google, aber ich wette ihr kennt noch ein paar gute.

2. MfG orion

phoen][x
01.07.02, 09:56
C-d (oder [ctrl]+[d] fuer nicht-emacs Benutzer) beendet die aktuelle Sitzung an der bash mittels 'logout'. Sehr nuetzlich fuer Leute wie mich, die oft mit 'su' unterwegs sind.

Die linke Windowstaste springt eine tty nach links (also von tty3 nach tty2) die rechte eine nach rechts. Das funktioniert jedoch nicht im Xserver, ausser ihr baut euch dafuer einen Keyboard Event Handler (vielleicht mit bbkeys..)

Und btw, 'su' kann auch ohne das '-' ganz nuetzlich sein. Das '-' ~laedt~ ja bekanntlich die ~/.bash_profile des Benutzers, was dazu fuehrt dass man in dem jeweiligen home landet (also bei 'su -' landet man in /root). Wenn ich nun aber in irgendeinem Unterverzeichnis nur eben Rechte aendern will, benutze ich immer nur 'su', dann bleibt man naemlich im Verzeichnis (allerdings wird der Pfad nicht 100%ig korrekt gesetzt, aber das tangiert mich wenig da ich ja nur das chmod brauche).

Solltet ihr keine Lust haben, Dienste mit "/etc/init.d/apache restart" neuzustarten, versuchts mal einfach mit "killall -HUP apache". (HUP ist das Signal um dem prozess zu sagen, dass er seine config neu laden soll. Ersetzt man das HUP durch TERM, hat sich die Sache mit dem apache erledigt, der ist dann naemlich gekillt (bzw getermt) :))

'watch' kann ein nuetzlicher Befehl sein, um auf einer zweiten konsole den Status zu checken: So gibt einem "watch -n1 'df -h'" ein sekuendliches update zur plattenausnutzung, oder "watch -n1 'ps waux | grep smbd'" die informationen zum Samba, und so weiter.

so jetzt hab ich keine lust mehr, aber einfallen tun mir noch tausend sachen. Back to work.

-phoen][x-

SeeksTheMoon
01.07.02, 11:07
wer einen mehrzeiligen Befehl schreibt und nochmal an den Anfang springen muss, der tippt schonmal aus versehen die Pfeiltaste oben und hat somit den eigentlichen Befehl durch den letzten Befehl ersetzt.
Mit STRG+A springt man an den Anfang, mit STRG+E ans Ende zurück.
Es gibt auch Kürzel, um wortweise zu springen, aber die fallen mir gerade nicht ein.

dragon's might
01.07.02, 12:18
shortcuts:

Man (oder fra) schreibt zum Beispiel den Anfang von "befehl" (also "b")
und drückt tab, dann werden einem alle möglichen Möglichkeiten aufgelistet, denn es gibt mehrere Befehle die so anfangen. *g*

phoen][x
01.07.02, 13:57
'tail foo' zeigt die letzten paar zeilen von foo, 'tail -f foo' folgt dem output, ist also sehr gut fuer logdateien geeignet ('tail -f /var/log/messages' fex).

'sort' sortiert eine datei, 'uniq' entfernt doppelte zeilen in einer sortierten datei. 'gawk' und 'sed' sind lustige tools die ich aber nicht naeher erlaeutern moechte (es wuerde zu lange dauern) - 'lsof' kann wie ich schon im forum gelesen habe dafuer benutzt werden, herauszufinden welcher daemon auf welchem port laeuft (mit 'lsof -i'). Ein weiterer Nutzen ist, herauszufinden welcher prozess noch auf dateixy zugreift - Ich benutze es um herauszufinden welches programm noch auf dem dvd-laufwerk haengt; dann lassen sich die cds/dvds naemlich nicht unmounten (beziehungsweise ejecten, ich habe autofs)

'useradd', 'userdel', 'usermod', 'groupadd', 'groupmod' und 'groupdel' sind auch recht nuetzliche tools - es sei denn man steht darauf die /etc/shadow und /etc/passwd per hand zu editieren.

'cd ~<username>' wechselts in das home von username, habe ich erst neulich gemerkt. Also beispielsweise "cd ~phoenix" als root wechselt in /home/phoenix.

Die tty piept immer nervig rum bei tabcompletion oder fehlern? 'setterm -blength 0' schafft da abhilfe, sehr nuetzlich auch in /etc/profile. Eine Konsole im X piept rum und Du has keine Lust lange im Windowmanager nach der Option zu suchen? 'xset -b' und gut ist. btw, 'xset -dpms' schaltet den x11-screensaver (blank screen) aus - fuer divx empfehlenswert.


pipes:
hierfuer erstmal eine datei:
-=[foo.txt]=--------------------------------------------------------
3
4
5
3
2
1
6
4
3
2
------------------------------------------------------=[EOF]=-----

'sort foo.txt' sortiert die Datei, wie oben bereits erwaehnt.
Um den Output eines Programmes in den Input eines anderen Programmes zu leiten, benutzt man unter *nix das "|"-Symbol (sprich pipe).

'sort foo.txt | uniq' sortiert somit die Datei und entfernt doppelte Zeilen.
Um das ganze jetzt nach clean.txt zu schreiben benutzt man das ">".
'sort foo.txt | uniq > clean.txt' sortiert somit die Datei, entfernt doppelte Zeilen und schreibt alles in clean.txt. Es wird ansonsten kein output mehr erzeugt, bis auf Fehlermeldungen. Denn Fehlermeldungen werden nicht mit ">" umgeleitet - damit leitet man nur den StdOutput des Programmes um.

Um die Fehlermeldungen mit umzuleiten, einfach anstelle von ">" ein "&>" verwenden und die Sache hat sich erledigt.

Ach so, der append-operator fehlt noch: ">>"
Ein gutes Beispiel ist dieses: Ich moechte an das Ende von foo.txt ein "all your base are belong to us" anhaengen (aus welch dubiosem Grund auch immer :)). Der normale operator ">" wuerde die foo.txt neu schreiben, also waeren alle anderen Informationen verloren (Nur mein Text wuerde ueberleben).
Abhilfe schafft der append-operator: "echo 'all your base are belong to us' >> foo.txt" schreibt den String an das Ende von foo.txt - sehr nuetzlich (in manchen Situationen (beispielsweise Shellskripte))

So das wars fuer jetzt.

So long
-phoen][x-

phoen][x
02.07.02, 07:30
Bevor ich anfange zu arbeiten, noch ein paar bash Tips:

'apropos' - ein wirklich geniales Tool um schnell und gezielt die man-datenbank zu durchforsten. So durchsuch "apropos foo" alle manpages nach dem wort "foo". Bsp.: Ihr wollt etwas ueber signale wissen? 'apropos signals'

'whatis' und 'whereis' - ahh, ich hab eine binary, und weiss nicht wo genau sie ist, da binaries ja grundsaetzlich in /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, ~/bin, ~/sbin seien koennen. "whatis foo" oder "whereis foo" gibt mir sofort den korrekten pfad der binary aus.

'locate' - da 'whatis' und 'whereis' nur die binary verzeichnisse durchsuchen, man aber sicherlich auch ab und zu andere Dateien ~vermisst~ gibt es noch locate. um locate zu benutzen, muss erstmal eine aktuelle locate-datenbank erstellt werden: das geht supereinfach mit "updatedb" (dauert aber ein bisschen, und man braucht root rechte). Sobald updatedb fertig ist, findet ein Befehl wie "locate foo.txt" alle vorkommnisse von foo.txt auf dem system, und gibt diese mit vollstaendigen pfadangaben aus. Aber es kommt noch besser. locate versteht auch ausdruecke als suchstring. so ist es beispielsweise moeglich. den folgenden Befehl auszufuehren "locate /opt/*foo.txt" - sucht in /opt nach vorkommnissen von foo.txt

'du' - diskusage. 'du' alleine ist praktisch ein 'ls' was nur die Groesse anzeigt. interessant wird 'du' erst mit dem parameter '-s' - damit wird naemlich die Groesse des aktuellen Ordners inklusive aller Unterordner angezeigt. Ein zusaetzliches '-h' rechnet alles in KB/MB/GB um - wer will schon mit Bytes rechnen. Beispiel fuer den Einsatz von 'du':
Meine /usr partition laeuft nach und nach voll, und ich weiss nicht wo der Speicherplatz hin ist. Ein 'du -hs /usr/src' zeigt einem sofort, dass man noch vergessen hat die alten Kernel mit "make mrproper" wieder zu verkleinern (ein winex ohne "make clean" ist auch ca. 300MB gross, da kanns schon mal eng werden)

'grep' - das allerwichtigste tool in linux. "grep" durchsucht eine datei oder den StdInput nach einem Ausdruck. Beispielsweise sucht "grep phoenix /etc/shadow" nach Vorkommnissen von 'phoenix' in der /etc/shadow. Besser noch ist es fuer pipes geeignet, beispielsweise: "ps waux | grep httpd" (durchsucht die prozessliste nach laufenden httpds) oder "gunzip -c foo.tar.gz | grep bar" ('gunzip -c' entpackt eine Datei in die StdOutput, das grep durchsucht alles nach bar)
Natuerlich ist auch eine Syntax wie diese moeglich: "grep foo ~/*" um das Homeverzeichnis nach foo zu durchsuchen oder "grep -R foo ~/*" um das Homeverzeichnis rekursiv nach foo zu durchsuchen (alle Unterverzeichnisse).

Das reicht fuers erste.
-phoen][x-

phoen][x
02.07.02, 07:44
@orion:
entweder du nimmst den "gpm", also mausunterstuetzung fuer die konsole, oder du machst es ein wenig anders: erst kopierts du den ganzen kaese in eine temporaere datei (beispielsweise "~/link") und dann greifst du da mit der konsole wieder drauf zu. Ich gebs zu, gpm ist komfortabler - aber das andere hat auch was :) (vor allem wenn man konsolenfreak ist)

-phoen][x-