fish: a barátságos, interaktív shell

Címkék

A friendly interactive shell , másnéven fish egy felhasználóbarát parancssori shell Unix(-szerű) operációs rendszerek - például Linux - számára. Az Axel Liljencrantz által létrehozott fish egy nyílt forrású, szabad szoftver, amely a GPLv2 feltételei szerint terjeszthető. Az IBM developerworks hasábjain Martin Streicher veszi szemügyre alaposabban a szoftvert.

Hozzászólások

Ez a rövidítés nem volt már "foglalt" a FIle System in SHell részére?

Helyesebben, nem most látjuk ezt "cuccba". Opencucc cinkelés mellett talán bele kéne gondolni, hogy hány ilyen per volt már (egyik cég másik levédett márkanevét használta) illetve elég arra gondolni, hogy miért is született meg a brand, a márkanév és annak levédetése intézmény. Oké, hogy folyamatosan troll vagy, de néha gondolkodni sem árt.

--
trey @ gépház

Ettol fuggetlenul az "Opencucc" keszitok altalaban nem a milliardos vagyonukrol hiresek. Raadasul az a jobb, ha a markanev helyett inkabb a koddal foglalkoznak.
Igazabol meg az ismertebb (es tehetosebb) projectek sem vedenek le mindent, ettol fuggetlenul nem artana legalabb az "Opencucc" kozossegen belul tiszteletben tartani egymas cuccait (es ezek nevet).

Volt ugye az Ubiquity, az Ubuntu telepitojenek a neve. Aztan rajottek a Mozillanal, hogy nekik is tetszik ez a nev, es kiadtak egy extensiont a kreativ Ubiquity neven. Na, azert oket se sajnalom, ugyanis ismert, hogy a Firefox kiegeszitok a Chrome-ot hasznaljak (ld. chrome.manifest). Itt termeszetesen nem a rivalis bongeszorol van szo, hanem a sajat rendszerukrol.
A Unix az pelenkamarka vagy tuzoltokeszulek tipusa? Ki donti el? Szinten koztudott, hogy a Microsoft paplanokat meg parnakat gyart - legalabbis Ausztraliaban. Valoban, van hasonlo nevu software ceg is. Peldaul amit Mike Rowe hozott letre meg par evvel ezelott (Mike Rowe Soft).

Ezek csak a nagyobb nevek, a tobbit mindenki gondolja hozza. (linkeket most nem adok, gugli segit akit erdekel)

--
I don't always dress in a T-shirt and jeans. Sometimes people give me awards, and I dress like a penguin instead. - Linus Torvalds

Mire jok ezek a szamozott sorok?

Amugy valoban nem nez ki rosszul, csak a szokasos kritikamat tudom hangoztatni: ha egyszer nincs ott minden egyes rendszeren, az ember szenved nelkule. Az en kornyezetemben praktikusabb az alapveto eszkozokbol kihozni a maximumot, mint valami kenyelmes, de teljesen mas filozofiat koveto eszkoztol fuggeni.

Raadasul shellnel ujabb problema az, hogy szinte garantaltan lehetetlen portolhato scriptet gyartani.

Hát engem marhára meggyőzött. Pont erre vágytam, csak nem tudtam róla. :) Kijavítja a bash összes hülyeségét, és még könnyű is megtanulni (úgy tűnik elsőre). Kb. azt érzem, mint amikor Debianról Ubuntura váltottam. Akkor nem bántam meg, ennek is adok egy esélyt. Köszi trey :)

Mint ahogy a neve is mutatja(userfriendly), nem scripteknek találták ki ezt shellt, hanem emberi használatra. A scripteknek meg ott van a bash, meg az sh, úgyis mindegyik elején ott van a #!/usr/sh, elég ha azzal kompatibilisek a scriptek.
Egyébként nekem bőven elég, hogy azon a 2-3 gépen, amin szoktam használni terminált fel tudom rakni ha akarom.

+1

A számozott sorok megfelelően beállított PS1 környezeti változót tételeznek fel. Szerintem értelmetlen, de van, aki szereti.

Amúgy megint sikerült feltalálni a spanyolviaszt.
set - unset vs set - set --erase
A másik, hogy a bash (...) és $(...) megoldásainak megfelelő kódot nem látok. Elhagyták a $ jelet, és a subshell futtatás a behelyettesítést jelenti? Akkor egy fos. A doksiban nem találtam meg, hogy hogy lehet ezt megoldani....

bash> for i in *; do (cd $i; run_my_command; ); done

Ha elhagyod a zárójelet, az első könyvtárváltás után abba az alkönyvtárba klerül, és onnan nyilván nem tud átmenni a szülő egy másik alkönyvtárába, mert nem olyan a hivatkozás.
Ha van zárójel, akkor a cd és a my-command alshellben hajtódik végre, így nem okoz fájdalmat.

Nem olyan nehéz, nem kell a doksit olvasni, csak elkezdeni gépelni.


for i in *
  cd $i
  echo -ne "Itt voltam:"; pwd
end

Nem kell a do. Egy sorban:

for i in *; cd $i; echo -ne "Itt voltam:"; pwd; end

Persze a script nem veszi figyelembe a nem könyvtár fájlokat, ahhoz kellene még valami find vagy type. Pl igy:

for i in (find ./ -type d); cd $i; echo -ne "itt voltam:"; pwd; end

Szerintem olyannak jó ez, mint én, aki ritkán ír shell scripteket. Mindig elfelejtem hogy pl az if után hova kell pontosvessző, meg then meg nem then, meg a fornál minek a do (és hova kell pontosvessző). Szóval ebben ott van az end, oszt jól van. Nincs túlbonyolítva. Egyelőre mindennapi dolgokat meg tudtam benne oldani.

1 bug (ismert): tabos kiegészítésnél a mimedb néha elkezd pörögni és killall mimedb-vel lehet csak megállítani. Ez elég zavaró.

Bash-ban egyébként a cd $i inkább cd "$i" lenne.

Tehát a for ciklusnál nem dönthetem el, hogy be akarok-e lépni a könyvtárba, avagy sem (bash-ben zárójelezett subshell, vagy nélküle).

"Szerintem olyannak jó ez, mint én, aki ritkán ír shell scripteket. Mindig elfelejtem hogy pl az if után hova kell pontosvessző, meg then meg nem then,"

Még annak sem. Hiába ír ritkán, ha nem tudja megírni azt, amit szeretne épkézláb módon.
A pontosvessző problémára meg az a megoldás, hogy mindent új sorban kell írni, és nincs gond. A then egyszerű, mintha magyarul lenne, ha-akkor.

A bash-ban az idézőjel csak szóközt tartalmazó könyvtárak esetén kell, így sokszor nem is írom ki, mert felesleges.

> Mindig elfelejtem hogy pl az if után hova kell pontosvessző, meg then meg nem then, meg a fornál minek a do (és hova kell pontosvessző).

Akkor nagyon egyszerűen:

- minden parancs külön sorba, ekkor nem kell pontosvessző
- vagy több parancs egy sorba, akkor parancs után mindig kell pontosvessző (nyilván kivéve a legutolsót, lévén az ezt követő parancs már másik sorban van)

Minden shell-ciklusnál (for / while / until / select) do - done közé kell írni a ciklusmagot/mindent. Elágaztató parancsnál (if / case) a lezáró tag ugyanaz a szó visszafele (fi / case). És mindegyik ilyen franc *parancs* , meg persze a then / else / elif is parancs. -> Mindegyik elé vagy újsor, vagy pontosvessző.

kovezzetek meg, de szerintem rossz. leszamitva a csilivili kinezetet, a featurek nagy resze
- kovetkezetlen (a shell szintaktikaja kizar egy csomo filenev lehetoseget, pl)
- felesleges,
- mar implementalt.

Szep eyecandy kezdo konzolhuszaroknak, de aki ERRE szokik ra, az nem fog tudni rola sem leszokni, sem ertelmes shell scriptet irni vagy megerteni.

asd