[Música tocando] Doug LLOYD: Aceptar. Entón imos falar sobre como usar a liña de comandos de Linux. Agora, o CS50 IDE, ou en realidade, incluso un aparello CS50, se está familiarizado con iso, ou está tomando unha versión máis antiga do CS50, é unha máquina baseada en nube que corre Ubuntu, que é un dos diversos sabores do sistema operativo Linux. Sistema operativo Linux é favorecido por programadores, porque é só frío, non? Moitas distribucións Linux modernas teñen interfaces gráficas, que tamén chamamos GUIs, G-Ou-I, para permitir unha navegación fácil baseado no rato, que probablemente está familiarizado con, se vostede é un usuario de Windows ou Mac, movendo-se o rato, premendo dúas veces en iconas, e así por diante. Aínda así, con todo, como un programador, e aínda que o IDE contén a capacidade de facer algunha gráfica de usuario material, facer clic, e arrastrando, e todo iso, aínda está a usar o seu fiestra de terminal con bastante frecuencia. E pode facer moitas das mesmas tarefas que podes facer un rato con comandos de teclado. E nós imos falar un pouco sobre o que algúns deses comandos está agora. Agora, estes comandos poden ser usados en calquera operativo baseado en Unix sistema, que inclúe o Linux, pero tamén inclúe o Mac OS. Se abre o Terminal no seu Mac, pode usar estes comandos exactos. O Windows tamén ten Command Ventá, pero algúns dos comandos son lixeiramente diferentes, por iso, realmente non funciona, porque o Windows non é un sistema baseado en Unix. Entón, imos dar un ollo a algunhas destes comandos Linux. O primeiro que vai probablemente usar unha morea é ls. Isto é un l minúsculo, seguido por un s minúscula, que é curto para lista. E o que a orde lista fai é dálle unha lectura de todos os ficheiros e carpetas no directorio actual. Para que poida ver todo o que poida chegar desde onde está actualmente. Entón abrín aquí o IDE CS50. E eu estou indo a zoom-in nun segunda para darlle un ollar máis Nós prestamos moita atención, pero aquí está o cadro xeral que o IDE parece. Á esquerda, pode ver, temos unha árbore de ficheiros, o que probablemente está familiarizado con, premendo dúas veces, e arquivos e carpetas, e todas esas cousas. Así que aínda está alí no aparello CS50. No centro na parte superior é onde está vai escribir o seu código, xa fai clic nun ficheiro. E no fondo, nós ten unha fiestra de terminal, que é onde podemos realizar estes comandos do terminal. Eu estou indo a zoom-in e de cabeza aquí, só para mostrar que, de feito, podo clic sobre estes arquivos e carpetas. Entón, claramente, onde actualmente son, teño dúas carpetas, chamados pset0 e pset1, e tres arquivos, un chamado Ola, un chamado hello.c, e un chamado hello.txt. Entón, imos baixar para o terminal ventá e obter unha mirada máis atento. Entón, nós só falamos, unha vez máis, sobre a feito de que temos tres arquivos e dous carpetas no directorio actual. Se eu escribir ls, o que de novo é a orde para consultar o contido do actual directorio, e entón eu prema Intro, mire o que eu vexo, Ola, hello.c, hello.txt, pset0 e pset1. pset0 e pset1 son cor azul, para indicar a vostede que eses son os directorios que puidésemos navegar polos. E nós imos aprender un pouco pouco sobre como navegar en directorios nun minuto. E todas as outras cousas é de cor negra, se é un ficheiro de texto ou un código fonte ficheiro, e verde, se é un ficheiro executábel. Entón, claramente, iso significa que eu podería executar un programa chamado, Ola. Iso é o que o verde non significa. Pero, basicamente, escribindo o comando ls permitiu me a ollar a todo o que existe no meu directorio actual, que coincide co que vemos aquí, no representación gráfica do mesmo. O seguinte comando que vai probablemente utilizar un pouco é cd, minúsculas c, d minúscula, que é curto para cambiar directorio. Isto nos permite facer o que eu era falando dun segundo atrás, que é para navegar entre directorios ao mando A liña, en oposición aos premendo dúas veces nos cartafoles. Entón, se nós digitamos cd e, a continuación, o nome dun directorio, podemos entrar nese directorio. Como un aparte, saber que o nome do directorio actual é sempre punto eo nome do directorio Un nivel superior de onde estamos agora, que é o nome do cartafol en que a nosa carpeta é, punto, dot-- ou en que a nosa carpeta é, é punto, punto. E se está curioso sobre o nome do seu directorio, podes escribir pwd, que significa para o directorio de traballo actual. Imos dar un ollo en todos estes Agora, por rúbrica ao seu IDE CS50. Entón, eu estou de volta ao meu espazo de traballo agora. E eu vou zoom-in de novo no terminal, para que poidamos dar un ollo a moverse dentro do IDE. Entón, eu estou indo a incluír o contido do meu directorio de novo, só para rectificados nos onde estamos. Entón, se eu escribir ls, que é para lista de novo, Vexo que eu poida chegar a pset0 e pset1. Estes son os directorios Podo comezar a partir de aquí. Eu sei diso porque o IDE dá me unha pista, colorido-as azul. Imos dicir que quero entrar no meu directorio pset1, porque eu estou a traballar nun conxunto de problemas. Podo escribir cd-- novo, abreviación de cambiar directory-- espazo, pset1. E se eu prema Intro, teña en conta o que pasa. Non se parece moito pasou. Pero se ollar para o prompt, el agora me di que eu estou en ~ / workspace / pset1. Teño navegado na pset1 cartafol que estaba dentro do meu espazo de traballo. E se eu escribir ls, vexo algúns cousas distintas aquí, non? Esta non é a mesma lista que vin antes. Teño navegado en pset1. E agora, cando escribir ls, eu son recibindo o contexto do que podo ver dentro do cartafol pset1. Agora, eu vou escribir control l, o que só limpa a pantalla. E eu estou indo a incluír o contido do directorio de novo, só para que poida ver. Eu só quería facelo limpar algunhas das cousas que viu alí embaixo e para evitar que esta de ir lonxe de máis abaixo fóra do intervalo. Agora, eu dixen anteriormente que, se eu queira para navegar ao directorio actual, I pode escribir cd espazo dot. Prema Intro. Non fai nada, non? Eu estou cambiando directorios ao directorio actual. Vostede non sempre vai atopar unha necesidade para un único punto, pero vai ocasionalmente. Imos dicir que quero para subir un nivel. Quero volver meu directorio do espazo de traballo. Non podo escribir cd espazo de traballo, non hai tal ficheiro ou directorio. E a razón para isso-- se eu escribir ls un tempo-- é que non hai ningún directorio chamado espazo de traballo dentro do meu directorio pset1. Eu estou indo a limpar a miña pantalla de novo co control l. Lembre que eu dixen anterior, con todo, que nos pode ir de volta con punto, punto. Ese é o nome do directorio pai. Entón, se eu escribir cd, espazo, punto, punto e prema a tecla Intro, agora ollar para o que pasou. Ventá de consola miña dime que eu son de volta no meu directorio ~ / workspace. Eu me mudei para un nivel superior, grazas a punto, punto. Agora, imos dicir que está a usar un sistema operativo que está baseado en Linux, pero non necesariamente dígame onde estou. Este acontece nos din que Estou en ~ / workspace agora, dereito no poder. Pero eu podería ser completamente perdido nunha confusión de cartafoles, e eu non teño ningunha idea de onde estou e ningunha idea de onde eu quero volver. Hai dúas cousas que podo facer. Primeiro de todo, podo descubrir fóra onde estou, escribindo pwd. Ese é o meu directorio de traballo actual. E se eu prema Intro, el me di exactamente onde estou. Agora / home / ubuntu é o longo camiño de dicir, til, cal é o seu directorio persoal. Pero me di que eu estou en home / ubuntu / escritorio, ou ~ / workspace. Eu estou indo a ir para meu directorio pset1 novo, e eu estou indo a incluír o contido. E vexo que teño outro directorio alí, chamado extras. Entón, eu estou indo a cd en extras, e entón eu vou limpar miña pantalla. Entón, agora, eu estou moi lonxe, non? E se eu queira facer backup ao espazo de traballo inmediatamente? Hai algunhas cousas que eu podería facer. Podería escribir cd, punto, punto, corte, punto, punto, para subir un nivel e, a continuación, outro nivel. Pero iso é unha especie de irritante. Entón, se eu queira voltar só o meu directorio home, til, I pode escribir cd con nada despois. Cd, Intro. E agora, eu estou en til. E se eu queira chegar ao espazo de traballo, Podo só escribir cd espazo de traballo. E así é como se traballa cambio de directorios dentro do IDE CS50 ou calquera Linux sistema operativo na liña de comandos. Todo ben. O seguinte que pode vir a cadra é mkdir, que é curto para facer un directorio, se eu teño para crear un novo cartafol. Se está familiarizado con o sistema operativo GUI, pode facer clic co botón dereito. E entón, cando o menú emerxente aparece, seleccione Novo cartafol. Isto pode ser como Xa o fixo antes. Pero tamén podemos crear directorios na liña de comandos. Entón, nós estamos de volta no IDE. Vou zoom-in no terminal e listar os contidos do meu directorio de novo, só para dar un cadro de referencia. Imos dicir que, agora, eu teño rematar de traballar en conxunto de problemas 0 e conxunto de problemas 1. Entón, quero crear un novo directorio para traballar en conxunto de problemas para 2. Como podo facer iso? Ben, unha vez máis, eu podería premer co botón dereito no á esquerda alí e escolla Novo cartafol e crear un directorio pset2. Que ía traballar moito. Pero entón eu tamén facelo no liña de comandos moi rapidamente, escribindo mkdir, eu espaço-- ingresaran en n, mas-- espazo pset2. Se eu prema Intro e, a continuación, eu incluír o contido do meu directorio novo, Vexo que, mira, agora Eu teño unha carpeta pset2. E podo ir a que o uso de cd e facer todo o traballo que eu teño que facer para pset2. De feito, eu vou pop aquí realmente rápido para a árbore de ficheiros. E podes ver que, tamén, en a gráfica File Explorer, vemos que o directorio pset2 Tamén se creou alí. E podo navegar ata el, usando a GUI tamén. A próxima vez, e iso é probablemente vai vir a cadra é cp, que é curto para a copia. Copiar, a diferenza de todos os demais comandos que xa vimos antes, recibe dous argumentos, unha fonte, o nome do ficheiro que quere copiar, e un destino, onde quere copiar o ficheiro. É moi fácil de copiar un ficheiro, entón imos facer. Entón, nós estamos de volta no IDE. Vou listar os contidos do meu directorio actual con ls. Agora, imos dicir que quero para facer unha copia de hello.txt. Unha vez máis, a partir da árbore de ficheiros no á esquerda, a interface gráfica, Podería facer clic co botón dereito en hello.txt, facer unha copia, pegar a copia. Pero podo facelo moi rápido na liña de comandos tamén. Imos dicir que quero copiar hello.txt para hi.txt. Podo cp, espazo, hello.txt. Ese é o meu ficheiro de orixe, entón é por iso Vou escoller a en primeiro lugar. E entón eu teño nomear o ficheiro de destino, hi.txt. Eu prema Intro. E se eu listar o contido da miña directorio, de novo, hai hi.txt. Fixen unha copia do mesmo. E, de feito, se eu fose en hi.txt, eu podería ver que sería unha exacta duplicar de todo o que existía no meu arquivo hello.txt. Entón é así que copiar un arquivo. Pero e se quere copiar un directorio completo? Entón, por un segundo, imos dar un ollo o que está no meu directorio pset0. Se eu cd pset0 e incluír o contido, Eu teño un directorio chamado, mostra, e un ficheiro de cero, scratch.sb2. Entón, iso é bo saber. Entón, imos limpar a pantalla, e eu estou indo a volver para o meu directorio do espazo de traballo para un segundo. Imos dicir que, agora, quero facer unha copia do meu directorio pset0. Non podo só dicir cp pset0 pset3, por exemplo. Recibirá esta mensaxe de raro, omitindo directorio pset0. Por que obter esta mensaxe? Ben, resulta que, cando ten un directorio que ten outras cousas para dentro del, o comando cp realmente non necesariamente saben o que facer con el. Necesitamos explicitamente dicir Linux, o terminal, Quero que copiar o directorio pset0 e copia cada cartafol que existe no interior del e de todos os ficheiros existe dentro del. Noutras palabras, eu teño de ti para recursivamente mergullo pset0 e faga unha copia de todo alí dentro. Se eu queira facelo, o que podo facer é cp-r, para recursivo, pset3 pset0. Prema Intro. Agora, se eu incluír o contido do meu directorio, Vexo hai o pset3 directorio que eu poida traballar. E se cd I en pset3 agora e logo incluír o contido, mire, hai mostra e scratch.sb2 novo. Entón, iso é moi legal. Entón é así que podes copiar un todo directorio, e non só un único ficheiro. Entón, se quere copiar un directorio, basta lembrar para usar o sinalizador -r cando está traballando co comando cp. Todo ben. Entón eu copiei un ficheiro, pero Eu teño feito isto por erro. E agora, quero me librar del. Como podo facer iso? De novo, se está familiarizado cunha interface GUI, pode facer clic co botón dereito e basta escoller Eliminar. E vai enviá-lo para o lixo ou a papeleira. Pero na liña de comandos, nós pode simplemente escribir rm, para eliminar, e, a continuación, o nome do arquivar queremos librar. Agora, rm é moi coidadoso. Fai unha morea de dobre control, para asegurarse de que realmente quere borrar o ficheiro. El non quere cometer erros, porque non hai lixo aquí. Xa que eliminar un ficheiro, el marchou. E non hai realmente ningunha forma de recuperalo. Entón, necesitamos ser moi coidado, e así por rm vai ser moi coidadosos para nós. Entón, imos voltar para o IDE e se librar deste arquivo hi.txt que eu creei un minuto con copia. Entón, nós estamos no IDE. E eu listar o contido do meu directorio de novo, só para dar algún contexto. Quero dicir, pode ver que hai hi.txt, que eu creei un pouco atrás. Agora, quero me librar del. Como podo facer iso? De novo, só rm. Entón, podo escribir rm hi.txt e prema Intro. E non estar rm moito coidado para nós e asegurarse de que, en realidade, quere eliminar este arquivo. Realmente quere borrar regulares baleiro hi.txt ficheiro? Isto é só como un operativo sistema, como Windows ou Mac, que pode ser familiarizado con aparecendo que a caixa di é realmente seguro de que quere facer isto. Eu estou seguro que eu quero tanto, entón eu vou escribir, sim-- ou tamén podería só escriba y-- e prema Intro. E se eu listar o contido da miña directorio de novo, hi.txt está desaparecido. Non é malo, non? Imos prema Control L, só para se librar de todas estas cousas e levarnos de volta ao a parte superior da pantalla. Agora ben, existe unha forma de rm curtocircuíto, polo que que non pedir-nos esta pregunta. Nós realmente queremos saber para se librar deste arquivo, e nós nin sequera quero por facer a pregunta. Como facemos isto? Ben, podemos especificar un bandeira extra, así como nós fixo cp onde nós podería engadir a opción -r, para copiar recursivamente nunha directorio. Hai outra bandeira para rm, que é -f, que é para forzar rm para facer exactamente o que estamos dicindo a el para facer. Entón, imos dicir que, agora, quero para se librar do meu arquivo hello.txt. Eu non quero que ninguén. Que podo facer? Ben, podo rm hello.txt -f. ¿Que pensas que é vai pasar aquí? Se foi. Nin sequera pedirme a pregunta. E, de feito, se eu listar o contido do meu directorio novo, marchou. Non hai ningún undo aquí. hello.txt se foi, e eu non estaba aínda preguntou se eu quería excluílo. E se eu queira desfacerse de todo un directorio? O xeito como facelo é moi semellantes para copiar. Se quere eliminar un directorio, non só quere borrar o cartafol, quere para borrar todo dentro del. E para que use -r, para recursivamente eliminar un directorio. Entón, imos rm -r pset2. Non estou realmente traballando pset2, para que eu poida me librar dese directorio. Eu prema Intro. Quero eliminar o directorio, pset2? Si, eu fago. E se eu listar o contido meu directorio novo, marchou. Todo ben? Unha variación sobre este tema. Entón, eu vou limpar a pantalla de novo, para poñer todo na parte superior. Hit ls. Agora, quero me librar do meu directorio pset3, e realmente sei que quero se librar do meu directorio pset3. Podo de forma recursiva e forzosamente eliminar meu directorio pset3. Agora, vai ser realmente coidado cando está usando rm -rf. Como programar máis, será algo que acaba de facer moi rapidamente. E, de feito, eu fago iso o tempo. Pero isto pode levar a algunha consecuencias desastrosas, se accidentalmente eliminar as cousas mal. Entón, quero que estea en conta que esta é unha opción dispoñible para ti, pero usalo con moderación, e usalo con cautela. Eu sei para un feito que eu non estou a traballar no meu conxunto de problemas 3 anymore, así que eu son vai se librar de todos estes arquivos. E sei que eu non quero ser solicitado en cada momento, se eu queira eliminar un ficheiro, polo que estou indo a rm-rf pset3. Nin sequera me preguntar se eu quería librarse del. Eu bati ls. pset3 está desaparecido. Entón, iso é todas as variacións que pode usar para se librar de arquivos con rm. A orde da liña de comandos que é pasado vai moi útiles para ti é mv, que é curto para o movemento. Movemento é basicamente equivalente a renomear. El move un arquivo dun lugar a outro, a fonte ao destino. A ver onde usando un movemento poder ser útil na fiestra de terminal. Entón, eu estou no meu pset1 directorio, e teño notado algo deu un pouco mal. Eu estaba a traballar no meu problema ganancioso, pero eu accidentalmente nomeouno greddy. Entón, cando eu tentar executa-lo través check50, realmente non funciona. Eu teño un par de opcións. Poderíamos facer o que fixemos antes, que é facer unha copia do arquivo. Podería copiar greddy.c para greedy.c, non? Prema Intro. Vexo que ambos os arquivos están alí. E entón eu podería rm, para eliminar, greddy.c. Que se librar dela. Así que ía traballar, despois de que eu confirmo que quero me librar del. E eu efectivamente teñen greddy.c renomeado para greedy.c. Copiei-lo e, a continuación eliminado o orixinal. Pero iso é un proceso de varias etapas. E, por suposto, hai un xeito mellor. En realidade, non existe. Entón, imos bater Control L, só para traer iso de volta cara arriba, e incluír o contido do meu directorio novo. Entón, imos dicir, oh, eu cometín un erro. En realidade, eu realmente quería para chamar o ficheiro greddy.c. Dunha soa vez, podo escribir mover greedy.c para greddy.c. Prema Intro. E agora, eu non teño para copiar e eliminar-lo, Só puido cambiar o nome. One-stop shopping. Agora, hai unha morea de outras utilidades básicas de liña de comandos que pode usar con a liña de comandos de Linux. E nós estamos discutindo unha morea deles no futuro, en CS50. Pero, por agora, só comezando os seus pés mollada co traballo con este terminal ambiente, estes cinco comandos deberá facelo moi lonxe en navegar arredor e traballar con arquivos no seu IDE ou en calquera baseado en Linux sistema operativo que está a usar. Se está curioso e quere mirar para adiante un pouco nalgún dos comandos de liña de comandos imos usar no futuro, aquí está a lista de unha parella dos máis comúns. Eu son Doug Lloyd. Este é CS50.