Portál AbcLinuxu, 25. dubna 2024 21:14


Dotaz: Parametry příkazu jako řádky ze vstupu

Wan-To avatar 9.4.2007 21:21 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
Parametry příkazu jako řádky ze vstupu
Přečteno: 228×
Odpovědět | Admin
Mám příkaz tagger, který vypíše soubory označené nějakým tagem tak, že na každém řádku je jeden soubor. Pak mám otagovanou nějakou hudbu, kterou bych chtěl náhodně přehrát v MPlayeru.

Tak jsem vymyslel následující věc:

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.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.4.2007 21:28 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Parametry příkazu jako řádky ze vstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nebylo by jednodušší použít xargs přímo na mplayer:

  tagger -f rpg | xargs mplayer -shuffle
Wan-To avatar 9.4.2007 21:34 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
Rozbalit Rozbalit vše Re: Parametry příkazu jako řádky ze vstupu
To mě nenapadlo (nevěděl jsem, jak přesně funguje xargs, použil jsem ho jen k přidání uvozovek :-) ), 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
Wan-To avatar 9.4.2007 21:38 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
Rozbalit Rozbalit vše Re: Parametry příkazu jako řádky ze vstupu
Ale má to teda jeden háček. Jak ten MPlayer spouštím prostřednictvím xargs, tak mi nereaguje na klávesy v konzoli.
9.4.2007 21:42 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Parametry příkazu jako řádky ze vstupu

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.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.