Kuidas saada käsurea viisardiks

Kõige kasulikum arvutiteaduse tund, mida te ilmselt kunagi pole käinud

Pilt on loodud rakendusega Stabiilne difusioon

OÜks asi, mida ma olen kogu oma karjääri jooksul pidevalt täheldanud, on see, et kõige produktiivsematel andmeteadlastel ja inseneridel on tavaliselt üks ühine joon: nad on käsurea viisardid. Nad saavad navigeerida oma arvuti failisüsteemis, otsida logifailidest mustreid ning hallata töid, lähtekoodi ja versioonijuhtimist – kõike seda käsurealt, ilma hiire ja graafiliste kasutajaliidestega aeglasele navigeerimisele tuginemata.

Ometi ei kuulu see käsurea „võlus”, nagu võib kestatööriistadega tuttavale inimesele tunduda, tavaliselt standardsete arvutiteaduse õppekavade osaks. An MIT kursus käsurea valdamise ümber on tabav nimi "Teie CS-hariduse puuduv semester".

See postitus on minu isiklik, 10 õppetunniga "käsurea viisardi 101" klass, mis on suunatud lugejatele, kes soovivad töötada rohkem käsureaga ja vähem graafiliste kasutajaliidestega. Käsitleme põhitõdesid kesta ja teemuutujate, varjunimede, failiõiguste, voogesituse ja torustike, tõhusa tööhalduse, tmuxi, ssh-i, giti ja vimi kohta.

Alustame. Tere tulemast CLW 101-sse.

1. Kest

Kui avate oma terminali, vaatate a koor, nt bash (taaskantav kest) või ZSH (z-shell). Kest on tõesti täielik programmeerimiskeel, millel on juurdepääs teatud standardprogrammidele, mis võimaldavad failisüsteemis navigeerimist ja andmetega manipuleerimist. Saate teada saada, millist kest te kasutate, tippides:

kaja $ SHELL

Bashis laadib kest iga kord uue kesta käivitamisel käsujada, mis on määratud .bashrc fail, mis on tavaliselt teie kodukataloogis (kui kasutate Maci, on seal tavaliselt a .bash_profile faili asemel). Selles failis saate määrata kasulikke asju, nagu oma teemuutuja või varjunimed (millest leiate lähemalt allpool).

2. Tee muutuja

Kui sisestate oma kesta teatud programmide nimed, nt python, catvõi ls, kuidas kest teab, kust seda programmi hankida? See on selle eesmärk tee muutuja. See muutuja salvestab koolonitega eraldatud loendi kõigist teedest, kus kest programme otsib. Oma teemuutujat saate kontrollida, tippides:

kaja $ PATH

Ja saate oma teemuutujale lisada täiendavaid katalooge selle käsuga:

eksport PATH="minu_uus_tee:$PATH"

Parim on lisada see käsk oma bashrc-faili, nii et teie täiendav kataloog oleks uue kesta käivitamisel alati teie teel.

3. Varjunimed

varjunimed on kohandatud käsud, mida saate määratleda, et vältida pikkade käskude ikka ja jälle tippimist, näiteks:

alias ll="ls -lah"
alias gs="git status"
alias gp="git push origin master"

Varjunimesid saab kasutada ka teie arendustöövoo kaitsemeetmete loomiseks. Näiteks määratledes

alias mv="mv -i"

teie terminal hoiatab teid, kui teisaldatav fail on uues kataloogis juba olemas, et te ei kirjutaks kogemata üle faile, mida te ei kavatsenud üle kirjutada.

Kui lisate need varjunimed oma bashrc-faili, on need alati saadaval, kui käivitate uue kesta.

4. Failide õigused ja sudo

Kui masinat jagavad mitu kasutajat, on oluline seadistada faili õigused mis määravad, milline kasutaja saab milliste andmetega milliseid toiminguid teha. Kui sisestate ls -l, näete oma praeguses kataloogis olevaid faile koos nende õigustega järgmisel kujul:

-rwxrwxrwx

Siin

  • rwx tähistavad vastavalt lugemis-, kirjutamis- ja täitmisõigusi
  • 3 rwx plokid on mõeldud (1) kasutajale, (2) kasutajarühmale ja (3) kõigile teistele. Antud näites on kõigil kolmel olemil nii lugemis-, kirjutamis- kui ka täitmisõigused.
  • kriips näitab, et see on fail. Mõttekriipsu asemel on näha ka a d kataloogi või l sümboolse lingi jaoks.

Saate faili õigusi redigeerida chmod. Näiteks kui soovite faili enda jaoks käivitatavaks muuta, tippige

chmod u+x my_program.py

👉 Kui fail on käivitatav, siis kuidas kest teab, kuidas seda käivitada? See on määratud faili esimeses reas 'hashbang'iga, näiteks #!/bin/bash bash-skripti jaoks või #!/bin/python pythoni skripti jaoks.

Lõpuks on olemas spetsiaalne "superkasutaja", kellel on kõigi failide jaoks kõik õigused. Superkasutaja kirjutamisel saate käivitada mis tahes käsu sudo selle käsu ees. Käivitades saate käivitada ka iseseisva sudo-shelli

sudo su

⚠️ Kasutage sudot ettevaatlikult. Sudo abil saate teha muudatusi arvuti riistvara kontrollivas koodis ja viga võib muuta teie masina kasutuskõlbmatuks. Pidage meeles, et suure jõuga kaasneb suur vastutus.

5. Voogedastus ja torustik

. streaming operaator > suunab väljundi programmist faili. >> teeb sama asja, kuid see lisab olemasolevale failile selle ülekirjutamise asemel, kui see on juba olemas. See on kasulik teie enda programmide logimiseks, näiteks:

python my_program.py > logifail

Teine kasulik kontseptsioon on torustik: x | y käivitab programmi x ja suunab x väljundi programmi y. Näiteks:

  • cat log.txt | tail -n5 : prindib failist log.txt viimased 5 rida
  • cat log.txt | head -n5 : prindib failist log.txt esimesed 5 rida
  • cat -b log.txt | grep error : näitab faili log.txt kõiki ridu, mis sisaldavad stringi „error” koos reanumbriga (-b)

6. Töökohtade juhtimine

Kui käivitate programmi oma käsurealt (nt. python run.py), töötab programm vaikimisi rakenduses esiplaanja takistab teil midagi muud tegemast, kuni programm on lõpetatud. Kui programm töötab esiplaanil, saate teha järgmist.

  • tüüpi juht+C, mis saadab programmile signaali SIGINT (signaali katkestus), mis käsib masinal programm kohe katkestada (kui programmil pole võimalust neid signaale sisemiselt käsitleda).
  • tippige juht+Z, mis peatab programmi. Pärast peatamist saab programmi jätkata, tuues selle esiplaanile (fg) või saates selle taustale (bg).

Selleks, et käivitada käsk kohe taustal, kasutage & operaator:

python run.py &

👉 Kuidas sa tead, millised programmid hetkel taustal töötavad? Kasutage käsku jobs. See kuvab töötavate tööde nimed ja nende protsessi ID-d (PID).

Lõpukskill on programm signaalide saatmiseks taustal töötavatele programmidele. Näiteks,

  • kill -STOP %1 saadab STOP signaali, peatades programmi 1.
  • kill -KILL %1 saadab KILL signaali, lõpetades programmi 1 jäädavalt.
Minu isikliku Macbooki terminali neli terminalipaneeli koos tmuxiga (autori pilt).

7. tmux

tmux ("terminali multiplekser") võimaldab teil hõlpsasti uusi terminale luua ja nende vahel navigeerida. See võib olla väga kasulik, näiteks saate failisüsteemis navigeerimiseks kasutada ühte terminali ja tööde täitmiseks teist terminali. Tmuxi abil saate need mõlemad kõrvuti kasutada.

👉 Teine põhjus tmuxi õppimiseks on kaugarendus: kui logite kaugmasinast välja (kas tahtlikult või kogemata), lõpetatakse automaatselt kõik programmid, mis teie kestas aktiivselt töötasid. Teisest küljest, kui käivitate oma programme tmuxi kestas, võite lihtsalt eemaldada tmuxi akna, logida välja, sulgeda arvuti ja naasta hiljem selle kesta juurde, nagu poleks teid kunagi välja logitud.

Siin on mõned põhikäsud, mis aitavad teil tmuxiga alustada:

  • tmux new -s run loob uue terminaliseansi nimega 'run'
  • control-BD: eemaldage see aken
  • tmux a : lisa uusimale aknale
  • tmux a -t run : lisage aknale nimega "run"
  • Control-B“: lisage alla veel üks terminalipaan
  • Control-B% : lisage paremale teine ​​terminalipaan
  • Control-B➡️ : liikuge terminalipaanile paremale (sarnane vasakule, üles, alla)

8. SSH ja võtmepaarid

ssh on kaugmasinatesse sisselogimise programm. Kaugmasinatesse sisselogimiseks peate sisestama kas kasutajanime ja parooli või kasutama võtmepaari, mis koosneb avalikust võtmest (millele on juurdepääs mõlemal masinal) ja privaatvõtmest (mis on ainult teie enda masin on juurdepääs).

ssh-keygen on programm sellise võtmepaari genereerimiseks. Kui jooksed ssh-keygen, loob see vaikimisi avaliku võtme nimega id_rsa.pub ja privaatvõti nimega id_rsaja asetage mõlemad oma sisse ~/.ssh kataloog. Peate kaugmasinale lisama avaliku võtme, mida, nagu peaksite praegu teadma, saate teha torude ühendamise teel cat, sshja voogedastusoperaator:

kass .ssh/id_rsa.pub | ssh user@remote 'kass >> ~/.ssh/authorized_keys'

Nüüd saate ssh-d kaugjuhtimispuldis kasutada, esitades oma privaatvõtme:

ssh remote -i ~/.ssh/id_rsa

Veelgi parem tava on faili loomine ~/.ssh/config mis sisaldab kõiki teie ssh autentimise seadistusi. Näiteks kui teie config fail on järgmine:

Host dev
HostName kaugjuhtimispult
Identiteedifail ~/.ssh/id_rsa

Seejärel saate kaugjuhtimispulti sisse logida, lihtsalt tippides ssh dev.

9. git

git on versioonihaldussüsteem, mis võimaldab teil käsurealt tõhusalt navigeerida oma koodi versioonide ajaloos ja harudes.

👉 Pange tähele git ei ole sama mis GitHub: git on iseseisev programm, mis saab hallata teie koodi versioonimist teie kohalikus sülearvutis, samas kui GitHub on koht, kus saate koodi eemalt majutada.

Siin on mõned olulised git-käsud:

  • git add : määrab, millised failid soovite järgmisse sissekandmisse kaasata
  • git commit -m 'my commit message' : viib sisse koodi muutmise
  • git checkout -b dev : loob uue haru nimega "dev" ja kontrollige seda haru
  • git merge dev : liidab dev praeguse haruga. Kui see tekitab liitmise konflikte, peate need konfliktid käsitsi parandama ja seejärel käivitama git add file_that_changed; git merge --continue
  • git stash : tühistab kõik muudatused ja git stash pop toob nad tagasi. See on kasulik, kui tegite põhiharus muudatusi ja otsustate seejärel, et soovite, et need muudatused oleksid eraldi harus.
  • git reset --hard : ennistab jäädavalt kõik muudatused

Ja siin on mõned olulised git-käsud kaughostiga (nt GitHub) töötamiseks:

  • git clone : kloonib koodi repo koopia teie kohalikku masinasse
  • git push origin master : lükkab muudatused kaughosti (nt GitHub)
  • git pull : tõmbab kaugjuhtimispuldist uusima versiooni. (See on sama, mis jooksmine git fetch; git merge;).

👉 Enne käsu käivitamist, näiteks git push origin master, peate autentima ssh-klahvipaariga (vt õppetund 8). Kui kasutate GitHubi, saate avaliku võtme lihtsalt oma profiili seadete alla kleepida.

10. vim

Vim on võimas käsureapõhine tekstiredaktor. Hea mõte on õppida selgeks vähemalt põhilised vimi käsud:

  • aeg-ajalt peate võib-olla kaugmasinasse sisse logima ja seal koodi muutma. vim on standardprogramm ja seetõttu tavaliselt saadaval igas masinas, millega töötate.
  • joostes git commit, vaikimisi avab git vimi kinnitussõnumi kirjutamiseks. Nii et vähemalt soovite teada, kuidas faili kirjutada, salvestada ja sulgeda.

Kõige olulisem asi, mida vimi puhul mõista, on see, et seal on erinevad töörežiimid. Kui olete vimi käivitanud, olete sees navigeerimisrežiim, mida kasutate failis navigeerimiseks. Tüüp i algusesse redigeerimisrežiim, milles saate failis muudatusi teha. Sisestage Esc muutmisrežiimist lahkumiseks ja navigeerimisrežiimi naasmiseks.

Navigeerimisrežiimi kasulik on see, et saate failis kiiresti navigeerida ja seda klaviatuuriga manipuleerida, näiteks:

  • x kustutab tähemärgi
  • dd kustutab terve rea
  • b (tagasi) läheb eelmisele sõnale, n (järgmine) läheb järgmise sõna juurde
  • :wq salvestab muudatused ja sulgeb faili
  • :q! ignoreerib teie muudatusi ja sulgeb faili

Rohkemate (palju rohkem!) vim-klaviatuuri otseteid leiate siit see vim-petuleht.

Foto: Vassili Koloda on Unsplash

Lõplik mõtted

Õnnitleme, olete lõpetanud käsurea viisardi 101. Siiski oleme siin ainult pinda kriimustanud. Inspiratsiooni saamiseks kaaluge järgmist probleemi:

"Antud tekstifail ja täisarv k, printige kfailis levinumad sõnad (ja nende esinemiste arv) väheneva sagedusega.

Andmeteadlasena võib minu esimene impulss käivitada jupyteri märkmik, laadida andmed võib-olla pandadesse ja seejärel kasutada mõnda funktsiooni, nagu pandad. agg. Kogenud käsureaviisardi jaoks see on ühekihiline:

tr -cs A-Za-z '' | tr A-Z a-z | sorteerida | unikaalne -c | sort -rn | sed ${1}q

See ei tundu liiga erinev selle artikli alguses näidatud Stable Diffusioni ettekujutusest. Võlur, tõepoolest.

Kuidas saada käsurea viisardiks Avaldatud uuesti allikast https://towardsdatascience.com/how-to-become-a-command-line-wizard-5d78d75fbf0c?source=rss—-7f60cf5620c9—4 https://towardsdatascience'i kaudu. com/feed

<!–

->

Ajatempel:

Veel alates Blockchaini konsultandid