Unix fejlesztési filozófia

Jeff Foster
Jeff Foster

követés

Jul 31, 2019 · 5 perc olvasás

a Unix egy lenyűgöző operációs rendszer. Eredetileg fogant a Bell Labs a késő 1960-as években, ez alátámasztotta a frusztráció az operációs rendszer néven ismert “Multics” (multiplexed information and computing service). A Unix már több mint 50 éves (!), és a Linux implementáció hatalmas területeket hatalmaz meg az Interneten.

tehát — miért olyan népszerű a Unix?

véleményem szerint a Unix sikere a fejlődés filozófiai megközelítéséből származik. A UNIX filozófiát Doug McIlroy dokumentálja a Bell System MŰSZAKI folyóiratban 1978:

1. Minden program jól csinál egy dolgot. Új munka elvégzéséhez építsen újra, ahelyett, hogy bonyolítaná a régi programokat új “funkciók”hozzáadásával.

2. Elvárják, hogy minden program kimenete egy másik, még ismeretlen program bemenetévé váljon. Ne zavarja a kimenetet idegen információkkal. Kerülje a szigorúan oszlopos vagy bináris bemeneti formátumokat. Ne ragaszkodjon az interaktív bemenethez.

3. Tervezzen és építsen szoftvereket, akár operációs rendszereket is, amelyeket Korán, ideális esetben heteken belül ki kell próbálni. Ne habozzon, dobja el az ügyetlen részeket, és újjáépíteni őket.

4. Használjon eszközöket a képzetlen segítség helyett a programozási feladat megkönnyítéséhez, még akkor is, ha kerülnie kell az eszközök felépítését, és elvárja, hogy néhányat kidobjon, miután befejezte a használatát.

ez volt több mint 40 évvel ezelőtt, és rögzíti szilárd (egységes felelősség elve, nyitott/zárt), mikroszolgáltatások, funkcionális csővezetékek, agilis és a szellem DevOps!

a Unix filozófiájával kapcsolatos további részletekért olvassa el ezt a könyvet (szabadon elérhető itt, de vásároljon egy példányt a szerző támogatására!).

nézzünk meg néhány példát a Unix filozófiájáról.

Minden program egy dolgot csináljon jól. Új munka elvégzéséhez építsen újra, ahelyett, hogy bonyolítaná a régi programokat új “funkciók”hozzáadásával.

cat pontosan egy dolgot csinál. Összefűzi a fájlokat, és megjeleníti azokat a szabványos kimeneten. Ez minden. Nem csinál lapozást. Nem kínál keresési funkciót. Csak pontosan azt teszi, amit a dobozon mond, és nem többet.

tr hasonló. “Szöveges helyettesítést” végez a bemenetről történő olvasással, bármilyen fordítással és írással a kimenetre.

tr -d aeiouAEIOU < file # Display file without vowels
tr eao 340 < file # Partially leet speak file

true és a false talán a legjobb példa arra, hogy egy dolgot jól csináljunk. true nem csinál semmit, sikeresen! false nem tesz semmit.

false && echo Hi # does nothing
true && echi Hi # Prints Hi

összetétel

“elvárják, hogy minden program kimenete egy másik bemenetévé váljon”

a Unix-ban a legtöbb művelet képes olvasni és írni a szabványos kimenetre egy jól érthető szöveges formátumban. Néhány paranccsal, mint például a |, > és <, az egyik program kimenetét továbbíthatjuk a másikba. Nézzünk meg néhány példát:

ebben a példában a cat – et használjuk a fájl tartalmának kiadására, és a kimenetet wc – ba tápláljuk, aki meg tudja számolni a fájl sorainak számát.

cat foo.txt | wc -l

ebben a példában a history – t használjuk a leggyakrabban használt parancsok megkeresésére, ha cut, sort, uniq és head.

history | cut -f5 -d" " | sort -rn | uniq -c | sort -rn | head

xargs a végső svájci hadsereg kés, amely lehetővé teszi a parancsok felépítését a szabványos kimenetről. Használjuk az összes törléséhez”.tmp ” fájlok az aktuális könyvtárban a find használata után.

find -type f *.tmp | xargs rm

Minden fájl

Unixban minden fájl (vagy pontosabban minden bájtfolyam). Ez azt jelenti, hogy ugyanazok az API-k/parancsok használhatók CD-ROM meghajtó olvasására, hálózati aljzat írására vagy CPU-információk megismerésére.

például a Linux teljes /proc fájlrendszere valójában nem Fájlok — ez az információ dinamikus nézete, amely egy csomó fájlleíróként van kitéve.

néhány példa:

cat /proc/cpuinfo # Displays your CPU info exposed as a filefoo > /dev/null # Redirect output into a file called
# null (which discards everything)od -vAn -N1 -td1 < /dev/urandom # Display a random 1 byte number
# (via https://unix.stackexchange.com/a/268960

automatizálás

jóval a” mindent automatizálni ” előtt a Unix ott volt, errr, automatizálja az összes dolgot

kötelező automatizálni az összes dolgot kép

cron (bővebben itt) az elmúlt 40+ évben automatizálta az összes dolgot. A Cron feladatok ütemezett szkriptek, amelyek rögzített időpontokban vagy rögzített időközönként futtathatók.

a Unix rendszer minden felhasználójának van egy sor ütemezett feladata, amelyek a crontab paranccsal láthatók. A fájl nagyon egyszerű formátumban van, amely megadja a futó szkript dátumát és idejét.

a at parancs barátságosabb alternatíva, Itt van egy példa arra, hogy egy parancsot 1145-kor, Január 31-én (innen) lőjünk.

echo "cc -o foo foo.c" | at 1145 jan 31

Puppet, Chef, CFEngine, Ansible — ezek a DevOps eszközök Unix alapú rendszereken születtek és nevelkedtek.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

Previous post hogyan lehet a begónia különböző fajtáit termeszteni
Next post B-100 komplex orális