Mám takový problém, pokouším se najít přesné znění příkazu, které jsem zadal do lxterminálu (ale nedostanu se do něj z plochy už! GUI shořelo)
Zadaný příkaz je rsync "petr novak" "pavel jungman" josef cifis - důležité na něm je jen uvozovky a mezery
První pokus
Nicméně vcat /proc/123456/cmdline vidím ,že způsobí:
- mezery nahradí hexaznaky 00
- uvozovky odstraní
- na konec přidá null znak
Takto je to nepoužitelné, když chci příkaz znovu oživit (třeba zkopírovat do schránky v přesném zněí). Například nano editor tam vybleje ^@., textový editor Mousepad ho ani neotevře, skončí na chybové hlášsce o nepodporované znakové sadě, maximálně si ho mohu otrevřít jako UTF-16 a kochat se čínštinou. V tom nákupním seznamu znakových sad aby se prase vyznalo a jsem ani nenašel ASCII tam . Takový editor je zrátka na draka
Chápu že asi jde o nějakou interní reprezenaci příkazu (a asi koherentní). A možná i chápu, že příkaz je interně spuštěn s argumenty ["Petr novak","pavel jungman", "josef","cifis"] a že shell nějak poskytuje konvenci, že mezery jsou separátor argumentů (nejsou-li v uvozovkách)
Druhý pokus byl ps aux | grep pavel - ztratili se uvozovky.
Je nějaká možnost, jak zjistit přesné znění příkazu? Tzn přesně jak jsem ho zadal, aby tam byly správně uvozovky ?
Například:
-nějaká utilita na konverzi proc/cmdline (sed/awk/preg_replace ... jak escapovat null znak?)
-nějaký parametr ps, který neprzní formu příkazu (zachová uvozovky)
- jiný způsob