• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Die Bash Verzweiflung - ls und co

Hallo Forum,

also vorweg: ja ich habe die Suche bemüht, ich habe gxxgle bemüht und ich habe Bücher gewelzt...

Ich bin jetzt schon wieder mehr als 2h mit dieser Aufgabe zu gange und mein Buch hilft mir dabei leider garnicht...

Wenn ihr diese Sachen aus dem Kopf schnell lösen könnt, dann könnt ihr euch meiner absoluten Dankbarkeit wieder gewiss sein :)

Hier die Aufgaben:

Geben sie mit dem Kommando ls alle Dateien aus,

a. die einen Punkt an beliebiger Stelle haben.

b. geben Sie folgendes bash Komando ein und wiederholen Sie die voherige Aufgabe. Wie unterscheiden sich die Ausgaben?
"shopt -s dotglob"

c. die einen Punkt (nicht zwei) am Anfang enthalten.

d. die einen Punkt gefolgt von einem beliebigen Zeichen am Ende enthalten.

e. die einen Punkt gefolgt von einer Zahl am Ende enthalten.

f. die einen Punkt gefolgt von einem Buchstaben am Ende enthalten.


Hier meine Lösungen:
zu a)
Code:
 ls .
oder ls -al .
oder ls . -al
oder ls *.*
bin mir übrigens bei keiner meiner Lösungen wirklich sicher!

zu b)
Code:
. Dateien (versteckte) sind jetzt auch mit dem Befehl ls *.* sichtbar.

zu c)
Code:
ls -al | grep ^\.         -->(hab ich von nem Profi)  funzt aber nicht

zu d)
keine Ahnung, hatte probiert ls -al [*.*]

zu e)
keine Ahnung

zu f)
keine Ahnung



Vielen Dank jetzt schon mal für eure Hilfe



:oops: [/code]
 

Grothesk

Ultimate Guru
Wir sind doch hier nicht bei der Schülerhilfe...
Also einige könnten das bestimmt so aus dem Kopf lösen. Aber die haben auch vorher was gelesen. Und zwar nicht Harry Potter. Oder Google benutzt. Oder 'man ls'
Linux ist nun wirklich gut dokumentiert, das haste schneller nachgeschaut als hier den Text reingetippt.
 
OP
L

LinuxOpfer

Newbie
@Grothesk:
Danke für deinen Kommentar, wenn alle so denken würden wie du, wären Foren völlig überflüssig.

Übrigens, solltest du mal Probleme mit z.B. Java haben, kann es dir passieren, dass ich dir in einem Forum selbst die dümmsten Fragen beantworte.

Aber ich nehme mal an, sowas kann dir nicht passieren. :twisted:
 

Grothesk

Ultimate Guru
Keine Ursache, Linux-Opfer...
Und wenn ich Fragen zu Java habe, dann such ich mir ein Buch dazu. So ein dickes. Mit vielen Seiten. Dann kann ich das lesen und dann auch so Sachen mal irgendwann aus dem Kopf beantworten.
Danke für deinen Kommentar, wenn alle so denken würden wie du, wären Foren völlig überflüssig.
Stimmt. Ich frag mich auch immer, wie ich die ganzen Postings hier zusammen bekommen habe.
 

admine

Ultimate Guru
Ich denke, das sollte dir helfen:
http://www.de.linwiki.org/index.php/Linuxfibel_-_Shells_-_Bash#.C3.9Cbersicht
 
A

Anonymous

Gast
Noch ein Suchtipp für Manpages oder Internet
die Verfahren die du dir noch mal anschauen kannst nennen sich innerhalb der Bashbeschreibung
Pattern Matching und Pathname Expansion

robi
 
OP
L

LinuxOpfer

Newbie
@admine und robi:

vielen Dank für die Tipps, der Link ist auf jeden Fall besser als mein Buch :)

@Stefan Stäglich:
Aus dem Alter bin ich raus Papi.

- Und für dich ein Ratschlag, den mir meine Oma immer gesagt hat: "Wenn du nichts zu sagen hast, sag am besten garnichts." - denk mal drüber nach.
 

framp

Moderator
Teammitglied
Irgendwie verstehe ich nicht weshalb es notwendig ist Buecher zu welzen wenn eine Saite - man ls - raicht ...
 

regexer

Advanced Hacker
Grothesk schrieb:
Stimmt. Ich frag mich auch immer, wie ich die ganzen Postings hier zusammen bekommen habe.
Auch hier hilft lesen.
Grothesk schrieb:
*1. Spamguru des Linux-Clubs*
:wink: :wink:

LinuxOpfer schrieb:
Hier meine Lösungen:
zu a)
Code:
ls .
oder ls -al .
oder ls . -al
oder ls *.*
Du hast richtig erkannt, dass der Punkt am Anfang ein Sonderfall ist. Diese Dateien sind in der normalen Ausgabe "versteckt". Doch anstatt -a zu nehmen könnte man auch einfach .* verwenden. Als Parameter 2 kann man dann *.* angeben.
Hingegen steht ein einfacher Punkt in der Shell für das aktuelle Verzeichnis.
Deswegen wäre aus meiner Sicht richtig:
Code:
ls -d .* *.*
Der Parameter "-d" sollte man angeben, damit nur der Verzeichnissename mit punkt im Namen ausgegeben wird und nicht dessen Inhalt.
 

Stefan Staeglich

Advanced Hacker
LinuxOpfer schrieb:
@Stefan Stäglich:
Aus dem Alter bin ich raus Papi.

- Und für dich ein Ratschlag, den mir meine Oma immer gesagt hat: "Wenn du nichts zu sagen hast, sag am besten garnichts." - denk mal drüber nach.

Ich weiß die Antworten zu deinen Fragen. Und die stehen auch in der manpage drin.
 

regexer

Advanced Hacker
Stefan Stäglich schrieb:
Ich weiß die Antworten zu deinen Fragen. Und die stehen auch in der manpage drin.
Also ich finde die Aufgaben gar nicht sooo einfach für einen Anfänger. Im speziellen könnte die Aufgabe e etwas knifflig sein - wenn man sie wortwörtlich nimmt. Darf ich mal ganz frech fragen: Hast du hierfür eine Lösung?
 

regexer

Advanced Hacker
Stefan Stäglich schrieb:
Code:
dir *.[0,1-9]
Code:
ls *.[0,1-9]

Zufrieden?
Eigentlich nicht!
man nehme ein Verzeichnis mit folgenden Einträgen:
Code:
prompt> ls -a
insgesamt 12
drwxrwxr-x    3    user  group        4096 Dez 16 15:38 .
drwxrwxrwx   30    user  group        4096 Dez 16 13:24 ..
-rw-rw-r--    1    user  group           0 Dez 16 08:26 .1
-rw-rw-r--    1    user  group           0 Dez 16 08:33 .10
drwxrwxr-x    2    user  group        4096 Dez 16 15:37 .5
-rw-rw-r--    1    user  group           0 Dez 16 08:26 .a
-rw-rw-r--    1    user  group           0 Dez 16 08:33 a.1234
-rw-rw-r--    1    user  group           0 Dez 16 08:26 a.4
-rw-rw-r--    1    user  group           0 Dez 16 08:26 a.a
Dein ls findet nur eine Datei von 5
Code:
prompt> ls *.[0,1-9]
a.4
Wenn man die Aufgabe wortwörtlich nimmt, müsste eine Lösung auch folgendes ausgeben:
.1 --> Weil es ist eine Datei, die auf .Zahl endet. Das geht auch unabhängig von den shopt.
.10 --> 10 ist auch eine Zahl, ebenso 999, oder 1234567890. Der Einfachkeit halber würde ich es auf natürliche Zahl inklusive Null beschränken.
.5 --> Ist ein Verzeichnis, aber streng genommen per Definition auch eine Datei. Eine spezielle Datei eben. Hier ist vielleicht die Aufgabenstellung etwas unklar.
a.1234 --> 1234 ist eine Zahl. Siehe obige Argumentation
 

regexer

Advanced Hacker
So, jetzt nochmal an alle:
Geben sie mit dem Kommando ls alle Dateien aus [...] die einen Punkt gefolgt von einer Zahl am Ende enthalten.
Wenn man diese die Aufgabe e) wortwörtlich nimmt
- müsste man eigentlich den Inhalt der Datei durchsuchen. Aber ich denke, es ist nicht der Inhalt sondern der Dateiname gemeint, sonst wäre nicht von "ls" die Rede.
- müsste man Dateien anzeigen, die entweder mit einer einzelnen Ziffer enden (was relativ einfach ist) oder auch mit mehr als einer Ziffer enden, weil das definitionsgemäß auch Zahlen sind. Oder ist 150 etwa keine Zahl? Wer den Unterschied zwischen Ziffer und Zahl nicht kennt, dem empfehle ich die entsprechenden wikipedia-Artikel.

Übrigens sind alle Aufgaben ausschließlich mit ls in der bash lösbar. Also nicht mit grep oder sowas kommen....
Außderdem bin ich immer noch gespannt, wie framp die Aufgabe c) ausschließlich mit den Informationen aus "man ls" lösen will.

Ich kann mich zum Schluss nur wiederholen: Ich finde diese Aufgaben für einen Anfänger weder diskussionsunwürdig noch besonders einfach.
 

Stefan Staeglich

Advanced Hacker
Wie du schon richtig bemerkt hast ist die Aufgabe e) nicht eindeutig. 99,9 ist z.B. auch eine Zahl. Die Aufgabe sagt nicht welche Zahlen berücksichtigt werden sollen und wieviel Stellen die haben.
 
Oben