Pfad aus .txt Datei auslesen und für ls-Befehl verwenden

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von ALKA, 11.01.2011.

  1. ALKA

    ALKA Grünschnabel

    Dabei seit:
    11.01.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo liebe Unix Community,

    ich versuche mich gerade an einer userid.txt Datei bei der jeder Benutzer eine eigene Zeile besitzt in der sich ein Laufwerkspfad befindet, den ich gerne verwenden möchte um mir alle Dateien in diesem Pfad über "ls" anzeigen zu lassen.

    Vereinfacht ausgedrückt:
    Folgende Textdatei:
    Code:
    max:##max:0:1:User:/:/sbin/sh
    anna:##anna:508:10:& anna:/usr2/anna:/bin/csh
    Der Aufruf des Kommandos soll „meineausgabe <uid>“ sein und den Inhalt des Verzeichnisses des jeweiligen Users ausgeben.

    Kann mir dabei jemand helfen?

    Viele Grüße,
    eure ALKA
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Dizzy, 11.01.2011
    Zuletzt bearbeitet: 11.01.2011
    Dizzy

    Dizzy Brain Damage

    Dabei seit:
    02.05.2007
    Beiträge:
    857
    Zustimmungen:
    0
    Ort:
    Graz
    Huhu,

    das hier sollte funktionieren:

    Code:
    #!/bin/bash
    ID=$1
    
    awk -F ':' '{print $1, $3, $6}' userid.txt | while read NAME FOUNDID PATH
    do
    if [ $ID = $FOUNDID ] ; then
    /bin/ls $PATH
    fi
    done
    ./script.sh 0 gibt den Inhalt von / aus.

    Edit: Interessant duerften noch Aliase fuer dich sein.
     
  4. ALKA

    ALKA Grünschnabel

    Dabei seit:
    11.01.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo, vielen Dank für die schnelle Antwort.

    Gibt es nicht auch eine etwas einfachere Variante die mehr in Richtung "regular expressions" geht?

    Würde gerne das Shell-Skript so klein wie möglich halten und z.B. mittels grep Befehl das Ergebnis für den ls-Befehl pipen.
     
  5. Dizzy

    Dizzy Brain Damage

    Dabei seit:
    02.05.2007
    Beiträge:
    857
    Zustimmungen:
    0
    Ort:
    Graz
    Das Pipen geht so auch.
     
  6. ALKA

    ALKA Grünschnabel

    Dabei seit:
    11.01.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Guten Abend,

    ich kriege aber das Skript nicht zum laufen.
    habe es mit ./script.sh 0 versucht auszuführen.

    Gibt es keine Möglichkeit mit regulären Ausdrücken zu arbeiten, anstatt mit mit Bedingungen?

    Viele Grüße,
    eure ALKA
     
  7. Dizzy

    Dizzy Brain Damage

    Dabei seit:
    02.05.2007
    Beiträge:
    857
    Zustimmungen:
    0
    Ort:
    Graz
    Mh,

    du erstellst ein Textfile, fuegst den Inhalt ein, passt den Pfad zur userid.txt an, macht chmod +x script.sh und dann fuehrst du das Script aus.
     
  8. ALKA

    ALKA Grünschnabel

    Dabei seit:
    11.01.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Okay, es funktioniert. Vielen Dank erstmal dafür.

    Aber da ich mich für eine Klausur vorbereite, werde ich in der Klausur nicht die Möglichkeit haben "Bash-Skripte" zu schreiben.

    ich suche etwas in Richtung "ls -R | grep ..."

    habe es bereits mit den Befehlen "sed" und "find" ausprobiert. Aber die shell gibt mir immer nur die ganze Zeile aus.
     
  9. zst

    zst Foren As

    Dabei seit:
    06.09.2006
    Beiträge:
    95
    Zustimmungen:
    0
    Hallo ALKA,
    ganz kurz und knapp geht es auch so, ist aber nur bedingt fehlerfrei (UID muss vorhanden sein, Verzeichnis muss vorhanden sein usw.)
    Gruß zst

    Code:
    ls -l $(grep ":$1:" alka-user.dat | cut -d ":" -f6)
    
     
  10. ALKA

    ALKA Grünschnabel

    Dabei seit:
    11.01.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Hey zst,

    das geht schon mal in die richtige Richtung.
    Habe dein Beispiel versucht, aber er geht nicht wirklich auf die Pfade in der user.txt ein.

    Z.B. beim User anna heißt der Pfad "/bin/csh".

    Mit deinem Befehl listest er mir seltsamerweise alle Datein meines current Ordners, in dem ich mich aktuell befinde.

    Hatte einen Kollegen auf der Arbeit bereits gefragt, aber er konnte mir auch nicht weiterhelfen ; (


    Vielleicht kannst du mir kurz erklären was die einzelnen Bausteine semantisch für eine Bedeutung haben. Dann könnte ich anhand dessen selber daran arbeiten.
     
  11. zst

    zst Foren As

    Dabei seit:
    06.09.2006
    Beiträge:
    95
    Zustimmungen:
    0
    Hallo ALKA,

    ich nutze gerade openSUSE und bash 3.2
    Bei User anna sollte ja das Verzeichnis /usr2/anna aufgelistet werden, sofern Du die Rechte dazu hast. Das funktioniert bei mir (als root).
    Wenn bei Dir /bin/csh statt /usr2/anna ermittelt wird, kannst Du das über den cut-Parameter beeinflussen (dann setze -f6 auf -f5).
    Das der Einzeiler keine wirklich saubere Lösung ist, hatte ich erwähnt.
    Ach so: Den Einzeiler musst Du als Script aufrufen und als Parameter die user-id.
    Die user-id wird (eingeschlossen von Doppelpunkten) in der user.txt gesucht.
    Aus der gefundene Zeile wird das 6. Feld (/usr2/anna) an ls -l übergeben.
    Gruß zst
     
  12. #11 NoXqs, 12.01.2011
    Zuletzt bearbeitet: 12.01.2011
    NoXqs

    NoXqs Routinier

    Dabei seit:
    07.05.2007
    Beiträge:
    420
    Zustimmungen:
    0
    Ort:
    Bremen
    Wie zst schon schrieb, es testet nicht auf eventuelle Fehler.

    Wenn dein aktuelles Verzeichnis aufgelistet wird, hat das $(...) keine Ausgabe geliefert.

    ls -l --> klar oder?
    $(...) das ergebnis dieser befehle wird übergeben (Kommandosubstitution)
    grep ":$1:" alka-user.dat --> suche die zeile in der input datei, die den parameter enthält
    | cut -d ":" -f6 -> schneide die 6. Stelle aus, wobei ":" als Trennzeichen dient.

    Der Fehler warum keine Ausgabe vorlag, liegt nebenbei hier:
    Code:
    grep ":$1:" alka-user.dat
    
    Das könnte zum Beispiel
    Code:
    grep "$1: alka-user.dat
    
    heissen, denn das Feld des Usernames ist nicht in Doppelpunkte eingeschlossen,
    sondern wird nur durch einen beendet.
    Somit bekommt das grep-command keinen Match und somit keine Ausgabe des ganzen Ausdrucks.
     
  13. zst

    zst Foren As

    Dabei seit:
    06.09.2006
    Beiträge:
    95
    Zustimmungen:
    0
    Hallo NoXqs,
    es sollte die User-id, nicht der user-name gesucht werden, daher ist der Einschluss in zwei Doppelpunkte korrekt.
    Gruß zst
     
  14. NoXqs

    NoXqs Routinier

    Dabei seit:
    07.05.2007
    Beiträge:
    420
    Zustimmungen:
    0
    Ort:
    Bremen
    Oh, sorry.
    Das hatte ich übersehen, ich bin von Usernamen ausgegangen.
    Dann sollte das alles so funktionieren, solange die angegebene UID auch existiert.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. ALKA

    ALKA Grünschnabel

    Dabei seit:
    11.01.2011
    Beiträge:
    6
    Zustimmungen:
    0
    Danke für die Erläuterung. Vielleicht habe ich es auch übersehen, aber was bedeutut $1 in diesem Zusammenhang?
     
  17. zst

    zst Foren As

    Dabei seit:
    06.09.2006
    Beiträge:
    95
    Zustimmungen:
    0
    $1 ist die user-id, die Du dem Script übergeben musst.
    Du kannst $1 auch gegen eine user-id ersetzen, also so:
    ls -l $(grep ":508:" alka-user.dat | cut -d ":" -f6)
     
Thema:

Pfad aus .txt Datei auslesen und für ls-Befehl verwenden

Die Seite wird geladen...

Pfad aus .txt Datei auslesen und für ls-Befehl verwenden - Ähnliche Themen

  1. Suche Dateinpfad in .txt

    Suche Dateinpfad in .txt: Hallo, mein Problem ist folgendes: Ich habe Textdatein in denen zwei für mich relevante Dinge stehen. Zum einen die Zeile: Enabled:...
  2. sed mit basename verknüpfen - oder anders Dateipfade in Dateien mit regex ersetzen?

    sed mit basename verknüpfen - oder anders Dateipfade in Dateien mit regex ersetzen?: Hallo, mein Ziel ist es ein Script zu schreiben, das eine CSS-Datei entgegen nimmt und in dieser Datei Pfade ersetzt. Ich möchte bspw....
  3. Problem beim Einlesen von Pfaden mit Leerzeichen aus Textdatei

    Problem beim Einlesen von Pfaden mit Leerzeichen aus Textdatei: Wünsche einen schönen Sonntag :) Ich habe eine Textdatei angelegt und dort Datei- und Verzeichnispfade hineingeschrieben (eine Zeile = ein...
  4. Pfad aus Datei auslesen und verarbeiten

    Pfad aus Datei auslesen und verarbeiten: Hallo Leute, ich will eine Datei auf Viren prüfen, und wenn keine Viren gefunden wurden, sie in einer MySQL Datenbank als "sauber" registrieren....
  5. Hardlink von Dateien erstellen, Pfadangabe aus TXT

    Hardlink von Dateien erstellen, Pfadangabe aus TXT: Hallo, fange gerade an mit der Shell Programmierung. Ich habe eine Textdatei mit einzelnen Werten und lese diese Zeile für Zeile aus. Das klappt...