Nem tudom használni az idézőjelet

A probléma kiindulása a következő parancs, melynek a működésre bírása nagyon sürgős lenne:
diff --unified=6 --exclude=.svn --minimal --ignore-matching-lines=´<!--*-->´ könyvtár1 könyvtár2 > könyvtár.diff

Kipróbáltuk, másik gépen működik. A konkrét probléma az, hogy az ´<!--*-->´ karaktersorozattal van. Igazából szerintem csak a ´ rakoncátlankodik. Valamiért kétszer kell megnyomni például, hogy megjelenjen. Van valakinek ötlete mitől lehet, vagy mi lehet a megoldás?
Esetleg, hogy lehetne pótolni a parancsot?

Aleph

Hozzászólások

Elképzelhető hogy a két gépen nem azonos diff verziók vannak és így eltérhet a regexp értelmezése, ami szerintem nem is szabványos így ahogy van. Pontosan én sem tudom hogy mi lenne a helyes, rosszat meg nem akarok megadni.

`` helyett '' hasznalj!
Ha nem megy a karakter, valamiert akkor egerrel illeszd be. nem '<!--.*-->' -ot akarsz hasznalni? Vagy '^[[:space:]]*<!--.*-->[[:space:]]*$' .

A "!" az shell-ben (bash) az elozo parancsokban hasznalt argumentumok kifejte'se're vagy valami ilyesmire szolgal:


   Event Designators
       An  event designator is a reference to a command line entry in the his-
       tory list.

       !      Start a history substitution, except when followed by  a  blank,
              newline, = or (.
       !n     Refer to command line n.
       !-n    Refer to the current command line minus n.
       !!     Refer to the previous command.  This is a synonym for `!-1'.
       !string
              Refer to the most recent command starting with string.
       !?string[?]
              Refer  to the most recent command containing string.  The trail-
              ing ? may be omitted if string is followed immediately by a new-
              line.
       ^string1^string2^
              Quick  substitution.  Repeat the last command, replacing string1
              with string2.  Equivalent to ``!!:s/string1/string2/'' (see Mod-
              ifiers below).
       !#     The entire command line typed so far.

Ha nem megfelelo" idezojelbe teszed a !-t, akkor baj lehet. A szimpla idezojelbe ('...') tett szovegekre nem fejti ki a shell ezt, a dupla idezojelekbe tett szovegbe viszont igen. Amit irtal az a masik ("ferde") idezojel, a `...`, az meg ma'sra szolgal (a `...`-be irt parancs stdout-ja't helyettesiti be).

Szoval ez igy, hogy


echo '<!--*-->'

teljesen jol mukodik.

Regexpben belul pedig talan a !-t erdemes kiescape'zni (hu de szep magyar szo ;]), szoval eletenni egy \-t, mert ott annak valami mas jelentese van (tagada's).

Igy tehat hogy


--ignore-matching-lines='<\!--*-->'

szerintem mennie kene.

A.

Szerk: a * helyett is talan .* kell... szoval igy:


--ignore-matching-lines='<\!--.*-->'

de ebben nem vagyok egeszen biztos (valami olyasmi remlik, hogy amit shellpatternben (lasd: fnmatch()) *-gal jelolne'l, azt regexp-ben .*-gal kell helyettesiteni).

olyan idézőjelet használtál, ami nem speciális a shell számára, és egyébként arra való, hogy olyan karaktereket írj vele, amik nincsenek rajta a billentyűzeten.
vannak ilyenek, hogy: ´ ˝ ¨ ¸ - a magyar billentyűzeten az altgr-9/ö/ü/ó.
így írhatsz 'ë'-t úgy, hogy altgr-ü + e , vagy 'ç'-t (altgr-ó + c). ilyen dolgok ezek.

Kiizadtam: <--.*-->
Mindenféle trükkös idézőjel nélkül, ponttal. Szép teljes opció született:
DIFF_OPT="--unified=6 --exclude=.svn --minimal --ignore-matching-lines=<!--.*-->"
Már csak azt nem értem (bár egy ronda ki-be másolással megoldottam: miután kivettem az értelmezett fájlokból a .svn könyvtárat nem tudtam még a metadoc.xml fájlt is kivenni.
Szerintem így nem megy parancssorból, de a scriptben valamiért megette. Nem jöttem volna magamtól rá, ha nem bandukolok be a könyvtárba, ahol ott lepult az elkészült diff, bár nem pont úgy ahogy én elképzeltem, de azt jelentette, hogy nem jelzett hibát a diff.
Egyébként mindenkinek nagyon köszönöm a segítségét.