Kõik osade spikrid
See koondvaade on mõeldud kiireks sirvimiseks, printimiseks ja teemade meeldetuletuseks. Iga peatüki lõpus olev kokkuvõte on siin eraldi referentsikujul uuesti koos.
Spikrite indeks
Peatükkide lõpus olevad täisspikrilaadsed kokkuvõtted on nüüd koondatud ka eraldi osa-spikriteks. Nii saab õpikut kasutada korraga kahel viisil: peatüki kaupa õppides ja kiire referentsina tagasi tulles.
Algaja jaoks on kõige rahulikum alustada Osa I ja Osa II spikritest. Edasijõudnumale on sageli kõige kasulikumad Osa IV ja Osa V, sest seal on tihedamad töövood ja käskude ühendamise mustrid.
Osa I: Esimesed sammud
Algaja · 10 peatükki
Siit leiad selle osa spikrid ühel lehel ja PDF-ina.
Osa II: Süsteemi pilt ja haldus
Baas ja süsteemipilt · 9 peatükki
Siit leiad selle osa spikrid ühel lehel ja PDF-ina.
Osa III: Failid, võrk ja süsteemitöö
Praktiline kasutus · 9 peatükki
Siit leiad selle osa spikrid ühel lehel ja PDF-ina.
Osa IV: Tekst, otsing ja automatiseerimine
Töövood · 7 peatükki
Siit leiad selle osa spikrid ühel lehel ja PDF-ina.
Osa V: Arendus ja töövood
Edasijõudnu · 9 peatükki
Siit leiad selle osa spikrid ühel lehel ja PDF-ina.
Osa I: Esimesed sammud — täisspikker
Kuidas seda õpikut kasutada
Algaja
Eesmärk
Saa aru, mis on terminal, shell, CLI ja GUI, ning vali rahulik algusrada enne keerulisemaid töövooge.
Põhitee
- Terminali esimesed sammudalusta siit
- Abi leidmineotsi tuge
- Kataloogid ja failidtee muudatusi
- Teksti vaatamineloe rahulikult
Põhimõisted
CLIkäsuridaGUIgraafiline liidesterminalaken käsureaksshelltõlgendab käske
Tüüpilised kujud
pwdkontrolli asukohtalsvaata sisuman lsloe abicd ~/tmpmine tmp-kausta; sobib harjutamiseks
Õpitee ja õppetunnid
Algaja
Eesmärk
See peatükk aitab valida, mis järjekorras lugeda. Raamatut saab kasutada ka käsiraamatuna, kuid alguses on lihtsam liikuda kindla õpitee järgi.
Õpiteed
- Täiesti algajaloe esimesena
- Süsteemi pildi loominepärast esimest ringi
- Igapäevane Linuxi ja serveri kasutajakaugühendus ja failid
- Tekst, filtrid ja automatiseeriminekäsurea jõud
- Arendaja suundGit, Docker, build
- Andmeteaduse stardiradafailid, vormingud, SQL
Märgendid ja kontroll
- vajalikloe nüüd
- soovitatavhea järgmine
- hiljemära kiirusta
- Pärast seda rada oskad …kontrolli edenemist
Soovitatud järjestused
- Terminali esimesed sammud → Abi leidmine → Kataloogid ja failid → Teksti vaatamine ja liikuminealgaja põhirada
- Failide muutmine → Käskude kuju → Torud ja suunamine → Esimene tervikharjutusseo alus tervikuks
- Failisüsteemi kaart → Kettaruum → Õigused → Võrgu põhitööriistadehita süsteemi pilt
- grep → Teksti teisendamine → sort, uniq, wc → Kompileerimine ja käivitaminefiltrid ja arendus
Terminali esimesed sammud
Algaja
Eesmärk
Vaata kõigepealt rahulikult, kus sa oled, kes sa oled ja mis selles kaustas on; alles siis tee esimene väike muudatus.
Käsud ja esimesed sammud
pwdvaata asukohtalsvaata sisuwhoamivaata kasutajatdatevaata praegust kuupäeva ja aegahistoryvaata käsuajalugucd ~/tmpmine tmp-kausta; sobib harjutamiseksmkdir proov && cd proovloo proovikaust
Olulisemad lipud, märgid ja kiirnupud
Tablõpeta nimiCtrl-ckatkesta programmi tööCtrl-rotsi ajaloostCtrl-area algusCtrl-erea lõpp~/proov %näide viibast ehk promptist
Abi leidmine: man, --help ja info
Algaja
Eesmärk
Kui sa ei mäleta käsu kuju või lippu, vaata kõigepealt käsu enda abi: man, --help, whatis, apropos ja vajadusel info.
Põhikujud
man lsloe põhijuhenditgrep --helpkiire lippude abiwhatis lsüks lauseapropos sshotsi teema järgiinfo coreutils 'ls invocation'GNU sügavam abi
Olulisemad lipud, märgid ja kiirnupud
qvälju man-ist/tekstotsi man-istnjärgmine vastegalgusesseGlõppu
Kataloogid ja failid
Algaja
Eesmärk
Failitöö põhiharjumus on: kontrolli asukohta, tee üks väike muudatus, vaata tulemus üle ja kustuta alles pärast teadlikku pausi.
Põhikujud
pwdkontrolli asukohtalsvaata sisumkdir -p ~/tmp/faili-naitedloo terve puuduv teecd ~/tmp/faili-naitedmine harjutamatouch fail.txtloo failcp algne.txt koopia.txttee koopiamv vana.txt uus.txtnimeta ümbermv fail.txt kaust/liiguta kaustarm fail.txtkustuta failrmdir tyhi-kataloogeemalda tühi kataloogfind . -name '*.txt'otsi ohutultshasum -a 256 a.txt b.txtvõrdle sisu macOS-is
Olulisemad lipud, märgid ja kiirnupud
.see kaust..ülemine kaust~kodukataloogls -aka peidetudls -Apeidetud ilma.ja..kirjetetals -ladetailne vaade"fail nimi.txt"nimi tühikugarm -rrekursiivne kustutus
Teksti vaatamine ja liikumine
Algaja
Eesmärk
lühikese faili jaoks kasuta cat; pika faili sirvimiseks ja otsimiseks kasuta less; faili alguse vaatamiseks kasuta head
Põhikujud
less fail.txtava lehitsejahead -n 7 fail.txtesimesed readtail -n 7 fail.txtviimased readtail -f app.logjälgi logiless *mitu faili korragacatnäita failiseqnumbrijadatouchloo või aja tempel
`less`-i klahvid
qvälju/tekstotsi edasinjärgmine vasteNeelmine vastevava redaktoris:n/:pjärgmine/eelmine fail
Failide muutmine: nano ja esimene kokkupuude vim-iga
Algaja
Eesmärk
less aitab faili sisu enne muutmist mugavalt üle vaadata; nano on alguses kõige lihtsam tekstiredaktor; vim ja vi on sama pere klassikalised tekstiredaktorid
Põhikujud
less fail.txtvaata faili sisu mugavaltnano fail.txtlihtne tekstiredaktorvim fail.txtklassikaline redaktorvi fail.txtsama pere variantcommand -v nanokontrolli olemasolu
`vi`/`vim` minispikker
Escvälju sisestusest:qvälju:q!välju salvestamata:wqsalvesta ja välju
Käskude kuju ja argumentide loogika
Algaja
Eesmärk
Õpi ühe näite pealt eristama käsku, lippu ja argumenti; siis ei tundu uus käsk iga kord täiesti uus keel.
Üks näide
ls -la /etcterve kujulskäsk-lalipud/etcargumentcp vana.txt uus.txtkaks argumenti
Olulised märgid
-lühike lipp--pikk lipp või stop"..."hoia koos; muutujad toimivad'...'täht-tähelt nagu kirjas*failimuster?üks märk
Tüüpilised kujud
grep -n 'root' fail.txtlipp + muster + failcp 'fail nimi.txt' koopia.txtnimi tühikugarm -- --algab-kriipsuga.txtära tõlgenda lipunals *.txtkõik .txt lõpuga failidls words.0?.txtüks märk keskel
Sisend, väljund, torud ja suunamine
Algaja
Eesmärk
Ühenda käske nii, et ühe väljund saab järgmise sisendiks, või saada väljund faili; vea- ja tavaväljundit tasub mõelda eraldi.
Põhikäsud
echoprindi tekstprintfvorminda tekstcatnäita failiteeekraan ja failwcloe kokku
Olulisemad lipud, märgid ja kiirnupud
>stdout faili>>lisa stdout faili lõppu juurde|anna edasi järgmisele;käivita lihtsalt järjest&&tee edasi edu korral||tee edasi vea korral2>stderr eraldi faili2>&1stderr samasse kohta/dev/nullmust auk väljundile
Tüüpilised kujud
käsk > valjund.txtstdout failikäsk >> logi.txtlisa stdout faili lõppu juurdekäsk 2> vead.txtstderr eraldikäsk > valjund.txt 2> vead.txteralda mõlemadkäsk 2> /dev/nullpeida veateatedcat fail.txt | wc -ltoru loendussekäsk ; järgminejärgmine alatikäsk && järgminejärgmine ainult edulkäsk || varuplaanvaruplaan vea korralkäsk > koik.txt 2>&1stdout ja stderr koos
Esimene tervikharjutus: 30 minutit
Algaja
Eesmärk
kontrolli alguskohta; tööta eraldi harjutuskaustas; lisa faili read väikeste sammudena
Olulised märgid
>kirjuta üle>>lisa faili lõppu juurdeCtrl-ckatkesta programmi töömanvaata abi
Lühike töövoog
pwd && lskontrolli alguskohtamkdir proov && cd proovloo töökaustecho tere > sonad.txttee esimene ridaecho maailm >> sonad.txtlisa järgmine ridacat sonad.txt && wc -l sonad.txtkontrolli tulemustcp sonad.txt koopia.txttee koopia
Osa II: Süsteemi pilt ja haldus — täisspikker
Linux, Unix, GNU, macOS, Windows ja shellid
Baas ja süsteemipilt
Eesmärk
erista süsteemi, shelli ja käsureatööriistu; sama terminaliaken ei tähenda veel, et Linux, macOS ja Windows käituksid ühtemoodi
Kontrollkäsud
uname -asüsteemi ja kerneli ridaecho "$SHELL"praegune shellps -p $$käivitud shelliprotsesscommand -v lskust käsk leitaksesw_versmacOS-i versioonwsl -l -vWSL-i jaotused
Olulised mõisted
Linuxkernel ehk tuumGNUpaljud põhikäsudshelltõlgendab käskeWSLLinux WindowsisBSDmacOS-i tööriistaperePowerShellWindowsi käsukeskkond
Failisüsteemi kaart
Baas ja süsteemipilt
Eesmärk
õpi eristama süsteemi juuri, oma kodukataloogi ja ajutisi ning süsteemseid kaustu; siis on lihtsam aru saada, kus tohid rahulikult katsetada
Põhikujud
pwdkontrolli asukohtaecho "$HOME"vaata oma koducd /mine juurkataloogicd ~mine kodukataloogils /etc | headpiilu seadistusils -ld /tmpvaata ajutist kausta
Olulised teed
/kogu failipuu juur~sinu kodukataloog/etcsüsteemi seadistused/varlogid ja muutuv sisu/tmpajutiste failide koht/Users//homekasutajate kodud
Kettaruum ja süsteemi maht
Baas ja süsteemipilt
Eesmärk
erista kogu failisüsteemi seisu ja ühe konkreetse kausta mahtu; df ja du vastavad eri küsimustele
Põhikujud
df -hkõigi failisüsteemide mahtdf -h .siinse failisüsteemi mahtdu -sh .praeguse kausta summadu -sh * 2> /dev/nullalamkirjed ilma vigadetadu -sh * 2> /dev/null | sort -halamkirjed inimloetava mahu järgidu -a . 2> /dev/null | sort -nr | lesssuurimad kirjed detailsemalt
Olulised võtmed ja vood
-hinimloetavad ühikud-sainult kokkuvõte-anäita ka üksikuid kirjeid2> /dev/nullpeida ligipääsuvead| sort -hsordi inimloetavad mahud väiksemast suuremani| sort -nr | lesssuurimad ette
Õigused, omanikud ja täitmisbitid
Baas ja süsteemipilt
Eesmärk
loe õiguste rida, mõista rwx tähendust ja erista faili käivitatavust kataloogi läbikäigust
Põhikujud
ls -l fail.txtloe õiguste ridachmod u+x skript.shanna omanikule täitminechmod 644 naide.txtsea tekstifaili õigusedchmod 755 skript.shsea käivitatava õigusedsudo chown kasutaja:grupp fail.txtmuuda omanikku
Olulised õigusekujud
rloe sisuwmuuda sisuxkäivita või sisenedtegu on kataloogiga644tüüpiline tekstifail755tüüpiline käivitatav
Kasutajad, grupid ja sudo
Baas ja süsteemipilt
Eesmärk
õpi nägema, millise kasutajana sa töötad, millistes gruppides oled ja millal on sudo päriselt vajalik
Põhikujud
whoamikontrolli kasutajatidloe grupid väljagroupsvaata grupinimesidsudo -lvaata sudo õigusisudo apt updateüks kõrgem käsksu - kasutajavaheta kasutajat
Olulised märgid ja rollid
$tavaline kasutaja%teine levinud tavaviip#root või kõrgemad õigusedrootadministraatori kasutajasudo -iava kõrgem shellsudo käskeelista ühte käsku
Muutujad, keskkond, PATH ja aliased
Baas ja süsteemipilt
Eesmärk
erista shellimuutujat, keskkonnamuutujat, käsuotsingu teed ja aliast; PATH-i järjekord otsustab, milline väline käsk esimesena leitakse.
Põhikujud
nimi='Mari'; echo "$nimi"shellimuutuja kehtib selles shellisexport DEMO=1anna muutuja edasi käivitatavatele programmideleenv | grep DEMOkontrolli, kas muutuja on keskkonnasecho "$PATH"vaata käskude otsinguteedcommand -v python3leia esimene väline vastetype cdvaata käsu liikitype -a grepnäita kõik vastedexport PATH="$HOME/bin:$PATH"pane oma käskude kataloog otsingutee ettealias ll='ls -lah'loo lühinimi sagedasele käsulesource ~/.zshrcloe zsh seadistus uuesti
Olulised mõisted
nimi='Mari'shellimuutujaexport NIMI='Mari'keskkonnamuutujaPATHotsinguteede järjekord$HOME/binoma käskude kohttypealias, builtin või programm~/.zshrczsh seadistusfail~/.bashrcbash seadistusfail
Paketihaldus: apt, dnf, pacman, brew
Baas ja süsteemipilt
Eesmärk
vali õige tase: süsteemi paketihaldur tööriistadele, keele paketihaldur teekidele ja projektisõltuvused võimalusel projekti sisse
Põhikujud
apt search ripgrepotsi Debianis või Ubuntussudo apt install ripgreppaigalda Debianis või Ubuntussudo dnf install ripgreppaigalda Fedorassudo pacman -S ripgreppaigalda Archisbrew install ripgreppaigalda Homebrew'gapython3 -m pip install requestspaigalda Pythoni pakett aktiivsesse keskkondanpm installpaigalda projekti Node.js sõltuvusedcommand -v rgkontrolli, kas käsk leitakse
Tööriistad ja tasemed
apt,dnf,pacmanLinuxi süsteemipaketidbrewmacOS-i kasutajataseme tööriistadupdatevärskenda nimekirja või retsepteupgradeuuenda paigaldatud paketid--caskHomebrew graafiline rakendusvenvPythoni projekti eraldi keskkondpackage.jsonNode.js projekti sõltuvused
Lihtne veaotsing käsureal
Baas ja süsteemipilt
Eesmärk
kitsenda viga enne parandamist: täpne veateade, asukoht, olemasolu, käsu leitavus, õigused ja shelli/süntaksi kontroll
Kontrollrada
pwdkontrolli, kus oledls -lahvaata faile, õigusi ja peidetud kirjeidcommand -v rgkas käsk leitaksetype -a rgnäita kõik sama nimega vastedls -l skript.shvaata skripti õigusihead -n 1 skript.shvaata skripti shebang'ibash skript.shkäivita teadlikult Bashigagrep --helpkinnita käsu süntaks
Levinud veateated
command not foundkäsk puudub, nimi vale või pole PATH-isNo such file or directorytee, failinimi või asukoht on valePermission deniedõigus ei luba lugeda, kirjutada või käivitadasyntax errorvale shell või vale käsukujupackage not foundpaketinimi või nimekiri on valedatabase is lockedteine paketihaldur töötab
Võrgu põhitööriistad
Baas ja süsteemipilt
Eesmärk
erista nelja küsimust: kas host vastab, kas veeb vastab, millised liidesed on ja kas kohalik teenus kuulab porti
Kontrollrada
curl -I https://example.com/kontrolli veebiteenustping -c 4 example.comkontrolli hosti ICMP vastustip avaata Linuxi liideseidifconfigvaata macOS-i liideseidss -ltnvaata Linuxi kuulavaid TCP-portelsof -iTCP -sTCP:LISTEN -n -Pvaata macOS-i kuulavaid portenc -vz example.com 443kontrolli TCP ühendust porti
Olulised võtmed ja vaated
-Iküsi ainult HTTP päised-Ljärgi HTTP suunamisiLISTENport kuulab127.0.0.1ainult oma masin0.0.0.0kõik IPv4 liidesedip/ssLinuxi tööriistadifconfig/lsofmacOS-i põhivariandid
Osa III: Failid, võrk ja süsteemitöö — täisspikker
Failide kopeerimine ja sünkroonimine
Praktiline kasutus
Eesmärk
vali tööriist allika järgi: cp samas masinas, scp üle SSH, rsync korduvaks sünkroonimiseks ja curl/wget veebist toomiseks
Põhikujud
cp fail.txt koopia.txttee koopiacp -R kaust kaust-koopiakopeeri kaustscp fail.txt kasutaja@server:/tmp/saada serverissersync -avn kaust/ kasutaja@server:/tmp/kaust/kontrolli ennersync -av kaust/ kasutaja@server:/tmp/kaust/sünkrooni sisuwget https://example.com/arhiiv.tar.gzlaadi failcurl -L -O https://example.com/arhiiv.tar.gzjärgi ja salvesta
Olulisemad lipud, märgid ja kiirnupud
cp -Rkopeeri kaustscp -rsaada kaustrsync -asäilita struktuurrsync -nproovi ennecurl -Ljärgi suunamistcurl -Osalvesta nimega
Kauglogimine ja SSH
Praktiline kasutus
Eesmärk
tee SSH korduvkasutatavaks: kontrolli olemasolevaid võtmeid, lisa avalik võti serverisse, kasuta ~/.ssh/config alias't ja macOS-is Keychaini
Põhirada
ssh kasutaja@server.example.orgproovi tavalist sisselogimistls -la ~/.sshvaata olemasolevaid võtmefailessh-add -lvaata agendis olevaid võtmeidssh-keygen -t ed25519 -C 'kasutaja@arvuti'loo võti ainult vajaduselssh-add --apple-use-keychain ~/.ssh/id_ed25519macOS: salvesta paroolifraas Keychainissh-copy-id -i ~/.ssh/id_ed25519.pub kasutaja@server.example.orglisa avalik võti serverissessh opik-serverkasuta config-alias'tssh -v opik-serverdiagnostika
Olulised failid ja mõisted
id_ed25519privaatvõti; ära jagaid_ed25519.pubavalik võti serverisse~/.ssh/configühenduse alias~/.ssh/authorized_keyslubatud võtmedknown_hostsserverite sõrmejäljedAddKeysToAgentlisa võtmed agentiUseKeychainmacOS paroolifraasi hoidmineIdentitiesOnly yeskasuta nimetatud võtit
Veebist sisu toomine ja tekstivaade: curl, wget, lynx
Praktiline kasutus
Eesmärk
vali curl ühe vastuse või päiste jaoks, wget allalaadimise jaoks ja lynx HTML-i rahulikuks tekstivaateks
Põhikujud
curl -I https://example.com/kontrolli URL-icurl -L -o leht.html https://example.com/salvesta HTMLwget -O leht.html https://example.com/laadi failicurl -sL https://example.com/ | lynx -stdin -dumploe tekstinalynx -dump -listonly https://example.com/kogu lingid
Olulisemad lipud, märgid ja kiirnupud
curl -Ivaata päiseidcurl -Ljärgi suunamistcurl -Osalvesta nimegawget -cjätka tõmmetlynx -dumptekstvaadelynx -listonlyainult lingid
Arhiivid ja pakkimine
Praktiline kasutus
Eesmärk
arhiiv koondab faili- või kaustapuu üheks tervikuks ja pakkimine teeb selle terviku väiksemaks või lihtsamini jagatavaks
Põhikujud
tar -cf proov.tar kaust/loo arhiivtar -tf proov.tarvaata sisutar -czf proov.tar.gz kaust/loo gzip-arhiivtar -xzf proov.tar.gz -C siht/paki lahti sihtkohtazip -r proov.zip kaust/loo zipunzip -l proov.zipvaata zip sisu
Olulisemad lipud, märgid ja kiirnupud
tar -cfloo arhiivtar -tfvaata sisutar -czfgzip-iga kokkutar -xzfpaki gzip lahtizip -rzip kaustunzip -lvaata zip sisu
Tervete kataloogipuude haldus ja jagamine
Praktiline kasutus
Eesmärk
terve projekti või kaustapuu puhul vali tööriist selle järgi, kas tahad koopiat, korduvat sünkroonimist, arhiivi või versiooniajalugu
Põhikujud
cp -R projekt projekt-koopiatee kohalik koopiarsync -avn projekt/ projekt-varu/kontrolli ennersync -av projekt/ kasutaja@server:/srv/projekt/sünkrooni serverissescp -r projekt kasutaja@server:/tmp/saada kiirelttar -czf projekt.tgz projekt/tee hetkearhiivgitjälgi ajalugu
Olulisemad lipud, märgid ja kiirnupud
projekt/sisu seesprojektkaust tervikunarsync -nproovi ennecp -asäilita metaandmed
Protsessid, tööd ja signaalid
Praktiline kasutus
Eesmärk
erista protsessi, shelli tööd ja signaali: vaata, mis jookseb, peata vajadusel ja too pikk töö taustale
Põhikujud
ps aux | grep pythonotsi protsessps aux | sort -nrk 3 | headCPU sööjadps aux | sort -nrk 4 | headmälusööjadsleep 300 &käivita taustaljobsvaata töidfg %1too töö ettetopjälgi reaalajaskillsaada signaalbgjätka taustal
Olulisemad lipud, märgid ja kiirnupud
Ctrl-ckatkesta programmi tööCtrl-zpeata ajutiselt;fgette,bgtaustale&käivita taustal%1töö numberkill -15viisakas lõppkill -9jõuga lõpp
Logid ja teenused
Praktiline kasutus
Eesmärk
kui teenus ei tööta, alusta kahest küsimusest: kas teenus on üldse aktiivne ja mida logid selle kohta ütlevad
Põhikujud
systemctl status sshvaata seisujournalctl -u ssh -n 50loe viimast logijournalctl -u ssh -fjälgi teenusttail -n 50 /var/log/syslogloe faili lõpputail -f /var/log/syslogjälgi failitail -n 50 /var/log/syslog | lesssirvi viimaseid ridu
Olulisemad lipud, märgid ja kiirnupud
statusteenuse seis-u nimiüks teenus-n 50viimased read-fjälgi reaalajas--since todayainult tänane
Püsivad terminalisessioonid: tmux ja screen
Praktiline kasutus
Eesmärk
kasuta püsivat sessiooni siis, kui SSH võib katkeda või kui pikk töö peab jätkuma ka pärast akna sulgemist
Põhikujud
tmux new -s opikloo tmuxtmux attach -t opiknaase tmux-iscreen -S opikloo screenscreen -r opiknaase screeninohup pikk-kaik > logi 2>&1 &jäta töö käimadisownseo shellist lahti
Olulisemad lipud, märgid ja kiirnupud
Ctrl-b deraldu tmux-istCtrl-a deraldu screenisttmux lssessioonide loendscreen -lssessioonide loend
Graafilised rakendused kaugmasinast
Praktiline kasutus
Eesmärk
kaugelt graafika kasutamisel eelista lihtsaimat toimivat teed: veebiliides enne X11-edastust, port forwarding enne toorest kaugtöölauda.
Põhikujud
ssh -L 8888:localhost:8888 kasutaja@servertoo veebiliides kohalehttp://localhost:8888ava edasi suunatud teenusssh -X kasutaja@serverproovi lihtsat X11code --remote ssh-remote+server /tee/projektiniIDE üle SSH
Valiku rusikareeglid
veebiliidestavaliselt mugavaimssh -Lport edasissh -XX11 erijuhtRemote SSHarenduseks parem
Osa IV: Tekst, otsing ja automatiseerimine — täisspikker
Teksti otsimine: grep ja sugulased
Töövood
Eesmärk
grep valib sisendist välja ainult need read, mis sobivad mustriga; see on filtritööriist, mitte tekstiredaktor
Põhikujud
grep 'kass' loomad.txtotsi ühest failistgrep -i 'kass' loomad.txtotsi tõstutagrep -n 'koer' loomad.txtnäita reanrgrep -r 'TODO' .otsi puustgrep -F 'https://example.com' fail.txtotsi täpset sõnetgrep -v '^#' seadistus.confjäta kommentaarid välja
Olulisemad lipud, märgid ja kiirnupud
-itõstutundetu-nreanumbrid-rrekursiivne-vjäta vasted välja-Ftäpne sõne-Elaiendatud regex
Teksti teisendamine: tr, cut, paste, column, strings
Töövood
Eesmärk
need väikesed filtrid muudavad tekstivoo kuju kiiresti: märgid, väljad, veerud ja tabelid ilma eraldi skriptita
Põhikujud
echo 'tere maailm' | tr '[:lower:]' '[:upper:]'muuda suurtäheksecho 'a,b,c' | tr ',' '\n'tee ridadekscut -d ':' -f 1 andmed.txtvõta esimene välicut -d ':' -f 1,3 andmed.txtvõta mitu väljaprintf 'nimi vanus\nMari 20\n' | column -tjoonda tabelstrings /bin/ls | head -n 20loe binaarist tekstpastekleebi veerge
Olulisemad lipud, märgid ja kiirnupud
[:lower:]väiketähed[:upper:]suurtähedcut -dvali eraldajacut -fvali väljadcolumn -tjoonda tabelstringstekstijupid
Vood ja tabelid: sort, uniq, wc, pr, join
Töövood
Eesmärk
tüüpiline töövoog on: sorteeri read, koonda kordused ja loe tulemused kokku
Põhikujud
sort viljad.txtsordi readsort viljad.txt | uniqeemalda kordusedsort viljad.txt | uniq -cloe kordusedwc -l data/sample-text.txtloe readwc -w data/sample-text.txtloe sõnadjoin nimed.txt linnad.txtühenda võtme järgiprjaga veergudeks
Olulisemad lipud, märgid ja kiirnupud
sort -nnumbridsort -rtagurpidiuniq -cloenda kordusedwc -lridade arvwc -wsõnade arvpr -2kaks veergu
sed, awk ja perl praktiliselt
Töövood
Eesmärk
kasuta sed lihtsaks asenduseks, awk väljade jaoks ja perl siis, kui vajad tugevamat regulaaravaldiste loogikat
Põhikujud
echo 'kass koer kass' | sed 's/kass/rebane/'asenda esimeneecho 'kass koer kass' | sed 's/kass/rebane/g'asenda kõikprintf 'Mari:20\nJaan:21\n' | awk -F: '{print $1}'võta esimene väliprintf 'Mari:20\nJaan:21\n' | awk -F: '{print $1, $2}'võta kaks väljaecho 'kass koer kass' | perl -pe 's/kass/rebane/g'asenda Perligaprintf 'Mari\nJaan\n' | perl -ne 'print if /Ja/'filtreeri Perliga
Olulisemad lipud, märgid ja kiirnupud
s/vana/uus/üks asendus/gkõik vasted-F:koolon väljade vahel$1esimene väli$2teine väli-pe/-neread läbi
`find` ja `xargs` ohutumalt
Töövood
Eesmärk
otsi failid find-iga ja anna need ohutult edasi järgmisele käsule, isegi siis, kui nimedes on tühikuid
Põhikujud
find . -type f -name '*.txt'otsi failidfind . -type f -name '*.txt' -print0 | xargs -0 wc -lloe read ohutultfind . -type f -name '*.log' -exec ls -lh {} +käivita otsefind data -type f -name '*.txt' -print0 | while IFS= read -r -d '' fail; do head -n 1 "$fail"; donetöötle ükshaaval
Olulisemad lipud, märgid ja kiirnupud
-type fainult failid-name '*.txt'nime järgi-print0ohutu eraldusxargs -0loe ohutult-exec {} +käivita otseread -r -d ''loe nullmärgini
Esimene shelliskript
Töövood
Eesmärk
esimese shelliskripti tuum on viis asja: shebang, käivitatavus, argumendid, lihtne tingimus ja lõpetuskood
Põhikujud
chmod +x tervita.shtee käivitatavaks./tervita.sh Mari Jaankäivita argumentidega./tervita.shnäe veajuhtumitecho $?vaata lõpetuskoodibash skript.shkäivita Bashigash skript.shkäivita sh-ga./skript.shkasuta shebang'i
Olulisemad lipud, märgid ja kiirnupud
#!/usr/bin/env bashvali Bash$1esimene argument"$@"kõik argumendidif ... fitingimusfor ... donekordusexit 0 / exit 1edu või viga
`cron` ja ajastatud tööd
Töövood
Eesmärk
ajastatud töö tähendab, et käsk jookseb kindlal ajal ilma sinu avatud terminalita; tähtsad on ajaväljad, täisrajad ja logifail
Põhikujud
crontab -lvaata olemasolevatcrontab naide.cronpaigalda fail/bin/date >> "$HOME"/cron-naide.log 2>&1testi käsitsitail -n 5 "$HOME"/cron-naide.logvaata logi
Olulisemad lipud, märgid ja kiirnupud
*/15 * * * *iga 15 min>>lisa logisse2>&1vead samasse$HOMEkasutaja kodu/bin/datetäisrada
Osa V: Arendus ja töövood — täisspikker
Git, GitHub ja töövoog
Edasijõudnu
Eesmärk
Git hoiab muutuste ajalugu; erista tööpuud, stage'i ja commit'i ning vaata diff enne üle.
Põhikujud
git statusvaata seisgit diffmuutused tööpuusgit diff --cachedmuutused stage'isgit add fail.txtpane stage'igit commit -m '...'tee commitgit switch -c parandusloo harugit pull --ff-onlyuuenda puhtaltgit push -u origin parandussaada harugit restore --staged fail.txtvõta stage'ist
Olulisemad lipud, märgid ja kiirnupud
HEADpraegune tippmainpõhiridaoriginkaugrepostagejärgmine commit
Pythoni venv ja eraldatud keskkonnad
Edasijõudnu
Eesmärk
venv hoiab ühe projekti Pythoni paketid eraldi; kõige olulisem on, et terminal, pip ja IDE näeksid sama keskkonda.
Põhikujud
python3 -m venv .venvloo keskkondsource .venv/bin/activateaktiveeri shellispython -m pip install -U pipuuenda pippython -m pip install requestspaigalda pakettpython -m pip listvaata pakkecommand -v pythonkontrolli tõlgenditdeactivatevälju keskkonnast
Olulised märgid
(.venv)aktiivne keskkond.venv/projekti seespython -m pipkindlam kuipipDockerterve keskkond
Dockeri alused
Edasijõudnu
Eesmärk
image on käivitusmall; konteiner on sellest tehtud töötav eksemplar; andmed püsivad ainult hostis, volume'is või Git-repos.
Põhikäsud
docker --versionkontrolli olemasoludocker run --rm alpine echo tereohutu esimene käivitusdocker build -t rakendus .ehita imagedocker run --rm rakenduskäivita imagedocker pstöötavad konteineriddocker logs -f nimijälgi logidocker exec -it nimi shsisene töötavasse konteinerissedocker compose up -dteenused taustaledocker compose downpeata komplekt
Olulisemad lipud, märgid ja kiirnupud
imagekäivitusmallkonteinertöötav eksemplarDockerfileimage'i retseptcompose.yamlmitu teenustvolumepüsiv andmesisuregistryimage'ite hoidla--rmkustuta lühikatse konteiner pärast lõppu-p 8000:8000seo hosti port konteineri pordiga--mount type=bind,src="$PWD",dst=/appjaga praegune kaust konteinerisse-w /appmäära konteineri töökaustdown -vpeatab ja kustutab ka volume'id
IDE-d ja arenduskeskkonnad
Edasijõudnu
Eesmärk
hea arenduskeskkond tähendab, et terminal, Git, interpreter ja vajadusel konteiner osutavad samale projektile, mitte eri maailmadele.
Kontrollid ja valikud
python3 --versionkontrolli Pythonitpython3 -m pip --versionkontrolli pip-igit --versionkontrolli Git-idocker --versionkontrolli Dockeritnode --versionkontrolli Node'inpm --versionkontrolli npm-i
Olulised mõisted
interpretertegelik käivitajasisseehitatud terminalsama projektivaadeRemote SSHtööta kaugmasinasdevcontainerIDE konteineris
Andmeteaduse eelteadmised käsurea vaates
Edasijõudnu
Eesmärk
andmeteaduse stardis ei piisa ühest tööriistast; vaja on korraga failivormingute tunnetust, SQL-i mõtteviisi, programmeerimist ja statistilist mõtlemist.
Põhikujud
fail -> head/less -> column/jq -> sqlite3 -> python3alusta väikese vaatusega- Pythoni `venv`projekti töölaud
- CSV, JSON ja XMLandmete kuju
- SQLite ja Pythonesimene andmebaas
- Teksti teisendamineväiksed filtrid
- Vood ja tabelidkoondamine
Põhiteljed
programmeeriminekorduv töö loogikaksSQLküsi ja seo andmeidvormingudCSV, JSON, XMLstatistikaanna tähendus
CSV, JSON ja XML käsureal
Edasijõudnu
Eesmärk
vormingu tüüp ütleb, milline tööriist mõistab andmeid kõige loomulikumalt: tabelit, puud või märgendistruktuuri.
Põhikujud
head fail.csvvaata CSV algustcolumn -s, -t < fail.csvjoonda lihtne CSVcut -d, -f1 fail.csvvõta üks veergpython3 -m json.tool fail.jsonvorminda JSONjq '.students[].name' fail.jsonvali JSON väljuxmllint --format fail.xmlvorminda XML
Olulised mõisted
CSVlihtne tabelJSONobjektide puuXMLmärgendipuujqJSON filtriks
Andmebaasi algus: sqlite ja Python
Edasijõudnu
Eesmärk
SQLite on sild tekstifailide ja päris andmebaasimõtte vahel: failina lihtne, SQL-i mõttes siiski relatsiooniline andmebaas.
Põhikujud
sqlite3 andmed.dbava või loo failsqlite3 andmed.db '.tables'vaata tabeleidsqlite3 andmed.db '.schema'vaata struktuurisqlite3 andmed.db 'select * from students limit 5;'piilu ridusqlite3 andmed.db 'select city, count(*) from students group by city;'koonda readsqlite3 andmed.db 'select s.name, r.score from results r join students s on s.id = r.student_id;'ühenda tabelidpython3 naide.pykasuta Pythonist
Olulised mõisted
primary keyrea unikaalne idforeign keyviide teise tabelisseJOINseo tabelidGROUP BYkoonda read
Kompileerimine ja käivitamine: shell, Python, C, C++, Go, Rust, Java
Edasijõudnu
Eesmärk
mõni fail käivitatakse tõlgendiga otse; mõni fail kompileeritakse kõigepealt teise vormi; mõni tulemus on päris binaar
Põhikäsud
goGo tööriistcargoRusti tööriistpython3käivita Pythoncckompileeri Cjavackompileeri Javajavakäivita JVM-is
Tüüpilised kujud
chmod +x hello.shõigusedpython3 hello.pykäivita Pythoncc hello.c -o hello-ckompileeri Cgo run hello.goGo tööriistgo build -o hello-go hello.goGo tööriistmkdir -p hello-rustloo puuduv rada
LaTeX käsurealt
Edasijõudnu
Eesmärk
LaTeX-i mõte on lihtne: lähtetekst jääb tekstifailiks, aga buildist sünnib väga täpselt juhitav PDF.
Põhikujud
pdflatex tere.texkompileeri PDFxelatex tere.texparem Unicode tugilatexmk -pdf tere.texkorda vajalikud käigudlatexmk -xelatex tere.texxelatex automaatseltls tere.*vaata abifaileopen tere.pdfava tulemus
Olulised failid
.texlähtefail.pdftulemus.auxristviidete abi.logkompileerimislogi
Lisad — täisspikker
Lisa A: kopeeritavad minitestid
Referents
Eesmärk
Siia koondame lühikesed peatükkide kaupa jaotatud copy-paste harjutused.
Põhikujud
mkdir -p ~/tmp/test1loo puuduv radacd ~/tmp/test1vaheta kausttouch a.txt b.txtloo või aja tempelmkdir kaustloo kaustmv b.txt kaust/liiguta/nimetals -lapikk + peidetudprintfvorminda tekst
Olulisemad lipud, märgid ja kiirnupud
|toru edasi>kirjuta üle>>lisa faili lõppu juurde
Lisa B: spikrite register
Referents
Eesmärk
kõige lühemad meelespead teemade kaupa: failid, tekst, võrk, arendus, loogika ja protsessid
Mida siit leiad
Failidliigu ja vaataTekstloe ja filtreeriVõrkühendu ja kopeeriArendusGit, Docker, buildLoogikatorud ja veadProtsessidtööd ja signaalid
Lisa C: sõnastik ja terminoloogia
Referents
Eesmärk
ühtlusta sõnad nagu CLI, GUI, viip, shell, lipp, stdin, stdout ja repo kogu õpiku ulatuses
Põhimõisted
CLIkäsuridaGUIgraafiline liidesviipehkpromptootab sisestustshelltõlgendab käskelippkäsu valikrepoGit-i hoidla
Lisa D: edasised võimalused ja lugejate soovid
Referents
Eesmärk
järgmine voor peaks pigem süvendama olemasolevaid tugevaid teemasid kui lisama juhuslikke uusi baaskäske
Tugevad järgmised teemad
Rja notebook'idanalüüsi järgmine asteGitjärgmine asteharud ja konfliktid- Shelliskriptid IIveakindlam loogika
- Statistika sildandmetöö mõtteviis
systemdtimeridajastus Linuxis- Varukoopiadtaastamine ja kontroll
Lisa E: usaldusväärsed viited ja lisalugemine
Referents
Eesmärk
ametlikud käsiraamatud ja getting started allikad shelli, SSH, Git-i, Dockeri, JSON-i, SQLite'i ja LaTeX-i jaoks
Edasiõppimise teemad
- Shellid ja põhikäsudbash, zsh, coreutils
- SSH ja võrkOpenSSH, curl, wget
- Git ja GitHubdocs ja Pro Git
- Dockerget started ja compose
- JSON, CSV, XML, SQLiteametlikud viited
- LaTeXprojekt ja CTAN
Lisa F: shelli seadistusfailid bash ja zsh jaoks
Referents
Eesmärk
See lisa annab kopeeritavad algusfailid kahe levinud shelli jaoks:
Põhikujud
echo "$SHELL"prindi tekstls -la "$HOME"pikk + peidetudcp ~/.zshrc ~/.zshrc.backupkopeericp ~/.bashrc ~/.bashrc.backupkopeerialias ll='ls -lh'lühinimialias la='ls -la'lühinimimvliiguta/nimetarmkustuta
Olulisemad lipud, märgid ja kiirnupud
;järjest|toru edasi2>vead faili-hlühike abi&&ainult õnnestumisel