[MUSIK SPELA] DOUG LLOYD: OK. Så låt oss tala om hur man använda Linux kommandorad. Nu CS50 IDE, eller Faktum är att även en CS50 apparat, om du är bekant med det, eller du tar en äldre version av CS50, är en molnbaserad maskin som löper Ubuntu, som är en av de många smaker av operativsystemet Linux. Linux operativsystem är gynnas av programmerare, eftersom det är bara kallare, eller hur? Många moderna Linux-distributioner har grafiska användargränssnitt, som vi också kallar GUI, G-U-I, gör det lätt mus-baserade navigering, som du förmodligen bekant med, Om du är en Windows eller Mac-användare, flytta runt musen, dubbelklicka på ikonen, och så vidare. Fortfarande dock som programmerare, och även om IDE innehåller förmågan att göra några grafiskt användargränssnitt grejer, klicka, och dra, och allt det där, du fortfarande använda din terminalfönster ganska ofta. Och du kan göra många av de samma uppgifter som du kan göra med en mus med tangentbordskommandon. Och vi kommer att prata lite om vad några av dessa kommandon är just nu. Nu kan dessa kommandon användas på någon Unix-baserade operativsystem systemet, som omfattar Linux, men även Mac OS. Om du öppnar Terminal på din Mac, Du kan använda dessa exakta kommandon. Windows har också Kommando Snabb, men en del av de kommandon är något annorlunda, så det faktiskt inte fungerar, eftersom Windows är inte ett Unix-baserade system. Så låt oss ta en titt på några av dessa Linux kommandon. Den första som du kommer förmodligen använda en hel del är ls. Det är ett gement l, följt av en gemener s, vilket är en förkortning av listan. Och vad kommandot listan gör det ger dig en avläsning av alla filer och mappar i den aktuella katalogen. Så du kan se allt du kan komma till från där du befinner dig. Så jag har öppnat upp här CS50 IDE. Och jag kommer att zooma in i en sekund för att ge dig en närmare titt, men här är den breda bilden av vad IDE ser ut. Till vänster kan du se att vi har ett filträd, som du förmodligen bekant med, dubbelklicka, och filer och mappar och allt det där. Så det är fortfarande kvar i CS50 apparaten. I centrum i toppen är där du är kommer att skriva koden, en gång du klickar på en fil. Och längst ner, vi har ett terminalfönster, som är där vi kan utföra dessa terminalkommandon. Jag kommer att zooma in och chef över här, bara att visa er att, faktiskt, jag kan klicka på dessa filer och mappar. Så klart, där jag är närvarande, har jag två mappar, så kallade pset0 och pset1, och tre filer, som kallas Hej, kallade en hej.c, och en som heter hello.txt. Så låt oss flytta ner till terminalen fönstret och få en närmare titt. Så vi bara pratade, återigen, om faktum att vi har tre filer och två mappar i den aktuella katalogen. Om jag skriver ls, vilket i sin tur är kommandot till listan innehållet i den nuvarande katalog, och sedan jag slog Enter, titta vad jag ser, hej, hej.c, hello.txt, pset0 och pset1. pset0 och pset1 är färgade blått, för att indikera för er att de är kataloger att vi kunde gå in. Och vi kommer att lära sig lite lite om hur man navigerar i kataloger i en minut. Och allt annat är färgad svart, om det är en textfil eller en källkod fil, och grönt, om Det är en körbar fil. Så klart, betyder det att jag kunde köra ett program som heter, hej. Det är vad den gröna där betyder. Men i grund och botten, skriva ls-kommandot har tillåtit mig att titta på allt som existerar i min nuvarande katalog, som matchar vad vi ser här, i grafisk visning av densamma. Nästa kommando du kommer förmodligen använda en hel del är cd, gemener c, gemener d, vilket är en förkortning för förändring katalog. Detta gör det möjligt för oss att göra vad jag var talar om en sekund sedan, som är att navigera mellan kataloger på kommandot linje, i motsats till dubbelklicka på mappar. Så om vi skriver cd och sedan namnet på en katalog, vi kan få in den katalogen. Som en sidoreplik, vet att namnet av den aktuella katalogen är alltid punkt, och namnet på katalogen en nivå ovanför där vi är nu, som är namnet på mappen som vår mappen, pricka, dot-- eller som vår mappen är prick, pricka. Och om du någonsin nyfiken namnet på din katalog, Du kan skriva pwd, som står för närvarande arbetskatalogen. Vi tar en titt på alla dessa nu, genom att väg tillbaka till CS50 IDE. Så jag är tillbaka i min arbetsyta nu. Och jag ska zooma in igen på terminal, så att vi kan ta en titt på att flytta runt i IDE. Så jag kommer att lista innehållet i min katalog igen, bara för att slipas oss där vi är. Så om jag skriver ls, som är listan igen, Jag ser att jag kan komma till pset0 och pset1. De är de kataloger Jag kan komma till härifrån. Jag vet att eftersom IDE ger mig en ledtråd genom att färga dem blå. Låt oss säga att jag vill komma in i mitt pset1 katalog, eftersom jag jobbar på problemet set 1. Jag kan skriva cd-- igen, kort för ändra directory-- utrymme, pset1. Och om jag slog in, ser vad som sker. Det ser inte ut som en hel del har hänt. Men om man tittar på prompten det nu säger mig att jag är i ~ / arbetsyta / pset1. Jag har navigerat i pset1 mapp som var i min arbetsyta. Och om jag skriver ls, ser jag några olika saker här, eller hur? Detta är inte samma sak lista som jag såg tidigare. Jag har navigerat in pset1. Och så nu när jag skriver ls, jag få inom ramen för vad kan jag se inifrån pset1 mappen. Nu, jag kommer att skriva kontroll l, vilket bara tömmer skärmen. Och jag kommer att lista innehållet i katalogen igen, bara så att du kan se. Jag ville bara göra det till rensa ut en del av de saker att du såg nere och för att förhindra detta från att gå för långt ner utom räckhåll. Nu, sade jag tidigare att, om jag vill för att navigera till den aktuella katalogen, Jag kan skriva cd utrymme dot. Hit Enter. Det gör ingenting, eller hur? Jag ändrar kataloger till den aktuella katalogen. Du är inte alltid kommer att hitta ett behov av en enda punkt, men du kommer ibland. Låt oss säga att jag vill att flytta upp en nivå. Jag vill komma tillbaka till min arbetsyta katalog. Jag kan inte skriva cd arbetsyta, det finns ingen sådan fil eller katalog. Och anledningen till that-- Om jag skriver ls en mer time-- är att det inte finns någon katalog som heter arbetsyta insidan av min pset1 katalog. Jag kommer att rensa skärmen igen med kontroll l. Kom ihåg vad jag sa tidigare, men vi som kan navigera tillbaka med prick, prick. Det är namnet på den överordnade katalogen. Så om jag skriver cd, utrymme, pricka, dot hit, och sedan på Enter, nu titta på vad som hände. Min kommandotolk säger mig att jag är tillbaka i min ~ / arbetsyta katalogen. Jag flyttade upp en nivå, tack till prick, pricka. Nu, låt oss säga att jag använder en operativsystem som är Linux-baserad, men inte nödvändigtvis berätta var jag är. Detta händer för att berätta att Jag är i ~ / arbetsyta just nu, höger vid prompten. Men jag kunde vara helt vilse i en enda röra av mappar, och jag har ingen aning om var jag är och ingen aning om var jag vill komma tillbaka till. Det finns två saker som jag kan göra. Först av allt, kan jag räkna ut där jag är, genom att skriva pwd. Det är min nuvarande arbetskatalogen. Och om jag slog in, det berättar exakt var jag befinner mig. Nu / home / ubuntu är lång väg att säga, tilde, som är din hemkatalog. Men det säger mig att jag är i home / ubuntu / arbetsyta, eller ~ / arbetsyta. Jag kommer att gå till min pset1 katalog igen, och jag kommer att visa innehållet. Och jag ser att jag har en annan katalog där kallas statister. Så jag kommer att cd till statister och då kommer jag att rensa skärmen. Så nu är jag ganska långt in, eller hur? Vad gör jag om jag vill tillbaka att arbetsyta omedelbart? Det finns ett par saker som jag skulle kunna göra. Jag kan skriva cd, punkt, punkt, snedstreck, pricka, prick, att flytta upp en nivå och sedan en annan nivå. Men det är typ av irriterande. Så om jag någonsin vill komma tillbaka till bara min hemkatalog, tilde, Jag kan skriva cd med ingenting efter det. Cd, Enter. Och nu är jag i tilde. Och om jag vill komma till arbetsyta, Jag kan bara skriva cd arbetsyta. Och det är hur du arbetar förändrade kataloger inom CS50 IDE eller Linux operativsystem på kommandoraden. Okej. Den nästa som kanske komma till hands är mkdir, vilket är en förkortning för att göra en katalog, om jag behöver för att skapa en ny mapp. Om du är bekant med operativsystemet GUI, du kanske högerklicka. Och sedan, när snabbmenyn dyker upp, välj Ny mapp. Det är förmodligen hur du har gjort det förr. Men vi kan också skapa kataloger på kommandoraden. Så vi är tillbaka i IDE. Jag ska zooma in på terminalen och visa innehållet i min katalog igen, bara för att ge oss en referensram. Låt oss säga att nu har jag färdig att arbeta på problemet set 0 och problem set 1. Så jag vill skapa en ny katalog att arbeta med för problem set 2. Hur gör jag det? Tja, återigen, jag kunde högerklicka i vänster sida där och välj Ny mapp och skapa en pset2 katalog. Det skulle fungera också. Men då jag också göra det på kommandoraden ganska snabbt, genom att skriva mkdir, space-- jag skrev i n, men-- rymd pset2. Om jag trycker på Retur och sedan jag lista innehållet i min katalog igen, Jag ser att, titta, nu Jag har en pset2 mapp. Och jag kan navigera in att med hjälp av cd och göra allt arbete jag behöver göra för pset2. Förresten, jag ska bara pop över här verkligen snabbt till filträdet. Och du kan se att, även i den grafiska File Explorer, Vi kan se att pset2 katalogen har också skapats där. Och jag kan navigera till den, med hjälp av det grafiska gränssnittet också. Nästa gång och det är förmodligen kommer att komma till hands är cp, vilket är en förkortning för kopiering. Kopiera, till skillnad från alla andra kommandon vi har sett förut, tar två argument, en källa, det namnet på den fil som du vill kopiera, och en destination där du vill kopiera filen till. Det är ganska lätt att kopiera en fil, så låt oss göra det. Så vi är tillbaka i IDE. Jag kommer att visa innehållet av min nuvarande katalog med ls. Nu, låt oss säga att jag vill ha att göra en kopia av hello.txt. Återigen, från filträdet på vänster, det grafiska gränssnittet, Jag kunde högerklicka på hello.txt, göra en kopia, klistra in kopian. Men jag kan göra det ganska snabbt på kommandoraden också. Låt oss säga att jag vill kopiera hello.txt att hi.txt. Jag kan CP, utrymme, hello.txt. Det är min källfilen, så det är därför Jag kommer att välja att man först. Och då måste jag namnge målfilen, hi.txt. Jag trycker på Retur. Och om jag visa innehållet i min katalog igen, det har hi.txt. Jag har gjort en kopia av den. Och faktiskt, om jag gick i hi.txt, jag kunde se att det skulle vara en exakt kopiera allt som fanns i mitt hello.txt fil. Så det är hur du kopierar en fil. Men vad händer om du vill kopiera en hel katalog? Så för en sekund, låt oss ta en titt på vad som finns i min pset0 katalogen. Om jag cd pset0 och visa innehållet, Jag har en katalog som heter, prov, och en skråma fil, scratch.sb2. Så det är bra att veta. Så låt oss rensa skärmen, och jag kommer att gå tillbaka till min arbetsyta katalog för en sekund. Låt oss säga att nu vill jag göra en kopia av min pset0 katalog. Jag kan inte bara säga cp pset0 pset3, till exempel. Du får denna konstiga budskap, utelämna katalog pset0. Varför får man meddelandet? Tja, visar det sig att, när du har en katalog som har andra saker inne i det, kommandot cp inte riktigt nödvändigtvis vet vad de ska göra med det. Vi måste uttryckligen berätta Linux, terminalen, Jag vill att du ska kopiera pset0 katalog och kopiera varje mapp som finns inne av det och alla filer som finns inne i den. Med andra ord, jag vill att du rekursivt dyka ner i pset0 och göra en kopia av allt i det. Om jag vill göra det, vad jag kan göra är cp-r, för rekursivt pset0 pset3. Hit Enter. Nu, om jag lista innehållet i min katalog, Jag ser att det är pset3 katalog som jag kan arbeta med. Och om jag cd till pset3 nu och sedan visa innehållet, titta, det finns prov och scratch.sb2 igen. Så det är ganska coolt. Så det är hur du kan kopiera en hel katalog, och inte bara en enda fil. Så om du vill kopiera en katalog, bara ihåg att använda -r flaggan när du är arbetar med kommandot cp. Okej. Så jag har kopierat en fil, men Jag har gjort det av misstag. Och nu vill jag bli av med det. Hur gör jag det? Återigen, om du är bekant med ett grafiskt gränssnitt, kan du högerklicka och bara välja bort. Och det kommer att skicka den till skräp eller papperskorgen. Men på kommandoraden, vi kan bara skriva rm, för bort, och sedan namnet på den fil vi vill bli av med. Nu är rm mycket försiktig. Det gör en hel del dubbelkontroll, att se till att du faktiskt vill ta bort filen. Det vill inte göra några misstag, eftersom det finns ingen Papperskorgen här. När vi tar bort en fil, det är borta. Och det finns verkligen inget sätt att återställa det. Så vi måste vara ganska noggrann, och så rm kommer att bli riktigt försiktig för oss. Så låt oss gå tillbaka till IDE och bli av med det hi.txt fil att jag skapade en minut sedan med kopia. Så vi är i IDE. Och jag listar innehållet i min katalog igen, bara för att ge oss något sammanhang. Jag menar, kan du se att det finns hi.txt, som jag skapade en liten stund sedan. Nu vill jag att bli av med det. Hur gör jag det? Återigen, bara rm. Så jag kan skriva rm hi.txt och tryck på Retur. Och det finns rm varelse riktigt försiktig för oss och se till att vi faktiskt vill ta bort den här filen. Vill du verkligen vill ta bort regelbunden tom fil hi.txt? Det är precis som en rörelse system som Windows eller Mac, att du kan vara bekant med poppar upp att rutan säger är du verkligen säker på att du vill göra detta. Jag är ganska säker på att jag vill det, så jag kommer att skriva, yes-- eller jag kunde också bara Skriv y-- och tryck på Retur. Och om jag visa innehållet i min katalogen igen, hi.txt borta. Inte illa, eller hur? Låt oss tryck Control L, bara att bli av med allt det här och få oss tillbaka på den övre delen av skärmen. Nu finns det ett sätt att kortslutnings RM, så att det inte fråga oss den frågan. Vi vet verkligen att vi vill ha att bli av med den filen, och vi vill inte ens ställas frågan. Hur gör vi det? Tja, kan vi ange en extra flagga, precis som vi gjorde med cp där vi skulle kunna lägga -r flaggan, att rekursivt kopiera till en katalog. Det finns en annan flagga för RM, som är -f, vilket är att tvinga rm att göra exakt vad vi säga till den att göra. Så låt oss säga att nu vill jag att bli av med min hello.txt fil. Jag vill inte att man heller. Vad kan jag göra? Tja, kan jag rm -f hello.txt. Vad tror du är kommer att hända här? Den är borta. Inte ens fråga mig frågan. Och faktiskt, om jag visa innehållet av min katalog igen, det är borta. Det finns ingen ångra här. hello.txt är borta, och jag var inte även frågade om jag ville ta bort den. Vad gör jag om jag vill bli av en hel katalog? Det sätt du gör det är mycket lik kopiera. Om du vill ta bort en katalog, gör du inte bara vill ta bort katalogen du vill ta bort allt innanför det. Och så du använder -r, till rekursivt ta bort en katalog. Så låt oss rm -r pset2. Jag är inte faktiskt arbetar på pset2, så jag kan bli av med den katalogen. Jag trycker på Retur. Måste jag vill ta bort katalogen, pset2? Ja det gör jag. Och om jag visa innehållet i min katalog igen, det är borta. Okej? Ytterligare en variant på detta tema. Så jag ska rensa skärmen igen, att sätta allt på toppen. Hit ls. Nu vill jag bli av min pset3 katalog, och jag vet verkligen att jag vill bli av med min pset3 katalog. Jag kan rekursivt och våld ta bort min pset3 katalog. Nu, du kommer att bli riktigt försiktig när du använder rm -rf. När du programmera in mer, det ska vara något du bara göra riktigt snabbt. Och faktiskt, jag gör det hela tiden. Men det kan leda till en viss katastrofala följder, Om du av misstag radera fel sak. Så jag vill att du ska vara medveten om att detta är ett alternativ tillgängliga för dig, men använder det sparsamt, och använda den med försiktighet. Jag vet för ett faktum att jag inte arbetar på mitt problem set 3 längre, så jag är kommer att bli av med alla dessa filer. Och jag vet att jag inte vill bli tillfrågad varenda gång om jag vill ta bort en fil, så jag kommer att rm -rf pset3. Inte ens fråga mig om jag ville bli av med det. Jag slog ls. pset3 är borta. Så det är alla variationer som du kan använda för att bli av filer med rm. Den sista kommandorad kommando som är kommer att ganska användbart för dig är mv, som är en förkortning för drag. Move är i princip motsvarar byta namn. Det flyttar en fil från en plats till annan, källan till destinationen. Låt oss se var du använder ett drag kanske vara praktiskt vid terminalfönstret. Så jag är i mitt pset1 katalog, och jag har märkt något har gått lite fel. Jag arbetade på min giriga problem, men jag av misstag heter det GReddy. Så när jag försöker köra det genom check50, det inte riktigt fungerar. Jag har ett par alternativ. Vi kan göra vad vi har gjort tidigare, vilket är att göra en kopia av filen. Jag kunde kopiera greddy.c att greedy.c, eller hur? Hit Enter. Jag ser att båda filerna finns. Och då kunde jag rm, att ta bort, greddy.c. Det gör sig av med det. Så det skulle fungera, när jag bekräfta som jag vill bli av med det. Och jag har faktiskt omdöpt greddy.c att greedy.c. Jag kopierade och sedan bort originalet. Men det är en flerstegsprocess. Och visst, det finns ett bättre sätt. I själva verket finns det. Så låt oss slå Kontroll L, bara för att få den tillbaka upp, och visa innehållet av min katalog igen. Så låt oss säga, åh, jag gjorde ett misstag. Jag faktiskt verkligen ville att kalla filen greddy.c. I ett svep, kan jag skriva flytta greedy.c att greddy.c. Hit Enter. Och nu, jag har inte kopiera och ta bort det, Jag var bara möjlighet att byta namn på den. One-stop shopping. Nu finns det en hel del andra grundläggande kommandoradsverktyg som du kan använda med Linux kommandorad. Och vi kommer att diskutera en hel del av dem i framtiden i CS50. Men nu, bara få fötterna våt med att arbeta med denna terminal miljö, dessa fem kommandon borde få dig ganska långt navigera runt och arbeta med filer i din IDE eller i vilken Linux-baserad operativsystem du använder. Om du är nyfiken och vill se framåt lite på några av kommandoraden kommandon vi kommer att använda i framtiden, Här är en lista över ett par av de vanligare. Jag är Doug Lloyd. Detta är CS50.