Get Adobe Flash player

Wer länger braucht, ist selber Schuld: Die bash für Einsteiger

Frü­her war es nor­mal, dass man nach dem Ein­schal­ten eines Com­pu­ters einen blin­ken­den Cur­sor erblickte. Das war bei den meis­ten Heim­com­pu­tern der 80er Jahre so, das war auch bei den PCs mit MSDOS so. Anders war das in den 80ern bei den Apple MacIntosh-Computern, wel­che wir PC-Freaks des­halb nicht ernst nah­men, weil wir dach­ten nur unsere Ansicht des Datei­sys­tems wäre der „rich­tige“ Zugang zum Com­pu­ter. Nicht ernst genom­men hat man damals auch andere Com­pu­ter mit gra­fi­scher Ober­flä­che, wie den tol­len Atari und natür­lich die Ami­gas mit ihren flimm­ri­gen, hoch­auf­lö­sen­den und bun­ten Ober­flä­chen. Sowas nann­ten „echte Pro­fis“ damals „Spielecomputer“.

Die Pro­fis haben sich von Micro­soft eines bes­se­ren beleh­ren las­sen und sit­zen nun meist an 3D ani­mier­ten Vista-PCs mit der Rechen­leis­tung von 1000 PCs von damals — nur auf der Gra­fik­karte.
OK, wer´s braucht. Auch ich ziehe für die meiste Zeit am Com­pu­ter eine gra­fi­sche Ober­flä­che der „Kom­man­do­zeile“ vor, aber ich bin auch begeis­tert von den Mög­lich­kei­ten der bash. Gerade weil ich noch den kas­trier­ten Kom­man­do­zei­len­in­ter­pre­ter von MSDOS kenne, weiß ich die Mög­lich­kei­ten der bash zu schät­zen. Der Ver­ein „Linux User Schwa­bach e.V.“ betrach­tet es als (s)eine wich­tige Auf­gabe, Kennt­nisse über das freie Betriebs­sys­tem Linux zu ver­mit­teln und bie­tet ein „Guru„training an, das dem an fun­dier­ten Wis­sen inter­es­sier­ten Ein­stei­ger dabei hilft u.a. die „bash“ ken­nen — und viel­leicht lie­ben — zu ler­nen. Meine fol­gen­den Bei­spiele sind in Rah­men mei­ner Teil­nahme an der LUSC-Veranstaltung entstanden.

Dass eine gra­fi­sche Ober­flä­che wun­der­bar ein­her geht mit einer Shell (Kom­man­do­zeile) zeigt nicht nur Linux, son­dern auch OS X. Auch Mac User haben eine Shell — auch wenn sie davon viel­leicht nichts wis­sen. Die unter den aktu­el­len Linux-Distributionen übli­che Shell ist die bash.

Ein Bei­spiel:
Stel­len Sie sich mal vor, sie möch­ten für jeden Monat eines Jah­res ein Ver­zeich­nis anle­gen. Und in jedem Monat möch­ten Sie für jeden Tag ein Unter­ver­zeich­nis anle­gen. Wie lange brau­chen Sie dafür?
Mit der bash (Ver­sion 3.x) geht das in unge­fähr 1 Sekunde (Tipparbeit)

mkdir -p 2008/{1..12}/{1..31}

..und dann brau­chen Sie noch 1 Minute um die Tage im Februar und in den Mona­ten zu ent­fer­nen, die keine 31 Tage haben. Na, wie viel Zeit braucht der Windows-Freak?

Stel­len Sie sich mal vor, Sie möch­ten das nicht nur für das Jahr 2008, son­dern für alle Ihre (bis­he­ri­gen) Lebens­jahre machen. Ich z.B. bin 1964 gebo­ren, also tippe ich:

mkdir -p {1964..2008}/{1..12}/{1..31}

OK, das mit dem löschen der „fal­schen“ Tage wird lang­sam etwas auf­wän­di­ger. Viel­leicht hat jemand hierzu eine gute Idee?

Oder Sie möch­ten ein Ver­zeich­nis für jede Kalen­der­wo­che des Jah­res 2008?

mkdir -p 2008/{1..52}

und viel­leicht in jeder Woche noch ein Unter­ver­zeich­nis für jeden Wochentag?

mkdir -p 2008/{1..52}/{Mo,Di,Mi,Do,Fr,Sa,So}

Ich denke diese Bei­spiele las­sen erah­nen wel­che Vor­teile die bash — oder genauer — die Kom­man­do­sub­sti­tu­tion bringt. Es han­delt sich näm­lich nicht um eine Funk­tio­na­li­tät des Befehls mkdir, son­dern um eine Eigen­schaft der bash, wel­che die Kom­man­dos in der geschweif­ten Klam­mer umsetzt und dann sozu­sa­gen die sich erge­ben­den Ein­zel­kom­man­dos an den Befehl mkdir schickt.

Will man sehen, was für ein Kom­mando auf dem Sys­tem „eigent­lich“ aus­ge­führt wird, dann gibt man ein­fach vor dem bash-Kommando echo ein, also z.B.

echo mkdir -p 2008/{1..12}

und als Ergeb­nis bekommt man

mkdir -p 2008/1 2008/2 2008/3 2008/4 2008/5 2008/6 2008/7 2008/8 2008/9 2008/10 2008/11 2008/12
Die Geschichte mit den Pünkt­chen geht übri­gens ERST ab der bash 3.x, nicht mit der bash 2.x die z.B. noch in Debian Sarge Stan­dard war.

2 Kommentare zu „Wer länger braucht, ist selber Schuld: Die bash für Einsteiger“

  • hans:

    Hallo, dein Bei­spiel sorgt ziem­lich sicher für den übli­chen Kommandozeilenfrust:

    mkdir 2008/{1..12}/{1..31}

    zieht m.E. jede Menge Feh­ler­meldn­gen nach sich und nichts passiert.

    Grund: Das Ver­zeich­nis 2008 bzw. 2008/1 muss vor­han­den sein, wenn ein Ver­zeich­nis 2008÷1÷1 erstellt wer­den soll!

    So geht’s m.E. (alles eine Zeile):
    mkdir 2008; mkdir 2008/{1..12}; mkdir 2008/{1..12}/{1..31}

    Com­ment: Nicht unbe­dingt nütz­lich, aber eine nette Demo der „Macht“ der bash-Kommandozeile

    H.

  • hallo Hans,
    ich hatte das –p für „par­en­tal“ ver­ges­sen, wel­ches dazu führt, dass neue Unter­ver­zeich­nisse mit­samt den nöti­gen dar­über befind­li­chen neuen Ver­zeich­nis­sen erstellt wer­den. Dann geht es schon alles in einem Rutsch. Danke für den Hin­weis, habe es in obi­gem Text ergänzt!
    Übri­gens könn­test Du statt
    mkdir 2008; mkdir 2008/{1..12}; mkdir 2008/{1..12}/{1..31}
    auch kür­zer sagen
    mkdir 2008 2008/{1..12} 2008/{1..12}/{1..31}
    denn mit mkdir kannst Du natür­lich belie­big viele Ver­zeich­nisse mit einem Befehl erstel­len.
    Ciao Ralph

Kommentieren

Kategorien
Metropolregion N
Suche auf regio­na­len Web­sei­ten im Raum Nürnberg.
Loading