[SKAN MŪZIKA]
DAGS LOIDS: Labi.
Tātad, parunāsim par to, kā izmantot Linux komandrindu.
Tagad CS50 IDE vai pat CS50 Appliance, ja jūs to pārzināt, vai
izmantojat vecāku CS50 versiju, ir mākoņdatošanas platforma, kurā
darbojas Ubuntu, kas ir viena no daudzajiem Linux operētājsistēmu
veidiem..
Linux operētājsistēmu iecienījuši programmētāji, jo tā ir vienkārši
foršāka, vai ne?
Daudzām mūsdienu Linux distribūcijām ir grafiskās lietotāja
saskarnes, ko mēs saucam arī par GLS, G-L-S, lai nodrošinātu
vienkāršu navigāciju ar peli, kas, iespējams, jau jums ir pazīstama,
ja esat Windows vai Mac lietotājs, pārvietojoties ar peli, veicot
dubultklikšķi uz ikonām un tā tālāk.
Tomēr, kā programmētājs un, neskatoties uz to, ka IDE ir iespēja
veikt dažas grafiskas lietotāja darbības: noklikšķināt un vilkt, un
visas tās, jūs joprojām izmantosit savu termināļa logu diezgan bieži.
Un jūs varat veikt daudzas tās pašas darbības, ko varat veikt ar
peli, izmantojot tastatūras komandas.
Un mēs nedaudz parunāsim par to, kādas ir dažas no šīm komandām
šobrīd.
Tagad šīs komandas var izmantot jebkurā Unix operētājsistēmā, kas
ietver Linux, bet ietver arī Mac OS.
Ja savā Mac datorā atverat termināli, varat izmantot tieši šīs
komandas.
Sistēmai Windows ir arī komandu uzvedne, taču dažas komandas nedaudz
atšķiras, tāpēc tā faktiski nedarbojas, jo Windows nav uz Unix
balstīta sistēma.
Tāpēc apskatīsim dažas no šīm Linux komandām.
Pirmā, kuru jūs, iespējams, izmantosit diezgan bieži, ir ls.
Tas ir mazais burts l, kam seko mazais burts s, kas ir angļu termina
list - saraksts - saīsinājums.
Un ko dara saraksta komanda, tā sniedz jums nolasījumu par visām
datnēm un mapēm jūsu pašreizējā direktorijā.
Tātad jūs varat redzēt visu, kur varat nokļūt no pašreizējās
atrašanās vietas.
Tāpēc es šeit esmu atvēris CS50 IDE.
Un es pietuvināšu pēc brīža, lai jūs varētu to aplūkot tuvāk, bet
šeit ir vispārējs ieskats tajā, kā izskatās IDE.
Kreisajā pusē varat redzēt, ka mums ir datņu koks, kuru jūs,
iespējams, pazīstat,dubultklikšķis un datnes un mapes, un visas šīs
lietas.
Tātad tas joprojām ir CS50 Appliance..
Centrā augšpusē ir vieta, kur jūs rakstīsiet kodu, kad noklikšķināsit
uz datnes.
Un apakšā mums ir termināļa logs, kurā mēs varam izpildīt šīs
termināļa komandas.
Es pietuvināšu un došos uz šejieni, lai parādītu, ka patiesībā es
varu uzklikšķināt uz šīmm datnēm un mapēm.
Skaidrs, ka tur, kur es šobrīd esmu, man ir divas mapes, kuras sauc
pset0 un pset1, un trīs datnes, viena ar nosaukumu hello, viena ar
nosaukumu hello.c un viena ar nosaukumu hello.txt.
Tātad, pāriesim uz termināļa logu un apskatīsim to tuvāk.
Tātad mēs tikko atkal runājām par to, ka pašreizējā direktorijā ir
trīs datnes un divas mapes.
Ja es ierakstu ls, kas atkal ir komanda, kura uzskaita pašreizējās
direktorijas saturu, un pēc tam nospiežu Enter, paskatieties, ko es
redzu, hello, hello.c, hello.txt, pset0 un pset1.
pset0 un pset1 ir iekrāsotas zilā krāsā, lai norādītu, ka tās ir
direktorijas, uz kurāms mēs varētu pārvietoties.
Un pēc brīža mēs uzzināsim mazliet par to, kā pārvietoties
direktorijās.
Un visas pārējās lietas ir iekrāsotas melnā krāsā, ja tā ir teksta
datne vai avota koda datne, un zaļā krāsā, ja tas ir izpildāmā datne.
Skaidrs, ka tas nozīmē, ka es varētu palaist programmu ar nosaukumu
hello.
To tur apzīmē tas zaļais.
Bet būtībā komandas ls ierakstīšana ļāva man apskatīt visu, kas ir
manā pašreizējā direktorijā, kas atbilst tam, ko mēs redzam šeit, tā
grafiskajā displejā.
Nākamā komanda, kuru jūs, iespējams, izmantosit diezgan daudz, ir cd,
mazais burts c, mazais burts d, kas ir saīsinājums no angļu termina
change directory - mainīt direktoriju.
Tas ļauj mums darīt to, par ko es runāju pirms brīža, proti,
komandrindā pārvietoties starp direktorijām, neveicot dubultklikšķi
uz mapēm.
Tātad, ja mēs ierakstām cd un pēc tam direktorijas nosaukumu, mēs
varam iekļūt šajā direktorijā.
Starp citu, ņemiet vērā, ka pašreizējās direktorijas nosaukums
vienmēr ir punkts, un direktorijas nosaukums vienu līmeni augstāk par
pašreizējo atrašanās vietu, tas ir mapes nosaukums, kurā atrodas mūsu
mape, punkts, punkts-- vai kurā ir mūsu mape, ir punkts, punkts.
Un, ja jums kādreiz interesē savas direktorijas nosaukums, varat
ierakstīt pwd, kas apzīmē pašreizējo darba direktoriju.
Tagad mēs tos visus apskatīsim, atgriežoties pie CS50 IDE.
Tātad tagad esmu atpakaļ savā darbvietā.
Un es vēlreiz pietuvināšu termināli, lai mēs varētu apskatīt
pārvietošanos pa IDE.
Tātad es vēlreiz uzskaitīšu savas direktorijas saturu tikai, lai
atgādinātu, kur mēs esam.
Tātad, ja es ierakstu ls, kas apzīmēsarakstu, es redzu, ka varu
nokļūt pset0 un pset1.
Tās ir direktorijas, uz kuriems es varu nokļūt no šejienes.
Es to zinu, jo IDE dod man pavedienu, iekrāsojot tos zilā krāsā.
Pieņemsim, ka es vēlos iekļūt savā pset1 direktorijā, jo strādāju pie
1. problēmu kopas.
Es varu ierakstīt cd-- atkal, saīsinājums angļu terminam Change
directory-- atstarpe, pset1.
Un, ja es nospiežu Enter, ievērojiet, kas notiek.
Neizskatās, ka daudz kas būtu noticis.
Bet, ja paskatās uz uzvedni, tagad tā man saka, ka esmu
~/workspace/pset1.
Esmu pārgājis uz mapi pset1, kas atradās manā darbvietā.
Un, ja es ierakstu ls, es šeit redzu dažādas lietas, vai ne?
Šis nav tas pats saraksts, ko es redzēju iepriekš.
Esmu pārgājis uz pset1.
Un tāpēc tagad, kad es ierakstu ls, es iegūstu kontekstu tam, ko es
varu redzēt mapē pset1.
Tagad es nospiedīšu vadīšanas taustiņu un l, kas vienkārši notīra
ekrānu.
Un es vēlreiz uzskaitīšu direktorijas saturu, lai jūs varētu redzēt.
Es tikai gribēju to izdarīt, lai notīrītu dažas lietas, kuras
redzējāt zemāk, un lai novērstu to, ka tas nonāk pārāk tālu ārpus
skata.
Tātad es iepriekš teicu, ka, ja vēlos pāriet uz pašreizējo
direktoriju, varu ierakstīt cd atstarpe dot.
Nospiediet Enter.
Nekas nenotiek, vai ne?
Es mainu direktorijass uz pašreizējo direktoriju.
Jūs ne vienmēr atradīsit vajadzību pēc viena punkta, bet laiku pa
laikam var sanākt.
Pieņemsim, ka es vēlos pārvietoties vienu līmeni augstāk.
Es vēlos atgriezties savā darbvietas direktorijā.
Es nevaru ierakstīt cd workspace, nav šādas datnes vai direktorijas.
Un iemesls tam — ja es ierakstu ls vēl vienu reizi — manā pset1
direktorijā nav direktorijas, ko sauc workspace..
Es atkal notīrīšu ekrānu, izmantojot vadības taustiņu un l.
Tomēr atcerieties, ko es teicu iepriekš, ka mēs varam pārvietoties
atpakaļ ievadot punktu divreiz.
Tas ir vecākdirektorijas nosaukums.
Tātad, ja es ierakstu cd, atstarpe, punkts, punkts un pēc tam
nospiežu ievadtaustiņu, tagad skatieties, kas notika.
Komandu uzvedne man saka, ka esmu atpakaļ ~/workspace direktorijā.
Es pārvietojos vienu līmeni augstāk, pateicoties punkts, punkts.
Tagad pieņemsim, ka es izmantoju operētājsistēmu, kas ir balstīta uz
Linux, bet ne vienmēr norāda, kur es atrodos.
Šī mums norāda, ka šobrīd atrodos ~/workspace, tieši pēc uzvednes.
Bet es varētu pilnībā apmaldīties mapju haosā, un man nav ne jausmas,
kur esmu, un ne jausmas, kur vēlos atgriezties.
Ir divas lietas, ko es varu darīt.
Pirmkārt, es varu saprast, kur esmu, ierakstot pwd.
Tā ir mana pašreizējais darba direktorija.
Un, ja es nospiežu taustiņu Enter, tas man precīzi norāda, kur es
esmu.
Tātad /home/ubuntu ir garāks veids, kā pateikt, tilde, kas ir jūsu
mājas direktorija.
Bet tas man saka, ka esmu home/ubuntu/workspace vai ~/workspace.
Es atkal došos uz savu pset1 direktoriju un uzskaitīšu saturu.
Un es redzu, ka man tur ir vēl viena direktorija, kuru sauc extras.
Tātad, es nomainīšu direktoriju uz extras un pēc tam notīrīšu ekrānu.
Tātad tagad es esmu diezgan tālu, vai ne?
Ko darīt, ja es vēlos nekavējoties atgriezties darbvietā?
Ir dažas lietas, ko es varētu darīt.
Es varētu rakstīt cd, punkts, punkts, slīpsvītra, punkts, punkts, lai
pārvietotos uz augšu par vienu līmeni un pēc tam uz citu līmeni.
Bet tas ir kaut kā kaitinoši.
Tātad, ja es kādreiz vēlos atgriezties tikai savā sākumvietas
direktorijā, tildē, varu ierakstīt cd, vairāk neko nepievienojot.
CD, Enter.
Un tagad es esmu tildē.
Un, ja es vēlos nokļūt darbvietā, varu vienkārši ierakstīt cd
workspace.
Un tā jūs strādājat, mainot direktorijas CS50 IDE vai jebkurā Linux
operētājsistēmas komandrindā.
Labi.
Nākamā, kas varētu noderēt, ir mkdir, kas ir saīsinājums angļu frāzei
make a directory - izveidot direktoriju, ja man ir jāizveido jauna
mape.
Ja pārzināt GLS operētājsistēmu, varat ar peles labo pogu
noklikšķināt.
Un pēc tam, kad parādās konteksta izvēlne, izvēlieties New Folder.
Iespējams, tā jūs to esat darījis iepriekš.
Bet mēs varam arī izveidot direktorijas komandrindā.
Tātad mēs esam atpakaļ IDE.
Es pietuvināšu termināli un vēlreiz uzskaitīšu savas direktorijas
saturu, lai sniegtu mums atskaites sistēmu.
Pieņemsim, ka tagad esmu pabeidzis darbu pie 0. problēmu kopas un
1. problēmu kopas.
Tāpēc es vēlos izveidot jaunu direktoriju, lai strādātu ar 2.
problēmu kopu.
Kā lai es to izdaru?
Atkal es varētu ar peles labo pogu noklikšķināt tur kreisajā pusē un
izvēlēties New Folder un izveidot pset2 direktoriju.
Tas arī strādātu..
Bet tad es to arī diezgan ātri izdaru komandrindā, ierakstot mkdir,
atstarpe-- ierakstīju n, bet-- atstarpe pset2.
Ja es nospiežu Enter un pēc tam vēlreiz uzskaitu savas direktorijas
saturu, es redzu, ka tagad man ir mape pset2.
Un es varu tajā iekļūt, izmantojot cd, un veikt visu nepieciešamo
darbu, kas man jādara pset2.
Starp citu, es vienkārši ātri pāriešu šeit uz datņuu koku.
Un jūs varat redzēt, ka arī grafiskajā datņuu pārlūkā mēs varam
redzēt, ka tur arī ir izveidota pset2 direktorija.
Un es varu tajā nonākt, arī izmantojot GLS.
Nākamajā reizē, un tas, iespējams, noderēs, ir cp, kas ir saīsinājums
angļu terminam copy - kopēt.
Kopēšanai, atšķirībā no visām citām iepriekš redzētajām komandām, ir
nepieciešami divi argumenti: avots, datnes nosaukums, kuru vēlaties
kopēt, un galamērķis, uz kuru vēlaties kopēt datni.
Datni kopēt ir diezgan vienkārši, tāpēc darīsim to.
Tātad mēs esam atpakaļ IDE.
Es uzskaitīšu savas pašreizējās direktorijas saturu ar ls.
Tagad pieņemsim, ka es vēlos izveidot datnes hello.txt kopiju.
Atkal, no datnes koka kreisajā pusē, grafiskā saskarne, es varētu ar
peles labo pogu noklikšķināt uz hello.txt, izveidot kopiju, ielīmēt
kopiju.
Bet es to varu izdarīt diezgan ātri arī komandrindā.
Pieņemsim, ka es vēlos kopēt hello.txt uz hi.txt.
Es varu cp, atstarpe, hello.txt.
Tā ir mana avota datne, tāpēc es vispirms izvēlēšos to.
Un tad man ir jānosauc galamērķa datne hi.txt.
Nospiedu Enter.
Un, ja es vēlreiz uzskaitīšu savas direktorijas saturu, tur ir hi.txt.
Es izveidoju tā kopiju.
Un patiesībā, ja es atvērtu hi.txt, es varētu redzēt, ka tas būtu
precīzs dublikāts visam, kas pastāvēja manā hello.txt datnē.
Tātad tā jūs kopējat datni.
Bet ko darīt, ja vēlaties kopēt visu direktoriju?
Tāpēc uz brīdi apskatīsim, kas atrodas manā pset0 direktorijā.
Ja es ievadu cd pset0 un uzskaitu saturu, man ir direktorija ar
nosaukumu, paraugs un brīžatmiņas datne scratch.sb2.
Ir labi to zināt.
Tātad, notīrīsim ekrānu, un es uz brīdi atgriezīšos savā darbvietas
direktorijā.
Pieņemsim, ka tagad es vēlos izveidot savas pset0 direktorijas kopiju.
Es nevaru vienkārši pateikt, piemēram, cp pset0 pset3.
Jūs saņemat šo dīvaino ziņojumu, izlaižot direktoriju pset0.
Kāpēc jūs saņemat šo ziņojumu?
Izrādās, ka, ja jums ir direktorija, kurā ir citas lietas, cp komanda
ne vienmēr zina, ko ar tām darīt.
Mums ir skaidri jāpasaka Linux, terminālim, es vēlos, lai nokopē
pset0 direktoriju un nokopē visas mapes, kas atrodas tajā, un katru
tajā esošo datni.
Citiem vārdiem sakot, man ir nepieciešams, rekursīvi iziet cauri
pset0 un izveidot visa tur esošā kopija.
Ja es vēlos tā darīt, es varu ievadīt cp-r, r apzīmē angļu terminu
recursive - rekursīvs, pset0 pset3.
Tagad, ja es uzskaitu savas direktorijas saturu, es redzu, ka tur ir
pset3 direktorija, ar kuru varu strādāt.
Un, ja es tagad cd uz pset3 un pēc tam uzskaitu saturu, paskatieties,
tur ir paraugs un atkal scratch.sb2.
Tas ir diezgan forši.
Tātad tā jūs varat kopēt visu direktoriju, nevis tikai vienu datni.
Tātad, ja vēlaties kopēt direktoriju, vienkārši atcerieties izmantot
karodziņu -r, kad strādājat ar komandu cp.
Tātad es esmu nokopējis datni, bet es to izdarīju kļūdas dēļ.
Un tagad es gribu no tās atbrīvoties.
Atkal, ja esat iepazinies ar GLS saskarni, varat ar peles labo pogu
noklikšķināt un vienkārši izvēlēties Delete - Dzēst.
Un tas tiks nosūtīts uz miskasti vai atkritni.
Bet komandrindā mēs varam vienkārši ierakstīt rm, kas apzīmē angļu
vārdu remove - dzēst, un pēc tam datnes nosaukumu, no kuras vēlamies
atbrīvoties.
Tagad rm ir ļoti uzmanīgs.
Tas veic daudz dubultpārbaudes, lai pārliecinātos, vai tiešām
vēlaties dzēst datni.
Tā nevēlas kļūdīties, jo šeit nav atkritnes.
Kad mēs izdzēšam datni, tas vairs neeksistē..
Un tiešām nav iespējas to atgūt.
Tāpēc mums jābūt diezgan uzmanīgiem, un tāpēc rm būs patiešām
uzmanīgs mūsu vietā.
Tāpēc atgriezīsimies pie IDE un atbrīvosimies no hi.txt datnes, ko
izveidoju pirms brīža izmantojot kopēšanas komandu.
Tātad mēs esam IDE.
Un es vēlreiz uzskaitu savas direktorijas saturu, lai sniegtu mums
kādu kontekstu.
Es domāju, jūs varat redzēt, ka tur ir hi.txt, kuru es izveidoju
pirms neilga laika.
Tagad es gribu no tā atbrīvoties.
Kā to izdarīt?
Atkal tikai rm.
Tātad es varu ierakstīt rm hi.txt un nospiest Enter.
Un rm ir ļoti uzmanīgs mūsu vietā un pārliecinās, ka mēs patiešām
vēlamies dzēst šo datni.
Vai tiešām vēlaties noņemt parasto tukšo datni hi.txt?
Tas ir gluži kā operētājsistēmā, piemēram, Windows vai Mac, kurās,
iespējams, esat pazīstatami ar uznirstošo lodziņu, kurā teikts, vai
tiešām vēlaties to darīt.
Esmu diezgan pārliecināts, ka vēlos to, tāpēc es rakstīšu, jā–- vai
arī es varētu vienkārši ierakstīt y–- un nospiestt ievadtaustiņu.
Un, ja es vēlreiz uzskaitīšu savas direktorijas saturu, datnes hi.txt
vairs nebūs.
Nav slikti, vai ne?
Nospiedīsim vadības taustiņu L, lai atbrīvotos no visa šī satura un
atgrieztos ekrāna augšdaļā.
Tātad pastāv veids, kā apiet rm, lai tas mums neuzdotu šo jautājumu.
Mēs patiešām zinām, ka vēlamies atbrīvoties no šīs datnes, un mēs pat
nevēlamies, lai mums uzdotu šo jautājumu.
Kā mēs to darām?
Mēs varam norādīt papildu karogu, tāpat kā mēs to darījām ar cp, kur
mēs varējām pievienot karogu -r, lai rekursīvi kopētu direktorijā.
Ir vēl viens rm karogs, kas ir -f, kas ir piespiest rm darīt tieši
to, ko mēs tam liekam.
Pieņemsim, ka tagad es vēlos atbrīvoties no savas hello.txt datnes.
Es arī tādu negribu.
Ko es varu darīt?
Nu, es varu rm -f hello.txt.
Kā jūs domājat, kas šeit notiks?
Tā te vairs nav.
Pat neuzdeva man jautājumu.
Un patiesībā, ja es vēlreiz uzskaitīšu savas direktorijas saturu, tā
vairs nav.
Šeit nevar atsaukt.
hello.txt vairs nav, un man pat nepajautāja, vai vēlos to dzēst.
Ko darīt, ja es vēlos atbrīvoties no visas direktorijas?
Veids, kā jūs to darāt, ir ļoti līdzīgs kopēšanai.
Ja vēlaties dzēst direktoriju, ne tikai vēlaties dzēst direktoriju,
bet arī visu, kas atrodas tajā.
Un tāpēc jūs izmantojat -r, lai rekursīvi dzēstu direktoriju.
Tātad pieņemsim rm -r pset2.
Es faktiski nestrādāju ar pset2, tāpēc varu atbrīvoties no šīs
direktorijas.
Vai es vēlos dzēst direktoriju, pset2?
Jā.
Un, ja es vēlreiz uzskaitīšu savas direktorijas saturu, tā vairs nav.
Labi?
Vēl viena variācija par šo tēmu.
Tāpēc es vēlreiz notīrīšu ekrānu, lai viss būtu augšpusē.
Izpildu ls.
Tagad es vēlos atbrīvoties no savas pset3 direktorijas, un es
patiešām zinu, ka vēlos atbrīvoties no savas pset3 direktorijas.
Es varu rekursīvi un piespiedu kārtā dzēst savu pset3 direktoriju.
Tagad jūs būsiet ļoti uzmanīgi, izmantojot rm -rf.
Programmējot vairāk, jūs to darīsit ļoti ātri.
Un patiesībā es to daru visu laiku.
Bet tas var izraisīt dažas postošas sekas, ja nejauši izdzēsīsit
nepareizo lietu.
Tāpēc es vēlos, lai jūs zināt, ka šī ir jums pieejama iespēja, taču
izmantojiet to apdomīgi un piesardzīgi.
Es tiešām zinu, ka vairs nestrādāšu pie 3. problēmu kopas, tāpēc es
atbrīvošos no visāmm šīm datnēm.
Un es zinu, ka es nevēlos, lai katru reizi man jautātu, vai vēlos
izdzēst datni, tāpēc es izmantošu rm -rf pset3.
Man pat nepajautāja, vai es gribu no tās atbrīvoties.
Es izpildu ls.
pset3 vairs nav.
Tātad tās ir visas variācijas, kuras varat izmantot, lai atbrīvotos
no datnēm ar rm.
Pēdējā komandrindas komanda, kas jums būs diezgan noderīga, ir mv,
kas ir saīsinājums no angļu vārda move - pārvietot.
Move būtībā ir līdzvērtīgs Rename - pārdēvēšanai.
Tas pārvieto datni no vienas vietas uz citu, no avota uz galamērķi.
Apskatīsim, kur termināļa logā var noderēt pārvietošana.
Tātad esmu savā pset1 direktorijā un pamanīju, ka kaut kas ir nogājis
greizi.
Es strādāju pie problēmas ar nosaukumu greedy, bet nejauši to nosaucu
par greddy.
Tātad, kad es mēģinu to palaist caur check50, tas īsti nedarbojas.
Man ir pāris varianti.
Mēs varētu darīt to, ko esam darījuši iepriekš, proti, izveidot
datnes kopiju.
Es varētu pārkopēt greddy.c kā greedy.c, vai ne?
Es redzu, ka tur ir abas datnes.
Un tad es varētu izpildīt rm, lai dzēstu, greddy.c.
Tas no tā atbrīvojas.
Tātad tas darbosies pēc tam, kad es apstiprināšu, ka vēlos no tā
atbrīvoties.
Un es faktiski esmu pārdēvējis greddy.c par greedy.c.
Es to nokopēju un pēc tam izdzēsu oriģinālu.
Bet tas ir daudzpakāpju process.
Un, protams, ir labāks veids.
Patiešām ir.
Nospiedīsim Control L, lai to atjaunotu, un vēlreiz uzskaitīsim manas
direktorijas saturu.
Tātad, pieņemsim, ak, es kļūdījos.
Es tiešām gribēju saukt šo datni par greddy.c.
Vienā rāvienā varu ierakstīt move greedy.c uz greddy.c.
Un tagad man tas nebija jākopē un jādzēš, es vienkārši varēju to
pārdēvēt.
Viss vienā solī.
Tātad ir daudz citu pamata komandrindas funkciju, kuras varat
izmantot ar Linux komandrindu.
Un mēs daudzas no tām apspriedīsim vēlāk CS50.
Taču pagaidām, strādājot ar šo termināļa vidi, ar šīm piecām komandām
vajadzētu būt pietiekami, lai pārvietotos un strādātu ar datnēm savā
IDE vai jebkurā uz Linux balstītajā operētājsistēmā, kuru izmantojat.
Ja jūs interesē un vēlaties nedaudz paskatīties dažas komandrindas
komandas, kuras mēs izmantosim nākotnē, šeit ir saraksts ar dažām
biežāk lietotajām komandām.
Es esmu Dags Loids.
Šis ir CS50.