Kuinka tulla komentorivivelhoksi

Hyödyllisin tietojenkäsittelyn kurssi, jota et todennäköisesti ole koskaan käynyt

Kuva luotu kanssa Vakaa diffuusio

OOlen jatkuvasti havainnut koko urani ajan, että tuottavimmilla datatieteilijöillä ja insinööreillä on yleensä yksi yhteinen piirre: he ovat komentorivin ohjatut toiminnot. He voivat navigoida tietokoneensa tiedostojärjestelmässä, etsiä kuvioita lokitiedostoista ja hallita töitä, lähdekoodia ja versionhallintaa kaikki komentoriviltä ilman, että he tarvitsevat hidasta navigointia hiirellä ja graafisilla käyttöliittymillä.

Kuitenkaan tämä komentorivin "velho", kuten shell-työkaluja tuntemattomalta saattaa vaikuttaa, ei tyypillisesti ole osa tietojenkäsittelytieteen perusopetusohjelmia. An MIT kurssi komentorivin hallitsemisen ympärillä on osuvasti nimi "CS-koulutuksesi puuttuva lukukausi".

Tämä viesti on henkilökohtainen, 10 oppitunnin "Command-line Wizardry 101" -luokka, joka on suunnattu lukijoille, jotka haluavat työskennellä enemmän komentorivin kanssa ja vähemmän graafisten käyttöliittymien kanssa. Käsittelemme perusasiat komentotulkin ja polkumuuttujan, aliasten, tiedostojen käyttöoikeuksien, suoratoiston ja putkistojen, tehokkaan työnhallinnan, tmuxin, ssh:n, gitin ja vimin ympärillä.

Aloitetaan. Tervetuloa CLW 101:een.

1. Kuori

Kun avaat terminaalin, katsot a kuori, kuten bash (borne again shell) tai ZSH (z-shell). Shell on todella täydellinen ohjelmointikieli, jolla on pääsy tiettyihin vakioohjelmiin, jotka mahdollistavat tiedostojärjestelmän navigoinnin ja tietojen käsittelyn. Voit selvittää, mitä komentotulkkia käytät kirjoittamalla:

kaiku $ SHELL

Bashissa joka kerta kun käynnistät uuden komentotulkin, komentotulkki lataa sarjan komentoja, jotka on määritetty .bashrc tiedosto, joka on yleensä kotihakemistossasi (jos käytät Macia, siellä on yleensä a .bash_profile tiedosto sen sijaan). Tuossa tiedostossa voit määrittää hyödyllisiä asioita, kuten polkumuuttujan tai aliaksia (lisätietoja alla).

2. Polkumuuttuja

Kun kirjoitat tiettyjen ohjelmien nimet shelliin, kuten python, cattai ls, mistä shell tietää, mistä ohjelman saa? Se on sen tarkoitus polkumuuttuja. Tämä muuttuja tallentaa luettelon kaikista poluista, joilta komentotulkki etsii ohjelmia, erotettuna kaksoispisteillä. Voit tarkistaa polkumuuttujan kirjoittamalla:

echo $ PATH

Ja voit lisätä polkumuuttujaasi lisää hakemistoja tällä komennolla:

vienti PATH="my_new_path:$PATH"

On parasta lisätä tämä komento bashrc-tiedostoosi, jotta lisähakemistosi on aina polullasi, kun aloitat uuden komentotulkin.

3. Aliakset

aliaksia ovat mukautettuja komentoja, jotka voit määrittää välttääksesi pitkien komentojen kirjoittamisen yhä uudelleen ja uudelleen, kuten:

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

Aliaksia voidaan käyttää myös luomaan suojakeinoja kehitystyönkululle. Esimerkiksi määrittelemällä

alias mv="mv -i"

päätelaite varoittaa, jos siirrettävä tiedosto on jo olemassa uudessa hakemistossa, jotta et vahingossa korvaa tiedostoja, joita et aikonut korvata.

Kun lisäät nämä aliakset bashrc-tiedostoosi, ne ovat aina käytettävissä, kun aloitat uuden komentotulkin.

4. Tiedostojen käyttöoikeudet ja sudo

Kun useat käyttäjät jakavat koneen, on tärkeää määrittää tiedostojen käyttöoikeudet jotka määrittävät, kuka käyttäjä voi suorittaa mitä toimintoja millekin datalle. Kun kirjoitat ls -l, näet nykyisen hakemistosi tiedostot ja niiden käyttöoikeudet seuraavassa muodossa:

-rwxrwxrwx

Täällä

  • rwx tarkoittaa luku-, kirjoitus- ja suoritusoikeuksia
  • 3 rwx lohkot ovat (1) käyttäjälle, (2) käyttäjäryhmälle ja (3) kaikille muille. Annetussa esimerkissä kaikilla kolmella näistä olioista on luku-, kirjoitus- ja suoritusoikeudet.
  • viiva osoittaa, että tämä on tiedosto. Viivan sijasta näet myös a d hakemistoon tai l symbolinen linkki.

Voit muokata tiedostojen käyttöoikeuksia chmod. Jos esimerkiksi haluat tehdä tiedostosta suoritettavan itsellesi, kirjoita

chmod u+x my_program.py

👉 Jos tiedosto on suoritettava, miten shell tietää kuinka se suoritetaan? Tämä on määritetty tiedoston ensimmäisellä rivillä "hashbang", kuten #!/bin/bash bash-skriptille tai #!/bin/python python-skriptille.

Lopuksi on olemassa erityinen "superkäyttäjä", jolla on kaikki oikeudet kaikkiin tiedostoihin. Voit suorittaa minkä tahansa komennon superkäyttäjän kirjoittamana sudo sen komennon edessä. Voit myös käynnistää erillisen sudo-kuoren suorittamalla

sudo su

⚠️ Käytä sudoa varoen. Sudon avulla voit tehdä muutoksia koodiin, joka ohjaa tietokoneesi laitteistoa, ja virhe voi tehdä koneestasi käyttökelvottoman. Muista, että suurella voimalla tulee suuri vastuu.

5. Suoratoisto ja putket

- streaming operaattori > ohjaa tulosteen ohjelmasta tiedostoon. >> tekee saman asian, mutta se lisää olemassa olevaan tiedostoon sen korvaamisen sijaan, jos se on jo olemassa. Tämä on hyödyllistä omien ohjelmien kirjaamiseen seuraavasti:

python my_program.py > lokitiedosto

Toinen hyödyllinen käsite on putkisto: x | y suorittaa ohjelman x ja ohjaa ulostulon x:stä ohjelmaan y. Esimerkiksi:

  • cat log.txt | tail -n5 : tulostaa viimeiset 5 riviä log.txt-tiedostosta
  • cat log.txt | head -n5 : tulostaa ensimmäiset 5 riviä log.txt-tiedostosta
  • cat -b log.txt | grep error : näyttää kaikki log.txt-tiedoston rivit, jotka sisältävät merkkijonon "error", rivinumeron (-b) kanssa

6. Työtehtävien hallinta

Jos suoritat ohjelman komentoriviltä (esim python run.py), ohjelma suoritetaan oletusarvoisesti etualaja estää sinua tekemästä mitään muuta ennen kuin ohjelma on valmis. Kun ohjelma on käynnissä etualalla, voit:

  • tyyppi ohjaus+C, joka lähettää SIGINT-signaalin (signaalin keskeytys) ohjelmalle, joka käskee konetta keskeyttämään ohjelman välittömästi (ellei ohjelmalla ole tapaa käsitellä näitä signaaleja sisäisesti).
  • kirjoita control+Z, joka keskeyttää ohjelman. Tauon jälkeen ohjelmaa voidaan jatkaa joko tuomalla se etualalle (fg), tai lähettämällä se taustalle (bg).

Jos haluat käynnistää komennon heti taustalla, käytä & operaattori:

python run.py &

👉 Mistä tiedät, mitkä ohjelmat ovat tällä hetkellä käynnissä taustalla? Käytä komentoa jobs. Tämä näyttää käynnissä olevien töiden nimet sekä niiden prosessitunnukset (PID:t).

Lopuksi,kill on ohjelma, joka lähettää signaaleja taustalla toimiville ohjelmille. Esimerkiksi,

  • kill -STOP %1 lähettää STOP-signaalin ja keskeyttää ohjelman 1.
  • kill -KILL %1 lähettää KILL-signaalin ja lopettaa ohjelman 1 pysyvästi.
Neljä pääteruutua henkilökohtaisessa Macbookin terminaalissa tmuxilla (kuvan tekijä).

7. tmux

tmux ('päätemultiplekseri') mahdollistaa helposti uusien päätteiden luomisen ja navigoinnin niiden välillä. Tämä voi olla erittäin hyödyllistä, sillä voit esimerkiksi käyttää yhtä päätettä tiedostojärjestelmän navigoimiseen ja toista päätettä töiden suorittamiseen. tmuxin avulla voit jopa saada nämä molemmat vierekkäin.

👉 Toinen syy tmuxin oppimiseen on etäkehitys: kun kirjaudut ulos etäkoneelta (joko tarkoituksella tai vahingossa), kaikki shellissäsi aktiivisesti käynnissä olleet ohjelmat lopetetaan automaattisesti. Toisaalta, jos suoritat ohjelmiasi tmux-kuoren sisällä, voit irrottaa tmux-ikkunan, kirjautua ulos, sulkea tietokoneesi ja palata myöhemmin kyseiseen kuoreen ikään kuin et olisi koskaan kirjautunut ulos.

Tässä on joitain peruskomentoja, joiden avulla pääset alkuun tmuxin kanssa:

  • tmux new -s run luo uuden pääteistunnon nimellä "run"
  • Control-BD: irrota tämä ikkuna
  • tmux a : liittää uusimpaan ikkunaan
  • tmux a -t run : liitä ikkunaan nimeltä "run"
  • Control-B“ : lisää toinen pääteruutu alle
  • Control-B% : lisää toinen pääteruutu oikealle
  • Control-B➡️ : siirry pääteruutuun oikealle (samanlainen vasemmalle, ylös, alas)

8. SSH ja avainparit

ssh on ohjelma etäkoneisiin kirjautumiseen. Kirjautuaksesi etäkoneisiin sinun on annettava joko käyttäjätunnus ja salasana tai käytät avainparia, joka koostuu julkisesta avaimesta (johon molemmilla koneilla on pääsy) ja yksityisestä avaimesta (joka on vain oma koneesi on pääsy).

ssh-keygen on ohjelma tällaisen avainparin luomiseksi. Jos juokset ssh-keygen, se luo oletuksena julkisen avaimen nimeltä id_rsa.pub ja yksityinen avain nimeltä id_rsa, ja aseta molemmat omaan ~/.ssh hakemistosta. Sinun on lisättävä julkinen avain etäkoneeseen, minkä voit, kuten sinun pitäisi jo tietää, tehdä yhdistämällä cat, sshja suoratoistooperaattori:

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

Nyt voit käyttää ssh:tä kaukosäätimeen antamalla yksityisen avaimesi:

ssh remote -i ~/.ssh/id_rsa

Vielä parempi käytäntö on luoda tiedosto ~/.ssh/config joka sisältää kaikki ssh-todennuskokoonpanosi. Esimerkiksi jos sinun config tiedosto on seuraava:

Isäntäkehittäjä
HostName-kaukosäädin
IdentityFile ~/.ssh/id_rsa

Sitten voit kirjautua kaukosäätimeen yksinkertaisesti kirjoittamalla ssh dev.

9. git

git on versionhallintajärjestelmä, jonka avulla voit navigoida tehokkaasti koodisi versiohistoriassa ja haaroissa komentoriviltä.

👉 Huomaa git ei ole sama kuin GitHub: git on erillinen ohjelma, joka voi hallita koodisi versiointia paikallisella kannettavalla tietokoneellasi, kun taas GitHub on paikka isännöidä koodiasi etänä.

Tässä on joitain olennaisia ​​git-komentoja:

  • git add : määrittää, mitkä tiedostot haluat sisällyttää seuraavaan toimitukseen
  • git commit -m 'my commit message' : suorittaa koodin muutoksen
  • git checkout -b dev : luo uuden haaran nimeltä "dev" ja tarkista haara
  • git merge dev : yhdistää dev nykyiseen haaraan. Jos tämä aiheuttaa yhdistämisristiriitoja, sinun on korjattava nämä ristiriidat manuaalisesti ja suoritettava sitten git add file_that_changed; git merge --continue
  • git stash : palauttaa kaikki muutokset ja git stash pop tuo ne takaisin. Tämä on hyödyllistä, jos teit muutoksia päähaaraan ja päätät sitten, että haluat todellakin näiden muutosten olevan erillinen haara.
  • git reset --hard : palauttaa kaikki muutokset pysyvästi

Ja tässä on joitain tärkeitä git-komentoja etäisäntäkoneen (esim. GitHub) käsittelyssä:

  • git clone : kloonaa kopion koodivarastosta paikalliseen koneellesi
  • git push origin master : siirtää muutokset etäisäntään (esim. GitHub)
  • git pull : hakee uusimman version kaukosäätimestä. (Tämä on sama kuin juokseminen git fetch; git merge;).

👉 Ennen kuin pystyt suorittamaan komennon, kuten esim git push origin master, sinun täytyy todentaa ssh-avainparilla (katso oppitunti 8). Jos käytät GitHubia, voit liittää julkisen avaimen profiiliasetuksiin.

10. vim

Vim on tehokas komentorivipohjainen tekstieditori. On hyvä idea opetella ainakin vimin peruskomennot:

  • silloin tällöin saatat joutua kirjautumaan etäkoneeseen ja muuttamaan koodia siellä. vim on vakioohjelma ja siksi yleensä saatavilla kaikilla koneilla, joilla työskentelet.
  • juoksun aikana git commit, oletuksena git avaa vimin vahvistusviestin kirjoittamista varten. Joten ainakin haluat tietää kuinka kirjoittaa, tallentaa ja sulkea tiedosto.

Tärkein asia vimissä on ymmärtää, että toimintatiloja on erilaisia. Kun käynnistät vimin, olet sisällä navigointitila, jota käytät tiedostossa liikkumiseen. Tyyppi i aloittaa muokkausmoodi, jossa voit tehdä muutoksia tiedostoon. Kirjoita Esc -näppäintä poistuaksesi muokkaustilasta ja palataksesi navigointitilaan.

Navigointitilan hyödyllinen puoli on, että voit nopeasti navigoida ja käsitellä tiedostoa näppäimistöllä, esimerkiksi:

  • x poistaa merkin
  • dd poistaa kokonaisen rivin
  • b (takaisin) siirtyy edelliseen sanaan, n (seuraava) siirtyy seuraavaan sanaan
  • :wq tallentaa tekemäsi muutokset ja sulkee tiedoston
  • :q! jättää tekemäsi muutokset huomioimatta ja sulkee tiedoston

Katso lisää (paljon enemmän!) vim-pikanäppäimiä tämä vim-huijauslehti.

Kuva Vasily Koloda on Unsplash

Lopullinen ajatuksia

Onnittelut, olet suorittanut "komentorivivelhon 101". Olemme kuitenkin vain raaputtaneet pintaa tässä. Harkitse seuraavaa ongelmaa saadaksesi inspiraatiota:

"Annetaan tekstitiedosto ja kokonaisluku k, tulosta ktiedoston yleisimmät sanat (ja niiden esiintymismäärät) alenevalla tiheydellä."

Datatieteilijänä ensimmäinen sysäykseni saattaa olla jupyter-muistikirjan käynnistäminen, tietojen lataaminen ehkä pandoille ja sen jälkeen pandan kaltaisten toimintojen käyttäminen. agg. Kuitenkin kokeneelle komentorivivelholle tämä on yksikerroksinen:

tr -cs A-Za-z '' | tr AZ az | lajitella | uniq -c | lajittele -rn | sed ${1}q

Tämä ei näytä kovin erilaiselta kuin Stable Diffusionin tämän artikkelin alussa esitetystä mielikuvituksesta. Taikuutta, todellakin.

Miten tulla komentorivivelhoksi Julkaistu uudelleen lähteestä https://towardsdatascience.com/how-to-become-a-command-line-wizard-5d78d75fbf0c?source=rss—-7f60cf5620c9—4 https://towardsdatasciencen kautta. fi/syöte

<!-

->

Aikaleima:

Lisää aiheesta Blockchain-konsultit