"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

FAQ: Windows -> GNU/Linux - Umstieg, Einstieg, Aufstieg

COLOSSUS 20.10.2004 - 12:30 647780 913 Thread rating
Posts

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
ad 1:
nein, fuer solche Aufgaben gibt es anacron (siehe http://en.wikipedia.org/wiki/Anacron). Was auch immer du momentan als Backup-Script verwendest: schau dir auch rdiff-backup an.

ad 2:
Beschreib lieber noch einmal, was genau du tun willst (das was, nicht unbedingt das wie) - dann kann man dir besser weiterhelfen. Generell gilt: alles, was mit `rm` zu tun hat, ist gefaehrlich. Ein "undelete" gibt es nicht. (Das ist zwar unter bestimmten Umstaenden gelogen, aber es ist viel gesuender fuer die Nerven, wenn man diese Tatsache einfach uebersieht, und ein bisschen zu viel als zu wenig vorsichtig agiert.)

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
ad 1: Danke, werd ich machen.

ad 2: Naja, ich weiß, dass ich mit der Pipe das Ergebnis eines Befehls umleiten kann. Nur rm spielt in dem Fall nicht mit (missing parameter).
Die Installation (was ich mir dabei auch immer gedacht habe) von nautilus-dropbox hat nicht ganz funktioniert, inzwischen ist es wieder unten (mittels apt). Trotzdem habe ich noch ein paar Dateien mit nautilus und dropbox im Pfad, die jetzt natürlich obsolet sind. Die wär ich gern los. Mein Plan war halt
Code:
locate dropbox | grep nautilus | rm
aber das geht nicht :)
Ich hoff, es is jetzt klarer :D

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
Zur Pipe-Geschichte moechte ich gleich ein bisschen weiter ausholen:

Eine Pipe ("|") ist eine unidirektionale Datenleitung zwischen zwei Prozessen, die Text von einem schreibenden Prozess zu einem Prozess lesenden leiten kann.

Wenn du einen Prozess auf deiner Shell startest, so hat dieser von Anfang an drei sogenannte File Descriptors ("fd") offen: Standard Input ("stdin"), Standard Output ("stdout"), und Standard Error ("stderr"). Diese sind, vereinfacht gesprochen, mit deinem Terminal verbunden. Die beiden Kanaele stdout und stderr geben dir normalerweise einfach alles, was in sie geschrieben wird, auf dem Terminal bzw. deinem Monitor aus. Wenn dir ein Programm etwas mitteilen oder anzeigen will, kann es das also (z. B.) ueber einen dieser beiden Kanaele tun. Deine Tastatureingaben landen in stdin; wenn das Programm diesen Datenkanal auswertet, kannst du also via Tastatureingaben mit ihm kommunizieren. Ein gutes Beispiel ist das Programm `cat`: wenn man es einfach so aufruft, liest es (zeilenweise) alle Eingaben von stdin, und gibt diese auf stdout wieder aus.
Code:
colo@zealot ~ $ cat
Dies ist eine Zeile von stdin. Die Zeile darunter luegt!
Dies ist eine Zeile von stdin. Die Zeile darunter luegt!
Ich hab's ja gesagt…
Ich hab's ja gesagt…
Eine Pipe zwischen zwei Programmaufrufen macht nichts Anderes, als stdout des vorderen Programms in stdin des hinteren Programms zu leiten. Mit `uptime | wc -c` z. B. kann ich das Programm `wc` die Ausgabe des Programms `uptime? auf stdin empfangen lassen. Dort treibt es dann mit den Daten, was immer der Programmautor von `wc` fuer sie vorgesehen hat. (In diesem beispiel zaehlt es die Anzahl der Zeichen, die der durch die Pipe geschickte Text enthaelt. Sinnlos, aber auch nur ein Beispiel, gell? ;))

Es gibt noch ein paar andere Moeglichkeiten ueber stdin hinaus, um mit einem UNIX-Programm zu interagieren. Eines davon ist die aufrufende Kommandozeile des Programms, wo sich auch die Argumentliste ("argv") des Programms tummelt. Wenn du in deiner Shell z. B. mit `/usr/bin/nano` deinen Texteditor startest, so ist die Zeichenkette "/usr/bin/nano" das erste (und einzige) Element von argv. Wenn du aber `/usr/bin/nano /tmp/file.txt` eingibst um gleich direkt einen Pfad zu einer zu editierenden Datei anzugeben, so hast du zwei Elemente: das erste (argv[0]) lautet "/usr/bin/nano", das zeite (argv[1]) lautet "/tmp/file.txt".
Auch das Programm `rm` wertet die aufrufende Kommandozeile, sein argv also, aus: Neben einiger Parameter, die das Wie? beeinflussen (z. B.: Sollen Verzeichnisse rekursiv geloescht werden? Soll vor jedem tatsaechlichen Loeschvorgang nochmal nachgefragt werden? … etc.), gibt es auch noch eine Liste von Dateien, die geloescht werden sollen: das Was? also.

Ein Aufruf von `rm -i /tmp/A /tmp/b /tmp/cde` z. B. weist das Programm `rm` an, die drei Dateien /tmp/{A,b,cde} jeweils mit Rueckfrage "Soll ich wirklich…?" zu loeschen.

Dabei ist zu beachten: `rm` kuemmert sich um argv. `rm` ist es aber voellig egal, was man in sein stdin fuettert. Insofern kann man `rm` nicht mittels Pipe sagen, welche Dateien es zu loeschen hat. Man muss einen Weg finden, die Liste der zu loeschenden Dateien in argv von `rm` zu bringen. Das geht z. B. mittles find. Fuer deinen speziellen Anwendungsfall konkret so:
Code:
find / -iname "*dropbox*" -exec echo rm -rf {} +

Das echo in der Kommandozeile oben dient dazu, dass nicht `rm` aufgerufen wird, sondern nur `echo` - somit kann man mitlesen, welche Befehle von `find` ausgefuehrt _wuerden_, wenn man echo tatsaechlich aus dem Aufruf weglaesst. Wie gesagt - bei Aufrufen von `rm`, vor allem bei skriptgesteuerten, besser zu viel als zu wenig Vorsicht walten lassen!

Hth.

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Hi!

Ich setze gerade meinen Rechner in der Firma neu auf und möchte Vista und Kubuntu parallel laufen lassen. Empfehlenswert ist es vermutlich, zuerst Vista und dann Kubuntu aufzusetzen, da Grub Vista erkennt und Vista umgekehrt das Linux nicht, lieg ich da richtig?

tia

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
Ja, da liegst du richtig. Mit Ubuntu 9.10 setzt uebrigens zum ersten Mal eine der groszen Distros auf GRUB in Version 2, wenn du gleich was Neues probieren (bzw. wagen ;)) moechtest.

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
rdiff hab ich mir angeschaut. Sieht gut aus fürs backuppen auf die externen Festplatten. Für meinen derzeitigen Einsatzzweck (ein paar Ordner und config-Files regelmäßig auf dropbox.com spielen) reicht ein backup.sh mit ein paar cp drin im Ordner /etc/cron.daily. Denn lt. ubuntuusers.de wird alles in dem Ordner von anacron gemanaged.

Und danke für die ausführliche Antwort zu den Pipes! :)

__Luki__

bierernste Islandkritik
Avatar
Registered: Nov 2003
Location: gradec
Posts: 2984
Bin mal' wieder dabei es mit KDE zu versuchen... Es haut eigentlich ganz gut hin (verglichen mit vorigen Versuchen) - verwendet wird Kubuntu 9.10 beta.

Eine Frage haette ich jedoch: Wie kann ich die "Standardprogramme" umstellen?
zB.:
Wenn ich eine IM bekomme, welche einen Link beinhaltet und ich diesen klicke wird er automatisch mit Konqueror geoeffnet; mir waer's aber lieber das wuerde in Firefox passieren...

Oder: Wenn ich gerade eine Datei heruntelade und auf "Open containing folder" klicke, weisz er nicht mit welchem Programm er den Link oeffnen soll... (Dolphin nehme ich an?!)

Bei "Choose App" kommt dann ein "File open"-Dialog mit dem ich nicht wirklich was anfangen kann...

Waere toll, wenn mir da jemand helfen koennte.
Lg
Luki

t3mp

I Love Gasoline
Avatar
Registered: Mar 2003
Location: upstairs
Posts: 6278
Systemsettings - Personal/Default Applications ;)

Taltos

Here to stay
Avatar
Registered: Jan 2004
Location: Wien
Posts: 1520
Zitat von prayerslayer
Für meinen derzeitigen Einsatzzweck (ein paar Ordner und config-Files regelmäßig auf dropbox.com spielen) reicht ein backup.sh mit ein paar cp drin im Ordner /etc/cron.daily.
reichts eigtl btw nicht, einfach einen symlink auf das zu backuppende verzeichnis/file in den dropbox folder zu legen? so wär das ja von DB gedacht, und funktioniert bei mir problemlos.
Colo: super pipe crashkurs! :)
Bearbeitet von Taltos am 16.11.2009, 14:31

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
das ist allerdings wirklich schicker, ja.

userohnenamen

leider kein name
Avatar
Registered: Feb 2004
Location: -
Posts: 15857
ich denk mal hier passt es am besten
gibt es sowas wie ein buch für linux anfänger das empfehlenswert ist? Ich bin leider ein mensch der bei sowas auch papier in den händen halten will und wär für brauchbare vorschläge dankbar :)

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Wenn nicht bereits hier schon erwähnt: Linux, Kofler

Natürlich gibts dann div. distributionsspezifische Bücher.

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Kurze Frage: vim ist nicht utf-8 tauglich, lieg ich da richtig? falls ja, hab ich die lösung für mein problem, falls nein -> welcher freie editor wäre utf-8 fähig?

danke

Lobo

Here to stay
Avatar
Registered: May 2002
Location: In da Oaschicht
Posts: 2556
Zitat von COLOSSUS
Ein Aufruf von `rm -i /tmp/A /tmp/b /tmp/cde` z. B. weist das Programm `rm` an, die drei Dateien /tmp/{A,b,cde} jeweils mit Rueckfrage "Soll ich wirklich…?" zu loeschen.

Dabei ist zu beachten: `rm` kuemmert sich um argv. `rm` ist es aber voellig egal, was man in sein stdin fuettert. Insofern kann man `rm` nicht mittels Pipe sagen, welche Dateien es zu loeschen hat. Man muss einen Weg finden, die Liste der zu loeschenden Dateien in argv von `rm` zu bringen. Das geht z. B. mittles find. Fuer deinen speziellen Anwendungsfall konkret so:
Code:
find / -iname "*dropbox*" -exec echo rm -rf {} +

Das echo in der Kommandozeile oben dient dazu, dass nicht `rm` aufgerufen wird, sondern nur `echo` - somit kann man mitlesen, welche Befehle von `find` ausgefuehrt _wuerden_, wenn man echo tatsaechlich aus dem Aufruf weglaesst. Wie gesagt - bei Aufrufen von `rm`, vor allem bei skriptgesteuerten, besser zu viel als zu wenig Vorsicht walten lassen!

Hth.

Super danke, "arbeite" zwar schon "länger" mit linux, aber teil mit rm (und vorallem die"{}") ist mir verborgen geblieben


edit: eine frage zu CRON: was passiert, wenn zum bestimmten Zeitpunkt der Rechner nicht läuft? Wird dieser Durchlauf dann übersprungen, oder nach dem start durchgeführt?
Bearbeitet von Lobo am 31.03.2010, 15:49

Caption

Little Overclocker
Avatar
Registered: May 2006
Location: Tirol
Posts: 120
Zitat von Lobo
Super danke, "arbeite" zwar schon "länger" mit linux, aber teil mit rm (und vorallem die"{}") ist mir verborgen geblieben


edit: eine frage zu CRON: was passiert, wenn zum bestimmten Zeitpunkt der Rechner nicht läuft? Wird dieser Durchlauf dann übersprungen, oder nach dem start durchgeführt?

Wird nicht ausgeführt. Dafür gibts aber Anacron.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz