Linux shell parancsok

Tudna valaki olyan weboldalt vagy dokumentumot, amelyben a linux parancsok össze vannak szedve, esetleg néhány gyakorlati példával bemutatva a működésük?
Jó lenne ha több gyakorlati példa is volna a parancsokhoz.

Előre is köszönöm a válaszokat!

Hozzászólások

szerintem ilyen oldal nem létezik. csak a bash rengeteg parancsot tartalmaz amit variálhatsz és más eredményt kapsz. továbbá ott vannak a distrok által szállított programok, vlamint az általánosak (ls, ssh, stb..)
szóval keresgélhetsz de szerintem nem lesz eredménye.
--
A legértékesebb idő a pillanat amelyben élsz.
http://phoenix-art.hanzo.hu/
https://sites.google.com/site/jupiter2005ster/

Anno volt ilyen háttérkép. Keress rá, hogy "linux cli wallpaper" :)

Olvasnivaló. Tudom, nem ez volt a kérdés, de nem zavar. :)

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Egyébként szerintem nem jól állsz a kérdéshez. Amennyiben van megoldandó probléma, feladat, úgy kezdd el azt megoldani. Jönni fognak a kérdések, meglesz a motiváció, hiszen meg akarod oldani. Az úgy nem megy, hogy bemegolsz 50 parancsot az összes kapcsolójával, paraméterezésével.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Bontsd le részfeladatokra. Itt ne az egészre kérdezz rá, mert úgy sem bírjuk megállni, hogy ne oldjuk meg helyetted. :) Viszont, ha egy-egy részfeladatra kitaláltál valamilyen eljárást, úgy azzal kapcsolatban kérdezz bátran! A bash egy érdekes jószág, mindent helyettesít.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Ebben hogyan lehetne megoldani, hogy a fájlokat ne írja bele?

Irja be a /home/feladat/edeny/tok/hal.txt nevu fajlba a /home/feladat/fut/fenyo nevu mappabol nyilo mappak nevet! (Segitseg: hasznalja az ls parancsot hosszu formatumban, es rekurzivan, a rejtett mappak ne latszodjanak! Ne csak a nevet, hanem az egesz sort irja bele.)

ls -R -l /home/feladat/fut/fenyo >> /home/feladat/edeny/tok/hal.txt

Igen, ez hf, elég nagy mennyiségben ilyen feladatokkal.

Még egy (utolsó) lenne, amihez nem tudtam hozzászólni:
Irja bele az aktualis mappaban a shell32.dll nevu fajlba a /home/feladat/ful/vendeg/lada/puszedli nevu mappabol indulo rekurziv hosszu listazasnak kimenetebol a konyvatakra valo leszuresnek a levagasat 1-15. karakterig.

A megfelelő név megtalálása után kell az 1-15 karakter. Köszönöm a megoldást.

Még egy tényleg utolsó feladat lenne, aminek nem tudom mennyire jó a megoldása:

Irja bele a jelenlegi mappaban a poszter.psd nevu fajlba a /home/feladat/patkany/meret/rossz/bitumen nevu mappa fajlai kozul a nagy "A" betuvel kezdodo sorok darabszamat, es csak a szamot!

cat *.* | grep "^A" | wc -l >> poszter.psd

Most csináljuk azt, hogy nem mondom meg, mert abból nem tanulsz. Ugyanakkor segítek.

1. A *.* shell globbing olyan file-okra, alkönyvtárakra illeszkedik, amelynek nevében van pont. Ez nem volt kritérium, a pontot nem tartalmazó file-okra is mennie kell.

2. Nem az aktuális könyvtárból kell szedni a file-okat.

3. Minek futtatsz egy cat-et, amikor a grep argumentuma is lehetne a filelista?

4. A >> redirect operátor az eddigi file-hoz fűzi a tartalmat. Amennyiben a file-t úgy akarod létrehozni, hogy az esetleges korábbit felülírja, használd a > operátort.

5. Jelenleg ugyan mindegy, de szerencsésebb a grep regexp-nél a shelltől teljes elzárást alkalmazni, azaz az idézőjelek helyett aposztrofot. Regexp-ben jó eséllyel lesz $ jel, az viszont idézőjelen belül jelent valamit a shellnek.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Már jobb, de nem hallgatsz rám.

Írtam, hogy ha appendeled a kimeneti file-hoz a tartalmat, akkor az bizony hozzáfűződik minden futás alkalmával a poszter.psd-hez. Leírtam, mi a különbség a >> valamint a > között. Az előbbi hozzáfűz, az utóbbi felülírja a file-t. Szerintem neked az utóbbi kell, de még mindig az előbbit írod.

Minden fájlt kell vizsgálni és a kiterjesztés előtt minden fájlnévben lesz pont is

Mi az a kiterjesztés? Felejtsd már el, olyan nincs! Az csak egy szokásjog. A file-nak neve van. A pont a névben éppen olyan karakter, mint a többi. Ez is egy filenév:

valami.barmi.tar.bz2.jpg...mp3.kecske

Aztán nem kötelező a filenévben pontnak lennie. Ez is egy filenév:

Hársfa

Tehát ne válogasd ki azokat a file-okat, amelyek nevében van pont, mert akkor a Hársfa nevű file-ban nem fog keresni a grep. Neked valami ilyesmi kell:

grep 'regexp' /ez/az/eleresi/ut/*

Tehát nem *.*, hanem egyszerűen csak egy csillag.

Ugye a file nevének semmi köze a tartalmához. Semmi akadálya sincs annak, hogy egy jpeg képet valami.mp3-nak nevezzek. Ez csak egy szokás, hogy könnyebben azonosítható legyen a tartalom, de egyrészt nem kötelező érvényű, másrészt nem biztos, hogy úgy van. Ha a file valós tartalmára vagy kiváncsi, használd a file parancsot!

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Lehetne ilyesmi, ha ez a feladat, s nem kell látszódnia a directory struktúrának, elérési útnak:

ls -Rl /home/feladat/ful/vendeg/lada/puszedli | grep '^d' | sed -r 's/^([^ ]+ +){8}//' | cut -c1-15 >shell32.dll

Egyáltalán nem vagyok arról meggyőződve, hogy ez a feladat. Szerintem nem pontos a kiírás.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Egy enyhén cinikus jótanács:
cd /bin; for i in *; do whatis $i 2> /dev/null; done
A fenti parancs kimenete alapján lesz egy körülbelüli elgondolásod arról, hogy mit csinálnak az alapvető parancsok – ha jön egy konkrét probléma, talán jobban tudod, melyik manual felé nyúlj.

Rendszeradminisztrációs célra ezek is hasznosak lehetnek:
cd /sbin; for i in *; do whatis $i 2> /dev/null; done
cd /usr/sbin; for i in *; do whatis $i 2> /dev/null; done

szerk.: amúgy pedig, mint a fenti példából is kitűnik, nem annyira a parancsok a fontosak, hanem inkább ahogy összekötöd őket. Ha láttál már programkódot, akkor olvasgass shell scripteket és próbálgass – lehet belőle tanulni.

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Jogos – az ismeretnek olyan veszélyes szintjén állok, ahol már meg tudok oldani dolgokat bután, ahhoz meg lusta vagyok, hogy okos megoldás után nézzek.
Mondjuk a shell script pont az a műfaj, ahol eleddig amúgy sem törekedtem az okos/praktikus megoldásra, csak arra, hogy működjön, és el tudjam olvasni egy hónap múlva is, amikor egy hasonló feladathoz átírom / bővítem.

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

Itt össze vannak szedve a linuxos parancsok:

/bin /sbin /usr/bin /usr/sbin

Lásd:
ls /bin /sbin /usr/bin /usr/sbin

Aztán minden parancsra ha futtatod a "man" parancsot, akkor ott a leírás is.
Némelyik végén még példa is van.

Esetleg valamivel több példa:

http://szit.hu/doku.php?id=oktatas:linux

Link frissítve.

---
http://szit.hu

Egy kérdésem lenne(nem zavarnék többel, tényleg csak 1)

Fuzze hozza a fridge.pas nevu fajlhoz a /home/feladat/arboc/krom nevu mappabol inditott kereses erdemenyeire alkalmazott hosszu listazasbol leszurt legalabb "rw" jogosultsaggal rendelkezo sorok (fajloknak es mappaknak) darabszamat! (Segi tseg: hasznalja a find, ls, cut, grep es wc parancsokat a megfelelo kapcsolokkal ! Az rw nevu fajlok ne szerepeljenek a listaban.)

Erre jutottam, de valahogy magam sem érzem jónak, jobbat viszont nem sikerült összehoznom:
find /home/feladat/arboc/krom -type d -exec ls -l "{}" \; | awk '{print $1}' | grep 'rw' | wc -l >> fridge.pas

Előre is köszönöm a segítséget!

Jónak tűnik, de valóban lehet szebben, és a nem szokványos körülmények figyelembevételével is, jóval kevesebb process indításával. Ha már a cut használatára tesznek erős utalást, akkor jobb lenne azt alkalmazni az awk helyett. Ehhez a -d és -f opciókat nézd meg. Ha meg mégis awk, akkor fel lehetne tenni azt a jogos kérdést, hogy a grep és a wc -l funkciója miért nem az awk scriptben van megvalósítva, amikor csak egy feltételben lévő inkrementálás és a végeredmény kiíratása az egész.

A feladat kiírása nem tetszik, amikor kötelezően meghatároz ehhez a feladathoz nem nélkülözhetetlen eszközöket, és hogy a végeredmény eléréséhez az ls -l kimenetéből kell kiindulni a find után. De ha elég nekünk csak a find és a wc, akkor egy általánosan működő megoldás, aminél például a többsoros, újsort tartalmazó filenevekkel sincs gond:

find /home/feladat/arboc/krom -mindepth 1 \( -perm -u=rw -o -perm -g=rw -o -perm -o=rw \) -printf "1" | wc -c >> fridge.pas

Mint láthatod, a feladat többféleképpen megoldható.