[MUSIC SPILLE] DOUG LLOYD: OK. Så la oss snakke om hvordan du bruk Linux kommandolinjen. Nå, CS50 IDE, eller i Faktisk, selv en CS50 apparatet, hvis du er kjent med det, eller du tar en eldre versjon av CS50, er en sky-basert maskin som går Ubuntu, som er en av de mange varianter av operativsystemet Linux. Linux operativsystem er favorisert av programmerere, fordi det er bare kulere, ikke sant? Mange moderne Linux-distribusjoner har grafiske brukergrensesnitt, som vi også kaller GUI, G-U-I, til tillate enkel mus-basert navigasjon, som du er sikkert kjent med, hvis du er en Windows- eller Mac-bruker, flytte rundt på musen, dobbeltklikke på ikoner, og så videre. Likevel skjønt, som programmerer, og selv om IDE inneholder evnen til å gjøre noen grafiske bruker ting, klikke og dra, og alt det der, du vil fortsatt være å bruke terminalvinduet ganske ofte. Og du kan gjøre mange av de samme oppgavene som du kan gjøre med en mus med tastaturkommandoer. Og vi kommer til å snakke litt om hva noen av disse kommandoene er akkurat nå. Nå kan disse kommandoene brukes på en Unix-basert operativsystem Dette systemet omfatter en Linux, men omfatter også Mac OS. Hvis du åpner opp Terminal på Mac, du kan bruke disse eksakte kommandoer. Windows har også Command Spør, men noen av kommandoene er litt forskjellige, så det faktisk ikke fungerer, fordi Windows er ikke et Unix-basert system. Så la oss ta en titt på noen av disse linux kommandoer. Den første som du vil sannsynligvis bruke ganske mye er ls. Det er en liten bokstav l, etterfulgt av en små bokstaver s, som er en forkortelse for listen. Og hva listen kommandoen gjør er det gir deg en avlesning av alle filer og mapper i gjeldende mappe. Så du kan se alt du kan komme til fra der du er nå. Så jeg har åpnet opp her CS50 IDE. Og jeg kommer til å zoome inn på en andre for å gi deg en nærmere titt, men her er bredt bilde av hva IDE ser ut. Til venstre kan du se at vi har en fil treet, som du antakelig kjent med, dobbeltklikke, og filer og mapper og alt det der. Så det er der fortsatt i CS50 apparatet. I sentrum i toppen er der du er skal skrive koden din, en gang du klikker på en fil. Og i bunnen, vi har et terminalvindu, som er der vi kan utføre disse terminal kommandoer. Jeg kommer til å zoome inn og hodet over her, bare å vise deg at, faktisk, kan jeg klikk på følgende filer og mapper. Så klart, der jeg er i dag, har jeg to mapper, kalt pset0 og pset1, og tre filer, en som heter hallo, en som heter hello.c, og en som heter hello.txt. Så la oss gå ned til terminalen vindu og få en nærmere titt. Så vi bare snakket, igjen, om At vi har tre filer og to mapper i gjeldende mappe. Hvis jeg skriver ls, som igjen er kommandoen for å liste innholdet av den aktuelle katalog, og da jeg traff Enter, ser det jeg ser, hallo, hello.c, hello.txt, pset0 og pset1. pset0 og pset1 er farget blå, for å indikere til deg at de er kataloger at vi kunne navigere i. Og vi vil lære litt litt om hvordan du navigerer i kataloger i et minutt. Og alle andre ting er farget svart, hvis det er en tekstfil eller en kildekode fil, og grønt, hvis det er en kjørbar fil. Så klart, det betyr at jeg kunne kjøre et program som heter, hallo. Det er det den grønne det betyr. Men i utgangspunktet, å skrive ls kommandoen har tillatt meg til å se på alt som eksisterer i min nåværende katalogen, som samsvarer med det vi ser her, i grafisk visning av det samme. Neste kommando du vil sannsynligvis bruke ganske mye er cd, små bokstaver c, små bokstaver d, som er en forkortelse for change directory. Dette gir oss muligheten til å gjøre det jeg var snakker om en andre siden, som er å navigere mellom kataloger på kommando linje, i motsetning til dobbeltklikke på mapper. Så hvis vi skriver cd og deretter navnet på en katalog, vi kan komme inn i den katalogen. Som en side, vet at navnet av gjeldende katalog er alltid prikk, og navnet på katalogen ett nivå over der vi er nå, som er navnet på mappen som vår mappe er, prikk, dot-- eller hvor vår mappe er, er prikk, prikk. Og hvis du noen gang nysgjerrig på navnet på katalogen, du kan skrive pwd, som står for nåværende arbeidskatalog. Vi vil ta en titt på alle disse nå, ved å gå tilbake til CS50 IDE. Så jeg er tilbake i min arbeidsplass nå. Og jeg skal zoome inn igjen på terminal, slik at vi kan ta en titt ved å bevege seg rundt i IDE. Så jeg kommer til å liste Innholdet i min katalog igjen, bare for å slipes oss i der vi er. Så hvis jeg skriver ls, som er for listen igjen, Jeg ser at jeg kan få til pset0 og pset1. De er de kataloger Jeg kan komme til herfra. Jeg vet det, fordi IDE gir meg et hint ved å fargelegge dem blå. La oss si at jeg ønsker å komme inn på min pset1 katalog, fordi jeg jobber med oppgavesettet en. Jeg kan skrive cd-- igjen, kort for endre directory-- plass, pset1. Og hvis jeg trykker Enter, legge merke til hva som skjer. Det ser ikke ut som mye har skjedd. Men hvis du ser på teksten, det nå forteller meg at jeg er i ~ / arbeidsplass / pset1. Jeg har navigert inn i pset1 mappen som var innenfor mitt arbeidsområde. Og hvis jeg skriver ls, ser jeg noen forskjellige ting her, ikke sant? Dette er ikke det samme liste som jeg har sett før. Jeg har navigert til pset1. Og så nå, når jeg skriver ls, jeg å få sammenheng med hva kan jeg se innenfra pset1 mappen. Nå kommer jeg til å skrive kontroll l, som går akkurat klar av skjermen. Og jeg kommer til å liste opp innholdet i katalogen igjen, bare så du kan se. Jeg ville bare gjøre det til tømme ut noen av tingene at du så ned nedenfor og for å hindre at denne fra å gå for langt ned utenfor rekkevidde. Nå, jeg sa tidligere at, hvis jeg vil ha for å navigere til gjeldende mappe, Jeg kan skrive cd plass prikk. Trykk Enter. Det gjør ikke noe, ikke sant? Jeg endrer kataloger til gjeldende katalog. Du er ikke alltid kommer til å finne et behov for et enkelt punkt, men du vil ved behov. La oss si at jeg vil ha å flytte opp ett nivå. Jeg ønsker å komme tilbake til min arbeidsplass katalogen. Jeg kan ikke skrive inn cd arbeidsområde, det er ingen slik fil eller katalog. Og grunnen til at-- hvis jeg skriver ls ene mer tid-- er at det er ingen katalog kalt arbeidsområdet innsiden av min pset1 katalogen. Jeg kommer til å fjerne min skjermen igjen med kontroll l. Husk hva jeg sa tidligere, men at vi kan navigere tilbake med prikk, prikk. Det er navnet på den overordnede katalogen. Så hvis jeg skriver cd, mellomrom, punktum, prikk, og trykk Enter, nå se på hva som skjedde. Min ledeteksten forteller meg at jeg er tilbake i min ~ / arbeidsområdet katalogen. Jeg flyttet opp ett nivå, takk til prikk, prikk. Nå, la oss si at jeg bruker en operativsystem som er Linux-baserte, men gjør ikke nødvendigvis fortell meg hvor jeg er. Dette skjer for å fortelle oss at Jeg er i ~ / arbeidsområde akkurat nå, rett ved ledeteksten. Men jeg kunne være helt tapt i et rot av mapper, og jeg har ingen anelse om hvor jeg er og ingen anelse om hvor jeg ønsker å komme tilbake til. Det er to ting som jeg kan gjøre. Først av alt, kan jeg regne ut hvor jeg er, ved å skrive pwd. Det er min nåværende arbeidskatalog. Og hvis jeg trykker Enter, det forteller meg akkurat der jeg er. Nå / home / ubuntu er lang måte å si, tilde, som er hjemmekatalogen. Men det forteller meg at jeg er i home / ubuntu / arbeidsområde, eller ~ / arbeidsområde. Jeg kommer til å navigere til min pset1 katalogen på nytt, og jeg kommer til å vise innholdet. Og jeg ser at jeg har en annen katalog der, kalles statister. Så jeg kommer til å cd inn statister, og så jeg kommer til å tømme skjermen min. Så nå er jeg ganske langt i, ikke sant? Hva om jeg ønsker å sikkerhets til arbeidsområdet umiddelbart? Det er et par ting jeg kunne gjøre. Jeg kunne skrive cd, prikk, prikk, skråstrek, punktum, prikk, for å gå opp ett nivå og deretter et annet nivå. Men det er litt irriterende. Så hvis jeg noen gang vil komme tilbake til bare min hjemmekatalog, tilde, Jeg kan skrive cd med ingenting etter det. Cd, Enter. Og nå er jeg i tilde. Og hvis jeg ønsker å få til arbeidsområdet, Jeg kan bare skrive cd arbeidsområde. Og det er hvordan du jobber skiftende kataloger innenfor CS50 IDE eller Linux operativsystemet på kommandolinjen. Greit. Den neste som kanskje komme godt er mkdir, som er en forkortelse for lage en katalog, hvis jeg trenger for å lage en ny mappe. Hvis du er kjent med GUI operativsystem, du kan høyreklikke. Og så, når kontekstmenyen dukker opp, velger du Ny mappe. Det er trolig hvordan du har gjort det før. Men vi kan også opprette kataloger på kommandolinjen. Så vi er tilbake i IDE. Jeg skal zoome inn på terminalen og vise innholdet i min katalog igjen, bare for å gi oss en referanseramme. La oss si at, nå, har jeg avsluttet arbeidet på oppgavesettet 0 og oppgavesettet en. Så jeg ønsker å opprette en ny katalog å jobbe på for oppgavesettet to. Hvordan gjør jeg det? Vel, igjen, kunne jeg høyreklikker på venstre side der og velg Ny mappe og skape en pset2 katalogen. Som ville fungere også. Men da jeg også gjøre det på kommandolinje ganske raskt, ved å skrive mkdir, space-- jeg skrevet i n, men-- plass pset2. Hvis jeg trykker på Enter og da jeg liste Innholdet i katalogen min igjen, Jeg ser det, ser nå Jeg har en pset2 mappe. Og jeg kan navigere inn at bruk av cd og gjøre alt arbeidet jeg må gjøre for pset2. Forresten, jeg vil bare pop over her veldig raskt til filen treet. Og du kan se det, også, i det grafiske File Explorer, Vi kan se at pset2 katalog har også blitt opprettet der. Og jeg kan navigere til det, ved hjelp av GUI i tillegg. Neste gang, og det er sannsynligvis kommer til å komme godt er cp, som er en forkortelse for kopi. Kopiere, i motsetning til alle de andre kommandoer vi har sett før, tar to argumenter, en kilde, den navnet på filen som du ønsker å kopiere, og et mål, der du ønsker å kopiere filen til. Det er ganske lett å kopiere en fil, så la oss gjøre det. Så vi er tilbake i IDE. Jeg kommer til å vise innholdet av min nåværende katalog med ls. Nå, la oss si at jeg vil ha å lage en kopi av hello.txt. Igjen, fra filen treet på igjen, det grafiske grensesnittet, Jeg kunne høyreklikke på hello.txt, lage en kopi, lime inn kopien. Men jeg kan gjøre det ganske raskt på kommandolinjen også. La oss si at jeg ønsker å kopiere hello.txt til hi.txt. Jeg kan cp, plass, hello.txt. Det er min kildefilen, så det er derfor Jeg kommer til å velge denne først. Og da trenger jeg å nevne den målfilen, hi.txt. Jeg trykker på Enter. Og hvis jeg vise innholdet i min katalogen igjen, er det hi.txt. Jeg laget en kopi av det. Og faktisk, hvis jeg gikk inn hi.txt, jeg kunne se at det ville være et eksakt duplikat av alt som eksisterte i min hello.txt fil. Så det er hvordan du kopierer en fil. Men hva hvis du ønsker å kopiere en hel katalog? Så for en andre, la oss ta en titt på hva som er i min pset0 katalogen. Hvis jeg cd pset0 og vise innholdet, Jeg har en katalog som heter, prøve, og en ripe fil, scratch.sb2. Så det er godt å vite. Så la oss tømme displayet, og jeg kommer til å gå tilbake til min arbeidsplass katalog for et sekund. La oss si at, nå ønsker jeg å lage en kopi av min pset0 katalogen. Jeg kan ikke bare si cp pset0 pset3, for eksempel. Du får denne rare melding, utelate katalogen pset0. Hvorfor får du denne meldingen? Vel, det viser seg at når du har en katalog som har andre ting på innsiden av det, cp kommandoen gjør egentlig ikke nødvendigvis vet hva de skal gjøre med det. Vi trenger å eksplisitt si Linux, terminalen, Jeg vil at du skal kopiere pset0 katalog og kopi hver mappe som finnes inne av det og hver fil som finnes på innsiden av det. Med andre ord, jeg trenger deg til rekursivt dykke ned i pset0 og lage en kopi av alt der inne. Hvis jeg ønsker å gjøre det, hva jeg kan gjøre er cp-r, for rekursiv, pset0 pset3. Trykk Enter. Nå, hvis jeg liste innholdet i katalogen min, Jeg ser det er det pset3 katalog som jeg kan jobbe med. Og hvis jeg cd til pset3 nå og deretter vise innholdet, utseende, det er prøven og scratch.sb2 igjen. Så det er ganske kult. Så det er hvordan du kan kopiere en hel katalog, og ikke bare en enkelt fil. Så hvis du ønsker å kopiere en katalog, bare husk å bruke -r flagget når du er arbeider med cp-kommandoen. Greit. Så jeg har kopiert en fil, men Jeg har gjort det ved en feiltakelse. Og nå, jeg ønsker å bli kvitt det. Hvordan gjør jeg det? Igjen, hvis du er kjent med et GUI-grensesnitt, du kan høyreklikke og bare velge Slett. Og det vil sende det til søppel eller papirkurven. Men på kommandolinjen, vi kan bare skrive rm, for fjerne, og deretter navnet på filen vi ønsker å bli kvitt. Nå er rm veldig forsiktig. Det gjør mye av dobbeltsjekket, å sørge for at du faktisk ønsker å slette filen. Det vil ikke gjøre noen feil, fordi det er ingen papirkurven her. Når vi sletter en fil, er den borte. Og det er egentlig ikke mulig å gjenopprette den. Så vi må være ganske forsiktig, og så rm kommer til å være veldig forsiktig for oss. Så la oss gå tilbake til IDE og bli kvitt det hi.txt fil som jeg opprettet et minutt siden med kopi. Så vi er i IDE. Og jeg vise innholdet i min katalog igjen, bare for å gi oss noen sammenheng. Jeg mener, kan du se at det er hi.txt, som jeg laget en liten stund siden. Nå ønsker jeg å bli kvitt det. Hvordan gjør jeg det? Igjen, bare rm. Så jeg kan skrive rm hi.txt og trykk Enter. Og det er rm velvære veldig forsiktig for oss og gjør at vi faktisk ønsker å slette denne filen. Har du virkelig ønsker å fjerne vanlig tom fil hi.txt? Det er akkurat som en drifts system, som Windows eller Mac, at du kan være kjent med dukker opp den boksen sier er du egentlig sikker på at du ønsker å gjøre dette. Jeg er ganske sikker på at jeg vil dette, så jeg kommer til å skrive, yes-- eller jeg kunne også bare skriver Y- og trykk Enter. Og hvis jeg vise innholdet i min katalogen igjen, er hi.txt borte. Ikke dårlig, ikke sant? La oss trykk Kontroll L, bare å kvitte seg med alt dette og komme oss tilbake på toppen av skjermen. Nå er det en måte å kortslutning rm, så at den ikke spør oss det spørsmålet. Vi vet at vi ønsker å kvitte seg med denne filen, og vi ikke selv ønsker å bli spurt spørsmålet. Hvordan gjør vi det? Vel, vi kan spesifisere en ekstra flagg, akkurat som vi gjorde med cp hvor vi kunne legge -r flagg, rekursivt kopiere inn i en katalog. Det er en annen flagg for rm, som er -f, som er å tvinge rm å gjøre akkurat hva vi forteller det til å gjøre. Så la oss si at, nå ønsker jeg for å bli kvitt min hello.txt fil. Jeg ønsker ikke at en heller. Hva kan jeg gjøre? Vel, jeg kan rm -f hello.txt. Hva tror du er kommer til å skje her? Det er borte. Ikke engang spørre meg spørsmålet. Og faktisk, hvis jeg vise innholdet av katalogen min igjen, det er borte. Det finnes ingen angre her. hello.txt er borte, og jeg var ikke spurte om jeg ønsket å slette den. Hva om jeg ønsker å bli kvitt av en hel katalog? Måten du gjør det er svært lik kopiere. Hvis du ønsker å slette en katalogen, gjør du ikke bare ønsker å slette katalogen, du vil slette alt på innsiden av det. Og så du bruke -r, til rekursivt slette en katalog. Så la oss rm -r pset2. Jeg er faktisk ikke jobber med pset2, så jeg kan bli kvitt den katalogen. Jeg trykker på Enter. Ønsker jeg å fjerne katalogen, pset2? Ja, det gjør jeg. Og hvis jeg vise innholdet i katalogen min igjen, det er borte. Greit? Én variant av dette temaet. Så jeg skal tømme skjermen igjen, å sette alt på toppen. Hit ls. Nå ønsker jeg å bli kvitt av min pset3 katalog, og jeg vet jeg vil kvitte seg med min pset3 katalogen. Jeg kan rekursivt og tvangsflyttet fjerne min pset3 katalogen. Nå, du kommer til å bli virkelig forsiktig når du bruker rm -rf. Som du programmere mer, vil det være noe du bare gjøre veldig raskt. Og faktisk, jeg gjør det hele tiden. Men det kan føre til en viss katastrofale konsekvenser, Hvis du ved et uhell slette feil ting. Så jeg vil at du skal være oppmerksom på at dette er et alternativ tilgjengelig for deg, men bruk den med måte, og bruke det med forsiktighet. Jeg vet for et faktum at jeg ikke jobber på mitt problem satt tre lenger, så jeg er kommer til å bli kvitt alle disse filene. Og jeg vet at jeg ikke ønsker å bli spurt hver eneste gang om jeg ønsker å slette en fil, så jeg kommer til rm -rf pset3. Ikke engang spørre meg om jeg ønsket å bli kvitt det. Jeg traff ls. pset3 er borte. Så det er alle varianter som du kan bruke for å bli kvitt filer med rm. Den siste kommandolinje kommando som er kommer til å ganske nyttig for deg er mv, som er en forkortelse for trekk. Move er i utgangspunktet tilsvarer endre navn. Den beveger seg en fil fra ett sted til en annen, kilden til bestemmelsesstedet. La oss se hvor du bruker en flytte makt være nyttig i terminalvinduet. Så jeg er i min pset1 katalog, og jeg har lagt merke til noe har gått litt galt. Jeg jobbet på min grådig problem, men jeg tilfeldigvis heter det greddy. Så når jeg prøver og kjøre det gjennom check50, betyr det ikke egentlig fungerer. Jeg har et par alternativer. Vi kunne gjøre hva vi har gjort før, som er å lage en kopi av filen. Jeg kunne kopiere greddy.c til greedy.c, ikke sant? Trykk Enter. Jeg ser at begge filene er der. Og så kunne jeg rm, å fjerne, greddy.c. Det blir kvitt det. Så det ville fungere, etter at jeg bekrefte at jeg ønsker å bli kvitt det. Og jeg effektivt har omdøpt greddy.c til greedy.c. Jeg kopierte det, og deretter fjernet det opprinnelige. Men det er en multi-trinns prosess. Og sikkert, det er en bedre måte. Faktisk er det. Så la oss treffe Kontroll L, bare for å bringe dette opp igjen, og vise innholdet av katalogen min igjen. Så la oss si, oh, jeg gjorde en feil. Jeg faktisk gjorde virkelig ønsker å kalle den filen greddy.c. Med ett slag, kan jeg skrive flytte greedy.c til greddy.c. Trykk Enter. Og nå, har jeg ikke å kopiere og fjerne det, Jeg var bare i stand til å endre det. One-stop shopping. Nå er det en rekke andre grunnleggende kommandolinje-verktøy som du kan bruke med Linux kommandolinjen. Og vi skal diskutere mye av dem i fremtiden i CS50. Men for nå, bare å få føttene våt med å jobbe med denne terminalen miljø, disse fem kommandoer bør få deg ganske langt navigere rundt og arbeide med filer i IDE eller i hvilken Linux-baserte operativsystem du bruker. Hvis du er nysgjerrig og ønsker å se fremover litt på noen kommandolinjekommandoer vi skal bruke i fremtiden, her er en liste over et par av de mer vanlige de. Jeg er Doug Lloyd. Dette er CS50.