Angepinnt Users4Users : Die besten NICHT-geheimen "Shell-Tricks" der Linux-User

      Wo lag der Befehl schon wieder? => which

      Hallo,

      Der Befehl "which" zeigt einem den vollen Pfad eines (Shell) Kommandos an.

      Unter Ubuntu/Debian liegen die ganzen Binaries von KDE in /usr/* und bei SuSE?

      Quellcode

      1. find /usr/ -name konqueror
      dauert erstens ewig und liefert kein brauchbares Ergebnis.

      Wo war das denn noch mal bei SuSE?

      Quellcode

      1. which konqueror
      2. /opt/kde3/bin/konqueror
      Ah ja, SuSE legt KDE/GNOME in /opt/ ab.

      Der Vorteil zu 'locate' oder 'find' liegt darin, daß nur ausführbare Dateien angezeigt werden und z.B. keine Dokumentationen.

      Greetz,

      RM
      "Programming today is a race between software engineers striving to build better & bigger idiot-proof programs and the Universe trying to produce bigger & better idiots. So far, the Universe is winning." (Rick Cook)

      Dies ist ein _öffentliches_ Supportforum, keinerlei Support per PN, EMail oder Instant Messenger.

      openSUSE Leap 42.3 - Kernel 5.0.x - fluxbox 1.3.7

      Bitmessage: BM-2D8h8QZmvHfgbixWeiG1NDZHG1iXAhBz8K

      Etwas präziser bitte => head, tail, grep&co

      Man kennt das ja als gestresster Umsteiger/Einsteiger.

      Da werden einem solche Dinge wie "Schaue mal in Datei *xy* nach Fehlern oder dem Eintrag von *blablubb* nach", oder sowas wie "Was sind denn die letzten paar Ausgabe von *dingens*, bevor *bumens* passiert?" von irgendwelchen Helfern nur so um die Ohren gehauen.

      Da hat man nun nach meist mühevoller Suche die entsprechende Datei gesucht und die ist natürlich ellenlang.

      Statt aber nun die Datei mit einem Texteditor zu öffnen und Mit "Suchen" durch den ganze Text zu gehen, und sich dann die entsprechenden Zeile heraus zu kopieren, kann man das auch den "Rechenknecht" erledigen lassen, dazu ist er schließlich da.

      1. Suche nach (einem) bestimmten Begriff(en) in einer Datei/Shellausgabe:

      Quellcode

      1. grep Suchbegriff /Pfad/zur/Datei/Datei


      Beispiel: Ist das Modul "v4l" in meiner xorg.conf enthalten?

      Quellcode

      1. grep v4l /etc/X11/xorg.conf
      2. Load "v4l"
      Wie man sieht, spuckt grep gleich die gesamte Zeile aus.

      Linux ist aber "case-sensitive", was tun, wenn ich nicht mehr genau weiß, ob der Begriff Groß-/Kleinschreibung enthält?

      Quellcode

      1. grep -i Suchbegriff /Pfad/zur/Datei/Datei
      Der Parameter "-i" steht für "Ignore case".

      Beispiel:

      Quellcode

      1. grep dri /etc/X11/xorg.conf
      2. Load "dri"
      3. grep -i dri /etc/X11/xorg.conf
      4. Load "dri"
      5. Driver "kbd"
      6. Driver "mouse"
      7. Option "VendorName" "ATI Proprietary Driver"
      8. Driver "fglrx"
      9. Section "DRI"
      Man sieht glaube ich den Unterschied deutlich.

      Und wenn ich mehrere Begriffe auf einmal suchen will?

      Hier hilft "egrep" (extended grep), die Syntax muß man sich nur einmal genau ansehen, egrep akzeptiert übrigens auch die selben Parameter wie grep (z.B. -i).

      Quellcode

      1. egrep 'Suchbegriff1|Suchbegriff1|Suchbegriff2|Suchbegriff3|' /Pfad/zur/Datei/Datei


      Beispiel: Sind in der Konfiguration meiner Netzwerkkarte

      - Benutzersteuerung aktiviert?

      - eine feste IP eingestellt oder DHCP?

      - Der Startmodus auf Automatisch, Manuell oder eine andere Option gesetzt?

      Da wir nicht 100% genau wissen, was GROSS und was klein geschrieben ist, nutzen wir "-i".
      Wie man auch sehen kann, reichen Teile des später wirklich gefundenen Begriffes als Suchwort aus, das Setzen von"Wildcards" wie "*" ist bei grep NICHT nötig, wohl aber bei eth*, weil ich die MAC-Adresse meiner Karte auch nicht auswendig weiß *g*.

      Quellcode

      1. egrep -i 'usercontrol|bootpro|startmod' /etc/sysconfig/network/ifcfg-eth*
      2. BOOTPROTO='static'
      3. STARTMODE='ifplugd'
      4. USERCONTROL='yes'
      OK, Karte bekommt eine feste IP (static) wird bei Kabelanschluß aktiviert (ifplugd) und ich kann sie als "normaler" Nutzer mit Kinternet steuern (USERCONTROL='yes').

      Was steht denn so "drumherum" um meinen Suchbegriff?

      Hier nutzt man die Optionen -A*AnzahlderZeilen* oder -B*AnzahlderZeilen*.

      -A = After => Was steht dahinter?

      -B = Before => Was steht davor?

      Grep eignet sich hervorragend zur Benutzung in einer "Pipe", wenn man eine Shellausgabe filtern will.

      Beispiel: In meinen Smart-Channeln habe ich doch irgendwo einen Channel mit den Paketen für das flash-plugin. Da ich nicht weiß (oder mal so tue *g*) wie genau die Syntax aussieht und genauer wissen will, wie der Channel definiert wird, schaue ich mir die 5 Zeilen vor und nach dem Suchbegriff mal an. Dazu verwende ich den smart-Befehl, der mir die gesamte (:eek:) Channellliste ausspuckt und "pipe" ihn durch grep.

      Quellcode

      1. smart channel --show|grep -A5 -B5 flash
      2. type = apt-rpm
      3. name = SUSE Linux 10.0 APT Suser-oc2pus Repository
      4. baseurl = ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/10.0-i386/
      5. components = suser-oc2pus
      6. [B][flash]
      7. type = apt-rpm
      8. baseurl = http://macromedia.mplug.org/rpm/
      9. components = macromedia[/B]
      10. [jpackage-5.0]
      Versucht das mal ohne die Pipe und mit meiner ellenlangen Channellliste, das macht keinen Spaß *g*.

      2. Davor oder dahinter? => "head" und "tail"

      Die Befehle "head" und "tail" zeigen die ersten/letzten N Zeilen einer Datei -bzw. durch eine Pipe wie oben- einer Shellausgabe an.

      Die Syntax ist denkbar einfach:

      Quellcode

      1. head/tail -n *AnzahlderZeilen* /Pfad/zur/Datei/Datei
      2. Befehl | head/tail -n *AnzahlderZeilen*


      Beispiel: Was waren die letzten 10 Ausgaben meines Bootlogs?

      Hier brauchen wir übrigens Rootrechte, da die entsprechende Datei nicht für User lesbar ist, das erledigen wir mit "sudo".

      Quellcode

      1. sudo tail -n 10 /var/log/boot.msg
      2. Password:
      3. <notice>startproc: execve (/usr/sbin/powersaved) [ /usr/sbin/powersaved -d -f /var/run/acpid.socket -v 3 ], [ HOME=/ PATH=/sbin:/usr/sbin:/bin:/usr/bin:/lib/klibc/bin SHELL=/bin/sh RUNLEVEL=5 PREVLEVEL=N DAEMON=/usr/sbin/powersaved ]
      4. done
      5. Starting Firewall Initialization (phase 2 of 2) SuSEfirewall2: Warning: ip6tables does not support state matching. Extended IPv6 support disabled.
      6. Nov 20 11:04:43.732 [notice] We now have enough directory information to build circuits.
      7. done
      8. Nov 20 11:04:44.532 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
      9. done
      10. Master Resource Control: runlevel 5 has been reached
      11. Skipped services in runlevel 5: irq_balancer
      12. <notice>killproc: kill(4525,3)
      OK, tor/privoxy läuft also ;)

      "Live"-Mitschnitt von Logdateien => "-f"

      Der Parameter -f (=follow) ist hervorragend geeignet um die Systemmeldungen zu verfolgen, hierzu verwendet man tail und betrachtet die Datei /var/log/messages.

      Bei jeder neuen Meldung wird aktualisiert, auch hier sind wieder Rootrechte erforderlich.

      Quellcode

      1. sudo tail -f /var/log/messages
      Dieses Vorgehen ist zur Beobachtung des Systemverhaltens, wenn man z.B. Hardware wie einen USB-Dongle o.ä. einsteckt/aussteckt sehr nützlich.

      Greetz,

      RM
      "Programming today is a race between software engineers striving to build better & bigger idiot-proof programs and the Universe trying to produce bigger & better idiots. So far, the Universe is winning." (Rick Cook)

      Dies ist ein _öffentliches_ Supportforum, keinerlei Support per PN, EMail oder Instant Messenger.

      openSUSE Leap 42.3 - Kernel 5.0.x - fluxbox 1.3.7

      Bitmessage: BM-2D8h8QZmvHfgbixWeiG1NDZHG1iXAhBz8K

      AW: Users4Users : Die besten NICHT-geheimen &quot;Shell-Tricks&quot; der Linux-User

      "Wow !"

      Das entwickelt sich ja zu der reinsten Fundgrube ! Sehr hilfreich !

      Vielen Dank an alle !

      Spidy
      :D
      [SIGPIC][/SIGPIC]

      Helfe Dir selbst, sonst hilft Dir keiner, gut, dass es nicht immer stimmt ! ;-)

      Never argue with an idíot, they drag you down to their level and beat you with experience !

      Non scholae, sed vitae, discimus !

      AW: Users4Users : Die besten NICHT-geheimen &quot;Shell-Tricks&quot; der Linux-User

      Dateirechte und Dateieigentümer per Konsole managen

      Linux als Multiusersystem kennt von Haus aus die Zuordnung von Dateien und Verzeichnissen zu einzelnen Usern oder Gruppen. Diese kann man natürlich auch sehr schnell und einfach per Konsole verwalten.

      1. Herausfinden, wem eine Datei gehört und welche Rechte es gibt
      Auf der Konsole kann ich mit

      Quellcode

      1. ls -l /pfad/zur/gewünschten/datei

      sehr einfach sehen, welche Rechte eine Datei hat und wem sie gehört.
      Beispiel:

      Quellcode

      1. ls -l nc-linux.tar.gz
      2. -rw-r--r-- 1 typeryder typeryder 8403227 2005-12-30 19:28 nc-linux.tar.gz


      Die Ausgabe zeigt uns, daß es sich bei nc-linux.tar.gz um eine Datei handelt (erste Stelle ist ein -), der eigentümer Lese- und Schreibrechte hat (zweite, dritte und vierte Stelle rw-), andere Angehörige der Gruppe die Datei lesen können (fünfte, sechste und siebte Stelle r--) und auch alle anderen die Datei lesen können (achte, neunte und zehnte Stelle r--). Der Eigentümer der Datei ist typeryder, die zugehörige Gruppe ist ebenfalls typeryder.

      Kurze Anmerkung zur Gruppe: Unter SuSE würde hier sehr wahrscheinlich die Gruppe "users" stehen. Debian legt für jeden Benutzer auch eine eigene Gruppe an, daher ist dies bei Debiansystemen nicht automatisch die Gruppe users.


      2. Eigene Gruppenzugehörigkeit rausfinden
      Manchmal kann es schon helfen, daß man als User zu der Gruppe gehört, die auf eine Datei (dies können unter Unix auch Geräte sein) zugreifen kann. Dies ist z.B. wichtig für Zugriffe auf Sounddevices oder gemeinsame Dateien, die den Nutzern einer Gruppe zugänglich sein sollen.
      Zu welchen Gruppen ich gehöre, kann ich mit dem Befehl

      Quellcode

      1. groups

      erfahren.


      3. User neuen Gruppen hinzufügen
      Als root kann ich in der Datei /etc/group/ einer Gruppe neue User hinzufügen. Gleiches funktioniert auch mit dem Befehl "adduser", bei dem ich dann den User und die neue Gruppe als Argumente übergebe.


      4. Eigentümer und/oder Gruppe einer Datei ändern
      Den Eigentümer oder die Gruppenzugehörigkeit einer Datei kann man mit dem Befehl

      Quellcode

      1. chown
      ändern.

      Als Ausgangsbasis habe ich eine Datei mit Namen "rechtevergabe.txt".

      Quellcode

      1. -rw------- 1 typeryder typeryder 8403227 2005-12-30 19:28 rechtevergabe.txt


      Diese Datei gehört bisher dem User typeryder und auch zur Gruppe typeryder. Die Gruppe will ich jetzt umstellen auf die Gruppe users, so daß auch andere User, die in der Gruppe users eingetragen sind, auf die Datei zugreifen können:

      Quellcode

      1. chown dateieigentümer:gruppe /pfad/zur/Datei
      2. chown typeryder:users rechtevergabe.txt


      ein erneutes ls zeigt dann folgendes:

      Quellcode

      1. -rw------- 1 typeryder users 8403227 2005-12-30 19:28 rechtevergabe.txt



      5. Rechte einer Datei ändern
      Damit im obigen Beispiel die Mitglieder der Gruppe users auch auf die Datei zugreifen können, muss ich jetzt noch die Rechte ändern. Dies kann ich mit dem Befehl

      Quellcode

      1. chmod
      machen.

      Der Befehl chmod erlaubt sowohl eine Rechtevergabe mit symbolischen Bezeichungen (u für users, g für Gruppe, o für others und a für all) plus die jeweiligen Änderungen); die Rechte sind entsprechend r für lesen, w für schreiben und x für das Ausführen einer Datei. Die Rechte werden dann mit +, - oder = entweder neu vergeben, entfernt oder gleichgelassen.

      Bei symbolischen Änderungen sieht unser obiger Fall so aus:

      Quellcode

      1. chmod g+rw rechtevergabe.txt


      In der Oktalversion werden die Rechte über eine Zifferkombination vergeben

      Quellcode

      1. chmod 744 /pfad/zur/Datei

      gibt z.B. alle Rechte an den Eigentümer (die 7 auf der ersten Stelle) und Leserechte für die Gruppe und alle anderen (die 4 auf der zweiten und dritten Stelle). Die möglichen Ziffernkombinationen sind 4 = nur lesen, 5 = lesen und ausführen, 6 = lesen und schreiben und 7 = alle Rechte.

      In unserem Beispiel sieht die Rechtevergabe mit dem Oktalsystem folgendermaßen aus:

      Quellcode

      1. chmod 660 rechtevergabe.txt


      Auf den ersten Blick wirkt die Oktaleingabe vielleicht umständlicher als die symbolische Eingabe. Wenn man sich aber erstmal an die Ziffern gewöhnt hat, ist man mit dem System IMHO schneller unterwegs.
      010 Praise the Evil KANIN From Outer Space!
      001 Fragen stellen - gewußt wie...
      111 Privatsphäre ist kein Verbrechen!
      Besucht das Unknown Online - Forum - ein Ingameforum für SR4.

      Mal ein kleiner Test.

      #UNIX - UNIX Humor - HelpDesk

      Je lauter und öfter Ihr hier lacht, umso besser kennt Ihr Euch wohl aus.... ;)

      Greetz,

      RM
      "Programming today is a race between software engineers striving to build better & bigger idiot-proof programs and the Universe trying to produce bigger & better idiots. So far, the Universe is winning." (Rick Cook)

      Dies ist ein _öffentliches_ Supportforum, keinerlei Support per PN, EMail oder Instant Messenger.

      openSUSE Leap 42.3 - Kernel 5.0.x - fluxbox 1.3.7

      Bitmessage: BM-2D8h8QZmvHfgbixWeiG1NDZHG1iXAhBz8K

      Zum nachlesen und Schreibtischvermüllen. / Instant Ordnerlösching

      Wer jetzt nach dieser Flut von nützlichen Beiträgen meint:

      "Das kann ich mir sowieso nicht alles merken" (Auch ohne TypeRiders Gedächtnis

      verständlich), sollte sich DAS mal genauer anschauen.

      Ist zwar nicht so hilfreich wie das, was hier schon alles gepostet wurde (meldet euch doch

      mal bei Wikipedia, ist echt druckreif), aber immerhin auch ohne Konsolenbefehl erreichbar.

      Ach ja, wer mal einen Ordner samt Inhalt löschen will, ohne erst hineninzuwechseln,

      Quellcode

      1. cd $NameDesZuLöschendenOrdners


      den Inhalt in die ewigen /dev/null-Gründe zu schicken und anschließend wieder mit

      Quellcode

      1. cd ..


      und

      Quellcode

      1. rmdir $NameDesZuLöschendenOrdners


      Klarschiff zu machen (kann v. a. mit Unterverzeichnisssen etwas dauern), solte lieber

      Quellcode

      1. rm -r $NameDesZuLöschendenOrdners


      oder

      Quellcode

      1. rm -r /Pfad/zur/Datei\Ordner


      verwenden. Löscht Ordner samt Inhalt und Unterverzeichnissen in 0,nix. Und

      anschließend sieht der Konquerorhintergrund (je nach Coloer-Scheme) aus wie das

      T-Shirt von Meister Glatze.
      Für Freunde gepflegter Satire
      Für Freunde des fröhlichen Fraggens
      ---------------------------------
      AMD Ahlon XP 1900+
      512 MB DDR-RAM
      GeForce FX5200
      60 GB HDD
      K7S5A
      ------
      Aktuelle Probleme: Beryl geht nicht
      ---------------------
      " [COLOR="DarkGreen"]Linux[/COLOR] is like a tent. No [COLOR="Red"]Windows[/COLOR], no [COLOR="Red"]Gates[/COLOR], but an Apache inside."
      Neben <TAB> gibt es auch noch eine andere Art des Vervollständigen von Begriffen aller Art:

      Die Wildcard. Hört sich spektakulär an, ist aber nur ein simler * .

      (Tastenkombi: <Shift><Taste neben dem Ü>) Beispiele:

      Quellcode

      1. locate kochre*


      Sucht alle Dateien, die mit "kochre" anfangen.

      Quellcode

      1. locate *zepte


      sucht alle Dateien, die mit "zepte" aufhören.

      Quellcode

      1. locate k*e.txt


      Sucht alle Dateien, die mit "k" anfangen und auf "e.txt" enden.

      Quellcode

      1. rm -r *


      Löscht alle Dateien und Ordner im aktuellen Verzeichnis.

      Die Wildcard kann also Zeichen aller Art und beliebiger Anzahl symbolisieren. Praktisch

      beim Suchen!

      adJO
      Für Freunde gepflegter Satire
      Für Freunde des fröhlichen Fraggens
      ---------------------------------
      AMD Ahlon XP 1900+
      512 MB DDR-RAM
      GeForce FX5200
      60 GB HDD
      K7S5A
      ------
      Aktuelle Probleme: Beryl geht nicht
      ---------------------
      " [COLOR="DarkGreen"]Linux[/COLOR] is like a tent. No [COLOR="Red"]Windows[/COLOR], no [COLOR="Red"]Gates[/COLOR], but an Apache inside."

      AW: Users4Users : Die besten NICHT-geheimen &quot;Shell-Tricks&quot; der Linux-User

      Bisweilen muss man einen Nutzer einer bestehenden Gruppe hinzufügen - beispielsweise, wenn er die Gruppenrechte benötigt, um eine damit zusammenhängende Resource (Sound, Brenner etc.) zu nutzen.

      Einen User könnt ihr einer Gruppe mit dem Befehl "gpasswd" hinzufügen:

      Quellcode

      1. gpasswd -a (Username) (Gruppenname)


      Alternativ kann man die Gruppen auch händisch mit einem Editor seiner Wahl bearbeiten, sie finden sich (zumindest unter debian) unter: /etc/group
      010 Praise the Evil KANIN From Outer Space!
      001 Fragen stellen - gewußt wie...
      111 Privatsphäre ist kein Verbrechen!
      Besucht das Unknown Online - Forum - ein Ingameforum für SR4.

      AW: Users4Users : Die besten NICHT-geheimen &quot;Shell-Tricks&quot; der Linux-User

      Ergänzung:

      TypeRyder schrieb:

      Bisweilen muss man einen Nutzer einer bestehenden Gruppe hinzufügen - beispielsweise, wenn er die Gruppenrechte benötigt, um eine damit zusammenhängende Resource (Sound, Brenner etc.) zu nutzen.
      gpasswd dient eigentlich zum Ändern von Gruppenpasswörtern.

      Um die Gruppenzugehörigkeit eines Users z.B. unter openSUSE zu ändern wird der Befehl groupmod verwendet:

      Quellcode

      1. groupmod -A <User> <Group>
      bzw.

      Quellcode

      1. groupmod -R <User> <Group>
      um den betreffenden User wieder aus der Grupe zu entfernen.
      Gruß b3ll3roph0n
      --
      Denken hilft !

      Für alle meine Beiträge gelten, außer bei Zitaten, die Creative Commons.