Hi, ich will eine Audio CD brennen und dazu die mp3 Dateien in wav mot mpg123 konvertieren. Bisher kriege ich die Konversion immer nur Stück für Stück hin, also mpg123 -w track1.wav track1.mp3, dann mpg123 -w track2.wav track2.mp3 und so weiter Das ist sehr langweilig. mpg123 -w *.wav *.mp3 tuts aber nicht. Wie kann ich also so eine Art batch job als command eingeben, so daß ich etwas sinnvolles in der Zeit machen kann, wie dem Regen zuschauen? Und gibt es ein Gui für mpg123? Krabber müßte das doch können, aber irgendwie kriege ich die "verzeichnis auswählen" nicht hin. Jost
Am Dienstag, 6. August 2002 23:17 schrieb Jost Ammon:
Hi,
ich will eine Audio CD brennen und dazu die mp3 Dateien in wav mot mpg123 konvertieren.
Bisher kriege ich die Konversion immer nur Stück für Stück hin, also
mpg123 -w track1.wav track1.mp3, dann mpg123 -w track2.wav track2.mp3 und so weiter
Das ist sehr langweilig.
mpg123 -w *.wav *.mp3 tuts aber nicht.
Wie kann ich also so eine Art batch job als command eingeben, so daß ich etwas sinnvolles in der Zeit machen kann, wie dem Regen zuschauen?
Und gibt es ein Gui für mpg123? Krabber müßte das doch können, aber irgendwie kriege ich die "verzeichnis auswählen" nicht hin.
Jost
Hi Jost, ich benutze dazu xmms, stelle mir mit der GUI eine Playlist zusammen und lasse sie mit dem diskwriter-Plugin als *.wav abspeichern. Gruß Achim
Hallo Achim,
mpg123 -w *.wav *.mp3 tuts aber nicht.
Wie kann ich also so eine Art batch job als command eingeben, so daß ich etwas sinnvolles in der Zeit machen kann, wie dem Regen zuschauen?
Und gibt es ein Gui für mpg123? Krabber müßte das doch können, aber irgendwie kriege ich die "verzeichnis auswählen" nicht hin.
Jost
Hi Jost, ich benutze dazu xmms, stelle mir mit der GUI eine Playlist zusammen und lasse sie mit dem diskwriter-Plugin als *.wav abspeichern. Gruß Achim
weißt Du zufällig, wo ich das diskwriter plugin herkriege - auf der xmms.org seite fine ich nichts und bei rpmfind habe ich nur die Mandrake Version gesehen, die bruacht aber einen xmms-mdk, und weil ich suse habe, habe ich da schlechte Karten. Gruß jost
Hallo Jost, Am Dienstag, 6. August 2002 23:42 schrieb Jost Ammon:
weißt Du zufällig, wo ich das diskwriter plugin herkriege - auf der xmms.org seite fine ich nichts und bei rpmfind habe ich nur die Mandrake Version gesehen, die bruacht aber einen xmms-mdk, und weil ich suse habe, habe ich da schlechte Karten.
Gruß
jost
Hmm, wenn ich mich recht erinnere, war es bei xmms dabei. Unter Optionen -> Einstellungen kannst Du das Ausgabe-Plugin einstellen. Da müsste das Disk-Writer-Plugin zu finden sein. Gruß Achim
Vergiß meine letzte Mail, das plugin ist ja schon installiert. Statt immer
gg: sollte man erstmal die Proggies angucken.
Donnerwetter! Feines Teil. nur eins ist merkwürdig:
xmms ist in einem endless loop und hört nicht mehr auf zu konvertieren -
was kann denn da los sein?
Jost
didn't you, Achim Lehmkuhl
Am Dienstag, 6. August 2002 23:17 schrieb Jost Ammon:
Hi,
ich will eine Audio CD brennen und dazu die mp3 Dateien in wav mot mpg123 konvertieren.
Bisher kriege ich die Konversion immer nur Stück für Stück hin, also
mpg123 -w track1.wav track1.mp3, dann mpg123 -w track2.wav track2.mp3 und so weiter
Das ist sehr langweilig.
mpg123 -w *.wav *.mp3 tuts aber nicht.
Wie kann ich also so eine Art batch job als command eingeben, so daß ich etwas sinnvolles in der Zeit machen kann, wie dem Regen zuschauen?
Und gibt es ein Gui für mpg123? Krabber müßte das doch können, aber irgendwie kriege ich die "verzeichnis auswählen" nicht hin.
Jost
Hi Jost, ich benutze dazu xmms, stelle mir mit der GUI eine Playlist zusammen und lasse sie mit dem diskwriter-Plugin als *.wav abspeichern. Gruß Achim
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-multimedia-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-multimedia-help@suse.com
Am Dienstag, 6. August 2002 23:58 schrieb Jost Ammon:
Vergiß meine letzte Mail, das plugin ist ja schon installiert. Statt immer gg: sollte man erstmal die Proggies angucken.
Donnerwetter! Feines Teil. nur eins ist merkwürdig:
xmms ist in einem endless loop und hört nicht mehr auf zu konvertieren - was kann denn da los sein?
Jost
Hallo Jost, da ist bestimmt die Repeat-Funktion aktiv. Die Playlist wird dann wiederholt. Gruß Achim
Hallo! Am Dienstag, 6. August 2002 23:17 schrieb Jost Ammon:
Wie kann ich also so eine Art batch job als command eingeben, so daß ich etwas sinnvolles in der Zeit machen kann, wie dem Regen zuschauen?
Ungetestet und frei von jeglicher Garantie: ,---mp32wav.sh--- | | #!/bin/sh | for file in *.mp3 | do | mpg123 -w "$file.wav" "$file" | done | '--- Anschließend machst du das Script mit $ chmod 755 mp32wav.sh ausführbar und kannst es dem at-Daemon zum Fraß vorwerfen: $ at 23:00 at> mp32wav.sh at> [Strg]+[D] Vorausgesetzt der Festplattenplatz hat ausgereicht, liegen die WAV-Dateien zum Frühstück einträchtig neben den MP3-Originalen. (Beispiel aus Linux-User 6/2002) Tschau, Christian -- Where are all these superior editors? According to you, the only imaginable reason for Emacs predominance would be masochism. (David Kastrup in alt.religion.emacs)
Hi Christian,
Wie kann ich also so eine Art batch job als command eingeben, so daß ich etwas sinnvolles in der Zeit machen kann, wie dem Regen zuschauen?
,---mp32wav.sh--- | | #!/bin/sh | for file in *.mp3 | do | mpg123 -w "$file.wav" "$file" | done | '---
sieht interessant aus - drei blöde Fragen: was für eine Funktion hat das $ Zeichen? was sagt die Zeile #!/bin/sh? und braucht es die senkrechten Balken?
mpg123 -w *.wav *.mp3 tuts aber nicht.
Bonusfrage - der Fehler, den ich gestern also gemacht habe, war zu sagen *.wav statt $.wav? Das habe ich aus alten DOS Zeiten her, wo * einen beliebigen string meint, $ jedoch nur ein Zeichen. Das ist also unter Linux anders? Gruß, Jost
On Mit, 07 Aug 2002 at 09:37 (+0200), Jost Ammon wrote:
Hi Christian,
Wie kann ich also so eine Art batch job als command eingeben, so daß ich etwas sinnvolles in der Zeit machen kann, wie dem Regen zuschauen?
,---mp32wav.sh--- | | #!/bin/sh | for file in *.mp3 | do | mpg123 -w "$file.wav" "$file" | done | '---
sieht interessant aus - drei blöde Fragen:
Das kann nicht laufen. $file.wav wird als track1.mp3.wav rauskommen - wenn denn überhaupt eine MP3-Datei im Verzeichnis existiert (*.mp3 wird durch die Shell ersetzt durch alle existierenden Dateien mit Endung .mp3), sonst kommt *.mp3 raus. Und noch was: file sollte man möglichst _nicht_ als Variablennamen nutzen, das ist ein Kommando (man file).
was für eine Funktion hat das $ Zeichen? was sagt die Zeile #!/bin/sh? und braucht es die senkrechten Balken?
man bash Sorry für die Kurzform, aber Du solltest Dich auf jeden Fall näher mit der Shell beschäftigen, sonst nutzt Du das Linux-System nie auch nur annähernd aus. Am besten ist noch, wenn Du Dir ein gutes Buch zu Linux kaufst. Ähm, Christian: Du siehst, die Pipe-Zeichen verwirren nur. Außerdem verhindern sie, dass man sich so einen Codeschnipsel einfach mal kopiert und testet. Lass sie besser weg.
mpg123 -w *.wav *.mp3 tuts aber nicht.
Bonusfrage - der Fehler, den ich gestern also gemacht habe, war zu sagen *.wav statt $.wav? Das habe ich aus alten DOS Zeiten her, wo * einen beliebigen string meint, $ jedoch nur ein Zeichen. Das ist also unter Linux anders?
Nein, ist es nicht - aber wie oben beschrieben ersetzt die Shell die Platzhalter - und *.mp3 gibt es ja wohl noch nicht im Verzeichnis. mpg123 kriegt also folgende Parameter: mpg123 track1.wav track2.wav track4.wav ... *.mp3 Am besten, Du startest folgende Schleife (das kannst Du übrigens direkt in einer Konsole so eingeben, Du brauchst kein Shell-Script dafür) und studierst in der Zwischenzeit das bash-Manual ;-): for i in *.wav; do mpg123 -w "$i" "`basename $i .wav`.mp3" done Zur Erklärung: Der Ausdruck *.wav wird durch die Shell expandiert zu einer Liste aller Dateien im aktuellen Verzeichnis mit der Endung .wav. In der for-Schleife wird die Variable i (abzufragen mit $i) nacheinander mit allen gefundenen Dateinamen belegt. Der Aufruf von mpg123 kriegt als Parameter: "$i" - Name der aktuellen .wav-Datei (gefüllt durch die for-Schleife) "`basename $i .wav`.mp3" - liefert den Namen der Datei ohne Endung .wav und hängt .mp3 an. Sieh auch: man basename Die "" um die Argumente ermöglichen das korrekte Handling von Dateinamen, die Leerzeichen enthalten. Wie gesagt: Dringender Hinweis - beschäftige Dich mit der Shell! Jan
Hallo Jan,
man bash
Sorry für die Kurzform,
im Gegensatz zu dem, was ich beim Aufruf von man bash zu lesen kriege....;-)
aber Du solltest Dich auf jeden Fall näher mit der Shell beschäftigen, sonst nutzt Du das Linux-System nie auch nur annähernd aus.
Paßt schon. Als Win Umsteiger war ich am Anfang sehr dankbar für klicki bunti, aber die Konsole holt mächtig auf.
Am besten ist noch, wenn Du Dir ein gutes Buch zu Linux kaufst. Welches?
Es müßte eine Art Trainingsbuch sein - ich muß sagen, sowas ist bei Linux leider ziemlich selten. Immerhin - den Kofler habe ich und der ist großartig - nur nutzt er in Bezug auf die bash nicht so viel. Also danke für Tips, die sich an Anfänge richten. Gruß, Jost
Mittwoch, 7. August 2002 23:22 - Jost Ammon:
Am besten ist noch, wenn Du Dir ein gutes Buch zu Linux kaufst. Welches?
Es müßte eine Art Trainingsbuch sein - ich muß sagen, sowas ist bei Linux leider ziemlich selten.
ein ganz entschiedenes "nein"! m. kofler "linux" - addison-wesley j.p. hekman "linux in a nutshell" - o'reilly allein mit den beiden kommt man schon ziemlich weit rené -- ============== reply as well 2: rff@online.de or /dev/null ;-) ==============
Am besten ist noch, wenn Du Dir ein gutes Buch zu Linux kaufst. Welches?
Es müßte eine Art Trainingsbuch sein - ich muß sagen, sowas ist bei Linux leider ziemlich selten. Immerhin - den Kofler habe ich und der ist großartig - nur nutzt er in Bezug auf die bash nicht so viel.
Na ja, also das muß ich wohl öffentlich widerrufen - ich schaue da gerade rein und finde alles total verständlich erklärt (wie immer beim Kofler). Back to working, Jost
Danke übrigens für die gute Erläuterung - so kapiert man, was da abläuft.
for i in *.wav; do mpg123 -w "$i" "`basename $i .wav`.mp3" done
Zur Erklärung: Der Ausdruck *.wav wird durch die Shell expandiert zu einer Liste aller Dateien im aktuellen Verzeichnis mit der Endung .wav. In der for-Schleife wird die Variable i (abzufragen mit $i) nacheinander mit allen gefundenen Dateinamen belegt.
Der Aufruf von mpg123 kriegt als Parameter: "$i" - Name der aktuellen .wav-Datei (gefüllt durch die for-Schleife) "`basename $i .wav`.mp3" - liefert den Namen der Datei ohne Endung .wav und hängt .mp3 an. Sieh auch: man basename
Die "" um die Argumente ermöglichen das korrekte Handling von Dateinamen, die Leerzeichen enthalten.
Jost
Hallo Jan! Am Mittwoch, 7. August 2002 23:08 schrieb Jan Trippler:
On Mit, 07 Aug 2002 at 09:37 (+0200), Jost Ammon wrote:
[schnipp]
| #!/bin/sh | for file in *.mp3 | do | mpg123 -w "$file.wav" "$file" | done
Das kann nicht laufen. $file.wav wird als track1.mp3.wav rauskommen - wenn denn überhaupt eine MP3-Datei im Verzeichnis existiert (*.mp3 wird durch die Shell ersetzt durch alle existierenden Dateien mit Endung .mp3), sonst kommt *.mp3 raus.
Da bin ich ja nun trotzdem fein raus, da ich Gott sei Dank die Quellenangabe nicht vergessen habe: Das Skript stammt aus dem Linux-User 6/2002 aus einem Artikel über "at" und "cron" - um genau das Anliegen des Fragestellers zu erledigen. Wie gesagt habe ich von Shellscripting null Ahnung und habe es vorher auch nicht getestet.
Und noch was: file sollte man möglichst _nicht_ als Variablennamen nutzen, das ist ein Kommando (man file).
Hab mir weiter nichts dabei gedacht, da ich das Skript einfach abgetippt hab' (und nochmal fein raus *hehe*).
was für eine Funktion hat das $ Zeichen? was sagt die Zeile #!/bin/sh? und braucht es die senkrechten Balken?
man bash
Sorry für die Kurzform, aber Du solltest Dich auf jeden Fall näher mit der Shell beschäftigen, sonst nutzt Du das Linux-System nie auch nur annähernd aus. Am besten ist noch, wenn Du Dir ein gutes Buch zu Linux kaufst.
Ähm, Christian: Du siehst, die Pipe-Zeichen verwirren nur. Außerdem verhindern sie, dass man sich so einen Codeschnipsel einfach mal kopiert und testet. Lass sie besser weg.
Menno, jetzt wollte ich einmal cool, trendy, hip und total 'in' sein. Raub' mir doch nicht meine Illusionen ;o) Aber du hast Recht: War nicht der Hit *g* [richtiges Shell-Script + Erklärung]
Wie gesagt: Dringender Hinweis - beschäftige Dich mit der Shell!
ACK
Jan
Tschau, Christian (der seiner Bash leider viel zu wenig Aufmerksamkeit widmet) -- Two things that are essential to life is WD 40 and duct tape. If it moves and it isn't supposed to use the duct tape. If it doesn't move and it's supposed to use the WD 40.
Mittwoch, 7. August 2002 23:46 - Christian Marker:
Das kann nicht laufen. Da bin ich ja nun trotzdem fein raus, da ich Gott sei Dank die Quellenangabe nicht vergessen habe: Das Skript stammt aus dem Linux-User 6/2002 aus einem Artikel über "at" und "cron" - um genau das Anliegen des Fragestellers zu erledigen. Wie gesagt habe ich von Shellscripting null Ahnung und habe es vorher auch nicht getestet.
fein raus? naja... ich halte es nur bedingt für guten stil ungetesteten code unhinterfragt rauszujagen, nur weil er mal in irgendner zeitschrift gestanden hat. das überlassen wir doch lieber den freunden aus & von redmont, oder?!? rené -- ============== reply as well 2: rff@online.de or /dev/null ;-) ==============
Hallo Rene (sorry, aber ich krieg's gerade nicht hin, einen Akzent auf den letzten Buchstaben zu setzen...*doh*)! Am Donnerstag, 8. August 2002 02:00 schrieb René F. Franke:
Mittwoch, 7. August 2002 23:46 - Christian Marker:
Das kann nicht laufen.
Da bin ich ja nun trotzdem fein raus, da ich Gott sei Dank die Quellenangabe nicht vergessen habe: Das Skript stammt aus dem Linux-User 6/2002 aus einem Artikel über "at" und "cron" - um genau das Anliegen des Fragestellers zu erledigen. Wie gesagt habe ich von Shellscripting null Ahnung und habe es vorher auch nicht getestet.
fein raus? naja... ich halte es nur bedingt für guten stil ungetesteten code unhinterfragt rauszujagen, nur weil er mal in irgendner zeitschrift gestanden hat.
Ich hab's ja nicht aus _irgendeiner_ Zeitschrift abgeschrieben, sondern aus einer Linux-Zeitschrift. Normalerweise gehe ich davon aus, dass die Autoren von Fachzeitschriften wissen, wovon sie schreiben. Abgesehen davon finde ich in diesem Fall nichts schlimmes daran, diesen Vierzeiler ungetestet herauszujagen - immerhin hab' ich's (freundlich wie ich bin *grins* *SCNR*) ja noch dazugeschrieben.
das überlassen wir doch lieber den freunden aus & von redmont, oder?!?
Hey...immerhin ging mein Codeschnipsel wenigstens _ansatzweise_ in die richtige Richtung *g*
rené
Tschau, Christian --
Dieter Bruegmann schrieb einmal: Sei froh, daß ich es nicht mehrmals schrieb. (Dieter Brügmann in de.alt.arnooo)
Hi
Hallo Rene (sorry, aber ich krieg's gerade nicht hin, einen Akzent auf den letzten Buchstaben zu setzen...*doh*)!
Guck' mal hier - das klappt bei mir prima: andreas henz schrieb am Montag, 5. August 2002 13:24 in de.comp.os.unix.apps.kde:
Hallo
ich möchte gerne einmal wissen ob ich französische Akzente unter KDE verwenden kann so wie es unter Windows möglich ist ohne jetzt gleich die komplette Tastaturbelegung auf französisch umzustellen. Und wenn ja wie?
Bei mir(SuSE8.0, KDE3.0.2) verwende ich den Ersatz für die COMPOSE-Taste (Left-Shift und Right-Ctrl). Loslassen und danach den Akzent und den Buchstaben drücken. é ê è æ ½ und mit Komma und c ç
Am besten, Du startest folgende Schleife (das kannst Du übrigens direkt in einer Konsole so eingeben, Du brauchst kein Shell-Script dafür) und studierst in der Zwischenzeit das bash-Manual ;-):
for i in *.wav; do mpg123 -w "$i" "`basename $i .wav`.mp3" done
Jetzt muß ich mich aber doch noch in die Diskussion einklinken :-) mpg123 soll doch die mp3's in wav's umwandeln, oder? D.h. im Normalfall gibt es vorher keine .wav Files -> "for i in *.wav" ist der falsche Ansatz. Das erste Script mit "for i in *.mp3" war da schon soweit OK. Und mit der Quotierung muß man auch sehr umsichtig umgehen, besonders wenn (wie bei MP3 Files nicht unüblich) Leerzeichen im Dateinamen vorkommen. In einem solchen Fall funktioniert obiges Script nicht. Konsequenterweise muß auch die mpg123 Zeile angepaßt werden. Das Script sähe dann so aus: for i in *.mp3; do mpg123 -w "$(basename "$i" .mp3).wav" "$i" done Ich bevorzuge übrigens $(...) gegenüber `...`. Macht das gleiche, ist aber besser von den anderen Quote-Zeichen '...' zu unterscheiden. Mario
On Don, 08 Aug 2002 at 09:39 (+0200), Mario Streiber wrote:
Am besten, Du startest folgende Schleife (das kannst Du übrigens direkt in einer Konsole so eingeben, Du brauchst kein Shell-Script dafür) und studierst in der Zwischenzeit das bash-Manual ;-):
for i in *.wav; do mpg123 -w "$i" "`basename $i .wav`.mp3" done
Jetzt muß ich mich aber doch noch in die Diskussion einklinken :-)
mpg123 soll doch die mp3's in wav's umwandeln, oder? D.h. im Normalfall gibt es vorher keine .wav Files -> "for i in *.wav" ist der falsche Ansatz. Das erste Script mit "for i in *.mp3" war da schon soweit OK.
Das hatte ich andersrum verstanden - wenn es so ist, dann sorry für die Verwirrung. Aber funktioniert hätte es trotzdem nicht, die Ersetzung "$file.wav" ist nämlich nicht richtig (bzw. es hätten als Ergebnis lauter Dateien namens trackx.mp3.wav existiert, was sicher nicht im Sinne des Erfinders war ;-).
Und mit der Quotierung muß man auch sehr umsichtig umgehen, besonders wenn (wie bei MP3 Files nicht unüblich) Leerzeichen im Dateinamen vorkommen. In einem solchen Fall funktioniert obiges Script nicht.
Stimmt, an einer Stelle habe ich die Quotes vergessen - nämlich für das Argument von basename.
Konsequenterweise muß auch die mpg123 Zeile angepaßt werden. Das Script sähe dann so aus:
for i in *.mp3; do mpg123 -w "$(basename "$i" .mp3).wav" "$i" done
Oder (jetzt die Version wav -> mp3): for i in *.mp3; do mpg123 -w "`basename "$i" .mp3`.wav" "$i" done
Ich bevorzuge übrigens $(...) gegenüber `...`. Macht das gleiche, ist aber besser von den anderen Quote-Zeichen '...' zu unterscheiden.
Die $(...) Syntax funktioniert ausschließlich in der bash. Ich versuche aus Gewohnheit weitgehend kompatibel zu anderen Shells und Unixen zu bleiben. Außerdem haben die () noch eine andere Bedeutung: Sie lassen die eingeschlossenen Befehle in einer Subshell laufen - da ist mir `` lieber. Aber das ist schon wieder fast ein Glaubenskrieg ;-) Beispiel: jan@k500:~> x=0; ( x=1; echo $x ); echo $x 1 0 jan@k500:~> Übrigens, wenn Du bash-Spezifika nutzt, geht es auch kürzer: "${i//.mp3/.wav}" statt "$(basename "$i" .mp3).wav" Es darf dann nur kein .mp3 vor der Dateiendung auftauchen. Jan P.S.: Bitte nicht an die Liste _und_ an mich antworten. Ich brauche die Mails nicht zweimal.
Die $(...) Syntax funktioniert ausschließlich in der bash. Ich versuche aus Gewohnheit weitgehend kompatibel zu anderen Shells und Unixen zu bleiben. Außerdem haben die () noch eine andere Bedeutung: Sie lassen die eingeschlossenen Befehle in einer Subshell laufen - da ist mir `` lieber. Aber das ist schon wieder fast ein Glaubenskrieg ;-)
Das ist kein Glaubenskrieg, das ist POSIX Standard. Gut, ich bin mit den Eigenheiten der Linux-Shells nicht so vertraut, da ich weit mehr mit HP-UX zu tun habe, wo die $() Notation in allen Shells (sh, ksh, bash) funktioniert. Moeglicherweise werden die anderen Shells unter Linux weniger gepflegt, da ja kaum einer eine andere als die bash benutzt.
Beispiel: jan@k500:~> x=0; ( x=1; echo $x ); echo $x 1 0 jan@k500:~>
Du verwechselst da $() mit (). Beide tun etwas voellig anderes. $() und `` sind auch in Sachen Verwendung von Subshells gleich: $ y=0; x=$(y=2; echo $y); echo $x $y 2 0 $ y=0; x=`y=2; echo $y`; echo $x $y 2 0 $ In beiden Faellen hat das Setzen von y keine Auswirkung.
Übrigens, wenn Du bash-Spezifika nutzt, geht es auch kürzer: "${i//.mp3/.wav}" statt "$(basename "$i" .mp3).wav" Es darf dann nur kein .mp3 vor der Dateiendung auftauchen.
Was dann aber das endgueltige Aus fuer die Portabilitaet bedeutet :-)
P.S.: Bitte nicht an die Liste _und_ an mich antworten. Ich brauche die Mails nicht zweimal.
Sorry, aber man muss ja ein reply to all machen, damit die Listenaddresse nicht verloren geht. Dann kommt es schon mal vor, dass ich vergesse, den Absender rauszunehmen... Mario
On Fre, 09 Aug 2002 at 08:25 (+0200), Mario Streiber wrote: [`` vs. $()]
Das ist kein Glaubenskrieg, das ist POSIX Standard. Gut, ich bin mit den Eigenheiten der Linux-Shells nicht so vertraut, da ich weit mehr mit HP-UX zu tun habe, wo die $() Notation in allen Shells (sh, ksh, bash) funktioniert. Moeglicherweise werden die anderen Shells unter Linux weniger gepflegt, da ja kaum einer eine andere als die bash benutzt.
POSIX-Standard? Muss ich doch bei Gelegenheit mal auf anderen Systemen schauen - vielleicht habe ich auch $() mit ${} verwechselt.
Du verwechselst da $() mit (). Beide tun etwas voellig anderes. $() und `` sind auch in Sachen Verwendung von Subshells gleich:
Nö, das habe ich nicht verwechselt - mir ist der Unterschied schon klar. Ich habe ja auch geschrieben, dass die _()_ noch eine andere Bedeutung haben, nicht $(). _Ich_ persönlich empfinde die Verwechslungsgefahr zwischen $() und () größer als die zwischen `` und '' - deshalb mein Kommentar *Glaubenskrieg*.
Übrigens, wenn Du bash-Spezifika nutzt, geht es auch kürzer: "${i//.mp3/.wav}" statt "$(basename "$i" .mp3).wav" Es darf dann nur kein .mp3 vor der Dateiendung auftauchen.
Was dann aber das endgueltige Aus fuer die Portabilitaet bedeutet :-)
Ja, das war eben ein bash-Beispiel. [...]
Sorry, aber man muss ja ein reply to all machen, damit die Listenaddresse nicht verloren geht. Dann kommt es schon mal vor, dass ich vergesse, den Absender rauszunehmen...
s/Outlook/mutt/g ;-) Kann Outlook kein List-Reply? Jan
Dienstag, 6. August 2002 23:17 - Jost Ammon:
Hi,
ich will eine Audio CD brennen und dazu die mp3 Dateien in wav mot mpg123 konvertieren.
biddeschön: #! /bin/bash #konvertiert alle mp3-files eines verzeichnisses zurueck nach .wav #die namen bleiben erhalten - nur die extension wird ersetzt for MPEG in `ls *mp3` do WAV=`echo $MPEG | sed "s/mp3$/wav/i"` mpg123 -vw ./$WAV $MPEG done echo "" echo "WAV-files created:" echo "==================" ls -l *.wav #zum sed-aufruf: #s/<alt>/<neu>/ : suchen & ersetzen #$: vorhergehenden ausdruck am zeilenende suchen #i: case-INsensitive - dazu muss allerdings auch # das ls-kommando noch angepasst werden ~ -- ============== reply as well 2: rff@online.de or /dev/null ;-) ==============
participants (6)
-
Achim Lehmkuhl
-
Christian Marker
-
Jan.Trippler@t-online.de
-
Jost Ammon
-
Mario Streiber
-
refran@t-online.de