Unix er et fascinerende operativsystem. Opprinnelig tenkt på Bell Labs på slutten Av 1960-tallet, ble det båret ut av frustrasjon MED OS kjent som «Multics» (multiplexed information and computing service). Unix er nå over 50 år gammel (!) Og Linux-implementeringen driver store deler Av Internett .
Så – Hvorfor Er Unix så populært?
I Mitt sinn Kommer Unix suksess fra den filosofiske tilnærmingen til utvikling. UNIX-filosofien er dokumentert Av Doug McIlroy i Bell System Technical Journal i 1978:
1. Gjør hvert program gjøre en ting godt. For å gjøre en ny jobb, bygg på nytt i stedet for å komplisere gamle programmer ved å legge til nye «funksjoner».
2. Forvent utgangen av hvert program for å bli innspill til en annen, som ennå ukjent, program. Ikke rot utgang med overflødig informasjon. Unngå streng kolonneformater eller binære inngangsformater. Ikke insister på interaktive innspill.
3. Design og bygg programvare, selv operativsystemer, for å bli prøvd tidlig, ideelt innen uker. Ikke nøl med å kaste bort de klumpete delene og gjenoppbygge dem.
4. Bruk verktøy i stedet for ufaglært hjelp til å lette en programmeringsoppgave, selv om du må omvei for å bygge verktøyene og forvente å kaste noen av dem ut etter at du er ferdig med å bruke dem.
dette var over 40 år siden, og fanger SOLID (enkelt ansvar prinsipp, åpen / lukket), microservices, funksjonelle rørledninger, agile og ånden Av DevOps!
for langt flere detaljer Om Unix-filosofien, les denne boken (fritt tilgjengelig her, men kjøp en kopi for å støtte forfatteren!).
La oss se på Noen eksempler På Unix-filosofien i aksjon.
Gjør hvert program gjør en ting godt. For å gjøre en ny jobb, bygg på nytt i stedet for å komplisere gamle programmer ved å legge til nye «funksjoner».
cat
gjør akkurat en ting. Det setter sammen filer og viser dem på standard utgang. Det er alt den gjør. Det gjør ikke paginering. Det tilbyr ikke søkefunksjonalitet. Det gjør bare akkurat hva det står på tinn og ikke mer.
tr
er lik. Det gjør «tekstlig erstatning» ved å lese fra input, gjør noen oversettelser og skrive til utgang.
tr -d aeiouAEIOU < file # Display file without vowels
tr eao 340 < file # Partially leet speak file
true
og false
er kanskje de beste eksemplene på å gjøre en ting bra. true
gjør ingenting, vellykket! false
gjør ingenting.
false && echo Hi # does nothing
true && echi Hi # Prints Hi
Komposisjon
«Forvent at utgangen av hvert program blir inngangen til en annen»
I Unix har de fleste operasjoner muligheten til å lese og skrive til standard utdata i et godt forstått tekstformat. Med noen få kommandoer, for eksempel |
, >
og <
kan vi mate utdataene fra ett program til et annet. La oss se på noen eksempler:
i dette eksemplet bruker vi cat
for å skrive ut innholdet i en fil og mate utdataene til wc
hvem kan telle antall linjer i en fil.
cat foo.txt | wc -l
i dette eksemplet bruker vi history
for å finne våre mest brukte kommandoer ved å kombinere den med cut
, sort
, uniq
og head
.
history | cut -f5 -d" " | sort -rn | uniq -c | sort -rn | head
xargs
er den ultimate swiss-army kniv slik at du kan bygge opp kommandoer fra standard utgang. La oss bruke den til å slette alle».tmp » filer i gjeldende katalog etter bruk find
for å finne dem.
find -type f *.tmp | xargs rm
Alt er en fil
I UNIX er alt en fil (eller mer presist, alt er en strøm av byte). Dette betyr at De samme Apiene / kommandoene kan brukes til å lese EN CD-ROM-stasjon, skrive en nettverkskontakt eller finne UT CPU-info.
for eksempel er hele /proc
filsystemet på Linux egentlig ikke filer-det er en dynamisk visning av informasjon som er eksponert som en haug med filbeskrivelser.
noen eksempler:
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
Automatisering
Lenge før» automatisere-alt-ting», Var Unix der, feil, automatisere alle tingene
cron
(mer her) har automatisert alle tingene de siste 40 + årene. Cron jobber er planlagte skript som kan kjøre på faste tider eller faste intervaller.
hver Bruker på Et Unix-system har et sett med planlagte oppgaver, synlig ved hjelp av kommandoen crontab
. Filen er i et veldig enkelt format som gir dato og klokkeslett for skriptet som kjører.
kommandoen at
er et vennligere alternativ, her er et eksempel på å skyte en kommando på 1145 31.Januar (herfra).
echo "cc -o foo foo.c" | at 1145 jan 31
Puppet, Chef, CFEngine, Ansible — Alle Disse DevOps verktøy og født og oppvokst På Unix-baserte systemer.