Bash script kérdés

Bash script kérdés

Hozzászólások

Hello

Hogyan tudom megcsinalni azt hogy..

pl.

echo -n "Irja be az adatot: "
read adat

amikor beirom akkor az adatot akkor pl. piros alapon kek betukkel tortenjen
a beolvasas. Azt tudom hogy kiirni hogy lehet szinekkel.

Udv.

az echo es a read koze beteszed azt a parancsot, ami a szinezest csinalja. (rendszer fuggo, lehet pl. tset, vagy akar egy masik echo, ami speci ESC-szekvenciakat irogat ki)

[quote:6b6df36e47="Zahy"]az echo es a read koze beteszed azt a parancsot, ami a szinezest csinalja. (rendszer fuggo, lehet pl. tset, vagy akar egy masik echo, ami speci ESC-szekvenciakat irogat ki)

Koszi Zahy, sikerult megcsinalni.

Hogyan lehetne a legfrappánsabban előállítani ebből:
[Vv]alami[Ss]zoveg
ezt a listát:
ValamiSzoveg Valamiszoveg valamiSzoveg valamiszoveg

Azaz hogyan lehetne kibontani a szögletes zárójelben lévő karaktereket úgy, hogy az eredmény az összes lehetséges kombinációjukkal előállított lista legyen?
(Remélem hogy legalább a példából érthető hogy mire gondoltam, még ha a leírás egy kicsit zagyva is.)

A szögletes zárójelben tetszőleges számú, tetszőleges karakter lehet, nem csak kisbetű/nagybetű párok. A szón belül szintén tetszőleges számú kapcsos zárójel lehet.

(A fenti átalakításra scanner+ocr+ispell eljárás pontosságának növeléséhez lenne szükségem. Az ispell-nek ugyanis többnyire nincs ötlete a többszörös hibával terhelt szavak javítására. Én viszont nagyjából tudom, hogy a scanner+ocr páros milyen karaktereket mivel szokott összekeverni, így az ispell-nek a hibás szó helyett a lehetséges szavak listáját tudnám átadni, amiből az már ki tudná választani a helyes szót.)

Nem tudom, mennyire frappáns, de így nem jó:
[code:1:1185eabcb7]
$ echo {V,v}alami{S,s}zoveg
ValamiSzoveg Valamiszoveg valamiSzoveg valamiszoveg
$
[/code:1:1185eabcb7]
Persze, előtte le kell cserélni a szögletes zárójeleket []-ra, és vesszőt tenni közé.

L.Á.

Király vagy! Pont ez az amit kerestem!

Gond van.

Az ötlet jó, a megvalósítás kész és jó is, mégse ér az egész fabatkát se, mert az ispell az esetek elsöprő többségében a helytelenül írt szóra több "jó" szót is talál.

Elrettentésül:
téves szó/ispell által jónak talált lehetőségek:
takafítatlanság/fakaríratlanság,rakatíratlanság,takarítatlanság
szabályséttési/szabályséfrési,szabálysértési
hírforfásban/hírforrásban,hírtorfásban,hírtorrásban,hírtortásban

Ahogy számítottam rá, mindenütt ott a helyes szó is, de - már elnézést - honnan a halál f*szából szedi az ispell, hogy az ilyen förmedvények, mint "fakaríratlanság", "hírtorfásban", meg "szabályséfrési" helyes, értelmes magyar szavak volnának?

Ahogy Józsi bácsi mondaná: na, erre már nem számítottam :-(.

Nincs véletlenül az eszement ispell helyett valami más, értelmes parancssori helyesírásellenőrző program?

Hali!

Mi az oka annak, hogy ha a "ps aux"-et bejelentkezve irányítom egy fájlba, akkor a fájlban helyesen jelenik meg, ha viszont a rendszer automatikusan adja ki a parancsot, akkor a kimeneti fájlban a sorok a 80. pozíciótól kezdődően nem jelennek meg? Mi ez az apróság?

Az én SuSE 9.1-emen nem fordul le a hunspell-1.0-RC2, a következő hibaüzenetet kapom:
/usr/lib/gcc-lib/i586-suse-linux/3.3.3/../../../../i586-suse-linux/bin/ld: cannot find -lcurses
collect2: ld returned 1 exit status
make: *** [hunspell] Error 1

Nem értem, mert a hunspell.cxx-ből töröltem a "#define CURSES" sort, azaz elvileg nem is használná a curses-t (nekem csak a paranccsor kell).

Ráadásul még az sem igaz, hogy a curses-devel hiányozna; ugyanis az 5.4-59-es verziója fent van a gépen.
Ugyanígy a többi szükséges devel csomag is.

De akkor mi lehet a gond?

Lehet, hogy azért jelenik meg csak a soroknak az első 80 karaktere, mert az initd indítja? Ha így van, mit lehet tenni, hogy helyesen tegye fájlba?

[quote:356f956d3e="j_szucs"]Gond van.
Nincs véletlenül az eszement ispell helyett valami más, értelmes parancssori helyesírásellenőrző program?

Nem egeszen az amire gondoltal, de mi volna, ha a google-nek kuldened el kereseskent a teged erdeklo szavakat. Valoszinuleg a helyesbol volna a legtobb talalat.

Udv: Reluxa

mi volna, ha a google-nek kuldened el kereseskent a teged erdeklo szavakat

Hogy mi volna? Rá menne a gatyám is a telefonszámlára :-(
Egyébként jó az ötlet, a cégnél alkalmazom is (wget+grep), de itthon nem lehet.

A fordítási problémához még egy adalék: valószínűleg a libncurses nem ott van, ahol a hunspell keresi. De a hunspell forrásában nincs configure szkript, aminek megadhatnám, hogy hol van. Hogyan lehet ilyen esetben megadni a függvénykönyvtár helyét?
Esetleg ki lehetne teljesen irtani a hunspell forrásából a curses keresését, ha már egyszer úgyse használom? De hogyan?

Az okra nem jöttem rá, de ha a ps-nek "aux" után még egy "w"-t is írok, akkor minden esetben frankón továbbítja a fájlba.

A 80 karakteres sor problémájára valaki tudja a megoldást? (Mert a probléma megoldásán túl érdekel.)

[quote:131cde2326="j_szucs"]Hogyan lehet ilyen esetben megadni a függvénykönyvtár helyét?

A gcc-nek meglehet adni konkrét könyvtárakat is, hogy hol keresse a linkeléshez a libeket...
-L /hol/vagy/lib/

(a makefileban....)

Üdv: bujdi

[egyébként ilyen esetekben ajánlom olvasgatni: man gcc,ld, ldconfig]

[quote:76afc2ad5a="j_szucs"]
téves szó/ispell által jónak talált lehetőségek:
takafítatlanság/fakaríratlanság,rakatíratlanság,takarítatlanság
szabályséttési/szabályséfrési,szabálysértési
hírforfásban/hírforrásban,hírtorfásban,hírtorrásban,hírtortásban

Ahogy számítottam rá, mindenütt ott a helyes szó is, de - már elnézést - honnan a halál f*szából szedi az ispell, hogy az ilyen förmedvények, mint "fakaríratlanság", "hírtorfásban", meg "szabályséfrési" helyes, értelmes magyar szavak volnának?

Az ispell automata: csak annyira képes "értelmezni" a szavakat, amennyire beleporgramozták. Márpedig a fentiek mind értelmes szavak összetételei, s mint ilyenek, az ispell-nek értelmesek: "fa kar íratlanság", "rakat íratlanság", "szabály séf rési", "hír tor fásban", "hír tortásban". (Izé, a "hírtorrásban" "szót" én sem tudom szétszedni értelmesre...)

ispell helyett használjátok a hunspellt.
Én az OOo 2 bétában (igaz ez a Windowsos verzió) lecseréltem, hála Tímár Andrásnak aki elkészítette a dll-t hozzá.
Az eredmény sokkal jobb.
Bemásoltam az itt elrettendő példának hozott szöveget.
Az ispell 1 hibás szót jelzett a hunspell 6-ot.

Ha fájlba (pipe-ba, stb.) ír, akkor teljes szélességben írja ki az adatokat.
Ha terminálra, akkor a terminál szélességéhez igazodik, amit ügyesen lekérdez, avagy a COLUMNS környezeti változóból szed.
(Illetve most fogalmam sincs, hogy ha nem terminálra ír, hanem fájlba, de a COLUMNS be van állítva, akkor hogysmint...).

A -lcurses opció törlésével a Makefile-ból végre sikerült lefordítanom a hunspellt.

Az eredmény sokkal jobb.
Bemásoltam az itt elrettendő példának hozott szöveget.
Az ispell 1 hibás szót jelzett a hunspell 6-ot.

Akkor valami nálam nagyon nem stimmel, mert én most is pontosan ugyanazt az eredményt kapom a hunspell-el, mint annak előtte az ispell-el:

#echo "fakaríratlanság, rakatíratlanság, takarítatlanság, szabályséfrési, szabálysértési, hírforrásban, hírtorfásban, hírtorrásban, hírtortásban" | iconv -f UTF-8 -t ISO_8859-2 | hunspell -G -l -d hungarian | iconv -f ISO_8859-2 -t UTF-8
#fakaríratlanság
#rakatíratlanság
#takarítatlanság
#szabályséfrési
#szabálysértési
#hírforrásban
#hírtorfásban
#hírtortásban

Azaz mindet helyesnek tekinti ez is (a -G -l kapcsolók a helyesen írt szavakat íratják ki).
Mit baltázhattam el hogy nálam semmi javulás?

A hunspell is automata: nem "érti", amit csinál, hanem csinálja, amit beleprogramoztak. Nem tud a fejeddel gondolkodni - és ezek helyes szavak összetételei.

[quote:494f646455="egmont"]Ha fájlba (pipe-ba, stb.) ír, akkor teljes szélességben írja ki az adatokat.
Ha terminálra, akkor a terminál szélességéhez igazodik, amit ügyesen lekérdez, avagy a COLUMNS környezeti változóból szed.
(Illetve most fogalmam sincs, hogy ha nem terminálra ír, hanem fájlba, de a COLUMNS be van állítva, akkor hogysmint...).

Köszi, értem.

Abban tudsz segíteni, hogy egy bash-szkriptet a rendszer automatikusan a háttérben futassa, úgy, mintha mögé írtam volna az "&" jelet?

Iagzándiból nincs már szükségem a kérdés megválaszolására, mert egy másik parancsállományban elindíthatom a háttérben a kívánt parancsállományt, azonban hátha van valaimyen démonmódban való futtatási módszer.