[Muziek] DOUG LLOYD: OK. Dus laten we praten over hoe om te gebruik maken van de Linux command line. Nu de CS50 IDE, of feite zelfs een CS50 apparaat, Als je bekend bent met dat bent, of je neemt een oudere versie van CS50, is een cloud-gebaseerde machine die Ubuntu loopt, die één van de vele smaken van het Linux-besturingssysteem. Linux besturingssysteem begunstigd door programmeurs, want het is gewoon koeler, toch? Veel moderne Linux distributies hebben grafische user interfaces, die wij GUI's, G-U-I, ook bellen naar gemakkelijke muis-gebaseerde navigatie, die je waarschijnlijk bekend met, als u een Windows- of Mac-gebruiker bent, bewegen van uw muis, dubbelklikken op iconen, en ga zo maar door. Toch wel, als programmeur, en hoewel het IDE bevat de mogelijkheid om doe wat grafische gebruikersinterface stuff, klikken, en slepen, en dat alles, je zult nog steeds met behulp van uw terminalvenster vrij vaak. En je kunt veel van de do dezelfde taken die u kunt doen met een muis met toetsenbord commando's. En we gaan een beetje praten wat sommige van deze commando nu zijn. Nu, kunnen deze commando's worden gebruikt op een Unix-gebaseerde besturingssystemen systeem dat Linux omvat, maar ook Mac OS. Als u op uw Mac openen Terminal, u kunt deze exacte opdrachten gebruiken. Windows heeft ook Command Snel, maar sommige van de opdrachten zijn iets anders, dus het niet echt werken, omdat Windows niet een Unix-systeem. Dus laten we eens een kijkje bij enkele Deze Linux commando. De eerste die u zult Gebruik waarschijnlijk heel veel is ls. Dat een kleine letter l, gevolgd door een kleine letters s, die kort voor de lijst. En wat de lijst commando doet is het geeft u een uitlezing van alle bestanden en mappen in uw huidige directory. Zodat je alles kunt zien kun je krijgen van waar u op dat moment bent. Dus ik heb hier de CS50 IDE geopend. En ik ga om in te zoomen in een seconde om u een kijkje te geven, maar hier is het brede beeld van wat de IDE eruit ziet. Aan de linkerkant, kunt u zien wij een bestand boom, die je waarschijnlijk vertrouwd zijn met, dubbelklikken, en bestanden en mappen, en al dat spul. Dus dat is er nog steeds in de CS50 apparaat. In het midden van de top is waar je bent gaat worden het schrijven van uw code, zodra u klikt op een bestand. En onderaan, we hebben een terminal venster, dat is waar we kunnen uitvoeren deze terminal commando's. Ik ga om in te zoomen en ga hier, net om te laten zien dat, in feite, ik kan Klik op de bestanden en mappen. Zo duidelijk, waar ik nu ben, ik heb twee mappen, genaamd pset0 en pset1, en drie bestanden, een genaamd hallo, een zogenaamde hello.c, en een zogenaamde hello.txt. Dus laten we omlaag te verplaatsen naar de terminal venster en krijgen een kijkje. Dus we net gesproken, nogmaals, over de feit dat we drie bestanden en twee mappen in de huidige directory. Als ik typ ls, die weer is het commando naar de lijst de inhoud van de huidige directory, en dan druk ik op Enter, kijk eens wat ik zie, hello, hello.c, hello.txt, pset0 en pset1. pset0 en pset1 zijn kleur blauw, aangeven aan u dat dat zijn directories dat we konden navigeren in. En we zullen een beetje te leren beetje over hoe om te navigeren in mappen in een minuut. En elk ander ding is zwart gekleurd, als het een tekstbestand of een bron code bestand, en groen, als het is een uitvoerbaar bestand. Zo duidelijk, dat betekent dat ik zou een programma genaamd lopen, hallo. Dat is wat de groene er betekent. Maar in principe, het typen van het ls commando is toegestaan me om te kijken naar alles wat bestaat in mijn huidige directory, die overeenkomt met wat we hier zien, in de grafische weergave van hetzelfde. De volgende opdracht die u zult Gebruik waarschijnlijk nogal wat is cd, kleine c, kleine letter d, die staat voor verandering directory. Dit stelt ons in staat om te doen wat ik was spreken over een tweede geleden, die is om te navigeren tussen directories op de opdrachtregel lijn, in tegenstelling tot dubbelklikken op mappen. Dus als we het type cd en dan de naam van een directory, we kunnen krijgen in die map. Even terzijde, weet dat de naam van de huidige directory is altijd stip, en de naam van de directory Een niveau boven de plaats waar we nu zijn, dat is de naam van de map in die onze folder is, punt, dot-- of waarin onze folder is, is puntje, puntje. En als je ooit nieuwsgierig de naam van uw telefoonboek, u kunt typen dow, wat staat voor de huidige directory. We nemen een kijkje nemen op elk van deze Nu, door de post terug naar de CS50 IDE. Dus ik ben nu terug in mijn werkruimte. En ik zal inzoomen opnieuw op de terminal, dus kunnen we een kijkje nemen bij bewegen binnen de IDE. Dus ik ga naar de lijst van de inhoud van mijn directory nogmaals, gewoon om opnieuw gemalen ons in waar we zijn. Dus als ik typ ls, die is voor de lijst opnieuw, Ik zie dat ik pset0 en pset1 kunt krijgen. Dat zijn de directories Ik kan krijgen van hier. Ik weet dat, omdat de IDE geeft me een aanwijzing door het kleuren te blauw. Laten we zeggen dat ik wil krijgen in mijn pset1 directory, want ik ben bezig met probleem set 1. Ik kan CD-- weer typen, kort voor veranderen directory-- ruimte, pset1. En als ik druk op enter, let op wat er gebeurt. Het maakt niet uit als een veel gebeurd. Maar als je kijkt naar de prompt nu vertelt me ​​dat ik in ~ / werkruimte / pset1. Ik heb genavigeerd in de pset1 map die was binnen mijn werkruimte. En als ik typ ls, zie ik een aantal verschillende dingen hier, toch? Dit is niet hetzelfde lijst die ik eerder zag. Ik heb genavigeerd in pset1. En nu, als ik typ ls, ik ben het krijgen van de context van wat kan ik zien in de map pset1. Nu, ik ga om de controle te typen l, die net wist het scherm. En ik ga naar de lijst van de De inhoud van de directory weer, zodat je kunt zien. Ik wilde alleen maar om dat te doen om duidelijk uit sommige van de spullen die je hieronder zag neer en om dit te voorkomen van het gaan te ver naar beneden buiten bereik. Nu, ik eerder dat gezegd, als ik wil om naar de huidige directory, Ik kan cd ruimte dot typen. Druk op Enter. Het doet niets, toch? Ik ben het veranderen van directories naar de huidige directory. Je bent niet altijd gaat om vind een behoefte aan een enkele punt, maar je zult af en toe. Laten we zeggen dat ik wil één niveau omhoog te gaan. Ik wil terug naar mijn werkruimte directory. Ik kan geen cd werkruimte, er is geen bestand of map. En de reden voor dat-- Als ik type ls één tijd-- is dat er geen map met de naam werkruimte binnenkant van mijn pset1 directory. Ik ga duidelijk mijn screenen opnieuw met controle l. Vergeet niet wat ik zei eerder, hoewel, dat we kan terug navigeren met stip, stip. Dat is de naam van de bovenliggende map. Dus als ik het type cd, ruimte, punt, dot, en dan druk op Enter, nu kijken naar wat er is gebeurd. Mijn opdrachtprompt vertelt me ​​dat ik ben terug in mijn ~ / werkruimte directory. Ik schoof een niveau, dankzij dot, dot. Nu, laten we zeggen dat ik met behulp van een besturingssysteem dat Linux-gebaseerde, maar niet noodzakelijkerwijs Vertel me waar ik ben. Dit gebeurt om ons te vertellen dat Ik ben in ~ / werkruimte op dit moment, direct bij de prompt. Maar ik kon volledig worden verloren in een puinhoop van mappen, en ik heb geen idee waar ik ben en geen idee waar ik wil om terug te komen. Er zijn twee dingen die ik kan doen. Allereerst kan ik figuur waar ik ben, door het intikken van DOW. Dat is mijn huidige directory. En als ik druk op enter, dan vertelt me ​​precies waar ik ben. Nu / home / ubuntu is de lange manier om te zeggen, tilde, dat is uw home directory. Maar het vertelt me ​​dat ik in home / ubuntu / werkruimte, of ~ / werkruimte. Ik ga om te navigeren naar mijn pset1 directory weer, en ik ga naar de lijst van de inhoud. En ik zie dat ik een andere directory er, genaamd extra's. Dus ik ga cd in extra's, en dan ga ik naar mijn scherm te wissen. Dus nu ben ik vrij ver in, toch? Wat als ik wil terug onmiddellijk werkruimte? Er zijn een paar dingen die ik zou kunnen doen. Ik kon cd, punt, punt, slash, dot typt, stip, één niveau omhoog te gaan en dan een ander niveau. Maar dat is een beetje vervelend. Dus als ik ooit wil om terug te komen gewoon mijn home directory, tilde, Ik kan typen cd met niets na het. Cd, Enter. En nu, ik ben in tilde. En als ik wil werkruimte te krijgen, Ik kan gewoon typen cd werkruimte. En dat is hoe je werkt het veranderen van directories binnen de CS50 IDE of Linux besturingssysteem op de opdrachtregel. Prima. De volgende die zou pas komen is mkdir, die kort voor maken van een directory, als ik het nodig om een ​​nieuwe map te maken. Als je bekend bent met het GUI-systeem, je zou met de rechtermuisknop op. En dan, als het contextmenu verschijnt, kiest u Nieuwe map. Dat is waarschijnlijk hoe je hebt het eerder gedaan. Maar we kunnen ook maken directories op de opdrachtregel. Dus we zijn terug in de IDE. Ik zoomen op de terminal en een lijst van de inhoud van mijn directory nogmaals, alleen maar om ons te geven een referentiekader. Laten we zeggen dat, nu, ik heb klaar met werken aan probleem stellen 0 en probleem set 1. Dus ik wil een nieuwe map aan te maken om aan te werken om problemen op te stellen 2. Hoe doe ik dat? Nou, nogmaals, ik kon met de rechtermuisknop op in het linker kant en kies Nieuwe map en maak een pset2 directory. Dat zou te werken. Maar dan doe ik het ook aan de command line vrij snel, door te typen mkdir, space-- I getypt in n, maar-- ruimte pset2. Als ik druk op Enter en dan heb ik een lijst van de inhoud van mijn directory weer, Ik zie dat, kijk, nu Ik heb een pset2 map. En ik kan navigeren in dat het gebruik van cd en doen al het werk dat ik moet doen voor pset2. Overigens zal ik gewoon pop over hier heel snel om het bestand boom. En je kunt zien dat, ook in de grafische File Explorer, kunnen we zien dat de pset2 directory Ook is er gecreëerd. En ik kan navigeren naar het, met het GUI ook. De volgende keer en dat is waarschijnlijk zal van pas komen cp is, dat is kort voor exemplaar. Kopiëren, in tegenstelling tot alle andere bevelen we eerder hebben gezien, neemt twee argumenten, een bron, de de naam van het bestand dat u wilt kopiëren, en een bestemming, waar u het bestand wilt kopiëren. Het is vrij gemakkelijk te kopiëren een bestand, dus laten we dat doen. Dus we zijn terug in de IDE. Ik ga naar de lijst van de inhoud van mijn huidige directory met ls. Nu, laten we zeggen dat ik wil om een ​​kopie van hello.txt maken. Nogmaals, uit het bestand boom op de verliet de grafische interface, Ik kon met de rechtermuisknop op hello.txt, een kopie maken, plakt de kopie. Maar ik kan het vrij snel te doen op de opdrachtregel ook. Laten we zeggen dat ik wil kopiëren hello.txt te hi.txt. Ik kan cp, ruimte, hello.txt. Dat is mijn bronbestand, dus dat is waarom Ik ga dat men eerst te kiezen. En dan moet ik het noemen doelbestand, hi.txt. Ik druk op Enter. En als ik de inhoud van mijn directory nogmaals, er is hi.txt. Ik maakte een kopie van het. En in feite, als ik ging in hi.txt, ik kon zien dat het een exacte zou zijn dupliceren van alles wat bestond in mijn hello.txt bestand. Dus dat is hoe je een bestand te kopiëren. Maar wat als je wilt kopiëren een hele map? Dus voor een tweede, laten we eens een kijkje op wat er in mijn pset0 directory. Als ik cd pset0 en een lijst van de inhoud, Ik heb een map met de naam, het monster, en een kras-bestand, scratch.sb2. Dus dat is goed om te weten. Dus laten we duidelijk het scherm, en ik ga om terug te gaan mijn werkruimte directory voor een tweede. Laten we zeggen dat, nu wil ik maak een kopie van mijn pset0 directory. Ik kan niet zomaar zeggen cp pset0 pset3, bijvoorbeeld. U krijgt dit raar bericht, weglaten directory pset0. Waarom denk je dat de boodschap? Nou, het blijkt dat, wanneer heb je een map die heeft andere dingen erin, het cp commando niet echt se weten wat te doen. We moeten expliciet vertel Linux, de terminal, Ik wil dat je het kopiëren pset0 directory en kopiëren elke map die binnenin bestaat van en elk bestand dat bestaat erin. Met andere woorden, ik heb je nodig om te recursief duiken naar beneden in pset0 en maak een kopie van alles in. Als ik wil om dat te doen, wat ik kan doen is cp-r, voor recursieve, pset0 pset3. Druk op Enter. Nu, als ik een lijst van de inhoud van mijn directory, Ik zie er het pset3 directory dat ik kan werken. En als ik cd in pset3 nu en vervolgens een lijst van de inhoud, kijk, er monster en scratch.sb2 opnieuw. Dus dat is wel cool. Dus dat is hoe je een hele kunt kopiëren directory, en niet alleen een enkel bestand. Dus als je wilt een kopie directory, alleen niet vergeten aan de -r vlag te gebruiken als je het werken met de opdracht cp. Prima. Dus ik heb een bestand gekopieerd, maar Ik heb het gedaan per ongeluk. En nu, ik wil om zich te ontdoen van het te krijgen. Hoe doe ik dat? Nogmaals, als je bekend bent met een GUI-interface, kunt u met de rechtermuisknop op en kies Verwijderen. En het zal het aan het stuur prullenbak of de Prullenbak. Maar op de opdrachtregel, we kan typt rm, te verwijderen, en vervolgens de naam van het bestand dat we willen om zich te ontdoen van. Nu, rm is erg voorzichtig. Het doet veel van dubbele controle, om ervoor te zorgen dat u daadwerkelijk het bestand wilt verwijderen. Het heeft geen zin om geen fouten te maken, omdat er geen prullenbak hier. Zodra we een bestand verwijdert, is het weg. En er is echt geen manier om het te herstellen. Dus moeten we vrij zijn zorgvuldige, en zo rm gaat echt voorzichtig voor ons te zijn. Dus laten we gaan terug naar de IDE en zich te ontdoen van die hi.txt bestand dat ik een minuut geleden met een kopie. Dus we zijn in de IDE. En ik de inhoud van mijn directory nogmaals, gewoon om ons wat context. Ik bedoel, kun je zien dat er hi.txt, die heb ik een tijdje geleden. Nu, ik wil om zich te ontdoen van het te krijgen. Hoe doe ik het? Nogmaals, gewoon rm. Dus ik kan rm hi.txt typen en druk op Enter. En er is rm wezen echt voorzichtig voor ons en ervoor te zorgen dat we eigenlijk wil dit bestand te verwijderen. Wil je echt wilt verwijderen regelmatig leeg bestand hi.txt? Dat is net als een bedrijfsresultaat systeem, zoals Windows of Mac, dat je misschien wel vertrouwd met opduiken doos zegt dat ben je echt zeker dat u dit wilt doen. Ik ben er vrij zeker dat ik wil dit, dus ik ga om te typen, yes-- of ik kon ook gewoon typt Y-- en druk op Enter. En als ik de inhoud van mijn directory weer hi.txt is verdwenen. Niet slecht, toch? Laten we druk Control L, net om zich te ontdoen van al deze spullen en terug bij ons krijgen de bovenkant van het scherm. Nu is er een manier kortsluiting rm, dus dat het niet vragen ons die vraag. We weten dat we echt willen om zich te ontdoen van dat bestand, en we niet eens willen worden gevraagd de vraag. Hoe doen we dat? Nou, we kunnen een specificeren extra vlag, net als wij deed met cp waar we kan de -r vlag toe te voegen, recursief kopiëren naar een map. Er is een andere vlag voor rm, wat -f, namelijk rm dwingen precies wat we vertelt te doen. Dus laten we zeggen dat, nu, ik wil om zich te ontdoen van mijn hello.txt bestand. Ik wil niet dat men wil ook niet. Wat kan ik doen? Nou, ik kan -f hello.txt rm. Wat denk je is gaat hier gebeuren? Het is weg. Wist niet eens vragen mij de vraag. En in feite, als ik een lijst van de inhoud mijn directory weer, is het weg. Er is geen undo hier. hello.txt is verdwenen, en ik was niet zelfs vroeg of ik wilde om het te verwijderen. Wat als ik wil om zich te ontdoen krijgen van een hele map? De manier waarop je dat doet is vergelijkbaar met kopiëren. Als u wilt een verwijderen directory, je gewoon niet doen willen de map te verwijderen, je wilt alles binnen van het te verwijderen. En dus -r gebruiken om recursief een map te verwijderen. Dus laten we rm -r pset2. Ik ben niet echt bezig met pset2, dus ik kan ontdoen van die map. Ik druk op Enter. Wil ik verwijderen het telefoonboek, pset2? Ja, ik wil. En als ik de inhoud van mijn directory weer, het is gegaan. Prima? Nog een variatie op dit thema. Dus ik zal het scherm weer te wissen, alles aan de top te zetten. Hit ls. Nu, ik wil om zich te ontdoen krijgen mijn pset3 directory, en ik weet echt ik wil ontdoen van mijn pset3 directory. Ik kan recursief en geweld Verwijder mijn pset3 directory. Nu, je gaat echt voorzichtig als u gebruik rm rf. Als je meer te programmeren, zal het iets wat je doet gewoon echt snel. En in feite, ik doe het de hele tijd. Maar het kan leiden tot een aantal rampzalige gevolgen, als je per ongeluk verwijderen van de verkeerde dingen. Dus ik wil dat je ervan bewust zijn dat Dit is een optie voor u beschikbaar, maar gebruik het met mate, en gebruik het met de nodige voorzichtigheid. Ik weet voor een feit dat ik niet werk op mijn probleem set 3 meer, dus ik ben gaan om zich te ontdoen van al die bestanden te krijgen. En ik weet dat ik niet wil worden gevraagd elke keer als ik wil verwijderen een bestand, dus ik ga rf pset3 rm. Niet me zelfs vragen of ik wilde om zich te ontdoen van het te krijgen. Ik raakte ls. pset3 is verdwenen. Dus dat is alle variaties die u kunt gebruiken om zich te ontdoen van bestanden met rm. De lijn laatste commando commando dat is gaat erg handig voor u is mv, dat is kort voor move. Move is in principe gelijk aan een andere naam geven. Het beweegt een bestand van de ene locatie naar andere, de bron naar de bestemming. Laten we eens kijken waar het gebruik van een beweging macht handig zijn bij het terminal-venster. Dus ik ben in mijn pset1 directory, en ik heb gemerkt iets is gegaan een beetje verkeerd. Ik was bezig met mijn hebzuchtige probleem, maar ik per ongeluk noemde het Greddy. Dus wanneer ik probeer en voer het uit door middel van check50, is het niet echt werken. Ik heb wel een paar opties. We konden doen wat we eerder hebben gedaan, die een kopie van het bestand maken. Ik kon greddy.c kopiëren naar greedy.c, toch? Druk op Enter. Ik zie dat beide bestanden zijn er. En dan kon ik rm, te verwijderen, greddy.c. Die krijgt ontdoen van het. Dus dat zou werken, nadat ik bevestig dat ik wil om zich te ontdoen van het te krijgen. En ik heb effectief omgedoopt greddy.c te greedy.c. Ik gekopieerd, en dan verwijderde het origineel. Maar dat is een multi-step proces. En zeker, er is een betere manier. In feite is er. Dus laten we raken Control L, alleen maar om dit terug te brengen, en een lijst van de inhoud mijn directory weer. Dus laten we zeggen, oh, ik heb een fout gemaakt. Ik eigenlijk echt willen te roepen dat bestand greddy.c. In een klap, kan ik typ bewegen greedy.c te greddy.c. Druk op Enter. En nu, ik heb niet te kopiëren en te verwijderen, Ik was gewoon in staat om het te hernoemen. One-stop-shopping. Nu zijn er een heleboel andere basic command line utilities die u kunt gebruiken met de Linux command line. En we zullen bespreken een heleboel van hen in de toekomst in de CS50. Maar voor nu, maar het krijgen van uw voeten nat met het werken met deze terminal milieu, deze vijf opdrachten moet je behoorlijk ver in het navigeren rond en werken met bestanden in je IDE of op welke Linux-gebaseerde besturingssysteem u gebruikt. Als je nieuwsgierig bent en je wilt vooruit kijken een beetje op een bepaald van de command line-opdrachten we zullen gebruiken in de toekomst, Hier is een lijst van een paar van de meest voorkomende. Ik ben Doug Lloyd. Dit is CS50.