1 00:00:00,650 --> 00:00:07,799 Tudo bem, pessoal, obrigado por virem. 2 00:00:02,428 --> 00:00:07,799 Esse é o semestre que faltava na sua fomação em ciência da computação. 3 00:00:07,799 --> 00:00:11,519 Ou, pelo menos, é assim que decidimos nomear 4 00:00:09,960 --> 00:00:13,679 este curso. Se não é pra essa aula que 5 00:00:11,519 --> 00:00:15,900 você veio, então você entrou na sala errada. Nós 6 00:00:13,679 --> 00:00:19,590 estaremos aqui por mais ou menos 1h só 7 00:00:15,900 --> 00:00:21,180 para ajustar suas expectativas e... eu quero falar 8 00:00:19,590 --> 00:00:23,789 um pouco com vocês sobre o por quê 9 00:00:21,180 --> 00:00:25,980 de estarmos dando este curso. O curso 10 00:00:23,789 --> 00:00:29,670 se originou de uma observação que o Anish, 11 00:00:25,980 --> 00:00:33,030 o José e eu fizemos enquanto dávamos monitoria para vários 12 00:00:29,670 --> 00:00:34,710 cursos no MIT. Basicamente, 13 00:00:31,320 --> 00:00:34,710 todos nós, cientistas da computação, sabemos 14 00:00:34,710 --> 00:00:38,370 que computadores são ótimos em fazer 15 00:00:36,420 --> 00:00:41,250 tarefas repetitivas e automatizar coisas. 16 00:00:38,370 --> 00:00:43,020 Mas muitas vezes não percebemos que há 17 00:00:41,250 --> 00:00:45,930 muitas ferramentas que podem fazer nossos próprios 18 00:00:43,020 --> 00:00:47,520 processos de desenvolvimento melhores. Nós podemos ser 19 00:00:45,930 --> 00:00:49,620 bem mais eficientes sobre como usamos nossos 20 00:00:47,520 --> 00:00:51,989 computadores porque podemos usá-los 21 00:00:49,620 --> 00:00:54,360 como uma ferramenta para nós mesmos, não 22 00:00:51,989 --> 00:00:57,809 apenas para criar websites ou software ou 23 00:00:54,360 --> 00:00:59,670 coisas do gênero. Este curso é 24 00:00:57,809 --> 00:01:03,000 uma tentativa de abordar isso e uma tentativa 25 00:00:59,670 --> 00:01:05,220 de mostrar para vocês algumas ferramentas que vocês 26 00:01:03,000 --> 00:01:07,640 podem usar para um ótimo efeito seu dia a dia 27 00:01:05,220 --> 00:01:11,670 em pesquisa e nos estudos. 28 00:01:07,640 --> 00:01:15,150 Este vai ser um curso no qual nós 29 00:01:10,381 --> 00:01:15,150 queremos ensinar tanto como aproveitar 30 00:01:15,150 --> 00:01:19,200 ao máximo as ferramentas que você já 31 00:01:16,439 --> 00:01:20,909 conhece, mas também, assim esperamos, ensinar vocês sobre 32 00:01:19,200 --> 00:01:23,520 algumas ferramentas novas, 33 00:01:20,909 --> 00:01:26,250 além de como combinar essas ferramentas 34 00:01:23,520 --> 00:01:28,140 para produzir coisas mais poderosas do que 35 00:01:26,250 --> 00:01:31,049 vocês imaginam ser capaz de fazer com o que 36 00:01:28,140 --> 00:01:33,420 já sabem atualmente. Este curso está 37 00:01:31,049 --> 00:01:36,630 estruturado em uma séria de aulas de 1h 38 00:01:33,420 --> 00:01:38,880 e cada aula vai cobrir 39 00:01:36,630 --> 00:01:40,920 um tópico em paticular. Vocês podem checar 40 00:01:38,880 --> 00:01:43,439 o website, que está escrito lá, para 41 00:01:40,920 --> 00:01:45,990 acessar a lista de tópicos e datas 42 00:01:43,439 --> 00:01:48,210 de cada um. As aulas serão, em geral, 43 00:01:45,990 --> 00:01:49,350 independentes, então vocês podem 44 00:01:48,210 --> 00:01:51,450 comparecer às que lhes interessa. 45 00:01:49,350 --> 00:01:53,610 Porém vamos assumir que 46 00:01:51,450 --> 00:01:55,649 vocês vêm acompanhando o conteúdo, de modo 47 00:01:53,610 --> 00:01:57,030 que, ao chegarmos às aulas futuras, não 48 00:01:55,649 --> 00:02:02,280 vou ficar ensinando bash tudo outra vez. 49 00:01:57,030 --> 00:02:05,310 Por exemplo, nós também vamos postar 50 00:02:02,280 --> 00:02:08,459 tanto as notas de aula quanto as gravações 51 00:02:05,310 --> 00:02:10,110 das aulas online. Ainda não decidimos 52 00:02:08,459 --> 00:02:12,330 exatamente quando vamos fazer isso, 53 00:02:10,110 --> 00:02:14,280 mas será após as aulas. Obviamente, os 54 00:02:12,330 --> 00:02:16,620 vídeos têm de ser postados depois que a aula ocorre. 55 00:02:14,280 --> 00:02:19,380 O curso vai ser ministrado por mim, John e 56 00:02:16,620 --> 00:02:21,120 Anish, sentados ali, e pelo Jose, 57 00:02:19,380 --> 00:02:24,090 que não está aqui mas vai dar 58 00:02:21,120 --> 00:02:25,740 a aula de amanhã. Lembrem-se que 59 00:02:24,090 --> 00:02:27,990 estamos tentando abordar um monte 60 00:02:25,740 --> 00:02:30,720 de assuntos neste curso de apenas 11 61 00:02:27,990 --> 00:02:33,240 aulas de 1h, então vamos avançar 62 00:02:30,720 --> 00:02:35,460 relativamente rápido. Mas, por favor, 63 00:02:33,240 --> 00:02:37,080 interrompam se houver algo que vocês 64 00:02:35,460 --> 00:02:38,430 não estiverem conseguindo acompanhar. 65 00:02:37,080 --> 00:02:40,290 Se você achar que devemos dedicar 66 00:02:38,430 --> 00:02:41,730 mais tempo a algum tópico, fale conosco. 67 00:02:40,290 --> 00:02:45,240 Por favor, interrompa com perguntas. 68 00:02:41,730 --> 00:02:47,220 Além disso, após cada aula estaremos 69 00:02:45,240 --> 00:02:49,650 disponíveis no nono andar do 70 00:02:47,220 --> 00:02:51,570 prédio 30 no Stata Center, 71 00:02:49,650 --> 00:02:53,220 o prédio de ciência da computação. Então, se você 72 00:02:51,570 --> 00:02:55,980 aparecer no nono andar 73 00:02:53,220 --> 00:02:58,140 lá, na Gates Tower, pode vir 74 00:02:55,980 --> 00:03:00,750 e tentar fazer os exercícios que 75 00:02:58,140 --> 00:03:02,940 vamos dar em cada aula ou simplesmente fazer perguntas 76 00:03:00,750 --> 00:03:04,440 sobre outras assuntos que tivermos 77 00:03:02,940 --> 00:03:08,000 tratado nas aulas ou outras coisas, 78 00:03:04,440 --> 00:03:08,000 como umar seu computador de forma eficiente. 79 00:03:08,150 --> 00:03:13,740 Devido ao tempo limitado que temos 80 00:03:11,640 --> 00:03:16,530 disponível, não vai ser possível 81 00:03:13,740 --> 00:03:19,080 abordar todas as ferramentas em detalhe, 82 00:03:16,530 --> 00:03:21,240 então tentaremos salientar ferramentas 83 00:03:19,080 --> 00:03:23,430 importantes e formas interessantes de usá-las. 84 00:03:21,240 --> 00:03:25,110 Não vamos, necessariamente, ir a fundo 85 00:03:23,430 --> 00:03:27,540 nos detalhes de como tudo funciona or 86 00:03:25,110 --> 00:03:29,070 discutir casos mais elaborados, mas se vocês tiverem 87 00:03:27,540 --> 00:03:31,050 perguntas sobre isso, por favor, venha falar conosco 88 00:03:29,070 --> 00:03:33,690 sobre isso também. Muitas dessas ferramentas são 89 00:03:31,050 --> 00:03:34,860 ferramentas que temos usado por anos 90 00:03:33,690 --> 00:03:36,680 e podemos lhes direcionar a mais coisas 91 00:03:34,860 --> 00:03:39,060 interessantes que vocês podem fazer com elas. 92 00:03:36,680 --> 00:03:42,990 Então, aproveitem que estamos aqui. 93 00:03:39,060 --> 00:03:45,210 Esta aula vai... não quero dizer 94 00:03:42,990 --> 00:03:46,980 escalar rapidamente, mas 95 00:03:45,210 --> 00:03:49,050 o que vai acontecer no decorrer 96 00:03:46,980 --> 00:03:51,330 dessa aula em particular é que vamos 97 00:03:49,050 --> 00:03:52,530 abordar bastante do básico, e assumiremos 98 00:03:51,330 --> 00:03:54,480 que vocês já sabem isso no restante do 99 00:03:52,530 --> 00:03:56,010 semetre. Coisas como usar o 100 00:03:54,480 --> 00:03:57,210 shell e o terminal (vou explicar o que são 101 00:03:56,010 --> 00:03:59,850 para os que não conhecem ainda), 102 00:03:57,210 --> 00:04:01,890 e depois, bem rapidamente, vamos 103 00:03:59,850 --> 00:04:03,840 escalar para ferramentas mais avançadas 104 00:04:01,890 --> 00:04:05,250 e como usá-las. Vocês já podem ver nas 105 00:04:03,840 --> 00:04:07,490 notas de aula o tipo de 106 00:04:05,250 --> 00:04:10,110 tópicos que vamos cobrir. 107 00:04:07,490 --> 00:04:12,120 Então isso nos traz à aula de hoje 108 00:04:10,110 --> 00:04:14,640 na qual vamos cobrir o shell. 109 00:04:12,120 --> 00:04:16,950 O shell vai ser uma 110 00:04:14,640 --> 00:04:19,290 das formas primárias de interagir com seu 111 00:04:16,950 --> 00:04:21,299 computador. Quando você quiser fazer mais coisas 112 00:04:19,290 --> 00:04:24,540 do que as que são possíveis com as interfaces visuais, 113 00:04:21,299 --> 00:04:26,370 com as quais talvez você esteja acostumada/o, lhe permitam fazer. 114 00:04:24,540 --> 00:04:26,550 As interfaces visuais são limitadas no 115 00:04:26,370 --> 00:04:28,560 que 116 00:04:26,550 --> 00:04:29,669 elas lhe permitem fazer, porque você só 117 00:04:28,560 --> 00:04:32,009 pode fazer as coisas para as quais há 118 00:04:29,669 --> 00:04:34,919 botões, sliders ou campos de inputs. 119 00:04:32,009 --> 00:04:37,470 Geralmente essas ferramentas textuais são construídas 120 00:04:34,919 --> 00:04:39,900 para serem combinadas umas com as outras, mas 121 00:04:37,470 --> 00:04:41,430 há também diversas formas diferentes de 122 00:04:39,900 --> 00:04:42,960 combiná-las, programá-las ou 123 00:04:41,430 --> 00:04:44,940 automatizá-las e é por isso que, 124 00:04:42,960 --> 00:04:48,060 neste curso, vamos focar na 125 00:04:44,940 --> 00:04:49,860 linha de comando ou em ferramentas baseadas em texto. 126 00:04:48,060 --> 00:04:51,870 O shell é o local se faz a 127 00:04:49,860 --> 00:04:53,849 maioria desse trabalho. Então para aqueles que 128 00:04:51,870 --> 00:04:56,729 não estão acostumados com o shell, a maioria 129 00:04:53,849 --> 00:04:59,219 das plataformas oferecem algum tipo de shell. 130 00:04:56,729 --> 00:05:00,780 No Windows, há o PowerShell, mas 131 00:04:59,219 --> 00:05:04,139 há também outros shell disponíveis 132 00:05:00,780 --> 00:05:06,389 no Windows. Já no Linux vocês vão encontrar um monte de 133 00:05:04,139 --> 00:05:08,219 terminais, que são janelas que lhes permitem 134 00:05:06,389 --> 00:05:10,500 visualizar shells e vocês também vão 135 00:05:08,219 --> 00:05:13,229 encontrar diversos tipos de shells. O mais 136 00:05:10,500 --> 00:05:15,810 comum deles é o bash, ou 'born 137 00:05:13,229 --> 00:05:17,460 again shell'. Por ser um shell tão comum, 138 00:05:15,810 --> 00:05:18,990 é basicamente esse que vamos 139 00:05:17,460 --> 00:05:21,300 usar nessas aulas. 140 00:05:18,990 --> 00:05:23,580 Se você usa Mac OS, você provavelmente 141 00:05:21,300 --> 00:05:26,159 já tem o bash ou uma versão antiga dele 142 00:05:23,580 --> 00:05:27,479 se você abrir o app do terminal. Então, 143 00:05:26,159 --> 00:05:29,190 se você quiser acompanhar em qualquer uma 144 00:05:27,479 --> 00:05:30,210 dessas plataformas, fique à vontade, mas 145 00:05:29,190 --> 00:05:32,520 tenha em mente que o curso vai ser 146 00:05:30,210 --> 00:05:34,229 meio que baseado em Linux no que diz respeito a como 147 00:05:32,520 --> 00:05:39,000 vamos ensinar, ainda que a maioria dessas ferramentas 148 00:05:34,229 --> 00:05:40,409 funcione em todas as plataformas. Se você quiser 149 00:05:39,000 --> 00:05:42,539 instalar um terminal e um shell e 150 00:05:40,409 --> 00:05:45,330 não sabe como fazer isso muito bem, ficaremos felizes em 151 00:05:42,539 --> 00:05:47,400 lhes ajudar na nossa sala ou, geralmente, 152 00:05:45,330 --> 00:05:51,599 é bem fácil buscar no Google 153 00:05:47,400 --> 00:05:57,060 'sua plataforma' mais 'terminal' e você 154 00:05:51,599 --> 00:05:59,039 vai achar um. Bom, quando você abre um 155 00:05:57,060 --> 00:06:01,169 terminal você vê algo que se parece com 156 00:05:59,039 --> 00:06:04,229 isso. Normalmente vai ter 157 00:06:01,169 --> 00:06:06,000 uma única linha no topo, o que é 158 00:06:04,229 --> 00:06:07,710 conhecido como prompt do shell. 159 00:06:06,000 --> 00:06:10,020 Você pode ver que meu prompt do shell 160 00:06:07,710 --> 00:06:12,090 parece com isso, tem meu nome de usuário, o nome 161 00:06:10,020 --> 00:06:14,219 da máquina que estou usando, o caminho 162 00:06:12,090 --> 00:06:16,770 da pasta onde estou (vamos falar de caminhos 163 00:06:14,219 --> 00:06:18,719 um pouco mais tarde) e daí ele 164 00:06:16,770 --> 00:06:20,969 fica piscando lá, pedindo 165 00:06:18,719 --> 00:06:22,440 um input. Esse é o prompt do shell 166 00:06:20,969 --> 00:06:25,860 onde você diz ao shell o que quer 167 00:06:22,440 --> 00:06:27,479 que ele faça. Dá pra customizar 168 00:06:25,860 --> 00:06:28,620 bastante esse prompt, quando você abri-lo 169 00:06:27,479 --> 00:06:31,139 na sua máquina talvez ele não vai ter exatamente 170 00:06:28,620 --> 00:06:33,840 essa aparência. Talvez um pouco, 171 00:06:31,139 --> 00:06:35,399 se você já tiver configurado, 172 00:06:33,840 --> 00:06:38,279 ou pode ter muitas outras 173 00:06:35,399 --> 00:06:39,779 formas. Não vamos falar muito 174 00:06:38,279 --> 00:06:40,350 sobre customizar seu shell nesta 175 00:06:39,779 --> 00:06:41,910 aula em particular, 176 00:06:40,350 --> 00:06:43,710 faremos isso mais tarde. Aqui vamos 177 00:06:41,910 --> 00:06:47,790 só falar sobre como usar esse 178 00:06:43,710 --> 00:06:49,860 shell para fazer coisas úteis. Esta é 179 00:06:47,790 --> 00:06:51,750 a principal interface de texto que você 180 00:06:49,860 --> 00:06:53,430 tem para seu computador, através do shell. 181 00:06:51,750 --> 00:06:55,950 No shell, você pode digitar 182 00:06:53,430 --> 00:06:58,920 comandos e os comandos podem ser 183 00:06:55,950 --> 00:07:00,570 coisas relativamente simples. Geralmente 184 00:06:58,920 --> 00:07:02,550 você vai executar programas com 185 00:07:00,570 --> 00:07:04,470 argumentos. Como isso funciona? Bem, 186 00:07:02,550 --> 00:07:06,210 um programa que podemos executar é o de data. 187 00:07:04,470 --> 00:07:07,380 É só digitar date e apertar 188 00:07:06,210 --> 00:07:10,290 enter, aí ele vai 189 00:07:07,380 --> 00:07:12,330 te mostrar a data e hora. Você também 190 00:07:10,290 --> 00:07:14,850 pode executar um programa com argumentos. 191 00:07:12,330 --> 00:07:17,790 Isso é uma forma de modificar o comportamento 192 00:07:14,850 --> 00:07:20,760 do programa. Por exemplo, há um 193 00:07:17,790 --> 00:07:22,410 programa chamado echo. O echo imprime 194 00:07:20,760 --> 00:07:25,050 os argumentos que você passa, e esses 195 00:07:22,410 --> 00:07:27,330 arugmentos são simplesmente coisas 196 00:07:25,050 --> 00:07:29,820 separadas por um espaço em branco logo após o nome. 197 00:07:27,330 --> 00:07:30,720 Então podemos dizer hello e ele vai imprimir 198 00:07:29,820 --> 00:07:32,940 hello de volta. 199 00:07:30,720 --> 00:07:35,610 Talvez não muito surpreendente, mas isso 200 00:07:32,940 --> 00:07:37,050 é uma das coisas básicas dos argumentos. 201 00:07:35,610 --> 00:07:38,550 Uma coisa que vocês vão notar é que eu disse 202 00:07:37,050 --> 00:07:40,380 que argumentos são separados por 203 00:07:38,550 --> 00:07:42,060 espaços em branco. Talveu vocês se perguntem, "bom, 204 00:07:40,380 --> 00:07:44,310 e se eu quiser um argumento com várias 205 00:07:42,060 --> 00:07:47,220 palavras?" Você pode pôr essas coisas entre aspas, e aí dá para 206 00:07:44,310 --> 00:07:50,310 fazer coisas como echo hello espaço 207 00:07:47,220 --> 00:07:52,710 world e agora o programa echo recebe 208 00:07:50,310 --> 00:07:55,380 um argumento que contém a string 209 00:07:52,710 --> 00:07:57,540 hello world com um espaço. Bom, também dá 210 00:07:55,380 --> 00:07:58,770 para usar aspas simples para isso. Vou explicar a 211 00:07:57,540 --> 00:08:00,480 diferença entre aspas simples e 212 00:07:58,770 --> 00:08:03,420 aspas duplas quando falarmos 213 00:08:00,480 --> 00:08:06,120 sobre scripting em bash. Vocês também 214 00:08:03,420 --> 00:08:09,000 podem escapar um caracter, então, por 215 00:08:06,120 --> 00:08:12,150 exemplo, hello world. Isso também 216 00:08:09,000 --> 00:08:15,720 funciona. Todas as regras sobre 217 00:08:12,150 --> 00:08:17,340 como escapar e como analisar e 218 00:08:15,720 --> 00:08:19,590 dar vários argumentos e variáveis 219 00:08:17,340 --> 00:08:21,330 nós vamos cobrir mais tarde. Espero 220 00:08:19,590 --> 00:08:23,520 que não encontrem muitas coisas esquisitas sobre isso. Nós temos de 221 00:08:21,330 --> 00:08:26,070 provocar vocês sobre isso. Lembrem-se pelo 222 00:08:23,520 --> 00:08:27,930 menos que argumentos são separados por espaços, então, 223 00:08:26,070 --> 00:08:29,610 se você quiser fazer algo como criar um 224 00:08:27,930 --> 00:08:31,920 diretório chamado "my photos", 225 00:08:29,610 --> 00:08:33,780 não dá para simplesmente digitar make directory my photos. 226 00:08:31,920 --> 00:08:35,880 Assim ele vai criar dois diretórios, 227 00:08:33,780 --> 00:08:40,010 um chamado my e outro chamado photos e 228 00:08:35,880 --> 00:08:43,229 provavelmente não é isso que você quer. 229 00:08:40,010 --> 00:08:45,600 Uma coisa que você pode se perguntar é como o 230 00:08:43,229 --> 00:08:48,839 shell sabe o que são esses programas quando 231 00:08:45,600 --> 00:08:50,700 eu digito date ou echo. Como ele 232 00:08:48,839 --> 00:08:53,190 sabe o que esses programas devem 233 00:08:50,700 --> 00:08:54,000 fazer. A resposta é que o seu 234 00:08:53,190 --> 00:08:55,439 programa, seu 235 00:08:54,000 --> 00:08:57,000 computador tem um monte de programas 236 00:08:55,439 --> 00:08:59,759 embutidos que já vêm com a máquina. 237 00:08:57,000 --> 00:09:02,579 Assim como seu computador pode vir com o 238 00:08:59,759 --> 00:09:05,339 aplicativo do terminal, ou com 239 00:09:02,579 --> 00:09:07,800 o Windows Explorer ou 240 00:09:05,339 --> 00:09:09,569 com algum tipo de navegador, ele também 241 00:09:07,800 --> 00:09:11,639 já vem com aplicações específicas para 242 00:09:09,569 --> 00:09:14,819 o terminal, e elas ficam salvas no 243 00:09:11,639 --> 00:09:18,209 seu sistema de arquivos e o shell tem 244 00:09:14,819 --> 00:09:19,949 uma maneira de determinar onde um programa está 245 00:09:18,209 --> 00:09:22,459 localizado. Basicamente, ele tem uma forma de buscar 246 00:09:19,949 --> 00:09:24,620 por programas. Ele faz isso através de 247 00:09:22,459 --> 00:09:27,389 algo chamado variável de ambiente 248 00:09:24,620 --> 00:09:29,970 invariante. Uma variável de ambiente 249 00:09:27,389 --> 00:09:31,560 é uma variável que pode ser 250 00:09:29,970 --> 00:09:33,899 usada para linguagens de programação. 251 00:09:31,560 --> 00:09:35,160 Na verdade, o shell e o bash 252 00:09:33,899 --> 00:09:37,350 em particular é 253 00:09:35,160 --> 00:09:39,420 uma linguagem de programação. Esse 254 00:09:37,350 --> 00:09:41,550 prompt que aparece aqui 255 00:09:39,420 --> 00:09:43,470 é capaz não somente de rodar um programa 256 00:09:41,550 --> 00:09:46,470 com argumentos. Ele também pode fazer outras coisas como 257 00:09:43,470 --> 00:09:47,910 while loops, for loops, condicionais... 258 00:09:46,470 --> 00:09:49,860 Tudo isso. Você pode definir 259 00:09:47,910 --> 00:09:51,000 funções, pode ter variáveis, todas essas 260 00:09:49,860 --> 00:09:52,860 coisas você consegue fazer no shell. 261 00:09:51,000 --> 00:09:56,399 Vamos abordar boa parte disso na próxima 262 00:09:52,860 --> 00:09:57,990 aula sobre shell scripting. Mas, por ora, 263 00:09:56,399 --> 00:09:59,790 vamos olhar para 264 00:09:57,990 --> 00:10:01,199 essa variável de ambiente em particular. 265 00:09:59,790 --> 00:10:02,699 Variáveis de ambiente são coisas que 266 00:10:01,199 --> 00:10:04,829 estão definidas toda vez que você inicia o shell. 267 00:10:02,699 --> 00:10:06,600 Vocês não precisam defini-las toda vez 268 00:10:04,829 --> 00:10:08,160 que abrem o shell, há 269 00:10:06,600 --> 00:10:09,750 várias delas que já estão definidas, como 270 00:10:08,160 --> 00:10:11,850 onde fica seu diretório home, qual 271 00:10:09,750 --> 00:10:13,079 é seu nome de usuário. Há uma que é essencial 272 00:10:11,850 --> 00:10:16,170 para esse caso em particular 273 00:10:13,079 --> 00:10:18,930 que é a variável de caminho. Então se 274 00:10:16,170 --> 00:10:22,589 eu digitar echo $PATH, ele vai 275 00:10:18,930 --> 00:10:25,100 me mostrar todos os caminhos na minha máquina 276 00:10:22,589 --> 00:10:27,930 onde o shell vai buscar por programas. 277 00:10:25,100 --> 00:10:30,870 Vocês vão notar que isso é uma lista 278 00:10:27,930 --> 00:10:33,000 separada por dois pontos. Ela pode ser 279 00:10:30,870 --> 00:10:36,000 um pouco longa e difícil de ler, mas o importante 280 00:10:33,000 --> 00:10:38,279 é que, sempre que você digitar o nome de 281 00:10:36,000 --> 00:10:41,610 um programa, o shell vai buscar nesta 282 00:10:38,279 --> 00:10:43,769 lista de caminhos da sua máquina, olhando 283 00:10:41,610 --> 00:10:46,920 em cada diretório em busca de um 284 00:10:43,769 --> 00:10:49,110 programa ou arquivo cujo nome coincida 285 00:10:46,920 --> 00:10:51,029 com o comando que você está tentando rodar. No meu caso, 286 00:10:49,110 --> 00:10:52,800 quando tento rodar date ou echo, ele 287 00:10:51,029 --> 00:10:54,509 vai rodar por essa lista um por vez 288 00:10:52,800 --> 00:10:56,370 até achar um que contenha o 289 00:10:54,509 --> 00:10:58,410 programa chamado date ou echo, e aí 290 00:10:56,370 --> 00:11:00,000 ele vai rodá-lo. Se quisermos saber 291 00:10:58,410 --> 00:11:01,649 qual exatamente ele roda, há um 292 00:11:00,000 --> 00:11:04,620 comando chamado which. O which nos permite 293 00:11:01,649 --> 00:11:07,500 fazer isso, então quando eu posso digitar which echo e ele 294 00:11:04,620 --> 00:11:10,830 vai me dizer que, se eu quiser rodar um programa 295 00:11:07,500 --> 00:11:12,720 chamado echo, ele iria rodar deste aqui. 296 00:11:10,830 --> 00:11:16,350 Vale a pena pausar aqui e falar sobre o 297 00:11:12,720 --> 00:11:18,620 que são caminhos. Caminhos são uma forma nomear a 298 00:11:16,350 --> 00:11:21,630 localização de um arquivo em seu computador. 299 00:11:18,620 --> 00:11:24,780 No Linux e no MacOS esses caminhos são 300 00:11:21,630 --> 00:11:28,170 separados por /, então 301 00:11:24,780 --> 00:11:30,930 você vai ver aqui que este está no 302 00:11:28,170 --> 00:11:32,760 diretório root. O / logo no começo 303 00:11:30,930 --> 00:11:34,850 indica que o caminho começa 304 00:11:32,760 --> 00:11:37,710 no topo do sistema de arquivos. 305 00:11:34,850 --> 00:11:40,980 Depois olha no diretório chamado 306 00:11:37,710 --> 00:11:43,580 usr, depois no diretório chamado bin 307 00:11:40,980 --> 00:11:46,440 e depois olha no arquivo chamado echo. 308 00:11:43,580 --> 00:11:48,620 No Windows, caminhos como esse são geralmente 309 00:11:46,440 --> 00:11:51,900 separados por \. 310 00:11:48,620 --> 00:11:53,640 Quando estamos no Linux ou MacOS, 311 00:11:51,900 --> 00:11:56,370 tudo mora no root, então 312 00:11:53,640 --> 00:12:00,270 todos os caminhos começam com um /, ou melhor, todos os 313 00:11:56,370 --> 00:12:02,070 caminhos absolutos. No Windows, há um root 314 00:12:00,270 --> 00:12:05,130 cada cada partição. Vocês já devem ter 315 00:12:02,070 --> 00:12:08,220 visto coisas como C:\ ou D:\ . 316 00:12:05,130 --> 00:12:11,340 No Windows, há um tipo de hierarquia 317 00:12:08,220 --> 00:12:13,050 de caminhos de sistema para cada drive 318 00:12:11,340 --> 00:12:14,850 que você tem, 319 00:12:13,050 --> 00:12:18,540 enquanto no Linux e no MacOS 320 00:12:14,850 --> 00:12:20,010 fica tudo sob um único nome. 321 00:12:18,540 --> 00:12:21,690 Vocês devem ter notado que eu mencionei 322 00:12:20,010 --> 00:12:27,360 caminho absoluto e talvez saibam o que isso 323 00:12:21,690 --> 00:12:29,460 significa. Caminhos absolutos são caminhos 324 00:12:27,360 --> 00:12:31,890 que determinam por completo a localização de um arquivo. 325 00:12:29,460 --> 00:12:33,720 Neste caso, isso quer dizer que 326 00:12:31,890 --> 00:12:36,540 queremos nos referir a um arquivo específico chamado echo 327 00:12:33,720 --> 00:12:39,030 e estamos dando o caminho completo até 328 00:12:36,540 --> 00:12:42,839 esse arquivo. Mas também há outro tipo 329 00:12:39,030 --> 00:12:45,240 conhecido como caminhos relativos. Um 330 00:12:42,839 --> 00:12:49,320 caminho relativo se refere a onde estamos no momento. 331 00:12:45,240 --> 00:12:52,490 Então a forma de saber onde estamos no 332 00:12:49,320 --> 00:12:56,190 momento é digitando pwd que significa 333 00:12:52,490 --> 00:13:00,060 "imprima o diretório atual". 334 00:12:56,190 --> 00:13:02,700 Então, se eu digitar pwd, ele 335 00:13:00,060 --> 00:13:05,790 vai mostrar o caminho atual onde estou 336 00:13:02,700 --> 00:13:08,220 agora, ou seja, estou no diretório 337 00:13:05,790 --> 00:13:11,030 home sob o diretório root e depois 338 00:13:08,220 --> 00:13:14,730 john, depois dev e assim por diante. 339 00:13:11,030 --> 00:13:16,770 Daqui eu posso então decidir mudar 340 00:13:14,730 --> 00:13:18,540 meu diretório atual, e todos os 341 00:13:16,770 --> 00:13:20,190 caminhos relativos são ligados ao 342 00:13:18,540 --> 00:13:21,329 diretório atual, que é 343 00:13:20,190 --> 00:13:24,629 basicamente onde estamos no momento. 344 00:13:21,329 --> 00:13:28,709 Por exemplo, neste caso, eu posso digitar 345 00:13:24,629 --> 00:13:30,449 cd \home. cd quer dizer "mudar de diretório". 346 00:13:28,709 --> 00:13:32,610 Essa é uma forma de mudar meu diretório 347 00:13:30,449 --> 00:13:34,829 atual. Neste caso, eu mudei 348 00:13:32,610 --> 00:13:37,889 para o home e vocês vêem que 349 00:13:34,829 --> 00:13:40,619 o prompt do shell mudou, agora dizendo 350 00:13:37,889 --> 00:13:42,660 que estou no home. Ele simplesmente mostra 351 00:13:40,619 --> 00:13:44,220 o nome do último segmento do caminho, 352 00:13:42,660 --> 00:13:45,509 mas vocês também podem configurar o terminal para mostrar 353 00:13:44,220 --> 00:13:50,309 o caminho completo onde quer que 354 00:13:45,509 --> 00:13:53,100 vocês estejam. Agora se eu digitar pwd de novo, ele 355 00:13:50,309 --> 00:13:54,869 vai me dizer que estou no /home. Há alguns 356 00:13:53,100 --> 00:13:59,100 diretórios especiais 357 00:13:54,869 --> 00:14:03,149 aqui. Há o . e o .. . O . 358 00:13:59,100 --> 00:14:05,129 se refere ao diretório atual e o .. 359 00:14:03,149 --> 00:14:06,749 se refere ao diretório acima. Essa é uma 360 00:14:05,129 --> 00:14:09,540 forma de navegar facilmente pelo 361 00:14:06,749 --> 00:14:13,079 sistema. Por exemplo, se eu digitar cd .. 362 00:14:09,540 --> 00:14:15,179 ele vai me dizer que estou agora no /, 363 00:14:13,079 --> 00:14:17,639 ou seja, no root do sistema de 364 00:14:15,179 --> 00:14:22,139 arquivos. Eu estava no /home e agora estou 365 00:14:17,639 --> 00:14:24,869 no /. De fato, se eu digitar pwd, ele mostra 366 00:14:22,139 --> 00:14:26,790 exatamente isso. Também posso usar 367 00:14:24,869 --> 00:14:28,980 caminhos relativos para descer um nível no 368 00:14:26,790 --> 00:14:31,769 caminho de arquivos. Então, se eu der cd . /home 369 00:14:28,980 --> 00:14:34,079 ele vai me mover para o 370 00:14:31,769 --> 00:14:36,899 diretório home sob o diretório atual. 371 00:14:34,079 --> 00:14:39,839 E isso me leva 372 00:14:36,899 --> 00:14:42,119 de volta ao /home. Se eu tentar agora cd ./home 373 00:14:39,839 --> 00:14:44,100 de novo, ele me avisa que não há nenhum 374 00:14:42,119 --> 00:14:45,569 diretório com esse nome porque não há um 375 00:14:44,100 --> 00:14:49,429 diretório home sob o diretório em que 376 00:14:45,569 --> 00:14:53,699 estou agora, no qual entrei com o cd. 377 00:14:49,429 --> 00:14:57,509 Eu consigo usar cd para voltar todo o caminho 378 00:14:53,699 --> 00:15:01,110 que percorri, usando 379 00:14:57,509 --> 00:15:07,040 caminhos relativos, e eu posso fazer outras coisas 380 00:15:01,110 --> 00:15:09,059 como ../../../../jon/ para voltar 381 00:15:07,040 --> 00:15:10,649 para algum lugar lá dentro do meu sistema de arquivos. 382 00:15:09,059 --> 00:15:13,019 Ocorre que ele está lá no root. 383 00:15:10,649 --> 00:15:15,629 Aqui temos o diretório bin, e nele 384 00:15:13,019 --> 00:15:17,850 há o arquivo echo. Daí eu 385 00:15:15,629 --> 00:15:20,309 posso dar world e ele roda o 386 00:15:17,850 --> 00:15:22,079 programa echo que está no bin. 387 00:15:20,309 --> 00:15:24,439 Essa é uma forma com a qual vocês podem construir caminhos para 388 00:15:22,079 --> 00:15:26,579 atravessar arbitrariamente seu sistema de arquivos. 389 00:15:24,439 --> 00:15:28,379 Às vezes vocês vão querer usar caminhos absolutos e 390 00:15:26,579 --> 00:15:29,789 às vezes, relativos. Geralmente 391 00:15:28,379 --> 00:15:33,179 vocês vão querer usar o que for mais curto 392 00:15:29,789 --> 00:15:34,390 mas se vocês quiserem, por exemplo, rodar 393 00:15:30,629 --> 00:15:34,390 um programa ou escrever 394 00:15:34,390 --> 00:15:38,980 um programa que roda esse programa, como 395 00:15:36,940 --> 00:15:41,830 echo ou date, e vocês querem poder 396 00:15:38,980 --> 00:15:43,660 rodá-lo a partir de qualquer local, ou 397 00:15:41,830 --> 00:15:45,640 vocês dão o nome do 398 00:15:43,660 --> 00:15:47,770 programa, como date ou echo, e deixam o 399 00:15:45,640 --> 00:15:49,720 shell usar o caminho para descobrir onde 400 00:15:47,770 --> 00:15:51,670 ele está, ou vocês dão o caminho 401 00:15:49,720 --> 00:15:53,500 absoluto, porque se vocês derem um caminho relativo, 402 00:15:51,670 --> 00:15:55,840 e eu for lá e rodar no meu diretório home, 403 00:15:53,500 --> 00:16:01,720 e vocês rodarem em um outro diretório, 404 00:15:55,840 --> 00:16:04,600 pode ser que funcione para mim mas não para vocês. 405 00:16:01,720 --> 00:16:06,340 Em geral, quando rodamos um programa, ele 406 00:16:04,600 --> 00:16:08,320 vai operar no diretório 407 00:16:06,340 --> 00:16:09,910 atual, ao menos esse é o padrão, 408 00:16:08,320 --> 00:16:11,980 a não ser que passemos outros argumentos. 409 00:16:09,910 --> 00:16:13,750 Isso é bem útil porque significa 410 00:16:11,980 --> 00:16:15,730 que muitas vezes não temos de dar 411 00:16:13,750 --> 00:16:17,680 o caminho completo para as coisas, podemos simplesmente 412 00:16:15,730 --> 00:16:20,050 usar o nome dos arquivos no diretório 413 00:16:17,680 --> 00:16:22,570 em que estamos. Uma coisa 414 00:16:20,050 --> 00:16:24,280 bem útil é descobrir em que diretório 415 00:16:22,570 --> 00:16:26,410 estamos. Nós já 416 00:16:24,280 --> 00:16:28,060 vimos o pwd que imprime o local 417 00:16:26,410 --> 00:16:31,090 onde estamos, e há um comando chamado 418 00:16:28,060 --> 00:16:33,310 ls que vai listar os 419 00:16:31,090 --> 00:16:35,980 arquivos no diretório atual. Então se eu 420 00:16:33,310 --> 00:16:38,050 digitar ls aqui, vemos todos os arquivos 421 00:16:35,980 --> 00:16:39,850 no diretório atual, certo? É uma forma 422 00:16:38,050 --> 00:16:43,420 boa de rapidamente navegar 423 00:16:39,850 --> 00:16:46,930 através do sistema de arquivos. Vocês vão 424 00:16:43,420 --> 00:16:48,490 ver que se eu der cd .. e depois ls, ele 425 00:16:46,930 --> 00:16:53,370 me mostra os arquivos naquele diretório, 426 00:16:48,490 --> 00:16:56,260 mas com o ls eu posso dar 427 00:16:53,370 --> 00:16:58,360 ls .. e um caminho e 428 00:16:56,260 --> 00:16:59,920 aí ele lista o que tiver naquele aquivo em 429 00:16:58,360 --> 00:17:04,270 vez do que o que estou agora. Ele lista o outro 430 00:16:59,920 --> 00:17:05,829 diretório. E vocês podem ver que se eu 431 00:17:04,270 --> 00:17:09,220 for até o root também, certo, o root 432 00:17:05,829 --> 00:17:11,560 tem outros arquivos. Um truque legal 433 00:17:09,220 --> 00:17:13,570 que talvez vocês não conheçam aqui: há 434 00:17:11,560 --> 00:17:16,570 dois outras coisas especiais que você pode fazer. 435 00:17:13,570 --> 00:17:18,339 Uma é usar o til. Esse 436 00:17:16,570 --> 00:17:21,130 caractere te leva pro diretório 437 00:17:18,339 --> 00:17:23,140 home. Então o til sempre se expande para 438 00:17:21,130 --> 00:17:25,780 o diretório home e você pode usar 439 00:17:23,140 --> 00:17:30,040 caminhos relativos a ele. Posso dar til / dev 440 00:17:25,780 --> 00:17:32,980 /pdos/classes/missing-semester/ e 441 00:17:30,040 --> 00:17:36,670 agora estou lá porque esse til se expandiu 442 00:17:32,980 --> 00:17:39,460 para /home/john. Um outro argumento legal 443 00:17:36,670 --> 00:17:42,250 que vocês podem dar para o cd especificamente 444 00:17:39,460 --> 00:17:44,530 é, se vocêm derem cd -, 445 00:17:42,250 --> 00:17:47,380 ele vai cd para o diretório onde você 446 00:17:44,530 --> 00:17:48,180 estava antes. Se eu der cd -, volto 447 00:17:47,380 --> 00:17:52,230 para o root. 448 00:17:48,180 --> 00:17:53,880 Se der cd - de novo, volto para o missing-semester. 449 00:17:52,230 --> 00:17:55,080 É uma maneira útil de ficar indo e vindo 450 00:17:53,880 --> 00:18:01,290 entre dois diretórios diferentes. 451 00:17:55,080 --> 00:18:03,570 Em caso do ls, ou em caso 452 00:18:01,290 --> 00:18:06,180 do cd, pode haver argumentos que vocês 453 00:18:03,570 --> 00:18:07,560 não conhecem, certo? Até agora, ainda não 454 00:18:06,180 --> 00:18:09,510 fizemos muito mais do que 455 00:18:07,560 --> 00:18:11,520 dar caminhos, mas como é que descobrimos 456 00:18:09,510 --> 00:18:14,250 que é possível passar um caminho para o ls 457 00:18:11,520 --> 00:18:16,530 pra começo de conversa? Bem, a maioria 458 00:18:14,250 --> 00:18:18,840 dos programas aceitam o que chamamos de argumentos, como 459 00:18:16,530 --> 00:18:21,570 flags e opções. Essas são coisas que 460 00:18:18,840 --> 00:18:24,810 geralmente são precedidas por um -. Um dos 461 00:18:21,570 --> 00:18:26,880 usos mais úteis é --help. Muitos programas 462 00:18:24,810 --> 00:18:30,000 implementam esse, então se vocês rodarem, 463 00:18:26,880 --> 00:18:34,020 por exemplo, ls -help, ele proveitosamente 464 00:18:30,000 --> 00:18:36,000 imprime um monte de informações sobre 465 00:18:34,020 --> 00:18:38,400 aquele comando. Vocêm podem ver que ele 466 00:18:36,000 --> 00:18:40,260 dize que o uso é ls e que é possível dar 467 00:18:38,400 --> 00:18:42,030 um número de opções, e um número de 468 00:18:40,260 --> 00:18:46,350 arquivos. A forma de se ler essa linha é 469 00:18:42,030 --> 00:18:48,600 três pontos significa zero ou um 470 00:18:46,350 --> 00:18:50,850 ou mais e os colchetes 471 00:18:48,600 --> 00:18:52,890 querem dizer opcional. Nesse caso, 472 00:18:50,850 --> 00:18:54,300 há um número opcional de opções 473 00:18:52,890 --> 00:18:56,790 e um número opcional de arquivos. 474 00:18:54,300 --> 00:18:58,740 Vejam que ele explica o que o programa 475 00:18:56,790 --> 00:19:00,720 faz e também especifica um número 476 00:18:58,740 --> 00:19:03,000 de diferentes tipos de flags e opções 477 00:19:00,720 --> 00:19:04,950 que podemos escolher. Geralmente chamamos essas coisas 478 00:19:03,000 --> 00:19:07,830 com um - e uma única letra 479 00:19:04,950 --> 00:19:09,900 de flag ou qualquer coisa que 480 00:19:07,830 --> 00:19:11,730 não leva um valor de flag, e qualquer 481 00:19:09,900 --> 00:19:16,640 coisa que leva um valor chamamos de opção. Então, 482 00:19:11,730 --> 00:19:22,260 por exemplo, - a and - all são ambos flags 483 00:19:16,640 --> 00:19:24,180 e -C ou --color é uma opção. Uma coisa 484 00:19:22,260 --> 00:19:30,330 que vocês vão ver se descerem bastante a 485 00:19:24,180 --> 00:19:37,140 tela é a flag -l. Ops. 486 00:19:30,330 --> 00:19:39,480 A flag -l usa 487 00:19:37,140 --> 00:19:40,860 o formato de lista longa. Isso é 488 00:19:39,480 --> 00:19:43,350 especialmente útil por si só, 489 00:19:40,860 --> 00:19:46,890 mas vamos ver o que ela faz. 490 00:19:43,350 --> 00:19:48,450 Se eu der ls -l, ele imprime 491 00:19:46,890 --> 00:19:49,890 os arquivos no diretório atual, mas ele 492 00:19:48,450 --> 00:19:52,170 dá muito mais informação sobre esses 493 00:19:49,890 --> 00:19:54,600 arquivos. Vocês vão ver que vão usar 494 00:19:52,170 --> 00:19:56,280 bastante isso porque 495 00:19:54,600 --> 00:20:00,810 essas informações adicionais que ele 496 00:19:56,280 --> 00:20:02,010 mostra são geralmente bem úteis. Vamos 497 00:20:00,810 --> 00:20:09,030 ver um pouco dessas informações. 498 00:20:02,010 --> 00:20:10,110 Primeiramente, o d no começo 499 00:20:09,030 --> 00:20:11,760 de alguns desses itens 500 00:20:10,110 --> 00:20:14,820 indica que aquele item é um diretório. 501 00:20:11,760 --> 00:20:16,020 Então o _data aqui, por exemplo, 502 00:20:14,820 --> 00:20:18,690 é um diretório, 503 00:20:16,020 --> 00:20:22,650 enquanto o html não é um diretório, 504 00:20:18,690 --> 00:20:25,410 mas sim um arquivo. As letras seguintes 505 00:20:22,650 --> 00:20:28,650 indicam as permissões que estão 506 00:20:25,410 --> 00:20:30,810 definidas para este arquivo. Então, como 507 00:20:28,650 --> 00:20:32,640 vimos antes, talvez eu não consiga abrir 508 00:20:30,810 --> 00:20:34,170 um certo arquivo ou não consiga 509 00:20:32,640 --> 00:20:35,760 entrar em um diretório. Tudo isso é 510 00:20:34,170 --> 00:20:37,980 regido pelas permissões daquele arquivo 511 00:20:35,760 --> 00:20:41,430 ou diretório em particular. A maneira de 512 00:20:37,980 --> 00:20:43,500 interpretar isso é: o primeiro dos três 513 00:20:41,430 --> 00:20:45,810 grupos são as permissões definidas para o 514 00:20:43,500 --> 00:20:49,560 dono do arquivo. Todos esses arquivos 515 00:20:45,810 --> 00:20:52,020 que estamos vendo têm eu dono como. 516 00:20:49,560 --> 00:20:53,880 O segundo grupo de três caraceteres se refere 517 00:20:52,020 --> 00:20:56,100 às permissões do grupo que é dono desse 518 00:20:53,880 --> 00:20:58,650 arquivo. Neste caso, todos esses arquivos 519 00:20:56,100 --> 00:21:01,770 também pertencem ao grupo john. 520 00:20:58,650 --> 00:21:03,900 Já o último grupo de três é uma lista 521 00:21:01,770 --> 00:21:06,290 das permissões para todo o restante, ou seja, 522 00:21:03,900 --> 00:21:08,550 qualquer um que não seja nem dono nem membro do grupo. 523 00:21:06,290 --> 00:21:10,980 Esse diretório está um pouco sem graça 524 00:21:08,550 --> 00:21:14,190 porque eu sou o dono de todos os itens, 525 00:21:10,980 --> 00:21:17,490 mas se dermos cd / 526 00:21:14,190 --> 00:21:20,280 ls -l vocês vão ver que 527 00:21:17,490 --> 00:21:22,800 aqui todos os arquivos pertencem ao root. 528 00:21:20,280 --> 00:21:24,090 Vamos voltar para esse assunto do usuário root, só vejam 529 00:21:22,800 --> 00:21:26,400 que aqui as permissões são 530 00:21:24,090 --> 00:21:31,410 um pouco mais interessantes. Os grupos de 531 00:21:26,400 --> 00:21:34,290 três significam leitura, escrita e execução. 532 00:21:31,410 --> 00:21:36,450 Isso signifca coisas diferentes para arquivos e para 533 00:21:34,290 --> 00:21:37,980 diretórios. Para arquivos, é bem simples: 534 00:21:36,450 --> 00:21:40,170 se vocês tiverem permissão de leitura para 535 00:21:37,980 --> 00:21:41,820 um arquivo, vocês conseguem ler seu 536 00:21:40,170 --> 00:21:43,950 conteído. Se tiver permissão de escrita 537 00:21:41,820 --> 00:21:46,200 para um arquivo, podem salvá-lo 538 00:21:43,950 --> 00:21:48,270 e adicionar conteúdo a ele, ou até 539 00:21:46,200 --> 00:21:50,670 substitui-lo completamente. E se você 540 00:21:48,270 --> 00:21:52,620 tiver x na execução de um arquivo, 541 00:21:50,670 --> 00:21:57,390 você pode executá-lo. Então, 542 00:21:52,620 --> 00:22:00,030 se dermos ls -l /usr/bin, 543 00:21:57,390 --> 00:22:02,640 vocês verão que todos 544 00:22:00,030 --> 00:22:04,590 têm a permissão de execução ativada 545 00:22:02,640 --> 00:22:06,480 para todas as pessoas que não forem donas 546 00:22:04,590 --> 00:22:08,280 do arquivo. É assim porque o programa 547 00:22:06,480 --> 00:22:09,420 echo, por exemplo, queremos que possa 548 00:22:08,280 --> 00:22:11,700 ser executado por qualquer um usando o computador. 549 00:22:09,420 --> 00:22:13,920 Não há motivo pra dizer que apenas 550 00:22:11,700 --> 00:22:15,570 alguns usuários podem rodar o echo. 551 00:22:13,920 --> 00:22:18,420 Isso não faz sentido. 552 00:22:15,570 --> 00:22:20,960 Já para diretórios, essas permissões 553 00:22:18,420 --> 00:22:23,550 são um pouco diferentes. Leitura 554 00:22:20,960 --> 00:22:26,460 quer dizer que podemos olhar quais 555 00:22:23,550 --> 00:22:28,770 arquivos existem dentro desse diretório. 556 00:22:26,460 --> 00:22:30,530 Associem leitura como list para diretórios. 557 00:22:28,770 --> 00:22:33,420 Estamos autorizados a listar seu conteúdo? 558 00:22:30,530 --> 00:22:36,210 Escrita para um diretório diz se estamos 559 00:22:33,420 --> 00:22:39,090 autorizados a renomear, criar ou remover 560 00:22:36,210 --> 00:22:42,030 arquivos dentro dele. Faz sentido, 561 00:22:39,090 --> 00:22:45,240 mas lembrem-se de que isso significa que, 562 00:22:42,030 --> 00:22:47,580 se vocês têm permissão de escrita em um arquivo 563 00:22:45,240 --> 00:22:49,950 mas não têm permissão de escrita no 564 00:22:47,580 --> 00:22:52,080 diretório dele, vocês não podem deletar o arquivo. 565 00:22:49,950 --> 00:22:54,420 Você pode esvaziá-lo, mas não deletá-lo, 566 00:22:52,080 --> 00:22:57,660 porque para isso seria preciso escrever 567 00:22:54,420 --> 00:22:59,130 no diretório em si. Finalmente, execução 568 00:22:57,660 --> 00:23:01,950 em diretórios é algo que confunde bastante 569 00:22:59,130 --> 00:23:04,650 as pessoas. Executar em um diretório 570 00:23:01,950 --> 00:23:07,230 é o que se chama buscar. O nome 571 00:23:04,650 --> 00:23:10,200 não ajuda muito, mas o que quer dizer é 572 00:23:07,230 --> 00:23:13,470 que podemos acessar esse diretório se 573 00:23:10,200 --> 00:23:15,240 quisermos chegar a um arquivo. 574 00:23:13,470 --> 00:23:16,670 Se quisermos abri-lo, lê-lo ou 575 00:23:15,240 --> 00:23:20,310 escrever nele, ou qualquer outra coisa, 576 00:23:16,670 --> 00:23:22,710 para dar cd e entrar em um diretório 577 00:23:20,310 --> 00:23:25,050 é preciso ter permissão de execução em 578 00:23:22,710 --> 00:23:28,170 todos os diretórios acima dele e 579 00:23:25,050 --> 00:23:30,480 no próprio diretório. Por exemplo, 580 00:23:28,170 --> 00:23:34,080 para eu acessar um arquivo dentro de 581 00:23:30,480 --> 00:23:35,820 /usr/bin como o /usr/bin/echo, preciso 582 00:23:34,080 --> 00:23:38,100 ter permissão de execução no root, 583 00:23:35,820 --> 00:23:40,380 no usr, no 584 00:23:38,100 --> 00:23:42,120 bin. Se eu não tiver algum deles, 585 00:23:40,380 --> 00:23:44,790 não terei permissão 586 00:23:42,120 --> 00:23:48,410 de acessar aquele arquivo, porque 587 00:23:44,790 --> 00:23:50,670 não terei acesso aos diretórios ao longo do caminho até ele. 588 00:23:48,410 --> 00:23:52,560 Vocês podem encontrar outros bits, 589 00:23:50,670 --> 00:23:55,320 por exemplo, vocês podem ver 590 00:23:52,560 --> 00:23:58,020 s ou t nessas listas, ou l. 591 00:23:55,320 --> 00:23:58,950 Podemos conversar no tira-dúvidas 592 00:23:58,020 --> 00:24:01,260 se ficarem curiosos, 593 00:23:58,950 --> 00:24:04,260 a maioria não importa muito para 594 00:24:01,260 --> 00:24:05,670 os assuntos que vocês vão ver neste curso, 595 00:24:04,260 --> 00:24:08,100 mas é legal conhecer. Então, se quiserem 596 00:24:05,670 --> 00:24:11,340 saber mais sobre eles, pesquisem 597 00:24:08,100 --> 00:24:13,080 ou venham falar conosco. 598 00:24:11,340 --> 00:24:14,580 Há outros programas que é bom 599 00:24:13,080 --> 00:24:16,200 conhecer. Desculpa, uma coisa mais. 600 00:24:14,580 --> 00:24:17,400 Como eu mencionei, se vocês só verem um - 601 00:24:16,200 --> 00:24:19,470 significa que vocês não têm aquela 602 00:24:17,400 --> 00:24:21,810 respectiva permissão. Por exemplo, se 603 00:24:19,470 --> 00:24:23,190 houver r-x, quer dizer que vocês podem 604 00:24:21,810 --> 00:24:27,390 ler e executar, mas não ler. 605 00:24:23,190 --> 00:24:29,240 Há outros programas úteis 606 00:24:27,390 --> 00:24:32,360 para vermos agora. 607 00:24:29,240 --> 00:24:35,450 Um deles é o comando move ou mv. 608 00:24:32,360 --> 00:24:39,350 Se eu der cd de volta para missing-semester, aqui o mv 609 00:24:35,450 --> 00:24:42,950 me permite renomear um arquivo usando 610 00:24:39,350 --> 00:24:45,320 dois caminhos, o caminho antigo e o 611 00:24:42,950 --> 00:24:47,870 caminho novo. Ou seja, move nos permite 612 00:24:45,320 --> 00:24:49,970 tanto renomear um arquivo, como quando 613 00:24:47,870 --> 00:24:52,130 mudamos o nome do arquivo mas não o 614 00:24:49,970 --> 00:24:54,290 diretório, ou ele permite mover 615 00:24:52,130 --> 00:24:56,360 um arquivo para um diretório diferente. 616 00:24:54,290 --> 00:24:57,890 É só dar o caminho atual do arquivo 617 00:24:56,360 --> 00:24:59,720 e o caminho para onde vocês querem movê-lo 618 00:24:57,890 --> 00:25:02,720 e isso vai alterar sua localização e 619 00:24:59,720 --> 00:25:05,480 seu nome. Por exemplo, eu posso mover 620 00:25:02,720 --> 00:25:09,020 dotfiles.md para foo.md 621 00:25:05,480 --> 00:25:16,280 e, da mesma forma, posso mover 622 00:25:09,020 --> 00:25:19,370 de volta. Há também o comando cp. 623 00:25:16,280 --> 00:25:21,860 O cp ou copy é bem parecido, 624 00:25:19,370 --> 00:25:23,750 ele nos permite copiar um arquivo também 625 00:25:21,860 --> 00:25:25,610 usando dois argumentos, o caminho de onde 626 00:25:23,750 --> 00:25:28,340 queremos copiar e o caminho para onde 627 00:25:25,610 --> 00:25:30,890 queremos copiar. Esses são caminhos completos, então eu poderia 628 00:25:28,340 --> 00:25:32,960 usar isso, por exemplo, para dizer que quero 629 00:25:30,890 --> 00:25:37,550 copiar dotfiles.md to ../foo.md. 630 00:25:32,960 --> 00:25:39,710 E agora se eu der ls . 631 00:25:37,550 --> 00:25:42,800 vocês podem ver que há um arquivo foo.md 632 00:25:39,710 --> 00:25:44,600 naquele diretório. O cp também 633 00:25:42,800 --> 00:25:47,780 recebe dois caminhos, não é preciso ser no 634 00:25:44,600 --> 00:25:49,700 mesmo diretório. Igualmente existe o 635 00:25:47,780 --> 00:25:52,070 comando rm que nos permite remover 636 00:25:49,700 --> 00:25:54,050 um arquivo e também dá para dar caminhos. 637 00:25:52,070 --> 00:25:56,750 Nesse caso, estou removendo ../foo. 638 00:25:54,050 --> 00:25:59,480 Lembrem-se que o remover, 639 00:25:56,750 --> 00:26:01,940 especialmente no Linux, por default 640 00:25:59,480 --> 00:26:05,000 não é recursivo, então não dá para remover 641 00:26:01,940 --> 00:26:07,100 um diretório usando rm. É preciso passar 642 00:26:05,000 --> 00:26:09,320 a flag -r que nos permite 643 00:26:07,100 --> 00:26:10,550 remover recursivamente e depois o 644 00:26:09,320 --> 00:26:12,890 caminho que quer remover. Daí ele 645 00:26:10,550 --> 00:26:16,370 remove tudo que estiver sob este diretório. Há também 646 00:26:12,890 --> 00:26:18,290 o comando rmdir que permite 647 00:26:16,370 --> 00:26:21,230 remover um diretório mas só se 648 00:26:18,290 --> 00:26:22,970 ele estiver vazio. Então a 649 00:26:21,230 --> 00:26:23,960 ideia aqui é criar um mecanismo pra 650 00:26:22,970 --> 00:26:25,429 nos dar uma certa segurança, para não 651 00:26:23,960 --> 00:26:28,610 jogarmos fora acidentalmente um monte 652 00:26:25,429 --> 00:26:31,040 de arquivos. O último comandozinho 653 00:26:28,610 --> 00:26:32,540 que é útil usar é o mkdir que 654 00:26:31,040 --> 00:26:34,429 permite criar um novo diretório. 655 00:26:32,540 --> 00:26:36,110 Como falamos antes, você não quer fazer 656 00:26:34,429 --> 00:26:37,940 algo assim porque senão ele vai 657 00:26:36,110 --> 00:26:40,580 criar dois diretórios, um chamado 658 00:26:37,940 --> 00:26:42,140 my e outro chamado photos. Para criar 659 00:26:40,580 --> 00:26:42,980 um diretório assim é preciso escapar 660 00:26:42,140 --> 00:26:50,120 o character de 661 00:26:42,980 --> 00:26:52,519 espaço ou usar aspas. 662 00:26:50,120 --> 00:26:54,919 Quando vocês quiserem mais informação 663 00:26:52,519 --> 00:26:57,049 sobre como qualquer comando 664 00:26:54,919 --> 00:26:58,220 nessas plataformas funciona, há um 665 00:26:57,049 --> 00:27:00,649 comando bem útil para isso, que 666 00:26:58,220 --> 00:27:04,610 invoca o programa chamado man, 667 00:27:00,649 --> 00:27:06,409 que significa manual pages. Este programa 668 00:27:04,610 --> 00:27:09,080 pede como argumento o nome de outro programa 669 00:27:06,409 --> 00:27:12,019 e retorna seu manual. Então, por exemplo, 670 00:27:09,080 --> 00:27:14,990 podemos digitar man ls e isso vai mostrar 671 00:27:12,019 --> 00:27:16,730 a página do manual do ls. Vocês vão ver 672 00:27:14,990 --> 00:27:19,250 que, nesse caso do ls, o resultado é bem 673 00:27:16,730 --> 00:27:20,870 parecido com o que vemos com ls -help, 674 00:27:19,250 --> 00:27:23,570 porém é mais fácil navegar e 675 00:27:20,870 --> 00:27:26,269 ler. Mais pro final da página vocês 676 00:27:23,570 --> 00:27:28,639 encontram exemplos 677 00:27:26,269 --> 00:27:29,899 sobre quem escreveu o programa, 678 00:27:28,639 --> 00:27:32,389 onde encontrar mais informação e esse 679 00:27:29,899 --> 00:27:32,990 tipo de coisa. Algo que pode causar confusão 680 00:27:32,389 --> 00:27:35,330 às vezes, 681 00:27:32,990 --> 00:27:36,289 ao menos até a versão mais atual em que 682 00:27:35,330 --> 00:27:38,779 eles adicionaram essa árvore no final, 683 00:27:36,289 --> 00:27:41,389 que diz q para sair, é que eles não costumavam 684 00:27:38,779 --> 00:27:43,279 dizer isso, aperte q para sair deste 685 00:27:41,389 --> 00:27:48,169 programa. Pode ser bem difícil de sair 686 00:27:43,279 --> 00:27:50,750 pra quem não conhece. Falando nisso, 687 00:27:48,169 --> 00:27:52,970 um atalho de teclado legal aqui é ctrl+l 688 00:27:50,750 --> 00:27:56,990 que limpa o terminal e volta pro topo. 689 00:27:52,970 --> 00:27:59,330 Até agora só falamos sobre 690 00:27:56,990 --> 00:28:01,370 programas isolados, mas o 691 00:27:59,330 --> 00:28:03,019 poder do shell, na verdade, aparece 692 00:28:01,370 --> 00:28:06,380 na hora em que começamos 693 00:28:03,019 --> 00:28:08,419 a combinar diferentes programas, certo? 694 00:28:06,380 --> 00:28:10,789 Então, em vez de rodar cd e rodar ls etc, 695 00:28:08,419 --> 00:28:12,500 vocês poderiam querer encadear 696 00:28:10,789 --> 00:28:13,940 diversos programas, ou 697 00:28:12,500 --> 00:28:15,980 querer interagir com arquivos e 698 00:28:13,940 --> 00:28:19,309 operá-los entre um programa e outro. 699 00:28:15,980 --> 00:28:21,200 A forma de fazer isso é usando a 700 00:28:19,309 --> 00:28:24,620 noção de streams que o shell nos dá. 701 00:28:21,200 --> 00:28:25,940 Todo programa, por default, tem... 702 00:28:24,620 --> 00:28:28,610 vou simplificar um pouco e falar de 703 00:28:25,940 --> 00:28:31,820 dois streams primários, o de entrada 704 00:28:28,610 --> 00:28:33,950 e o de saída. Por default, o stream de 705 00:28:31,820 --> 00:28:35,419 entrada é basicamente seu teclado, 706 00:28:33,950 --> 00:28:36,860 seu terminal, e 707 00:28:35,419 --> 00:28:38,929 o que quer que você digite no terminal vai 708 00:28:36,860 --> 00:28:40,610 acabar parando no seu programa, que tem 709 00:28:38,929 --> 00:28:42,049 um stream de saída padrão, que é 710 00:28:40,610 --> 00:28:44,330 usado sempre que o programa imprime 711 00:28:42,049 --> 00:28:46,279 algo. Ele imprime no stream e, por padrão, 712 00:28:44,330 --> 00:28:48,470 é também seu terminal. É por isso que 713 00:28:46,279 --> 00:28:50,690 quando digito echo hello, isso é impresso 714 00:28:48,470 --> 00:28:54,200 no terminal. Mas o 715 00:28:50,690 --> 00:28:56,360 shell lhes dá uma forma de redirecionar 716 00:28:54,200 --> 00:28:59,120 esses streams para mudar onde é a entrada 717 00:28:56,360 --> 00:29:00,980 e a saída de um programa. 718 00:28:59,120 --> 00:29:06,200 A maneira mais fácil de fazer isso é 719 00:29:00,980 --> 00:29:08,210 usando o < e >. De modo que vocês podem 720 00:29:06,200 --> 00:29:11,570 escrever algo assim ou escrever algo 721 00:29:08,210 --> 00:29:14,299 assim. O > significa que 722 00:29:11,570 --> 00:29:16,340 a entrada pra esse programa deve ser 723 00:29:14,299 --> 00:29:21,040 redirecionada para o conteúdo desse 724 00:29:16,340 --> 00:29:23,600 arquivo e o < significa que 725 00:29:21,040 --> 00:29:27,559 a saída do programa precedente deve ser 726 00:29:23,600 --> 00:29:28,580 redirecionada para este arquivo. Vamos 727 00:29:27,559 --> 00:29:32,240 ver um exemplo de como isso funciona. 728 00:29:28,580 --> 00:29:34,280 Se eu der echo hello, posso dizer que quero que 729 00:29:32,240 --> 00:29:36,710 o conteúdo seja salvo em 730 00:29:34,280 --> 00:29:39,049 um arquivo chamado hello.txt. Como eu dei 731 00:29:36,710 --> 00:29:40,520 esse caminho relativo, ele vai criar 732 00:29:39,049 --> 00:29:42,980 um arquivo no diretório atual 733 00:29:40,520 --> 00:29:45,440 chamado hello.text. Ao menos teoricamente 734 00:29:42,980 --> 00:29:47,780 seu conteúdo deveria ser a 735 00:29:45,440 --> 00:29:50,360 palavra hello. Se eu rodar isso, vejam 736 00:29:47,780 --> 00:29:52,100 que nada aparece na minha saída, da 737 00:29:50,360 --> 00:29:52,700 última vez que rodei echo hello 738 00:29:52,100 --> 00:29:55,340 a palavra hello aparecia na tela. 739 00:29:52,700 --> 00:29:57,799 Agora, essa saída foi direcionada para um 740 00:29:55,340 --> 00:30:00,610 arquivo chamado hello.txt. Dá para verificar 741 00:29:57,799 --> 00:30:03,860 isso usando um programa chamado cat. 742 00:30:00,610 --> 00:30:07,280 O cat imprime na tela o conteúdo de um arquivo, então 743 00:30:03,860 --> 00:30:11,059 posso rodar hello.txt e ele mostra 744 00:30:07,280 --> 00:30:13,220 hello. Porém o cat também permite 745 00:30:11,059 --> 00:30:16,220 esse tipo de direcionamento, então posso 746 00:30:13,220 --> 00:30:17,990 dizer cat, que por default imprime sua 747 00:30:16,220 --> 00:30:20,720 entrada na tela, ele apenas duplica a entrada 748 00:30:17,990 --> 00:30:23,809 na saída. Posso dizer que quero que 749 00:30:20,720 --> 00:30:25,160 pegue sua entrada do hello.txt, e o 750 00:30:23,809 --> 00:30:26,990 que vai acontecer neste caso é que 751 00:30:25,160 --> 00:30:29,840 o sheel vai abrir o hello.txt, 752 00:30:26,990 --> 00:30:32,540 pegar seu conteúdo e definir isso como 753 00:30:29,840 --> 00:30:34,370 a entrada do cat, e aí o car vai imprimir 754 00:30:32,540 --> 00:30:36,500 isso na sua saída. Como não direcionei a saída, 755 00:30:34,370 --> 00:30:38,179 vai aparecer no 756 00:30:36,500 --> 00:30:41,870 meu terminal. Então ele vai simplesmente imprimir 757 00:30:38,179 --> 00:30:43,549 hello na saída. Posso usar ambos 758 00:30:41,870 --> 00:30:45,470 ao menos tempo, por exemplo, 759 00:30:43,549 --> 00:30:47,000 se quero copiar um arquivo sem usar o 760 00:30:45,470 --> 00:30:51,500 comando cp por algum motivo, 761 00:30:47,000 --> 00:30:54,470 posso fazer assim. Neste caso, não 762 00:30:51,500 --> 00:30:56,540 estou passando nada ao programa cat, 763 00:30:54,470 --> 00:30:58,010 só estou dizendo, funcione normalmente, 764 00:30:56,540 --> 00:30:59,960 o programa cat não sabe 765 00:30:58,010 --> 00:31:02,150 nada sobre esse redirecionamento. Mas 766 00:30:59,960 --> 00:31:04,190 estou dizendo ao shell para usar o hello.txt 767 00:31:02,150 --> 00:31:08,120 como entrada para o cat e para escrever 768 00:31:04,190 --> 00:31:09,470 o que quer que seja que o cat vai soltar no arquivo hello.txt. 769 00:31:08,120 --> 00:31:10,010 De novo, nada aparece no meu terminal, 770 00:31:09,470 --> 00:31:13,340 mas se 771 00:31:10,010 --> 00:31:15,620 eu der cat hello2.txt, vejo a saída como 772 00:31:13,340 --> 00:31:20,630 era esperado, que é uma cópia do arquivo 773 00:31:15,620 --> 00:31:23,390 original. Há, também, o sinal >> 774 00:31:20,630 --> 00:31:26,570 que significa anexar em vez de 775 00:31:23,390 --> 00:31:27,380 escrever por cima. Então você vai notar 776 00:31:26,570 --> 00:31:29,870 que se eu digitar 777 00:31:27,380 --> 00:31:32,300 cat < hello.txt > hello2.txt 778 00:31:29,870 --> 00:31:34,160 de novo e depois cat hello2.txt, 779 00:31:32,300 --> 00:31:36,500 ele ainda contém somente hello, apesar de 780 00:31:34,160 --> 00:31:38,750 já conter um hello antes. Se eu mudar para 781 00:31:36,500 --> 00:31:41,090 >> para anexar 782 00:31:38,750 --> 00:31:45,890 e digitar cat nesse arquivo, 783 00:31:41,090 --> 00:31:47,570 agora hello aparece duas vezes. São 784 00:31:45,890 --> 00:31:49,850 comandos bem simples, geralmente 785 00:31:47,570 --> 00:31:51,590 só para interagir com arquivos, mas 786 00:31:49,850 --> 00:31:53,420 isso fica realmente interessante se usarmos 787 00:31:51,590 --> 00:31:56,150 um operador adicional do shell chamado 788 00:31:53,420 --> 00:32:00,020 pipe. O pipe é uma barra vertical 789 00:31:56,150 --> 00:32:02,900 e o que ele faz é pegar 790 00:32:00,020 --> 00:32:05,300 a saída de um programa à esquerda e 791 00:32:02,900 --> 00:32:09,650 torná-la entrada do programa 792 00:32:05,300 --> 00:32:13,940 à direita. Vamos ver como funciona. 793 00:32:09,650 --> 00:32:17,450 Vamos usar o exemplo do ls -l / 794 00:32:13,940 --> 00:32:19,550 Isso imprime um monte de coisas. Digamos 795 00:32:17,450 --> 00:32:22,460 que eu só quero a 796 00:32:19,550 --> 00:32:25,670 última linha dessa saída. Bem, há um 797 00:32:22,460 --> 00:32:28,940 comando chamado tail. O tail imprime 798 00:32:25,670 --> 00:32:32,420 as últimas n linhas da entrada, então 799 00:32:28,940 --> 00:32:34,520 posso digitar -n 1. Essa é a flag chamada 800 00:32:32,420 --> 00:32:36,890 n. Também dá pra usar --lines se quiserem 801 00:32:34,520 --> 00:32:38,660 uma opção mais longa, mas nesse caso 802 00:32:36,890 --> 00:32:42,260 o que isso faz é imprimir a última 803 00:32:38,660 --> 00:32:46,640 linha. Posso escrever tudo junto, 804 00:32:42,260 --> 00:32:50,840 ls -l | tail -n 1. 805 00:32:46,640 --> 00:32:53,060 Vejam aqui que o ls não sabe 806 00:32:50,840 --> 00:32:55,340 nada sobre o tail e o tail não sabe nada 807 00:32:53,060 --> 00:32:56,870 sobre o lr. São programas diferentes e que 808 00:32:55,340 --> 00:32:59,120 nunca foram programados para ser compatíveis 809 00:32:56,870 --> 00:33:00,650 um com o outro. Tudo que eles sabem 810 00:32:59,120 --> 00:33:02,900 fazer é ler uma entrada e escrever em uma 811 00:33:00,650 --> 00:33:05,360 saída. É o pipe que os conecta 812 00:33:02,900 --> 00:33:07,670 e, nesse caso particular, estou dizendo 813 00:33:05,360 --> 00:33:09,380 que quero que a saída do ls sirva de 814 00:33:07,670 --> 00:33:10,850 entrada para o tail e quero que a saída 815 00:33:09,380 --> 00:33:12,140 do tail vá para o terminal porque não 816 00:33:10,850 --> 00:33:14,240 a redirecionei. 817 00:33:12,140 --> 00:33:16,730 Eu também poderia definir que 818 00:33:14,240 --> 00:33:18,770 a saída deveria ir para ls.txt e, 819 00:33:16,730 --> 00:33:20,990 nesse caso, se eu der cat ls.txt vou 820 00:33:18,770 --> 00:33:22,640 ver a saída apropriada. Ocorre que 821 00:33:20,990 --> 00:33:21,815 é possível fazer coisas muito elegantes com isso. 822 00:33:23,340 --> 00:33:27,720 Nós vamos ir mais a fundo na aula 823 00:33:25,110 --> 00:33:30,720 'Duelando com os Dados' daqui 824 00:33:27,720 --> 00:33:32,490 uns quatro dias, sobre as coisas 825 00:33:30,720 --> 00:33:36,060 mais elaboradas que vocês podem fazer 826 00:33:32,490 --> 00:33:37,560 ao construir pipelines mais avançados. 827 00:33:36,060 --> 00:33:42,300 Pra dar um exemplo, podemos digitar 828 00:33:37,560 --> 00:33:46,320 curl --head --silent google.com. 829 00:33:42,300 --> 00:33:48,870 Só para mostrar como isso funciona, 830 00:33:46,320 --> 00:33:52,680 esse comando retorna todos os cabeçalhos HTTP 831 00:33:48,870 --> 00:33:56,520 para acessar google.com. E eu posso mandar 832 00:33:52,680 --> 00:34:01,260 isso direto para o grep --ignore-case 833 00:33:56,520 --> 00:34:04,230 ou -i se preferir, depois -content-lenght. 834 00:34:01,260 --> 00:34:06,120 Isso vai imprimir o 835 00:34:04,230 --> 00:34:07,500 tamanho do conteúdo do cabeçalho. O grep 836 00:34:06,120 --> 00:34:09,090 é um programa sobre o qual vamos falar mais tarde. 837 00:34:07,500 --> 00:34:12,660 Ele nos permite buscar uma palavra-chave 838 00:34:09,090 --> 00:34:15,560 em um stream de entrada. Podemos usar o pipe para mandar 839 00:34:12,660 --> 00:34:20,190 para o comando cut, que recebe um 840 00:34:15,560 --> 00:34:22,260 delimitador, escolhido como espaço, e eu 841 00:34:20,190 --> 00:34:24,420 quero o segundo campo. Isso imprime 842 00:34:22,260 --> 00:34:25,950 apenas o tamanho do conteúdo. Esse é 843 00:34:24,420 --> 00:34:28,380 um exemplo bobo, só para 844 00:34:25,950 --> 00:34:30,180 extrair o tamanho em bytes 845 00:34:28,380 --> 00:34:32,700 do google.com pela linha de comando. 846 00:34:30,180 --> 00:34:34,740 Não é algo muito útil, 847 00:34:32,700 --> 00:34:36,300 mas serve para mostrar que, encadeando 848 00:34:34,740 --> 00:34:38,330 essas coisas, conseguimos obter 849 00:34:36,300 --> 00:34:40,980 diversos efeitos de manipulação de texto. 850 00:34:38,330 --> 00:34:43,290 E os pipes não servem apenas para 851 00:34:40,980 --> 00:34:45,330 dados de texto, dá para usá-lo com 852 00:34:43,290 --> 00:34:47,850 imagens também. Podemos ter um 853 00:34:45,330 --> 00:34:49,590 programa que manipula uma imagem em 854 00:34:47,850 --> 00:34:51,450 binário como entrada e escreve uma 855 00:34:49,590 --> 00:34:53,400 imagem em binário como saída. E é possível encadeá-los 856 00:34:51,450 --> 00:34:54,840 dessa forma (vamos dar mais exemplos 857 00:34:53,400 --> 00:34:57,000 mais pra frente). 858 00:34:54,840 --> 00:34:59,430 É possível usá-lo até com 859 00:34:57,000 --> 00:35:00,900 vídeo se vocês quiserem. 860 00:34:59,430 --> 00:35:02,940 Por exemplo, uma ótima maneira de 861 00:35:00,900 --> 00:35:05,790 ter um chromecast em casa: você pode 862 00:35:02,940 --> 00:35:07,920 stream um arquivo de vídeo ao definir 863 00:35:05,790 --> 00:35:11,160 que o último programa no seu pipe é um 864 00:35:07,920 --> 00:35:13,050 chromecast send. Com isso, dá para enviar 865 00:35:11,160 --> 00:35:19,140 um arquivo de vídeo para o streaming ou 866 00:35:13,050 --> 00:35:20,370 usar http para seu chromecast. 867 00:35:19,140 --> 00:35:22,410 Vamos falar bem mais sobre isso na aula 868 00:35:20,370 --> 00:35:25,110 'Duelando com os Dados'. Uma coisa mais 869 00:35:22,410 --> 00:35:27,800 que gostaria de mostrar é como 870 00:35:25,110 --> 00:35:30,390 usar o terminal de uma forma mais 871 00:35:27,800 --> 00:35:31,920 interessante e talvez mais poderosa 872 00:35:30,390 --> 00:35:33,840 do que vocês estão acostumados. 873 00:35:31,920 --> 00:35:35,640 Essa dica talveu vai ser válida até para 874 00:35:33,840 --> 00:35:37,720 quem já se sente mais 875 00:35:35,640 --> 00:35:41,020 confortável com o terminal. 876 00:35:37,720 --> 00:35:43,030 Primeiro precisamos abordar um tópico 877 00:35:41,020 --> 00:35:44,890 importante no que diz respeito aos sistemas Linux 878 00:35:43,030 --> 00:35:47,620 e MacOS em particular, que é a noção 879 00:35:44,890 --> 00:35:49,300 de usuário root. O usuário root é como 880 00:35:47,620 --> 00:35:52,480 o administrador no Windows, 881 00:35:49,300 --> 00:35:55,000 ele tem ID 0. 882 00:35:52,480 --> 00:35:56,830 O usuário root é especial porque ele 883 00:35:55,000 --> 00:35:59,680 pode fazer o que quiser 884 00:35:56,830 --> 00:36:01,540 no seu sistema, ainda que um arquivo não 885 00:35:59,680 --> 00:36:03,790 possa ser lido ou escrito por mais 886 00:36:01,540 --> 00:36:06,010 ninguém, o root ainda pode acessá-lo. 887 00:36:03,790 --> 00:36:09,000 O root é como um super usuário 888 00:36:06,010 --> 00:36:11,260 que faz o que quiser. 889 00:36:09,000 --> 00:36:13,330 Na maiorias das vezes, vocês não vão 890 00:36:11,260 --> 00:36:15,550 operar como o super usuário, vocês não 891 00:36:13,330 --> 00:36:17,350 vão ser o root. Vocês vão ser um usuário como john 892 00:36:15,550 --> 00:36:19,660 ou qualquer que seja seu nome, Esse vai 893 00:36:17,350 --> 00:36:21,370 ser seu usuário, com o qual vocês agem, 894 00:36:19,660 --> 00:36:23,470 porque se vocês operassem seu computador 895 00:36:21,370 --> 00:36:24,700 como o usuário root o tempo todo, 896 00:36:23,470 --> 00:36:26,710 e rodasse um programa errado, pode ser 897 00:36:24,700 --> 00:36:29,950 que destruiriam o computador. Vocês não 898 00:36:26,710 --> 00:36:31,810 querem fazer isso, certo? Mas de vez em quando 899 00:36:29,950 --> 00:36:34,450 vocês podem querer fazer algo que requeira 900 00:36:31,810 --> 00:36:38,580 que vocês sejam root. Para esses casos, 901 00:36:34,450 --> 00:36:42,790 normalmente vocês vão usar um programa chamado sudo 902 00:36:38,580 --> 00:36:44,740 or 'faça como su" e, nesse caso, su significa 903 00:36:42,790 --> 00:36:46,590 super usuário. Essa é uma forma de fazer 904 00:36:44,740 --> 00:36:49,750 algo como super usuário. 905 00:36:46,590 --> 00:36:51,490 Normalmente funciona assim: 906 00:36:49,750 --> 00:36:53,020 escrevemos sudo e depois o comando 907 00:36:51,490 --> 00:36:54,580 como fazemos no terminal. Ele vai 908 00:36:53,020 --> 00:36:56,230 rodar aquele comando como se você 909 00:36:54,580 --> 00:37:01,180 fosse o root em vez do seu usuário normal. 910 00:36:56,230 --> 00:37:04,540 Onde vocês podem precisar de algo assim? 911 00:37:01,180 --> 00:37:05,800 Bem, um há vários arquivos de sistema 912 00:37:04,540 --> 00:37:07,510 especiais no seu computador, 913 00:37:05,800 --> 00:37:11,070 mas, em particular, há um 914 00:37:07,510 --> 00:37:14,800 chamado sysfs. Se você der cd /sys, 915 00:37:11,070 --> 00:37:17,320 vamos para um mundo bem diferente. 916 00:37:14,800 --> 00:37:19,720 Esse arquivo de sistema não é exatamente 917 00:37:17,320 --> 00:37:22,120 um arquivo em seu computador. Na verdade, 918 00:37:19,720 --> 00:37:24,180 são vários parâmetros do kernel. O kernel 919 00:37:22,120 --> 00:37:26,680 é basicamente o cérebro do seu computador. 920 00:37:24,180 --> 00:37:29,560 Essa é uma forma de acessar os diversos 921 00:37:26,680 --> 00:37:32,680 parâmetros do kernel através do que 922 00:37:29,560 --> 00:37:35,950 se parece com um arquivo de sistema. Vejam 923 00:37:32,680 --> 00:37:37,690 que se eu der cd em class, por exemplo, 924 00:37:35,950 --> 00:37:39,880 há diretórios para um monte de tipos 925 00:37:37,690 --> 00:37:43,750 diferentes de dispositivos com os quais 926 00:37:39,880 --> 00:37:47,920 posso interagir, ou muitas filas que posso acessar 927 00:37:43,750 --> 00:37:49,990 ou uma variedade de botões internos 928 00:37:47,920 --> 00:37:50,410 esquisitos. Como eles estão mostrados como arquivos, 929 00:37:50,410 --> 00:37:54,280 dá para usarmos todas as ferramentas que 930 00:37:52,030 --> 00:37:57,579 já vimos para manipulá-los. 931 00:37:54,280 --> 00:38:01,420 Um exemplo disso é se vocês entrarem 932 00:37:57,579 --> 00:38:02,440 em sys class backlight, esse backlight 933 00:38:01,420 --> 00:38:04,180 permite que configuremos diretamente 934 00:38:02,440 --> 00:38:06,760 a luz do nosso laptop, se ele tiver uma. 935 00:38:04,180 --> 00:38:08,920 Se eu der cd e entrar no intel backlight, 936 00:38:06,760 --> 00:38:10,990 porque esse é um laptop da Intel, 937 00:38:08,920 --> 00:38:12,760 aqui vocês vêem que há um arquivo chamado brightness 938 00:38:10,990 --> 00:38:16,089 e eu posso cat brightness. Esse é o brilho 939 00:38:12,760 --> 00:38:18,880 atual da minha tela. Mas mais que isso, 940 00:38:16,089 --> 00:38:21,460 posso modificá-lo também para mudar o 941 00:38:18,880 --> 00:38:23,740 brilho da tela. Então 942 00:38:21,460 --> 00:38:25,750 vocês podem pensar que consigo... 943 00:38:23,740 --> 00:38:26,799 deixe-me ver qual é o brilho máximo. 944 00:38:25,750 --> 00:38:29,589 Ok, agora está no máximo. 945 00:38:26,799 --> 00:38:32,319 Vocês podem imaginar que eu 946 00:38:29,589 --> 00:38:35,410 poderia fazer algo como echo, 947 00:38:32,319 --> 00:38:39,010 vamos reduzir, 948 00:38:35,410 --> 00:38:38,010 echo 500 para brightness, 949 00:38:38,010 --> 00:38:39,010 se faço isso ele diz 950 00:38:39,010 --> 00:38:43,089 que a permissão foi negada. Eu não posso 951 00:38:40,839 --> 00:38:45,220 modificar o brilho porque, para fazê-lo, 952 00:38:43,089 --> 00:38:46,599 para modificar coisas no 953 00:38:45,220 --> 00:38:48,460 kernel, é preciso ser o 954 00:38:46,599 --> 00:38:50,619 administrador. Vocês podem pensar 955 00:38:48,460 --> 00:38:52,960 que a forma de resolver isso é digitar 956 00:38:50,619 --> 00:38:55,779 sudo echo 500 mas ainda assim a 957 00:38:52,960 --> 00:38:58,260 permissão é negada. Por que? 958 00:38:55,779 --> 00:39:00,549 Porque, como mencionei, esses 959 00:38:58,260 --> 00:39:03,069 redirecionamentos de entrada e saída não 960 00:39:00,549 --> 00:39:05,470 são algo que os programas saibam quando 961 00:39:03,069 --> 00:39:07,240 usamos o pipe com o ls e o tail, o tail 962 00:39:05,470 --> 00:39:09,609 não sabia do ls e o ls não sabia do tail. 963 00:39:07,240 --> 00:39:11,859 O pipe e o redirecionamento foram estabelecidos 964 00:39:09,609 --> 00:39:14,079 pelo shell, então, nesse caso, 965 00:39:11,859 --> 00:39:18,039 o que está ocorrendo é que estou dizendo ao shell 966 00:39:14,079 --> 00:39:21,220 para rodar o programa sudo com os argumentos 967 00:39:18,039 --> 00:39:24,130 echo e 500 e mandar essa saída para o 968 00:39:21,220 --> 00:39:25,930 arquivo chamado brightness, mas é o shell 969 00:39:24,130 --> 00:39:29,410 que está abrindo o arquivo brightness, 970 00:39:25,930 --> 00:39:32,380 não o programa sudo. Nesse caso, é 971 00:39:29,410 --> 00:39:33,789 o shell que está rodando quando eu tento 972 00:39:32,380 --> 00:39:35,470 abrir o arquivo brightness para escrever nele 973 00:39:33,789 --> 00:39:37,079 e ele não tem permissão para fazer isso. 974 00:39:35,470 --> 00:39:39,779 Portanto, ele dá erro. 975 00:39:37,079 --> 00:39:42,339 Vocês já devem ter visto isso quando 976 00:39:39,779 --> 00:39:43,750 buscam algo e acabam, no Stack Overflow 977 00:39:42,339 --> 00:39:45,400 e dizem para rodar um comando tal 978 00:39:43,750 --> 00:39:47,440 e eles falam, por exemplo, 979 00:39:45,400 --> 00:39:52,930 eles dão uma instrução 980 00:39:47,440 --> 00:39:57,970 como 1 > /sys/class 981 00:39:52,930 --> 00:39:59,559 net ipv4 word, por exemplo. 982 00:39:57,970 --> 00:40:02,589 Isso é algo que vocês podem ter visto se 983 00:39:59,559 --> 00:40:04,240 tiverem tentado configurar um firewall 984 00:40:02,589 --> 00:40:05,680 e esse comando tem de funcionar 985 00:40:04,240 --> 00:40:08,200 porque o simbolozinho de hashtag 986 00:40:05,680 --> 00:40:09,640 indica que deve roda como root. 987 00:40:08,200 --> 00:40:11,170 Isso é raramente explicado, 988 00:40:09,640 --> 00:40:12,970 mas é isso que o # significa. 989 00:40:11,170 --> 00:40:15,099 Vejam no meu prompt um símbolo $ 990 00:40:12,970 --> 00:40:17,710 que indica 991 00:40:15,099 --> 00:40:18,819 que não estou rodando como root. 992 00:40:17,710 --> 00:40:22,270 Então a questão é como eu faço pra resolver isso? 993 00:40:18,819 --> 00:40:24,690 Bem, eu poderia mudar para outro terminal 994 00:40:22,270 --> 00:40:27,369 como root, e um jeito de fazer isso é 995 00:40:24,690 --> 00:40:32,140 rodar sudo su, que significa 'rode o seguinte 996 00:40:27,369 --> 00:40:34,329 comando como root' e o su é um comando 997 00:40:32,140 --> 00:40:37,290 complicado que nos abre um shell como 998 00:40:34,329 --> 00:40:40,599 super usuário. Então se faço isso, 999 00:40:37,290 --> 00:40:42,010 entro a senha, vocês podem ver 1000 00:40:40,599 --> 00:40:44,530 que o nome de usuário no início 1001 00:40:42,010 --> 00:40:47,109 mudou de john para root, e o prompt 1002 00:40:44,530 --> 00:40:49,390 mudou de $ para #. 1003 00:40:47,109 --> 00:40:52,240 Se eu agora der echo 500 para 1004 00:40:49,390 --> 00:40:54,010 o arquivo brightness, minha tela 1005 00:40:52,240 --> 00:40:57,040 ficou um pouco mais escura. Vocês 1006 00:40:54,010 --> 00:40:58,990 não conseguem ver então terão de acreditar em mim. Não deu nenhum 1007 00:40:57,040 --> 00:41:01,630 erro porque agora o shell está 1008 00:40:58,990 --> 00:41:04,540 rodando como root e não mais como 1009 00:41:01,630 --> 00:41:07,359 john. O usuário root tem permissão de 1010 00:41:04,540 --> 00:41:09,760 abrir esse arquivo. Mas com o que sabemos 1011 00:41:07,359 --> 00:41:11,349 sobre o terminal agora, há, na verdade, 1012 00:41:09,760 --> 00:41:13,720 uma maneira de fazer isso sem ter 1013 00:41:11,349 --> 00:41:19,119 de abrir um shell root. Funciona assim. 1014 00:41:13,720 --> 00:41:22,990 Deixe-me voltar para 1060. 1015 00:41:19,119 --> 00:41:26,589 Vocês vêem por que está diferente 1016 00:41:22,990 --> 00:41:29,020 aqui? Estou dizendo ao shell para 1017 00:41:26,589 --> 00:41:31,270 rodar o comando echo 1060, 1018 00:41:29,020 --> 00:41:33,369 e estou dizendo para rodar o 1019 00:41:31,270 --> 00:41:35,890 comando sudo tee brightness. 1020 00:41:33,369 --> 00:41:39,160 Estou dizendo para mandar a saída do 1021 00:41:35,890 --> 00:41:40,540 echo para o sudo tee. Para entender isso 1022 00:41:39,160 --> 00:41:43,450 vocês precisam saber o que o comando tee faz. 1023 00:41:40,540 --> 00:41:47,079 O comando tee pega sua entrada e a escreve 1024 00:41:43,450 --> 00:41:49,540 tanto em um arquivo quanto na tela. 1025 00:41:47,079 --> 00:41:52,329 Então o tee é uma maneira conveniente se 1026 00:41:49,540 --> 00:41:54,160 vocês tiverem, por exemplo, um arquivo de logs que queiram enviar 1027 00:41:52,329 --> 00:41:56,230 para deixar guardado para mais tarde, 1028 00:41:54,160 --> 00:41:58,059 mas também querem checar vocês mesmos. 1029 00:41:56,230 --> 00:41:59,770 Vocês podem usar o pipe para mandá-lo para o tee, passar o nome de 1030 00:41:58,059 --> 00:42:01,809 um arquivo e ele vai escrever o que quer que esteja na sua 1031 00:41:59,770 --> 00:42:04,270 entrada tanto no arquivo quanto na sua 1032 00:42:01,809 --> 00:42:07,630 tela. Aqui estou aproveitando esse 1033 00:42:04,270 --> 00:42:09,940 programa, estou dizendo 'rode o tee como 1034 00:42:07,630 --> 00:42:12,970 rota e use o tee direto no arquivo brightness. 1035 00:42:09,940 --> 00:42:14,380 Nesse caso, o programa tee, 1036 00:42:12,970 --> 00:42:16,150 que é quem está abrindo o arquivo brightness, 1037 00:42:14,380 --> 00:42:17,370 está rodando como root, então ele 1038 00:42:16,150 --> 00:42:20,190 tem permissão de fazer isso. 1039 00:42:17,370 --> 00:42:21,390 Se eu rodar de novo, vocês não conseguem 1040 00:42:20,190 --> 00:42:23,850 ver, mas o brilho aumentou no laptop, 1041 00:42:21,390 --> 00:42:25,770 não deu nenhum erro 1042 00:42:23,850 --> 00:42:27,390 e não foi preciso abrir um shell como 1043 00:42:25,770 --> 00:42:30,930 root e rodar comandos nele, 1044 00:42:27,390 --> 00:42:32,160 o que muitas vezes pode ser perigoso. 1045 00:42:30,930 --> 00:42:33,450 Se vocês quiserem explorar esses arquivos de sistema 1046 00:42:32,160 --> 00:42:35,940 um pouco mais, há bastante coisa 1047 00:42:33,450 --> 00:42:39,450 interessante aqui. Se vocês 1048 00:42:35,940 --> 00:42:41,430 derem uma navegada por aqui, 1049 00:42:39,450 --> 00:42:42,930 vão achar bastante coisas divertidas. 1050 00:42:41,430 --> 00:42:45,090 Por exemplo, nós notamos que tem um 1051 00:42:42,930 --> 00:42:48,540 comando legal para o brilho aqui, que 1052 00:42:45,090 --> 00:42:49,980 outros tipos de brilhos eu poderia definir? 1053 00:42:48,540 --> 00:42:51,860 Eu posso usar o comando find, sobre o 1054 00:42:49,980 --> 00:42:56,000 qual também vamos falar numa próxima aula, 1055 00:42:51,860 --> 00:42:58,860 Quero olhar qualquer arquivo cujo nome 1056 00:42:56,000 --> 00:43:01,890 se parece com brightness no 1057 00:42:58,860 --> 00:43:05,070 diretório atual. Não ajudou muito, talvez 1058 00:43:01,890 --> 00:43:08,850 não sejam arquivos. Será que soletrei errado? 1059 00:43:05,070 --> 00:43:17,010 Hum, por que não funciona? 1060 00:43:08,850 --> 00:43:20,460 Oh, parece que ele não quer buscar por 1061 00:43:17,010 --> 00:43:23,910 brightness. Para a sorte de vocês eu já 1062 00:43:20,460 --> 00:43:27,480 conheço um legal. 1063 00:43:23,910 --> 00:43:30,090 Há um subdiretório chamado leds e 1064 00:43:27,480 --> 00:43:32,400 leds também têm brilho. Que tipos de leds 1065 00:43:30,090 --> 00:43:36,960 existem? Um monte! 1066 00:43:32,400 --> 00:43:38,280 Por exemplo, o led da tecla scroll lock. 1067 00:43:36,960 --> 00:43:40,290 A maioria de vocês provavelmente não sabe 1068 00:43:38,280 --> 00:43:42,780 o que é o led do scroll lock e muito 1069 00:43:40,290 --> 00:43:45,770 menos o que o scroll lock faz. Talvez vocês já viram uma tecla 1070 00:43:42,780 --> 00:43:47,670 no teclado chamada scroll lock. 1071 00:43:45,770 --> 00:43:49,650 Basicamente ninguém mais sabe pra que 1072 00:43:47,670 --> 00:43:51,750 serve, ninguém usa pra nada. 1073 00:43:49,650 --> 00:43:55,680 É quase uma tecla morta e 1074 00:43:51,750 --> 00:43:57,240 um led morto. E se vocês quisessem 1075 00:43:55,680 --> 00:43:59,220 configurá-lo para que, toda vez que 1076 00:43:57,240 --> 00:44:00,960 chegar um e-mail, o led do scroll lock acender? 1077 00:43:59,220 --> 00:44:03,270 Por que não tem nenhuma outra razão para 1078 00:44:00,960 --> 00:44:06,000 ele acender. Bem, se entrarmos nesse 1079 00:44:03,270 --> 00:44:08,130 diretório que tem um brilho 1080 00:44:06,000 --> 00:44:12,320 definido como 0. 1081 00:44:08,130 --> 00:44:12,320 Bom, o que acontece se eu escrever 1 nele? 1082 00:44:12,590 --> 00:44:17,220 É aconselhável vocês não saírem 1083 00:44:15,330 --> 00:44:18,720 escrevendo números aleatórios em qualquer arquivo 1084 00:44:17,220 --> 00:44:20,310 deste diretório porque isso vai afetar 1085 00:44:18,720 --> 00:44:22,560 diretamente o kernel. Dêem uma olhada antes 1086 00:44:20,310 --> 00:44:24,240 no que os arquivos fazem. Nesse caso aqui, 1087 00:44:22,560 --> 00:44:28,050 eu fiz uma pesquisa prévia com cuidado. 1088 00:44:24,240 --> 00:44:30,630 Vocês não conseguem ver, mas agora 1089 00:44:28,050 --> 00:44:33,509 no meu teclado o led da tecla scroll lock 1090 00:44:30,630 --> 00:44:35,400 está aceso. Se eu escrevesse um programa 1091 00:44:33,509 --> 00:44:37,829 que checa e-mails, eu poderia, no final 1092 00:44:35,400 --> 00:44:40,229 do programa, rodar um outro programa que 1093 00:44:37,829 --> 00:44:43,499 manda echo 1 para este arquivo, e portanto 1094 00:44:40,229 --> 00:44:47,460 teria uma maneira de acender o led do meu 1095 00:44:43,499 --> 00:44:49,680 teclado para indicar que chegou um e-mail. 1096 00:44:47,460 --> 00:44:50,940 Nessas alturas, vocês já devem saber 1097 00:44:49,680 --> 00:44:54,269 mais ou menos se virar 1098 00:44:50,940 --> 00:44:56,249 com o terminal, o shell e conhecer o 1099 00:44:54,269 --> 00:44:58,920 bastante para realizar essas tarefas 1100 00:44:56,249 --> 00:45:01,289 simples, ao menos teoricamente. Vocês não 1101 00:44:58,920 --> 00:45:02,819 deveriam mais precisar de 1102 00:45:01,289 --> 00:45:03,420 interfaces dependentes do mouse para 1103 00:45:02,819 --> 00:45:05,279 encontrar arquivos. 1104 00:45:03,420 --> 00:45:07,470 Um truque que faltou mostrar e vocês 1105 00:45:05,279 --> 00:45:10,529 podem precisar é o de abrir arquivos. 1106 00:45:07,470 --> 00:45:13,950 Até agora só mostrei como encontrar 1107 00:45:10,529 --> 00:45:17,690 arquivos, mas algo que vocês precisam 1108 00:45:13,950 --> 00:45:21,420 saber nesse curso é usar o 1109 00:45:17,690 --> 00:45:23,640 xdg-open. Esse provavelmente só vai 1110 00:45:21,420 --> 00:45:27,119 funcionar no Linux. Acho que no MacOS ele 1111 00:45:23,640 --> 00:45:29,430 se chama open e no Windows... sei lá. 1112 00:45:27,119 --> 00:45:31,739 O xdg-open recebe o nome de um arquivo e 1113 00:45:29,430 --> 00:45:34,769 vai abri-lo usando o programa apropriado. 1114 00:45:31,739 --> 00:45:36,180 Se vocês derem xdg-open em um arquivo 1115 00:45:34,769 --> 00:45:39,269 html, ele vai abrir o navegador 1116 00:45:36,180 --> 00:45:41,039 e abrir o arquivo. Uma vez que têm esse 1117 00:45:39,269 --> 00:45:42,869 programa, teoricamente vocês não 1118 00:45:41,039 --> 00:45:45,059 precisam nunca mais abrir uma janela do 1119 00:45:42,869 --> 00:45:46,799 buscador. Talvez precisem por outros 1120 00:45:45,059 --> 00:45:48,180 motivos, mas em teoria vocês conseguem 1121 00:45:46,799 --> 00:45:50,789 fazer tudo usando as ferramentas 1122 00:45:48,180 --> 00:45:53,849 que aprendemos hoje. Talvez pareça tudo 1123 00:45:50,789 --> 00:45:55,589 relativamente básico para alguns de vocês, 1124 00:45:53,849 --> 00:45:57,479 mas como eu mencionei, hoje tivemos 1125 00:45:55,589 --> 00:45:59,460 uma introdução. Agora sabemos como o 1126 00:45:57,479 --> 00:46:01,979 shell funciona e muito do que vamos 1127 00:45:59,460 --> 00:46:03,450 fazer nas próximas aulas é usar esse 1128 00:46:01,979 --> 00:46:07,019 conhecimento para fazer coisas bem 1129 00:46:03,450 --> 00:46:09,450 interessantes usando o shell. 1130 00:46:07,019 --> 00:46:10,979 Ou seja, hoje vimos como usar a interface 1131 00:46:09,450 --> 00:46:14,849 que vamos precisar, então é importante 1132 00:46:10,979 --> 00:46:16,650 todos saberem. Na próxima aula, 1133 00:46:14,849 --> 00:46:18,269 vamos falar bastante sobre como 1134 00:46:16,650 --> 00:46:20,309 automatizar tarefas como essas, 1135 00:46:18,269 --> 00:46:22,140 como escrever scripts que rodam um monte 1136 00:46:20,309 --> 00:46:24,390 de programas pra nós, usando 1137 00:46:22,140 --> 00:46:26,700 condicionais, loops etc no terminal, 1138 00:46:24,390 --> 00:46:29,009 ou mesmo coisas como rodar 1139 00:46:26,700 --> 00:46:30,390 um programa até ele quebrar, o que pode 1140 00:46:29,009 --> 00:46:31,979 ser bem útil em casos que queremos 1141 00:46:30,390 --> 00:46:35,369 rodar algo até os testes darem erro, 1142 00:46:31,979 --> 00:46:38,550 por exemplo. Então esse será o tópico da 1143 00:46:35,369 --> 00:46:39,900 aula na próxima semana. Você tinha uma pergunta? 1144 00:46:38,550 --> 00:46:42,420 Sim, com relação ao que você mostrou no 1145 00:46:39,900 --> 00:46:49,770 diretório sys, provavelmente só vai funcionar 1146 00:46:42,420 --> 00:46:52,530 se você estiver usando o subsistema do Windows pro Linux... 1147 00:46:49,770 --> 00:46:55,440 Boa pergunta, eu não sei se 1148 00:46:52,530 --> 00:46:57,570 o subsistema do Windows para Linux vai 1149 00:46:55,440 --> 00:46:59,280 deixar aberto esses arquivos de sistema no sys. Se deixar, 1150 00:46:57,570 --> 00:47:03,180 provavelmente vai mostrar só 1151 00:46:59,280 --> 00:47:08,490 umas poucas coisas... 1152 00:47:03,180 --> 00:47:10,320 Não sei, dê uma olhada. 1153 00:47:08,490 --> 00:47:11,610 Algo que vocês vão ver é que as notas 1154 00:47:10,320 --> 00:47:14,370 de aula dessa aula já estão 1155 00:47:11,610 --> 00:47:16,770 online, e no final do arquivo 1156 00:47:14,370 --> 00:47:18,420 tem diversos exercícios. Alguns 1157 00:47:16,770 --> 00:47:20,190 são relativamente fáceis, outros um 1158 00:47:18,420 --> 00:47:22,560 pouco mais difíceis. Sugerimos 1159 00:47:20,190 --> 00:47:24,060 tentar resolvê-los. 1160 00:47:22,560 --> 00:47:25,410 Se vocês já sabem esse conteúdo, 1161 00:47:24,060 --> 00:47:27,660 vai ser bem rápido, 1162 00:47:25,410 --> 00:47:29,400 e se não sabem vai servir para aprenderem 1163 00:47:27,660 --> 00:47:31,740 um monte de coisas que talvez vocês 1164 00:47:29,400 --> 00:47:33,150 percebam que não sabiam. No tira-dúvidas, 1165 00:47:31,740 --> 00:47:35,190 que vai acontecer logo 1166 00:47:33,150 --> 00:47:36,840 após essa aula, ficaremos felizes 1167 00:47:35,190 --> 00:47:38,160 em ajudá-los com os exercícios ou 1168 00:47:36,840 --> 00:47:39,540 com outros comandos que vocês vão 1169 00:47:38,160 --> 00:47:42,300 aprender nesse processo e queiram saber 1170 00:47:39,540 --> 00:47:44,910 como usar de forma eficiente. Enão na 1171 00:47:42,300 --> 00:47:46,710 próxima aula, já amanhã, vamos assumir 1172 00:47:44,910 --> 00:47:48,290 que vocês estão por dentro desse tipo de coisa 1173 00:47:46,710 --> 00:47:51,750 que os exercícios vão ensinar. 1174 00:47:48,290 --> 00:47:53,030 Há também um endereço de e-mail 1175 00:47:51,750 --> 00:47:56,100 no website, vocês podem mandar questões 1176 00:47:53,030 --> 00:47:58,860 que aparecerem depois do tira dúvidas. 1177 00:47:56,100 --> 00:48:05,160 Mais alguma pergunta 1178 00:47:58,860 --> 00:48:07,050 antes de terminar por hoje? Não? 1179 00:48:05,160 --> 00:48:09,480 Tudo bem, estaremos disponíveis no 1180 00:48:07,050 --> 00:48:12,150 nono andar do prédio Gates, o 32, 1181 00:48:09,480 --> 00:48:15,830 dentro de cinco minutos. 1182 00:48:12,150 --> 00:48:15,830 Vejo vocês lá!