Portál AbcLinuxu, 29. prosince 2025 19:04
mplayer -shuffle `tagger --files rpg`
Představoval jsem si to tak, že z každého z řádků vrácených taggerem se stane jeden parametr pro MPlayer. Ten parametry pochopí jako soubory, zamíchá je a přehraje. Bohužel tohle nefunguje v případě, že cesta k nějakému souboru obsahuje mezery. Z takové cesty se stane několik parametrů, které udávají neexistující soubory.
Napadlo mě obalit každý řádek uvozovkami. Tak by byly cesty k souborům v uvozovkách a nevzniklo by několik parametrů.
mplayer `tagger -f rpg | xargs -isoubor echo \"soubor\"`
Jenže to taky nefunguje. Tady se cesta obsahující mezeru rozdělí na několik parametrů úplně stejně jako předtím. Navíc první část má na začátku " a poslední " na konci.
Nevíte někdo, jak zařídit, aby se z každého řádku vyrobil opravdu jen jeden parametr, i když bude obsahovat mezery? Předem díky za odpovědi.
Nebylo by jednodušší použít xargs přímo na mplayer:
tagger -f rpg | xargs mplayer -shuffle
), každopádně to stejně neřeší ten problém s mezerami v názvech souborů.
Ale díky za nakopnutí, protože se mi povedlo vymyslet šílený příkaz, se kterým to opravdu funguje, jak má:
tagger -f rpg | xargs -isoubor echo \"soubor\" | xargs mplayer -shuffle
Omlouvám se, psal jsem to z hlavy. Takže druhý pokus:
tagger -f rpg | tr "\n" "\0" | xargs -0 mplayer -shuffle
Pokud by se dal příkaz tagger přesvědčit, aby odděloval jména nulovým znakem, obejdete se bez tr.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.