[Música tocando] DOUG LLOYD: OK. Então vamos falar sobre como usar a linha de comando do Linux. Agora, o CS50 IDE, ou em verdade, até mesmo um aparelho CS50, se você estiver familiarizado com isso, ou você está tomando uma versão mais antiga do CS50, é uma máquina baseada em nuvem que corre Ubuntu, que é um dos diversos sabores do sistema operacional Linux. Sistema operacional Linux é favorecido por programadores, porque é apenas mais frio, certo? Muitas distribuições Linux modernas têm interfaces gráficas, que também chamamos GUIs, G-U-I, para permitir uma navegação fácil baseado no mouse, que você provavelmente está familiarizado com, se você é um usuário do Windows ou Mac, movendo-se o mouse, clicando duas vezes em ícones, e assim por diante. Ainda assim, porém, como um programador, e mesmo que o IDE contém a capacidade de fazer alguma gráfica do usuário material, clicar, e arrastando, e tudo isso, você ainda estará usando o seu janela de terminal com bastante freqüência. E você pode fazer muitas das mesmas tarefas que você pode fazer com um rato com comandos do teclado. E nós vamos falar um pouco sobre o que alguns desses comandos está agora. Agora, estes comandos podem ser usados em qualquer operacional baseado em Unix sistema, que inclui o Linux, mas também inclui o Mac OS. Se você abrir o Terminal em seu Mac, você pode usar esses comandos exatos. O Windows também tem Command Prompt, mas alguns dos comandos são ligeiramente diferentes, por isso, ele realmente não funciona, porque o Windows não é um sistema baseado em Unix. Então, vamos dar uma olhada em algumas destes comandos Linux. O primeiro que você vai provavelmente usar um monte é ls. Isso é um l minúsculo, seguido por um s minúsculo, que é curto para lista. E o que o comando lista faz é dá-lhe uma leitura de todos os arquivos e pastas no diretório atual. Assim você pode ver tudo o que puder chegar a partir de onde você está atualmente. Então eu abri aqui o IDE CS50. E eu estou indo para zoom-in em um segunda para dar-lhe um olhar mais atento, mas aqui está o quadro geral do que o IDE parece. À esquerda, você pode ver, temos uma árvore de arquivos, o que provavelmente você está familiarizado com, clicando duas vezes, e arquivos e pastas, e todas essas coisas. Assim que ainda está lá no aparelho CS50. No centro no topo é onde você está vai escrever seu código, uma vez você clica em um arquivo. E na parte inferior, nós tem uma janela de terminal, que é onde podemos executar estes comandos do terminal. Eu estou indo para zoom-in e de cabeça aqui, apenas para mostrar que, de fato, eu posso clique sobre esses arquivos e pastas. Então, claramente, onde atualmente eu sou, eu tenho duas pastas, chamados pset0 e pset1, e três arquivos, um chamado Olá, um chamado hello.c, e um chamado hello.txt. Então, vamos descer para o terminal janela e obter um olhar mais atento. Então, nós apenas conversamos, mais uma vez, sobre a fato de que temos três arquivos e dois pastas no diretório atual. Se eu digitar ls, o que novamente é o comando para listar o conteúdo do actual diretório, e então eu pressione Enter, olhe o que eu vejo, Olá, hello.c, hello.txt, pset0 e pset1. pset0 e pset1 são cor azul, para indicar a você que esses são os diretórios que pudéssemos navegar nos. E nós vamos aprender um pouco pouco sobre como navegar em diretórios em um minuto. E todas as outras coisas é de cor preta, se é um arquivo de texto ou um código fonte arquivo, e verde, se é um arquivo executável. Então, claramente, isso significa que eu poderia executar um programa chamado, Olá. Isso é o que o verde não significa. Mas, basicamente, digitando o comando ls tem permitido me a olhar para tudo o que existe no meu diretório atual, que coincide com o que vemos aqui, no representação gráfica do mesmo. O próximo comando que você vai provavelmente usar um pouco é cd, minúsculas c, d minúsculo, que é curto para alterar diretório. Isso nos permite fazer o que eu era falando de um segundo atrás, que é para navegar entre diretórios no comando A linha, em oposição aos clicando duas vezes nas pastas. Então, se nós digitamos cd e, em seguida, o nome de um diretório, podemos entrar nesse diretório. Como um aparte, saber que o nome do diretório atual é sempre ponto eo nome do diretório Um nível acima de onde estamos agora, que é o nome da pasta em que nossa pasta é, ponto, dot-- ou em que a nossa pasta é, é ponto, ponto. E se você estiver curioso sobre o nome do seu diretório, você pode digitar pwd, que significa para o diretório de trabalho atual. Vamos dar uma olhada em todos estes Agora, por rubrica de volta para o IDE CS50. Então, eu estou de volta ao meu espaço de trabalho agora. E eu vou zoom-in novamente no terminal, para que possamos dar uma olhada a se movimentar dentro do IDE. Então, eu estou indo para listar o conteúdo do meu diretório novamente, apenas para rectificados nos onde estamos. Então, se eu digitar ls, que é para lista novamente, Eu vejo que eu possa chegar a pset0 e pset1. Esses são os diretórios Eu posso começar a partir daqui. Eu sei disso, porque o IDE dá me uma pista, colorindo-as azul. Vamos dizer que eu quero entrar no meu diretório pset1, porque eu estou trabalhando em um conjunto de problemas. Eu posso digitar cd-- novamente, abreviação de alterar directory-- espaço, pset1. E se eu pressione Enter, observe o que acontece. Ele não se parece com muita coisa aconteceu. Mas se você olhar para o prompt, ele agora me diz que eu estou em ~ / workspace / pset1. Eu tenho navegado na pset1 pasta que estava dentro do meu espaço de trabalho. E se eu digitar ls, vejo alguns coisas diferentes aqui, certo? Esta não é a mesma lista que eu vi antes. Eu tenho navegado em pset1. E agora, quando eu digitar ls, eu sou recebendo o contexto do que eu posso ver de dentro da pasta pset1. Agora, eu vou digitar controle l, o que só limpa a tela. E eu estou indo para listar o conteúdo do diretório novamente, apenas para que você possa ver. Eu só queria fazer isso para limpar algumas das coisas que você viu lá embaixo e para evitar que esta de ir longe demais para baixo fora do intervalo. Agora, eu disse anteriormente que, se eu quiser para navegar para o diretório atual, I pode digitar cd espaço dot. Pressione Enter. Ele não faz nada, certo? Eu estou mudando diretórios para o diretório atual. Você nem sempre vai encontrar uma necessidade para um único ponto, mas você vai ocasionalmente. Vamos dizer que eu quero para subir um nível. Eu quero voltar para meu diretório do espaço de trabalho. Não consigo digitar cd espaço de trabalho, não há tal arquivo ou diretório. E a razão para isso-- se eu digitar ls mais um tempo-- é que não há nenhum diretório chamado espaço de trabalho dentro do meu diretório pset1. Eu estou indo para limpar a minha tela novamente com o controle l. Lembre-se que eu disse anterior, no entanto, que nós pode navegar de volta com ponto, ponto. Esse é o nome do diretório pai. Então, se eu digitar cd, espaço, ponto, ponto e pressione a tecla Enter, agora olhar para o que aconteceu. Prompt de comando Minha me diz que eu sou de volta no meu diretório ~ / workspace. Eu me mudei para um nível acima, graças a ponto, ponto. Agora, vamos dizer que eu estou usando um sistema operacional que é baseado em Linux, mas não necessariamente diga-me onde estou. Este acontece nos dizem que Estou em ~ / workspace agora, direito no prompt. Mas eu poderia ser completamente perdido em uma confusão de pastas, e eu não tenho nenhuma idéia de onde estou e nenhuma idéia de onde eu quero voltar para. Há duas coisas que eu posso fazer. Primeiro de tudo, eu posso descobrir para fora onde eu estou, digitando pwd. Esse é o meu diretório de trabalho atual. E se eu pressione Enter, ele me diz exatamente onde estou. Agora / home / ubuntu é o longo caminho de dizer, til, qual é o seu diretório home. Mas ele me diz que eu estou em home / ubuntu / área de trabalho, ou ~ / workspace. Eu estou indo para navegar para meu diretório pset1 novamente, e eu estou indo para listar o conteúdo. E eu vejo que eu tenho um outro diretório lá, chamado extras. Então, eu estou indo para cd em extras, e então eu vou limpar minha tela. Então, agora, eu estou muito longe, certo? E se eu quiser fazer backup para o espaço de trabalho imediatamente? Há algumas coisas que eu poderia fazer. Eu poderia digitar cd, ponto, ponto, corte, ponto, ponto, para subir um nível e, em seguida, outro nível. Mas isso é uma espécie de irritante. Então, se eu quiser voltar para apenas o meu diretório home, til, I pode digitar cd com nada depois. Cd, Enter. E agora, eu estou em til. E se eu quiser chegar ao espaço de trabalho, Eu posso apenas digitar cd espaço de trabalho. E é assim que você trabalha mudança de diretórios dentro do IDE CS50 ou qualquer Linux sistema operacional na linha de comando. Tudo certo. O próximo que pode vir a calhar é mkdir, que é curto para fazer um diretório, se eu preciso para criar uma nova pasta. Se você estiver familiarizado com o sistema operativo GUI, você pode clicar com o botão direito. E então, quando o menu de contexto aparece, selecione Nova Pasta. Isso é provavelmente como Você já fez isso antes. Mas também podemos criar diretórios na linha de comando. Então, nós estamos de volta no IDE. Vou zoom-in no terminal e listar o conteúdo de meu diretório novamente, apenas para nos dar um quadro de referência. Vamos dizer que, agora, eu tenho terminar de trabalhar em conjunto de problemas 0 e conjunto de problemas 1. Então, eu quero criar um novo diretório para trabalhar em conjunto de problemas para 2. Como faço isso? Bem, mais uma vez, eu poderia clicar com o botão direito no lado esquerdo lá e escolha Nova pasta e criar um diretório pset2. Que iria trabalhar muito. Mas então eu também fazê-lo no linha de comando muito rapidamente, digitando mkdir, eu espaço-- digitado em n, mas-- espaço pset2. Se eu pressione Enter e, em seguida, eu listar o conteúdo de meu diretório novo, Vejo que, olha, agora Eu tenho uma pasta pset2. E eu posso navegar em que o uso de cd e fazer todo o trabalho que eu preciso fazer para pset2. Aliás, eu vou pop aqui realmente rapidamente para a árvore de arquivos. E você pode ver que, também, em a gráfica File Explorer, podemos ver que o diretório pset2 Também foi criado lá. E eu posso navegar até ele, usando a GUI também. A próxima vez e isso é provavelmente vai vir a calhar é cp, que é curto para a cópia. Copiar, ao contrário de todos os outros comandos que já vimos antes, recebe dois argumentos, uma fonte, o nome do arquivo que você deseja copiar, e um destino, onde você deseja copiar o arquivo. É muito fácil de copiar um arquivo, então vamos fazer isso. Então, nós estamos de volta no IDE. Vou listar o conteúdo do meu diretório atual com ls. Agora, vamos dizer que eu quero para fazer uma cópia de hello.txt. Mais uma vez, a partir da árvore de arquivos no à esquerda, a interface gráfica, Eu poderia clicar com o botão direito em hello.txt, fazer uma cópia, colar a cópia. Mas eu posso fazer isso muito rapidamente na linha de comando também. Vamos dizer que eu quero copiar hello.txt para hi.txt. Eu posso cp, espaço, hello.txt. Esse é o meu arquivo de origem, então é por isso Eu vou escolher a em primeiro lugar. E então eu preciso nomear o arquivo de destino, hi.txt. Eu pressione Enter. E se eu listar o conteúdo de minha diretório, novamente, há hi.txt. Fiz uma cópia do mesmo. E, na verdade, se eu fosse em hi.txt, eu poderia ver que seria uma exata duplicar de tudo o que existia no meu arquivo hello.txt. Então é assim que você copiar um arquivo. Mas e se você quiser copiar um diretório inteiro? Então, por um segundo, vamos dar uma olhada o que está em meu diretório pset0. Se eu cd pset0 e listar o conteúdo, Eu tenho um diretório chamado, amostra, e um arquivo de zero, scratch.sb2. Então, isso é bom saber. Então, vamos limpar a tela, e eu estou indo para voltar para o meu diretório do espaço de trabalho para um segundo. Vamos dizer que, agora, eu quero fazer uma cópia do meu diretório pset0. Eu não posso apenas dizer cp pset0 pset3, por exemplo. Você receberá esta mensagem de estranho, omitindo diretório pset0. Por que você obter essa mensagem? Bem, acontece que, quando você tem um diretório que tem outras coisas para dentro dele, o comando cp realmente não necessariamente sabem o que fazer com ele. Precisamos explicitamente dizer Linux, o terminal, Eu quero que você copiar o diretório pset0 e cópia cada pasta que existe no interior dele e de todos os arquivos existe dentro dele. Em outras palavras, eu preciso de você para recursivamente mergulhar em pset0 e faça uma cópia de tudo lá dentro. Se eu quiser fazer isso, o que posso fazer é cp-r, para recursivo, pset3 pset0. Pressione Enter. Agora, se eu listar o conteúdo do meu diretório, Eu vejo há o pset3 diretório que eu possa trabalhar. E se cd I em pset3 agora e em seguida, listar o conteúdo, olhe, há amostra e scratch.sb2 novamente. Então, isso é muito legal. Então é assim que você pode copiar um todo diretório, e não apenas um único arquivo. Então, se você quiser copiar um diretório, basta lembrar para usar o sinalizador -r quando você está trabalhando com o comando cp. Tudo certo. Então eu copiei um arquivo, mas Eu tenho feito isso por engano. E agora, eu quero me livrar dele. Como faço isso? Novamente, se você está familiarizado com uma interface GUI, você pode clicar com o botão direito e basta escolher Excluir. E vai enviá-lo para o lixo ou a Lixeira. Mas na linha de comando, nós pode simplesmente digitar rm, para remover, e, em seguida, o nome do arquivar queremos livrar. Agora, rm é muito cuidadoso. Ele faz um monte de duplo controlo, para se certificar de que você realmente quer deletar o arquivo. Ele não quer cometer erros, porque não há Lixeira aqui. Uma vez que excluir um arquivo, ele foi embora. E não há realmente nenhuma maneira de recuperá-lo. Então, precisamos ser bastante cuidado, e assim por rm vai ser muito cuidadosos para nós. Então, vamos voltar para o IDE e se livrar desse arquivo hi.txt que eu criei um minuto atrás com cópia. Então, nós estamos no IDE. E eu listar o conteúdo de meu diretório novamente, apenas para nos dar algum contexto. Quero dizer, você pode ver que há hi.txt, que eu criei um pouco atrás. Agora, eu quero me livrar dele. Como eu faço? Novamente, apenas rm. Então, eu posso digitar rm hi.txt e pressione Enter. E não estar rm muito cuidado para nós e certificando-se que, na verdade, deseja excluir este arquivo. Você realmente deseja remover regulares vazio hi.txt arquivo? Isso é apenas como um operacional sistema, como o Windows ou Mac, que você pode ser familiarizado com aparecendo que a caixa diz é você realmente certeza de que quer fazer isto. Eu tenho certeza que eu quero isso, então eu vou digitar, sim-- ou eu também poderia apenas escreva y-- e pressione Enter. E se eu listar o conteúdo de minha diretório novamente, hi.txt está desaparecido. Não é ruim, certo? Vamos pressione Control L, apenas para se livrar de todas essas coisas e levar-nos de volta ao a parte superior da tela. Ora, existe uma forma de rm curto-circuito, por isso, que ele não pedir-nos essa pergunta. Nós realmente queremos saber para se livrar desse arquivo, e nós nem sequer quero a ser feito a pergunta. Como fazemos isso? Bem, podemos especificar um bandeira extra, assim como nós fez com cp onde nós poderia adicionar a opção -r, para copiar recursivamente em um diretório. Há uma outra bandeira para rm, que é -f, que é para forçar rm para fazer exatamente o que estamos dizendo a ele para fazer. Então, vamos dizer que, agora, eu quero para se livrar do meu arquivo hello.txt. Eu não quero que qualquer um. O que posso fazer? Bem, eu posso rm hello.txt -f. O que você acha que é vai acontecer aqui? Foi-se. Nem sequer pedir-me a pergunta. E, de fato, se eu listar o conteúdo de meu diretório novo, ele foi embora. Não há nenhum undo aqui. hello.txt se foi, e eu não estava ainda perguntou se eu queria excluí-lo. E se eu quiser se livrar de todo um diretório? A maneira como você fazer isso é muito semelhantes para copiar. Se você quiser excluir um diretório, você não apenas quer apagar o diretório, você quer para apagar tudo dentro dele. E para que você use -r, para recursivamente excluir um diretório. Então, vamos rm -r pset2. Eu não estou realmente trabalhando em pset2, para que eu possa me livrar desse diretório. Eu pressione Enter. Eu quero remover o diretório, pset2? Sim. E se eu listar o conteúdo de meu diretório novo, ele foi embora. Tudo certo? Mais uma variação sobre este tema. Então, eu vou limpar a tela novamente, para colocar tudo no topo. Hit ls. Agora, eu quero me livrar de meu diretório pset3, e eu realmente sei que eu quero se livrar do meu diretório pset3. Eu posso de forma recursiva e forçosamente remover meu diretório pset3. Agora, você vai ser realmente cuidado quando você estiver usando rm -rf. Como você programar mais, vai ser algo que você acabou de fazer muito rapidamente. E, de fato, eu faço isso o tempo todo. Mas isso pode levar a alguma conseqüências desastrosas, se você acidentalmente excluir a coisa errada. Então, eu quero que você esteja ciente de que esta é uma opção disponível para você, mas usá-lo com moderação, e usá-lo com cautela. Eu sei para um fato que eu não estou trabalhando no meu conjunto de problemas 3 anymore, assim que eu sou vai se livrar de todos esses arquivos. E eu sei que eu não quero ser solicitado a cada momento, se eu quiser excluir um arquivo, por isso estou indo para rm-rf pset3. Nem sequer me perguntar se eu queria se livrar dele. Eu bati ls. pset3 está desaparecido. Então, isso é todas as variações que você pode usar para se livrar de arquivos com rm. O comando de linha de comando que é passado vai muito úteis para você é mv, que é curto para o movimento. Movimento é basicamente equivalente a renomear. Ele move um arquivo de um local para outro, a fonte para o destino. Vamos ver onde usando um movimento poder ser útil na janela de terminal. Então, eu estou no meu pset1 diretório, e tenho notado algo deu um pouco errado. Eu estava trabalhando no meu problema ganancioso, mas eu acidentalmente nomeou-greddy. Então, quando eu tentar executá-lo através check50, ele realmente não funciona. Eu tenho um par de opções. Nós poderíamos fazer o que nós fizemos antes, que é fazer uma cópia do arquivo. Eu poderia copiar greddy.c para greedy.c, certo? Pressione Enter. Eu vejo que ambos os arquivos estão lá. E então eu poderia rm, para remover, greddy.c. Que se livrar dela. Assim que iria trabalhar, depois que eu confirmo que eu quero me livrar dele. E eu efetivamente têm greddy.c renomeado para greedy.c. Copiei-lo e, em seguida removido o original. Mas isso é um processo de várias etapas. E, certamente, há uma maneira melhor. Na verdade, não existe. Então, vamos bater Controle L, apenas para trazer isso de volta para cima, e listar o conteúdo de meu diretório novo. Então, vamos dizer, oh, eu cometi um erro. Na verdade, eu realmente queria para chamar esse arquivo greddy.c. De uma só vez, eu posso digitar mover greedy.c para greddy.c. Pressione Enter. E agora, eu não tenho para copiar e removê-lo, Eu só foi capaz de mudar o nome. One-stop shopping. Agora, há um monte de outras utilidades básicas de linha de comando que você pode usar com a linha de comando do Linux. E nós estaremos discutindo um monte deles no futuro, em CS50. Mas, por agora, apenas começando seus pés molhada com o trabalho com este terminal ambiente, estes cinco comandos deverá fazê-lo muito longe em navegar ao redor e trabalhar com arquivos em seu IDE ou em qualquer baseado em Linux sistema operacional que você está usando. Se você está curioso e quiser olhar para frente um pouco em algum dos comandos de linha de comando vamos usar no futuro, aqui está uma lista de um casal dos mais comuns. Eu sou Doug Lloyd. Este é CS50.