[Musik spiller] 

DOUG LLOYD: OK. Så lad os tale om, hvordan man bruge Linux kommandolinjen. Nu CS50 IDE eller i Faktisk, selv en CS50 apparat, Hvis du er fortrolig med det, eller du tager en ældre version af CS50, er en cloud-baseret maskine som kører Ubuntu, som er en af ​​de mange varianter af Linux-styresystemet. Linux operativsystem er begunstiget af programmører, fordi det er bare køligere, ikke? 

Mange moderne Linux-distributioner have grafiske brugergrænseflader, som vi også kalder GUIs, G-U-I, til gøre det let mus-navigation, som du er sikkert bekendt med, hvis du er en Windows eller Mac-bruger, flytte rundt med musen, dobbeltklikke på ikoner, og så videre. Stadig dog, som en programmør, og selvom IDE indeholder evnen til at gøre nogle grafiske bruger ting, klikke, og trække, og alt det, vil du stadig skal bruge din terminalvindue temmelig ofte. Og du kan gøre mange af de samme opgaver, som du kan gøre med en mus med tastaturkommandoer. Og vi kommer til at snakke lidt om, hvad nogle af disse kommandoer er lige nu. 

Nu kan bruges disse kommandoer på enhver Unix-baseret operativsystem system, som omfatter Linux, men omfatter også Mac OS. Hvis du åbner op Terminal på din Mac, du kan bruge disse nøjagtige kommandoer. Windows har også Kommando Hurtig, men nogle af kommandoerne er lidt anderledes, så det gør faktisk ikke virker, fordi Windows er ikke en Unix-baseret system. 

Så lad os tage et kig på nogle af disse Linux kommandoer. Den første, som du vil sandsynligvis bruge en hel del er ls. Det er et lille l, efterfulgt af en små bogstaver s, som er en forkortelse for listen. Og hvad kommandoen listen gør, er det giver dig en udlæsning af alle de filer og mapper i din nuværende mappe. Så du kan se alt du kan komme til fra hvor du i øjeblikket er. 

Så jeg har åbnet op her CS50 IDE. Og jeg har tænkt mig at zoome ind i et sekund for at give dig et nærmere kig, men her er den brede billede af, hvad IDE ser ud. Til venstre kan du se, vi har en fil træ, som du sandsynligvis bekendt med, dobbeltklik, og filer og mapper og alt det der. Så det er der stadig i CS50 apparatet. I centrum i toppen er, hvor du er kommer til at skrive din kode, når du klikker på en fil. Og forneden, vi har et terminalvindue, der hvor vi kan udføre disse terminal kommandoer. 

Jeg har tænkt mig at zoome ind og hovedet over her, bare til at vise dig, at i virkeligheden, kan jeg klikke på disse filer og mapper. Så tydeligt, hvor jeg i øjeblikket er, jeg har to mapper, kaldet pset0 og pset1, og tre filer, der hedder hej, en kaldet hello.c, og en kaldet hej.txt. 

Så lad os gå ned til terminalen vindue og få et nærmere kig. Så vi netop talt, igen, om faktum, at vi har tre filer og to mapper i den aktuelle mappe. Hvis jeg skriver ls, hvilket igen er kommandoen til listen indholdet af den aktuelle mappe, og så jeg ramte Enter, se, hvad jeg ser, hej, hello.c, hej.txt, pset0 og pset1. 

pset0 og pset1 er farvet blå, for at indikere for dig, at de er biblioteker at vi kunne navigere ind. Og vi vil lære lidt lidt om, hvordan du navigerer i mapper i et minut. Og hver anden ting er farvet sort, hvis det er en tekstfil eller en kildekode fil, og grøn, hvis det er en eksekverbar fil. Så klart, det betyder, at jeg kunne køre et program kaldet, hej. Det er, hvad den grønne en der betyder. Men dybest set, at skrive ls kommandoen har tilladt mig til at se på alt, der eksisterer i min nuværende mappe, som matcher det, vi ser her, i grafisk visning af det samme. Den næste kommando, du vil sandsynligvis bruge ganske lidt er cd, små bogstaver C, små bogstaver d, som er en forkortelse for forandring mappe. Dette giver os mulighed for at gøre, hvad jeg var taler om en anden siden, som er at navigere mellem mapper på kommando line, i modsætning til dobbeltklikke på mapper. Så hvis vi skriver cd og derefter navnet på en mappe, vi kan komme ind i denne mappe. 

Som en sidebemærkning, at navnet af den aktuelle mappe er altid prik, og navnet på den mappe ét niveau over hvor vi er nu, der er navnet på den mappe, som vores mappe, prik, dot-- eller hvor vores mappe, er dot, prik. Og hvis du nogensinde nysgerrig navnet på din mappe, du kan skrive pwd, som står om aktuel arbejdsmappe. Vi vil tage et kig på alle disse nu, ved på vej tilbage til CS50 IDE. Så jeg er tilbage i min arbejdsplads nu. Og jeg vil zoome ind igen på terminal, så vi kan tage et kig ved at bevæge sig rundt i IDE. Så jeg har tænkt mig at nævne det indholdet af min mappe igen, bare for at efterslibes os i, hvor vi er. Så hvis jeg skriver ls, som er for listen igen, Jeg kan se, at jeg kan komme til pset0 og pset1. Det er de mapper Jeg kan komme til herfra. Jeg ved det, fordi IDE giver mig et fingerpeg ved at farve dem blå. 

Lad os sige, at jeg ønsker at komme ind i mit pset1 mappe, fordi jeg arbejder på problemet set 1. Jeg kan skrive cd-- igen, kort for ændre directory-- plads, pset1. Og hvis jeg ramte Enter, mærke, hvad der sker. Det ser ikke ud som en masse, der er sket. Men hvis man ser på den hurtige, det nu fortæller mig, at jeg er i ~ / arbejdsområde / pset1. Jeg har navigeret ind i pset1 mappe, der var inden for mit arbejdsområde. 

Og hvis jeg skriver ls, ser jeg nogle forskellige ting her, ikke? Dette er ikke det samme liste, som jeg så før. Jeg har navigeret ind pset1. Og så nu, når jeg skriver ls, jeg er få forbindelse med hvad kan jeg se fra inden for pset1 mappe. 

Nu, jeg har tænkt mig at skrive kontrol l, som netop rydder skærmen. Og jeg har tænkt mig at opføre indholdet af mappen igen, bare så du kan se. Jeg ville bare gøre det til rydde nogle af de ting at du har set dernede og for at forhindre dette fra at gå for langt ned uden for rækkevidde. 

Nu, jeg sagde tidligere, at, hvis jeg vil for at navigere til det aktuelle bibliotek, Jeg kan skrive cd plads prik. Hit Enter. Det gør ikke noget, vel? Jeg ændre mapper til den aktuelle mappe. Du er ikke altid vil finde et behov for et enkelt punkt, men du vil lejlighedsvis. 

Lad os sige, at jeg vil have at gå et niveau op. Jeg ønsker at komme tilbage til min arbejdsplads mappe. Jeg kan ikke indtaste cd arbejdsområde, der er ingen sådan fil eller mappe. Og grunden til at-- hvis jeg skriver ls endnu time-- er, at der ikke er nogen mappe kaldet arbejdsområde inde i min pset1 mappe. Jeg har tænkt mig at rydde min skærmen igen med kontrol l. Husk, hvad jeg sagde tidligere, selv om, at vi kan navigere tilbage med prik, prik. Det er navnet på den overordnede mappe. Så hvis jeg skriver cd, rum, punktum, prik, og derefter trykke Enter, nu se på, hvad der skete. Min kommandoprompt fortæller mig, at jeg er tilbage i min ~ / arbejdsområde mappe. Jeg flyttede et niveau op, takket til prik, prik. 

Lad os nu sige, at jeg bruger en operativsystem, der er Linux-baseret, men ikke nødvendigvis fortælle mig, hvor jeg er. Denne ene sker for at fortælle os, at Jeg er i ~ / arbejdsområde lige nu, lige ved prompten. Men jeg kunne være helt tabt i et rod af mapper, og jeg har ingen idé om, hvor jeg er, og ingen idé om, hvor jeg ønsker at komme tilbage til. Der er to ting, jeg kan gøre. 

Først og fremmest kan jeg regne ud af, hvor jeg er, ved at skrive pwd. Det er min nuværende arbejdsmappe. Og hvis jeg ramte Enter, det fortæller mig præcis, hvor jeg er. Nu / home / Ubuntu er den lang måde at sige, tilde, hvilket er din hjemmemappe. Men det fortæller mig, at jeg er i hjem / ubuntu / arbejdsområde, eller ~ / arbejdsområde. 

Jeg har tænkt mig at navigere til min pset1 mappe igen, og jeg har tænkt mig at liste indholdet. Og jeg kan se, at jeg har en anden mappe der, kaldet ekstramateriale. Så jeg har tænkt mig at cd til statister, og så jeg har tænkt mig at rydde min skærm. 

Så nu er jeg temmelig langt i, ikke? Hvad hvis jeg ønsker at sikkerhedskopiere at arbejdsområde det samme? Der er et par ting, jeg kunne gøre. Jeg kunne skrive cd, prik, prik, skråstreg, prik, dot, at gå et niveau op og derefter et andet niveau. Men det er slags irriterende. 

Så hvis jeg nogensinde ønsker at komme tilbage til bare min hjemmemappe, tilde, Jeg kan skrive cd med ingenting efter det. Cd, Enter. Og nu er jeg i tilde. Og hvis jeg ønsker at komme til arbejdsområde, Jeg kan bare skrive cd arbejdsområde. Og det er, hvordan du arbejder skiftende mapper i CS50 IDE eller Linux operativsystem på kommandolinjen. Okay. Det næste, der måske komme i handy er mkdir, som er en forkortelse for lave en mappe, hvis jeg har brug for at oprette en ny mappe. Hvis du er fortrolig med GUI operativsystemet, du måske højreklikke. Og så, når genvejsmenuen popper op, skal du vælge Ny mappe. Det er sandsynligvis hvordan du har gjort det før. Men vi kan også oprette mapper på kommandolinjen. Så vi er tilbage i IDE. Jeg vil zoome ind på terminalen og vise indholdet af min mappe igen, bare for at give os en referenceramme. Lad os sige, at nu, jeg har færdig med at arbejde på problemet sæt 0 og problemet set 1. Så jeg ønsker at oprette en ny mappe at arbejde på til problemet sæt 2. Hvordan gør jeg det? 

Nå, igen, kunne jeg højreklikke på venstre side er der, og vælg Ny mappe og oprette en pset2 mappe. Det ville arbejde for. Men så gør jeg det også på kommandolinjen temmelig hurtigt, ved at skrive mkdir, space-- jeg skrevet i n, men-- plads pset2. Hvis jeg ramte Enter og derefter jeg liste de indholdet af min mappe igen, Jeg kan se, at, se, nu Jeg har en pset2 mappe. Og jeg kan navigere ind at bruge cd og gøre alt det arbejde, jeg har brug for at gøre for pset2. I øvrigt vil jeg bare pop over her virkelig hurtigt til filen træet. Og du kan se, at også i den grafiske Stifinder, Vi kan se, at pset2 biblioteket Der er også skabt der. Og jeg kan navigere til det, ved hjælp af GUI samt. Næste gang, og det er sandsynligvis vil komme i handy er cp, som er en forkortelse for kopi. Kopier, i modsætning til alle de andre kommandoer, vi har set før, tager to argumenter, en kilde, den navn på den fil, du vil kopiere, og en destination, hvor du ønsker at kopiere filen til. Det er ret nemt at kopiere en fil, så lad os gøre det. 

Så vi er tilbage i IDE. Jeg har tænkt mig at liste indholdet af min nuværende mappe med ls. Lad os nu sige, at jeg vil have at lave en kopi af hej.txt. Igen, fra filen træ på venstre, den grafiske brugerflade, Jeg kunne højreklikke på hej.txt, lave en kopi, indsætte kopien. Men jeg kan gøre det temmelig hurtigt på kommandolinjen også. 

Lad os sige, at jeg ønsker at kopiere hej.txt at hi.txt. Jeg kan CP plads, hej.txt. Det er min kildefil, så det er derfor Jeg har tænkt mig at vælge, at man først. Og så er jeg nødt til at nævne den destination fil, hi.txt. Jeg ramte Enter. Og hvis jeg vise indholdet af min mappe igen, har der hi.txt. Jeg lavede en kopi af den. Og i virkeligheden, hvis jeg gik ind hi.txt, kunne jeg se, at det ville være en nøjagtig duplikere af alt det, eksisterede i min hej.txt fil. 

Så det er hvordan du kopierer en fil. Men hvad nu hvis du ønsker at kopiere en hel mappe? Så for en anden, lad os tage et kig på hvad der er i min pset0 mappe. Hvis jeg cd pset0 og en liste over indholdet, Jeg har en mappe kaldet, prøve, og en ridse-fil, scratch.sb2. Så det er godt at vide. Så lad os rydde skærmen, og jeg har tænkt mig at gå tilbage til min arbejdsplads mappe til en anden. 

Lad os sige, at nu vil jeg lave en kopi af min pset0 mappe. Jeg kan ikke bare sige cp pset0 pset3, f.eks. Du får denne mærkelige budskab, udelade mappe pset0. Hvorfor får man den besked? Tja, det viser sig, at når har du en mappe, har andre ting inde i det, cp kommandoen ikke rigtig nødvendigvis ved, hvad de skal gøre med det. 

Vi er nødt til eksplicit fortælle Linux, terminalen, Jeg vil have dig til at kopiere pset0 mappe og kopi hver mappe, der eksisterer inde af det og hver fil, findes inde i den. Med andre ord, jeg har brug for dig til rekursivt dykke ned i pset0 og lave en kopi af alt derinde. 

Hvis jeg ønsker at gøre det, hvad jeg kan gøre er cp-r, for rekursive, pset0 pset3. Hit Enter. Nu, hvis jeg liste de indholdet af min mappe, Jeg ser der er den pset3 mappe, som jeg kan arbejde med. Og hvis jeg cd i pset3 nu og derefter en liste over indholdet, se, der er prøven og scratch.sb2 igen. Så det er ret cool. Så det er, hvordan du kan kopiere en hel bibliotek, og ikke bare en enkelt fil. Så hvis du ønsker at kopiere en mappe, bare husk at bruge -r flag, når du er arbejder med cp kommandoen. Okay. Så jeg har kopieret en fil, men Jeg har gjort det ved en fejltagelse. Og nu, jeg ønsker at slippe af med det. Hvordan gør jeg det? Igen, hvis du er fortrolig med en GUI interface, du kan højreklikke og bare vælge Slet. Og det vil sende det til skraldespanden eller papirkurven. Men på kommandolinjen, vi kan bare skrive rm, for fjerne, og derefter navnet på den fil vi ønsker at slippe af med. 

Nu rm er meget forsigtig. Det gør en masse dobbeltkontrol, at sikre, at du rent faktisk ønsker at slette filen. Det vil ikke gøre nogen fejl, fordi der er ingen papirkurven her. Når vi sletter en fil, er det gået. Og der er virkelig ingen måde at gendanne det. Så vi er nødt til at være temmelig omhyggelig, og så rm kommer til at være virkelig forsigtig for os. 

Så lad os gå tilbage til IDE og slippe af med denne hi.txt fil at jeg skabte et minut siden med kopi. Så vi er i IDE. Og jeg vise indholdet af min mappe igen, bare for at give os nogle sammenhæng. Jeg mener, kan du se, at der er hi.txt, som jeg skabte for lidt siden. Nu, jeg ønsker at slippe af med det. Hvordan gør jeg det? 

Igen, bare Rm. Så jeg kan skrive rm hi.txt og tryk på Enter. Og der er rm væsen virkelig passe for os og sikre, at vi faktisk ønsker at slette denne fil. Vil du virkelig ønsker at fjerne regelmæssig tom fil hi.txt? Det er ligesom et operativsystem systemet, som Windows eller Mac, at du kan være fortrolig med dukker op at boksen siger er du virkelig sikker på at du ønsker at gøre dette. 

Jeg er temmelig sikker på at jeg vil det, så jeg har tænkt mig at skrive, yes-- eller jeg kunne også bare skriv y-- og tryk på Enter. Og hvis jeg vise indholdet af min mappe igen, hi.txt væk. Ikke dårligt, ikke sandt? Lad os presse Kontrol L, bare at slippe af med alle disse ting og få os tilbage på toppen af ​​skærmen. 

Nu er der en måde at kortslutning rm, så at det ikke spørge os det spørgsmål. Vi har virkelig ved, at vi ønsker at slippe af med den pågældende fil, og vi ønsker ikke engang at blive spurgt spørgsmålet. Hvordan gør vi det? Nå, kan vi angive en ekstra flag, ligesom vi gjorde med cp, hvor vi kunne tilføje -r flag, til rekursivt kopiere ind i en mappe. Der er et andet flag for rm, som er -F, som er at tvinge rm at gøre præcis hvad vi fortæller det at gøre. 

Så lad os sige, at nu vil jeg at slippe af med min hej.txt fil. Jeg vil ikke have, at man enten. Hvad kan jeg gøre? Tja, jeg kan rm -f hej.txt. Hvad tror du er kommer til at ske her? Det er gået. Ikke selv beder mig spørgsmålet. Og i virkeligheden, hvis jeg liste indholdet af min mappe igen, er det gået. Der er ingen fortryd her. hej.txt er væk, og jeg var ikke spurgte selv hvis jeg ønskede at slette den. Hvad hvis jeg ønsker at slippe af en hel mappe? Den måde du gør det er meget lig kopiere. Hvis du vil slette en mappe, du ikke bare ønsker at slette den mappe, du ønsker at slette alt inde i den. Og så du bruger-r, til rekursivt slette en mappe. 

Så lad os rm -r pset2. Jeg er faktisk ikke arbejder på pset2, så jeg kan slippe af denne mappe. Jeg ramte Enter. Skal jeg vil fjerne den mappe, pset2? Ja jeg gør. Og hvis jeg vise indholdet af min mappe igen, er det gået. Okay? 

Endnu variation af dette tema. Så jeg vil rydde skærmen igen, at sætte alt på toppen. Hit ls. Nu, jeg ønsker at slippe af min pset3 mappe, og jeg virkelig ved, at jeg ønsker at slippe af med min pset3 mappe. Jeg kan rekursivt og magt fjerne min pset3 mappe. 

Nu, du kommer til at være virkelig forsigtig, når du bruger rm -rf. Som du programmere mere, vil det være noget du bare gør virkelig hurtigt. Og i virkeligheden, jeg gør det hele tiden. Men det kan føre til en vis katastrofale følger, Hvis du ved et uheld slette de forkerte ting. Så jeg vil have dig til at være opmærksom på, at dette er en mulighed til rådighed for dig, men bruger det sparsomt, og bruge det med forsigtighed. 

Jeg kender til en kendsgerning jeg ikke arbejder på mit problem sæt 3 længere, så jeg er kommer til at slippe af med alle disse filer. Og jeg ved, jeg ønsker ikke at blive spurgt hver eneste gang, hvis jeg ønsker at slette en fil, så jeg har tænkt mig at rm -rf pset3. Ikke selv spørge mig, om jeg ønskede at slippe af med det. Jeg ramte ls. pset3 er væk. Så det er alle de variationer, som du kan bruge til at slippe af filer med rm. 

Den sidste kommandolinje kommando, der er gå til temmelig nyttigt for dig er mv, som er en forkortelse for træk. Flyt er dybest set svarer til at omdøbe. Den bevæger en fil fra et sted til et en anden, kilden til destinationen. Lad os se, hvor brug af et træk måske være praktisk ved terminalen vinduet. 

Så jeg er i min pset1 bibliotek, og jeg har bemærket noget er gået lidt galt. Jeg arbejdede på min grådige problem, men jeg ved et uheld kaldte det GReddy. Så når jeg prøver og køre det igennem check50, betyder det ikke rigtig fungere. Jeg har et par muligheder. Vi kunne gøre, hvad vi har gjort før, som er at lave en kopi af filen. Jeg kunne kopiere greddy.c at greedy.c, ikke? Hit Enter. Jeg kan se, at begge filer er der. Og så kunne jeg RM, at fjerne, greddy.c. Det slipper af det. Så det ville arbejde, efter jeg bekræfte at jeg ønsker at slippe af med det. Og jeg faktisk har omdøbt greddy.c at greedy.c. Jeg kopierede det, og derefter fjernet originalen. 

Men det er en multi-trins proces. Og helt sikkert, der er en bedre måde. I virkeligheden er der. Så lad os ramte Kontrol L, bare at bringe denne op igen, og en liste over indholdet af min mappe igen. 

Så lad os sige, åh, jeg har lavet en fejl. Jeg faktisk virkelig ønskede at kalde filen greddy.c. Med ét slag, kan jeg skrive flytte greedy.c at greddy.c. Hit Enter. Og nu, har jeg ikke at kopiere og fjerne det, Jeg var bare i stand til at omdøbe den. One-stop-shopping. 

Nu er der en masse andre grundlæggende kommandolinje hjælpeprogrammer som du kan bruge med Linux kommandolinjen. Og vi vil diskutere en masse af dem i fremtiden i CS50. Men for nu, bare at få dine fødder våd med at arbejde med denne terminal miljø, disse fem kommandoer bør få dig temmelig langt navigere rundt og arbejde med filer i din IDE eller uanset Linux-baseret operativsystem, du bruger. 

Hvis du er nysgerrig og du ønsker at se fremad lidt på nogle af kommandolinje-kommandoer vi skal bruge i fremtiden, her er en liste over et par af de mere almindelige. Jeg er Doug Lloyd. Det er CS50.