Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Hilfe bei erstellung eines Suchskriptes in Bash Shell

Frage Entwicklung Batch & Shell

Mitglied: Lucas-O

Lucas-O (Level 1) - Jetzt verbinden

13.09.2012, aktualisiert 14:24 Uhr, 2588 Aufrufe, 19 Kommentare

Hallo ihr Alle,
Ich habe ein Problem, bei dem Ihr mir hoffentlich helfen könnt.
Diese Scripte sollen bei der täglichen Arbeit helfen.
Bitte um möglichst rasche Antwort.

Script 1

Beschreibung:

Script 1 soll in der Lage sein ein Verzeichnis nach Dateien zu durchsuchen, welches ein definiertes Wort, einen Buchstaben im Namen oder über eine gewisse Größe verfügt zu durchsuchen.
Das zu durchsuchende Verzeichnis muss Veränderbar sein und das Skript muss die gefundenen Dateien dann auch auslesen können und das zwar so, das am Ende eine Textfile generiert wird, in welchem der Name, Speicherstandort, Größe in Kb
sowie Besitzer, Gruppe, Berechtigungen und Symbolische Verknüpfungen ausgegeben werden.


Beispielergebniss :

Beispieldatei1 / Home/Documents/Sammelarchiv/Müll / 2836Kb / Admin / Administrator / Admin-Read&Write/Benutzer2-ReadOnly / Symbolische Verknüpfung



Skript2

Beschreibung:

Das Skript soll so aufgebaut werden, dass es einen Suchmodus enthält, welcher zudem so eingestellt werden kann, dass er entweder nach einem Ergebnis oder nach der Anzahl der Ergebnisse sucht.
Des weiteren soll man einen Filter einstellen können, bei dem man entscheiden kann, ob man nur den Namen, die Größe etc. sehen möchte.

Die Eingabe Datei wird über das Skript 1 erzeugt.

Aufrufssyntax
such-indatei [-s] <eingabedatei> <regulärerausdruck> <filter> [<filter>*]

Beispiel zu Script 2

Beispielaufruf

Beispielsuche nach Buchstaben
such-verzeichnis /testverzeichnis a
Beispielsuche nach Namen
such-verzeichnis /testverzeichnis name
Beispielsuche nach Grösse
such-verzeichnis /testverzeichnis 2

Sucht nach allen Dateien die genau 2 Kilobyte gross sind.
such-verzeichnis /testverzeichnis +2

Sucht nach allen Dateien die genau 2 Kilobyte oder grösser sind.
such-verzeichnis /testverzeichnis -2
Beispielergebnis
Beispielsuche nach Buchstaben
name pfad groesse Rechte Eigentuemer Gruppe Symlink
name1 /testverzeichnis 1 rwxrwxr-x root root
name2 /testverzeichnis 2 rwxrwxr-x root root yes
name3 /testverzeichnis 3 rwxrwxr-x root root
testa4 /testverzeichnis 4 rwxrwxr-x root root
Beispielsuche nach Namen
name pfad groesse Rechte Eigentuemer Gruppe Symlink
name1 /testverzeichnis 1 rwxrwxr-x root root
name2 /testverzeichnis 2 rwxrwxr-x root root yes
name3 /testverzeichnis 3 rwxrwxr-x root root
Beispielsuche nach Grösse
name pfad groesse Rechte Eigentuemer Gruppe Symlink
name2 /testverzeichnis 2 rwxrwxr-x root root yes

Vielen Dank schonmal im Voraus!!!!
Mitglied: Alchimedes
13.09.2012 um 15:41 Uhr
Hallo,

'man find' ist Dein freund.
Oder glaubst Du hier bekommst Du fertig scripte?

Gruss
Bitte warten ..
Mitglied: Lucas-O
13.09.2012, aktualisiert um 15:56 Uhr
nein aber wenigstens ein paar Hilfestellungen bastle seit 14 tagen an dem script und ich habe eigentlich nur noch 2 Probleme:

1. Wie definiere ich einen Befehl?
2. Wie lese ich etwas aus einer .txt Datei aus

Und ansonsten Brauch ich "einfach" Lösungsmöglichkeiten um es zu Optimieren.
Ein ganzes Script zu benutzen wäre langweilig und man lernt nix...
Viele Grüße Lucas

ps: Würde mich freuen, wenn es bei hilfreichen Antworten bleibt.
Bitte warten ..
Mitglied: ColdZero89
13.09.2012 um 15:57 Uhr
Moin,

Lucas wir können in keine Kristallkugel gucken um zu sehen wie weit du bist.

Sonnvoll wäre denn du dein Script hier einmal Postest damit wir sehen WAS du gemacht hast und ob du wirklich was gemacht hast. Denn vorkauen tun wir hier ungerne.

Dein Script packst du dann noch in < code> < /code> (Ohne Leerzeichen), dann sieht es auch schön aus und übersichtlich.

Dann erfährst du auch hier sicherlich mehr Hilfe.

Gruß Zero
Bitte warten ..
Mitglied: Lucas-O
13.09.2012, aktualisiert um 16:17 Uhr
Ja natürlich entschuldige also hier (vorletzter Entwurf and dem aktuellen schreib ich grad noch)
(brauche nur noch hilfe beim 2.):

01.
#!/bin/bash 
02.
 
03.
PFAD="/atix/projects/azubis/ae" 
04.
 
05.
 
06.
 
07.
zaehlen() { 
08.
        anzahl=0 
09.
        for file in "$PFAD"/* ; do 
10.
        ls "$PFAD" 
11.
        anzahl=$(( $anzahl+1 )) 
12.
        done 
13.
        echo -e "Es sind $anzahl an dateien und ordner in $PFAD \n" 
14.
15.
 
16.
file () { 
17.
        for file in "$PFAD"/* ; do 
18.
        echo $file   
19.
        done 
20.
 
21.
 
22.
 
23.
24.
echo -e "\n 
25.
                Bitte Suchart,Begriff,Pfad und Filter folgendermassen eingeben: \n 
26.
        such-verzeichnis [-s] <eingabedatei> <regulaererausdruck> <filter> [<filter>*] \n \n" 
27.
read anfrage 
28.
#...bis hier bin ich und arbeite grad 
29.
 
30.
zaehlen 
31.
file 
32.
 
Bitte warten ..
Mitglied: Alchimedes
13.09.2012, aktualisiert um 16:13 Uhr
Hallo,

ein Befehl definierst Du in den Du Ihn ins Terminal ( oder in Dein script)kloppst.

z.B mit cat / less / more kannst Du aus einer .txt Datei lesen.

Sehe in Deinem Script nicht wo Du $PFAD definiert hast.



Gruss
Bitte warten ..
Mitglied: Lucas-O
13.09.2012, aktualisiert um 16:25 Uhr
Hi,
wie reinkloppen?? (bin noch ziehmlich neu)
und hat bis jetzt nicht funktioniert, weil ich nicht weiß, wie ich den Befehl so speichere,
dass ich ihn dann aufrufen kann.
danke für das mit dem cat (wäre das so richtig?
01.
  
02.
 
03.
file () { 
04.
        for file in "$PFAD"/* ; do 
05.
        echo $file 
06.
                done 
07.
08.
cat test.txt 
09.
 
)

Gruss Lucas

ps: muss ich bei dem cat Befehl einen Pfad angeben oder reicht ein */ platzhalter?

pps: So $PFAD ist jetzt drin, ist beim kopieren verloren gegangen.
Bitte warten ..
Mitglied: Alchimedes
13.09.2012 um 16:17 Uhr
hallo,

also Dein script hast Du erstellt und abgespeichert.
Aufrufen kannst Du es direkt dort wo Du es gespeichert hast
im Terminal mit ./deinscriptname denk aber dran das es Ausfuehrbar gemacht
werden muss fuer den User also: chmod u+x deinscript.

Willst Du das dann taeglich zur gleichen Zeit ausgefuehrt haben muss Du
einen cronjob dafuer anlegen.

Gruss
Bitte warten ..
Mitglied: Lucas-O
13.09.2012 um 16:21 Uhr
hi,

ja ausführbar ist es schon und es funktioniert auch schon soweit.
Dass mit den Rechten habe ich auch schon erledigt.
Was ich vorher meinte ist, wie kann ich machen, dass mein Script den Befehl, den man eingibt erkennt und weiß, was es damit machen muss.

gruss
Bitte warten ..
Mitglied: Alchimedes
13.09.2012 um 16:29 Uhr
Hallo,

das kannst Du mittels read .

zB: echo "Bitte tippen Sie hier was ein: "
read A
echo $A


http://linuxint.com/DOCS/Linux_Docs/openbook_shell/shell_007_002.htm

Ist eh ein Klassiker unter den Shellscript Buecher sehr zu empfehlen.


Gruss
Bitte warten ..
Mitglied: Lucas-O
13.09.2012 um 16:35 Uhr
Hi,

ja das problem ist, dass das Script einen nur einmal was fragen soll, und dass ist, wenn man den Befehl eingibt.
Außerdem soll es den Suchpfad und den namen bzw. den suchparameter und den filter aus dem Befehl heraus erkennen. (Beispiel: such /atix/home A [-l]) (das -l soll den buchstaben filter aktivieren...)
Das Buch ist sehr gut und deswegen habe ich es auch gekauft und es liegt neben mir ^^.

Gruß
Bitte warten ..
Mitglied: Alchimedes
13.09.2012 um 16:45 Uhr
Hallo,

dann schau mal in das Buch Kapitel 3.8 !!

Gruss
Bitte warten ..
Mitglied: Lucas-O
13.09.2012 um 16:49 Uhr
Hi,
Ah danke ich les mir das schnell mal durch, versuch es zu verstehen und dann melde ich mich wieder.
gruß
Bitte warten ..
Mitglied: Lucas-O
13.09.2012, aktualisiert um 17:05 Uhr
Hi,
so... dass ist ja schonmal gut aber ich bin grad auf nochwas gestoßen...
sagt dir $@ $# $1 $2 ... was???
(das mit dem getopt habe ich noch nicht ganz verstanden bin grad am ausprobieren)
gruß
Bitte warten ..
Mitglied: Alchimedes
13.09.2012, aktualisiert um 20:56 Uhr
Nabend,

klar sagt mir das was
Kommandozeilen Parameter...

Kapitel 3

Vieleicht solltest Du das Buch von Anfang bis Ende durcharbeiten.
Es wird Dich wenn Du durchhaelst sehr weit nach vorne bringen... zum shellscript GURU

Aber dafuer musst Du in dem IT-Umfeld auch immer wieder mit der Thematik konfrontiert werden.
Nicht das es Dir wie mir ergeht der nur Oberflaechenwissen hat und (){ :|:& } ;: nicht erklaeren kann warum
hier immer wieder neue Prozesse gestartet werden und dann die Linuxmoehre zum absturz bringt.

Falls Du das zum testen ausfuehren willst limitiere die Anzahl der erlaubten Prozessanzahl !!



Gruss
Bitte warten ..
Mitglied: Lucas-O
13.09.2012 um 22:42 Uhr
Guten Abend,
1. Ja ich bin grad wieder dabei, dass Buch durchzuarbeiten, da beim alleinigen durchlesen nicht gaaanz soviel hängen geblieben ist ^^

2.Ja ich werde damit wahrschinlich öfters konfrontiert werden(wäre komisch wenn nicht), da ich eine Ausbildung zum Fachinformatiker für Anwendungsentwicklung angefangen habe.
3. Ich habe mir jetzt 12 bücher zum thema bestellt da es mir ja auch spaß macht

ok danke für den tipp

Vielen dank bis hierher und ansonsten viele grüße aus München
Bitte warten ..
Mitglied: Alchimedes
13.09.2012, aktualisiert um 23:16 Uhr
Nabend,

das Buch gibt ja schon ne menge Input... 12 weitere Buecher?? Lesen alleine wird Dir nicht helfen.. ich hab hier rund
200 Buecher uber Computer Themen rumstehen.. Man denkt wenn man sich ein Buch kauft bekommt man auch das Wissen sofort vermittelt..
nur wenn ich auch in der Praxis dieses Wissen brauchte oder wollte !! haben mir die Buecher geholfen.

Auswendig lernen? Bloedsinn..

Es gilt learning by doing, etwas nicht wissen.. dann manpage, oder tante google..

Was Dein Script angeht:
warum benutzt Du nicht den find befehl ? damit kannst Du via -mtime oder -ctime oder .. oder .. genau nach Deinen
geaenderten Dateien suchen? Nen Einzeiler...

Gruss und Dir alles gute fuer Deinen Informatikerlebensweg !

P.S: http://www.pronix.de/pronix-1.html
Bitte warten ..
Mitglied: Lucas-O
14.09.2012 um 08:34 Uhr
Morgen,

find kann ich nich benutzen weil ich irgendwie keine
Rechte dafür habe...
Ja das mit dem learning by doing mach ich ja schon...

Gruss und danke für die Glückwünsche^^

ps: danke für den Link
Bitte warten ..
Mitglied: Alchimedes
14.09.2012, aktualisiert um 13:47 Uhr
Hallo,

das kann nicht sein... Was Du an Fehlermeldung bekommst kannst Du ja ins nirwana schiessen.

find /DeinPfad -name 2<&1


aehm besser ... find /DeinPfad -name 2</dev/null


Gruss
Bitte warten ..
Mitglied: Lucas-O
16.09.2012 um 17:18 Uhr
HI,

das funktioniert leider auch nicht. Hast du evtl. noch ein paar denkanstöße für
mich wegen dem script??

Gruß Lucas
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Crontab mit Shell Probleme (9)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...