WEBVTT 00:00:00.650 --> 00:00:07.799 Tudo bem, pessoal, obrigado por virem. 00:00:02.428 --> 00:00:07.799 Esse é o semestre que faltava na sua fomação em ciência da computação. 00:00:07.799 --> 00:00:11.519 Ou, pelo menos, é assim que decidimos nomear 00:00:09.960 --> 00:00:13.679 este curso. Se não é pra essa aula que 00:00:11.519 --> 00:00:15.900 você veio, então você entrou na sala errada. Nós 00:00:13.679 --> 00:00:19.590 estaremos aqui por mais ou menos 1h só 00:00:15.900 --> 00:00:21.180 para ajustar suas expectativas e... eu quero falar 00:00:19.590 --> 00:00:23.789 um pouco com vocês sobre o por quê 00:00:21.180 --> 00:00:25.980 de estarmos dando este curso. O curso 00:00:23.789 --> 00:00:29.670 se originou de uma observação que o Anish, 00:00:25.980 --> 00:00:33.030 o José e eu fizemos enquanto dávamos monitoria para vários 00:00:29.670 --> 00:00:34.710 cursos no MIT. Basicamente, 00:00:31.320 --> 00:00:34.710 todos nós, cientistas da computação, sabemos 00:00:34.710 --> 00:00:38.370 que computadores são ótimos em fazer 00:00:36.420 --> 00:00:41.250 tarefas repetitivas e automatizar coisas. 00:00:38.370 --> 00:00:43.020 Mas muitas vezes não percebemos que há 00:00:41.250 --> 00:00:45.930 muitas ferramentas que podem fazer nossos próprios 00:00:43.020 --> 00:00:47.520 processos de desenvolvimento melhores. Nós podemos ser 00:00:45.930 --> 00:00:49.620 bem mais eficientes sobre como usamos nossos 00:00:47.520 --> 00:00:51.989 computadores porque podemos usá-los 00:00:49.620 --> 00:00:54.360 como uma ferramenta para nós mesmos, não 00:00:51.989 --> 00:00:57.809 apenas para criar websites ou software ou 00:00:54.360 --> 00:00:59.670 coisas do gênero. Este curso é 00:00:57.809 --> 00:01:03.000 uma tentativa de abordar isso e uma tentativa 00:00:59.670 --> 00:01:05.220 de mostrar para vocês algumas ferramentas que vocês 00:01:03.000 --> 00:01:07.640 podem usar para um ótimo efeito seu dia a dia 00:01:05.220 --> 00:01:11.670 em pesquisa e nos estudos. 00:01:07.640 --> 00:01:15.150 Este vai ser um curso no qual nós 00:01:10.381 --> 00:01:15.150 queremos ensinar tanto como aproveitar 00:01:15.150 --> 00:01:19.200 ao máximo as ferramentas que você já 00:01:16.439 --> 00:01:20.909 conhece, mas também, assim esperamos, ensinar vocês sobre 00:01:19.200 --> 00:01:23.520 algumas ferramentas novas, 00:01:20.909 --> 00:01:26.250 além de como combinar essas ferramentas 00:01:23.520 --> 00:01:28.140 para produzir coisas mais poderosas do que 00:01:26.250 --> 00:01:31.049 vocês imaginam ser capaz de fazer com o que 00:01:28.140 --> 00:01:33.420 já sabem atualmente. Este curso está 00:01:31.049 --> 00:01:36.630 estruturado em uma séria de aulas de 1h 00:01:33.420 --> 00:01:38.880 e cada aula vai cobrir 00:01:36.630 --> 00:01:40.920 um tópico em paticular. Vocês podem checar 00:01:38.880 --> 00:01:43.439 o website, que está escrito lá, para 00:01:40.920 --> 00:01:45.990 acessar a lista de tópicos e datas 00:01:43.439 --> 00:01:48.210 de cada um. As aulas serão, em geral, 00:01:45.990 --> 00:01:49.350 independentes, então vocês podem 00:01:48.210 --> 00:01:51.450 comparecer às que lhes interessa. 00:01:49.350 --> 00:01:53.610 Porém vamos assumir que 00:01:51.450 --> 00:01:55.649 vocês vêm acompanhando o conteúdo, de modo 00:01:53.610 --> 00:01:57.030 que, ao chegarmos às aulas futuras, não 00:01:55.649 --> 00:02:02.280 vou ficar ensinando bash tudo outra vez. 00:01:57.030 --> 00:02:05.310 Por exemplo, nós também vamos postar 00:02:02.280 --> 00:02:08.459 tanto as notas de aula quanto as gravações 00:02:05.310 --> 00:02:10.110 das aulas online. Ainda não decidimos 00:02:08.459 --> 00:02:12.330 exatamente quando vamos fazer isso, 00:02:10.110 --> 00:02:14.280 mas será após as aulas. Obviamente, os 00:02:12.330 --> 00:02:16.620 vídeos têm de ser postados depois que a aula ocorre. 00:02:14.280 --> 00:02:19.380 O curso vai ser ministrado por mim, John e 00:02:16.620 --> 00:02:21.120 Anish, sentados ali, e pelo Jose, 00:02:19.380 --> 00:02:24.090 que não está aqui mas vai dar 00:02:21.120 --> 00:02:25.740 a aula de amanhã. Lembrem-se que 00:02:24.090 --> 00:02:27.990 estamos tentando abordar um monte 00:02:25.740 --> 00:02:30.720 de assuntos neste curso de apenas 11 00:02:27.990 --> 00:02:33.240 aulas de 1h, então vamos avançar 00:02:30.720 --> 00:02:35.460 relativamente rápido. Mas, por favor, 00:02:33.240 --> 00:02:37.080 interrompam se houver algo que vocês 00:02:35.460 --> 00:02:38.430 não estiverem conseguindo acompanhar. 00:02:37.080 --> 00:02:40.290 Se você achar que devemos dedicar 00:02:38.430 --> 00:02:41.730 mais tempo a algum tópico, fale conosco. 00:02:40.290 --> 00:02:45.240 Por favor, interrompa com perguntas. 00:02:41.730 --> 00:02:47.220 Além disso, após cada aula estaremos 00:02:45.240 --> 00:02:49.650 disponíveis no nono andar do 00:02:47.220 --> 00:02:51.570 prédio 30 no Stata Center, 00:02:49.650 --> 00:02:53.220 o prédio de ciência da computação. Então, se você 00:02:51.570 --> 00:02:55.980 aparecer no nono andar 00:02:53.220 --> 00:02:58.140 lá, na Gates Tower, pode vir 00:02:55.980 --> 00:03:00.750 e tentar fazer os exercícios que 00:02:58.140 --> 00:03:02.940 vamos dar em cada aula ou simplesmente fazer perguntas 00:03:00.750 --> 00:03:04.440 sobre outras assuntos que tivermos 00:03:02.940 --> 00:03:08.000 tratado nas aulas ou outras coisas, 00:03:04.440 --> 00:03:08.000 como umar seu computador de forma eficiente. 00:03:08.150 --> 00:03:13.740 Devido ao tempo limitado que temos 00:03:11.640 --> 00:03:16.530 disponível, não vai ser possível 00:03:13.740 --> 00:03:19.080 abordar todas as ferramentas em detalhe, 00:03:16.530 --> 00:03:21.240 então tentaremos salientar ferramentas 00:03:19.080 --> 00:03:23.430 importantes e formas interessantes de usá-las. 00:03:21.240 --> 00:03:25.110 Não vamos, necessariamente, ir a fundo 00:03:23.430 --> 00:03:27.540 nos detalhes de como tudo funciona or 00:03:25.110 --> 00:03:29.070 discutir casos mais elaborados, mas se vocês tiverem 00:03:27.540 --> 00:03:31.050 perguntas sobre isso, por favor, venha falar conosco 00:03:29.070 --> 00:03:33.690 sobre isso também. Muitas dessas ferramentas são 00:03:31.050 --> 00:03:34.860 ferramentas que temos usado por anos 00:03:33.690 --> 00:03:36.680 e podemos lhes direcionar a mais coisas 00:03:34.860 --> 00:03:39.060 interessantes que vocês podem fazer com elas. 00:03:36.680 --> 00:03:42.990 Então, aproveitem que estamos aqui. 00:03:39.060 --> 00:03:45.210 Esta aula vai... não quero dizer 00:03:42.990 --> 00:03:46.980 escalar rapidamente, mas 00:03:45.210 --> 00:03:49.050 o que vai acontecer no decorrer 00:03:46.980 --> 00:03:51.330 dessa aula em particular é que vamos 00:03:49.050 --> 00:03:52.530 abordar bastante do básico, e assumiremos 00:03:51.330 --> 00:03:54.480 que vocês já sabem isso no restante do 00:03:52.530 --> 00:03:56.010 semetre. Coisas como usar o 00:03:54.480 --> 00:03:57.210 shell e o terminal (vou explicar o que são 00:03:56.010 --> 00:03:59.850 para os que não conhecem ainda), 00:03:57.210 --> 00:04:01.890 e depois, bem rapidamente, vamos 00:03:59.850 --> 00:04:03.840 escalar para ferramentas mais avançadas 00:04:01.890 --> 00:04:05.250 e como usá-las. Vocês já podem ver nas 00:04:03.840 --> 00:04:07.490 notas de aula o tipo de 00:04:05.250 --> 00:04:10.110 tópicos que vamos cobrir. 00:04:07.490 --> 00:04:12.120 Então isso nos traz à aula de hoje 00:04:10.110 --> 00:04:14.640 na qual vamos cobrir o shell. 00:04:12.120 --> 00:04:16.950 O shell vai ser uma 00:04:14.640 --> 00:04:19.290 das formas primárias de interagir com seu 00:04:16.950 --> 00:04:21.299 computador. Quando você quiser fazer mais coisas 00:04:19.290 --> 00:04:24.540 do que as que são possíveis com as interfaces visuais, 00:04:21.299 --> 00:04:26.370 com as quais talvez você esteja acostumada/o, lhe permitam fazer. 00:04:24.540 --> 00:04:26.550 As interfaces visuais são limitadas no 00:04:26.370 --> 00:04:28.560 que 00:04:26.550 --> 00:04:29.669 elas lhe permitem fazer, porque você só 00:04:28.560 --> 00:04:32.009 pode fazer as coisas para as quais há 00:04:29.669 --> 00:04:34.919 botões, sliders ou campos de inputs. 00:04:32.009 --> 00:04:37.470 Geralmente essas ferramentas textuais são construídas 00:04:34.919 --> 00:04:39.900 para serem combinadas umas com as outras, mas 00:04:37.470 --> 00:04:41.430 há também diversas formas diferentes de 00:04:39.900 --> 00:04:42.960 combiná-las, programá-las ou 00:04:41.430 --> 00:04:44.940 automatizá-las e é por isso que, 00:04:42.960 --> 00:04:48.060 neste curso, vamos focar na 00:04:44.940 --> 00:04:49.860 linha de comando ou em ferramentas baseadas em texto. 00:04:48.060 --> 00:04:51.870 O shell é o local se faz a 00:04:49.860 --> 00:04:53.849 maioria desse trabalho. Então para aqueles que 00:04:51.870 --> 00:04:56.729 não estão acostumados com o shell, a maioria 00:04:53.849 --> 00:04:59.219 das plataformas oferecem algum tipo de shell. 00:04:56.729 --> 00:05:00.780 No Windows, há o PowerShell, mas 00:04:59.219 --> 00:05:04.139 há também outros shell disponíveis 00:05:00.780 --> 00:05:06.389 no Windows. Já no Linux vocês vão encontrar um monte de 00:05:04.139 --> 00:05:08.219 terminais, que são janelas que lhes permitem 00:05:06.389 --> 00:05:10.500 visualizar shells e vocês também vão 00:05:08.219 --> 00:05:13.229 encontrar diversos tipos de shells. O mais 00:05:10.500 --> 00:05:15.810 comum deles é o bash, ou 'born 00:05:13.229 --> 00:05:17.460 again shell'. Por ser um shell tão comum, 00:05:15.810 --> 00:05:18.990 é basicamente esse que vamos 00:05:17.460 --> 00:05:21.300 usar nessas aulas. 00:05:18.990 --> 00:05:23.580 Se você usa Mac OS, você provavelmente 00:05:21.300 --> 00:05:26.159 já tem o bash ou uma versão antiga dele 00:05:23.580 --> 00:05:27.479 se você abrir o app do terminal. Então, 00:05:26.159 --> 00:05:29.190 se você quiser acompanhar em qualquer uma 00:05:27.479 --> 00:05:30.210 dessas plataformas, fique à vontade, mas 00:05:29.190 --> 00:05:32.520 tenha em mente que o curso vai ser 00:05:30.210 --> 00:05:34.229 meio que baseado em Linux no que diz respeito a como 00:05:32.520 --> 00:05:39.000 vamos ensinar, ainda que a maioria dessas ferramentas 00:05:34.229 --> 00:05:40.409 funcione em todas as plataformas. Se você quiser 00:05:39.000 --> 00:05:42.539 instalar um terminal e um shell e 00:05:40.409 --> 00:05:45.330 não sabe como fazer isso muito bem, ficaremos felizes em 00:05:42.539 --> 00:05:47.400 lhes ajudar na nossa sala ou, geralmente, 00:05:45.330 --> 00:05:51.599 é bem fácil buscar no Google 00:05:47.400 --> 00:05:57.060 'sua plataforma' mais 'terminal' e você 00:05:51.599 --> 00:05:59.039 vai achar um. Bom, quando você abre um 00:05:57.060 --> 00:06:01.169 terminal você vê algo que se parece com 00:05:59.039 --> 00:06:04.229 isso. Normalmente vai ter 00:06:01.169 --> 00:06:06.000 uma única linha no topo, o que é 00:06:04.229 --> 00:06:07.710 conhecido como prompt do shell. 00:06:06.000 --> 00:06:10.020 Você pode ver que meu prompt do shell 00:06:07.710 --> 00:06:12.090 parece com isso, tem meu nome de usuário, o nome 00:06:10.020 --> 00:06:14.219 da máquina que estou usando, o caminho 00:06:12.090 --> 00:06:16.770 da pasta onde estou (vamos falar de caminhos 00:06:14.219 --> 00:06:18.719 um pouco mais tarde) e daí ele 00:06:16.770 --> 00:06:20.969 fica piscando lá, pedindo 00:06:18.719 --> 00:06:22.440 um input. Esse é o prompt do shell 00:06:20.969 --> 00:06:25.860 onde você diz ao shell o que quer 00:06:22.440 --> 00:06:27.479 que ele faça. Dá pra customizar NOTE Paragraph 00:06:25.860 --> 00:06:28.620 bastante esse prompt, quando você abri-lo 00:06:27.479 --> 00:06:31.139 na sua máquina talvez ele não vai ter exatamente 00:06:28.620 --> 00:06:33.840 essa aparência. Talvez um pouco, 00:06:31.139 --> 00:06:35.399 se você já tiver configurado, 00:06:33.840 --> 00:06:38.279 ou pode ter muitas outras 00:06:35.399 --> 00:06:39.779 formas. Não vamos falar muito 00:06:38.279 --> 00:06:40.350 sobre customizar seu shell nesta 00:06:39.779 --> 00:06:41.910 aula em particular, 00:06:40.350 --> 00:06:43.710 faremos isso mais tarde. Aqui vamos 00:06:41.910 --> 00:06:47.790 só falar sobre como usar esse 00:06:43.710 --> 00:06:49.860 shell para fazer coisas úteis. Esta é 00:06:47.790 --> 00:06:51.750 a principal interface de texto que você 00:06:49.860 --> 00:06:53.430 tem para seu computador, através do shell. 00:06:51.750 --> 00:06:55.950 No shell, você pode digitar 00:06:53.430 --> 00:06:58.920 comandos e os comandos podem ser 00:06:55.950 --> 00:07:00.570 coisas relativamente simples. Geralmente 00:06:58.920 --> 00:07:02.550 você vai executar programas com 00:07:00.570 --> 00:07:04.470 argumentos. Como isso funciona? Bem, 00:07:02.550 --> 00:07:06.210 um programa que podemos executar é o de data. 00:07:04.470 --> 00:07:07.380 É só digitar date e apertar 00:07:06.210 --> 00:07:10.290 enter, aí ele vai 00:07:07.380 --> 00:07:12.330 te mostrar a data e hora. Você também 00:07:10.290 --> 00:07:14.850 pode executar um programa com argumentos. 00:07:12.330 --> 00:07:17.790 Isso é uma forma de modificar o comportamento 00:07:14.850 --> 00:07:20.760 do programa. Por exemplo, há um 00:07:17.790 --> 00:07:22.410 programa chamado echo. O echo imprime 00:07:20.760 --> 00:07:25.050 os argumentos que você passa, e esses 00:07:22.410 --> 00:07:27.330 arugmentos são simplesmente coisas 00:07:25.050 --> 00:07:29.820 separadas por um espaço em branco logo após o nome. 00:07:27.330 --> 00:07:30.720 Então podemos dizer hello e ele vai imprimir 00:07:29.820 --> 00:07:32.940 hello de volta. 00:07:30.720 --> 00:07:35.610 Talvez não muito surpreendente, mas isso 00:07:32.940 --> 00:07:37.050 é uma das coisas básicas dos argumentos. 00:07:35.610 --> 00:07:38.550 Uma coisa que vocês vão notar é que eu disse 00:07:37.050 --> 00:07:40.380 que argumentos são separados por 00:07:38.550 --> 00:07:42.060 espaços em branco. Talveu vocês se perguntem, "bom, 00:07:40.380 --> 00:07:44.310 e se eu quiser um argumento com várias 00:07:42.060 --> 00:07:47.220 palavras?" Você pode pôr essas coisas entre aspas, e aí dá para 00:07:44.310 --> 00:07:50.310 fazer coisas como echo hello espaço 00:07:47.220 --> 00:07:52.710 world e agora o programa echo recebe 00:07:50.310 --> 00:07:55.380 um argumento que contém a string 00:07:52.710 --> 00:07:57.540 hello world com um espaço. Bom, também dá 00:07:55.380 --> 00:07:58.770 para usar aspas simples para isso. Vou explicar a 00:07:57.540 --> 00:08:00.480 diferença entre aspas simples e 00:07:58.770 --> 00:08:03.420 aspas duplas quando falarmos 00:08:00.480 --> 00:08:06.120 sobre scripting em bash. Vocês também 00:08:03.420 --> 00:08:09.000 podem escapar um caracter, então, por 00:08:06.120 --> 00:08:12.150 exemplo, hello world. Isso também 00:08:09.000 --> 00:08:15.720 funciona. Todas as regras sobre 00:08:12.150 --> 00:08:17.340 como escapar e como analisar e 00:08:15.720 --> 00:08:19.590 dar vários argumentos e variáveis 00:08:17.340 --> 00:08:21.330 nós vamos cobrir mais tarde. Espero 00:08:19.590 --> 00:08:23.520 que não encontrem muitas coisas esquisitas sobre isso. Nós temos de 00:08:21.330 --> 00:08:26.070 provocar vocês sobre isso. Lembrem-se pelo 00:08:23.520 --> 00:08:27.930 menos que argumentos são separados por espaços, então, 00:08:26.070 --> 00:08:29.610 se você quiser fazer algo como criar um 00:08:27.930 --> 00:08:31.920 diretório chamado "my photos", 00:08:29.610 --> 00:08:33.780 não dá para simplesmente digitar make directory my photos. 00:08:31.920 --> 00:08:35.880 Assim ele vai criar dois diretórios, 00:08:33.780 --> 00:08:40.010 um chamado my e outro chamado photos e 00:08:35.880 --> 00:08:43.229 provavelmente não é isso que você quer. 00:08:40.010 --> 00:08:45.600 Uma coisa que você pode se perguntar é como o 00:08:43.229 --> 00:08:48.839 shell sabe o que são esses programas quando 00:08:45.600 --> 00:08:50.700 eu digito date ou echo. Como ele 00:08:48.839 --> 00:08:53.190 sabe o que esses programas devem 00:08:50.700 --> 00:08:54.000 fazer. A resposta é que o seu 00:08:53.190 --> 00:08:55.439 programa, seu 00:08:54.000 --> 00:08:57.000 computador tem um monte de programas 00:08:55.439 --> 00:08:59.759 embutidos que já vêm com a máquina. 00:08:57.000 --> 00:09:02.579 Assim como seu computador pode vir com o 00:08:59.759 --> 00:09:05.339 aplicativo do terminal, ou com 00:09:02.579 --> 00:09:07.800 o Windows Explorer ou 00:09:05.339 --> 00:09:09.569 com algum tipo de navegador, ele também 00:09:07.800 --> 00:09:11.639 já vem com aplicações específicas para 00:09:09.569 --> 00:09:14.819 o terminal, e elas ficam salvas no 00:09:11.639 --> 00:09:18.209 seu sistema de arquivos e o shell tem 00:09:14.819 --> 00:09:19.949 uma maneira de determinar onde um programa está 00:09:18.209 --> 00:09:22.459 localizado. Basicamente, ele tem uma forma de buscar 00:09:19.949 --> 00:09:24.620 por programas. Ele faz isso através de 00:09:22.459 --> 00:09:27.389 algo chamado variável de ambiente 00:09:24.620 --> 00:09:29.970 invariante. Uma variável de ambiente 00:09:27.389 --> 00:09:31.560 é uma variável que pode ser 00:09:29.970 --> 00:09:33.899 usada para linguagens de programação. 00:09:31.560 --> 00:09:35.160 Na verdade, o shell e o bash 00:09:33.899 --> 00:09:37.350 em particular é 00:09:35.160 --> 00:09:39.420 uma linguagem de programação. Esse 00:09:37.350 --> 00:09:41.550 prompt que aparece aqui 00:09:39.420 --> 00:09:43.470 é capaz não somente de rodar um programa 00:09:41.550 --> 00:09:46.470 com argumentos. Ele também pode fazer outras coisas como 00:09:43.470 --> 00:09:47.910 while loops, for loops, condicionais... 00:09:46.470 --> 00:09:49.860 Tudo isso. Você pode definir 00:09:47.910 --> 00:09:51.000 funções, pode ter variáveis, todas essas 00:09:49.860 --> 00:09:52.860 coisas você consegue fazer no shell. 00:09:51.000 --> 00:09:56.399 Vamos abordar boa parte disso na próxima 00:09:52.860 --> 00:09:57.990 aula sobre shell scripting. Mas, por ora, 00:09:56.399 --> 00:09:59.790 vamos olhar para 00:09:57.990 --> 00:10:01.199 essa variável de ambiente em particular. 00:09:59.790 --> 00:10:02.699 Variáveis de ambiente são coisas que 00:10:01.199 --> 00:10:04.829 estão definidas toda vez que você inicia o shell. 00:10:02.699 --> 00:10:06.600 Vocês não precisam defini-las toda vez 00:10:04.829 --> 00:10:08.160 que abrem o shell, há 00:10:06.600 --> 00:10:09.750 várias delas que já estão definidas, como 00:10:08.160 --> 00:10:11.850 onde fica seu diretório home, qual 00:10:09.750 --> 00:10:13.079 é seu nome de usuário. Há uma que é essencial 00:10:11.850 --> 00:10:16.170 para esse caso em particular 00:10:13.079 --> 00:10:18.930 que é a variável de caminho. Então se 00:10:16.170 --> 00:10:22.589 eu digitar echo $PATH, ele vai 00:10:18.930 --> 00:10:25.100 me mostrar todos os caminhos na minha máquina 00:10:22.589 --> 00:10:27.930 onde o shell vai buscar por programas. 00:10:25.100 --> 00:10:30.870 Vocês vão notar que isso é uma lista 00:10:27.930 --> 00:10:33.000 separada por dois pontos. Ela pode ser 00:10:30.870 --> 00:10:36.000 um pouco longa e difícil de ler, mas o importante 00:10:33.000 --> 00:10:38.279 é que, sempre que você digitar o nome de 00:10:36.000 --> 00:10:41.610 um programa, o shell vai buscar nesta 00:10:38.279 --> 00:10:43.769 lista de caminhos da sua máquina, olhando 00:10:41.610 --> 00:10:46.920 em cada diretório em busca de um 00:10:43.769 --> 00:10:49.110 programa ou arquivo cujo nome coincida 00:10:46.920 --> 00:10:51.029 com o comando que você está tentando rodar. No meu caso, 00:10:49.110 --> 00:10:52.800 quando tento rodar date ou echo, ele 00:10:51.029 --> 00:10:54.509 vai rodar por essa lista um por vez 00:10:52.800 --> 00:10:56.370 até achar um que contenha o 00:10:54.509 --> 00:10:58.410 programa chamado date ou echo, e aí 00:10:56.370 --> 00:11:00.000 ele vai rodá-lo. Se quisermos saber 00:10:58.410 --> 00:11:01.649 qual exatamente ele roda, há um 00:11:00.000 --> 00:11:04.620 comando chamado which. O which nos permite 00:11:01.649 --> 00:11:07.500 fazer isso, então quando eu posso digitar which echo e ele 00:11:04.620 --> 00:11:10.830 vai me dizer que, se eu quiser rodar um programa 00:11:07.500 --> 00:11:12.720 chamado echo, ele iria rodar deste aqui. 00:11:10.830 --> 00:11:16.350 Vale a pena pausar aqui e falar sobre o 00:11:12.720 --> 00:11:18.620 que são caminhos. Caminhos são uma forma nomear a 00:11:16.350 --> 00:11:21.630 localização de um arquivo em seu computador. 00:11:18.620 --> 00:11:24.780 No Linux e no MacOS esses caminhos são 00:11:21.630 --> 00:11:28.170 separados por /, então 00:11:24.780 --> 00:11:30.930 você vai ver aqui que este está no 00:11:28.170 --> 00:11:32.760 diretório root. O / logo no começo 00:11:30.930 --> 00:11:34.850 indica que o caminho começa 00:11:32.760 --> 00:11:37.710 no topo do sistema de arquivos. 00:11:34.850 --> 00:11:40.980 Depois olha no diretório chamado 00:11:37.710 --> 00:11:43.580 usr, depois no diretório chamado bin 00:11:40.980 --> 00:11:46.440 e depois olha no arquivo chamado echo. 00:11:43.580 --> 00:11:48.620 No Windows, caminhos como esse são geralmente 00:11:46.440 --> 00:11:51.900 separados por \. 00:11:48.620 --> 00:11:53.640 Quando estamos no Linux ou MacOS, 00:11:51.900 --> 00:11:56.370 tudo mora no root, então 00:11:53.640 --> 00:12:00.270 todos os caminhos começam com um /, ou melhor, todos os 00:11:56.370 --> 00:12:02.070 caminhos absolutos. No Windows, há um root 00:12:00.270 --> 00:12:05.130 cada cada partição. Vocês já devem ter 00:12:02.070 --> 00:12:08.220 visto coisas como C:\ ou D:\ . 00:12:05.130 --> 00:12:11.340 No Windows, há um tipo de hierarquia 00:12:08.220 --> 00:12:13.050 de caminhos de sistema para cada drive 00:12:11.340 --> 00:12:14.850 que você tem, 00:12:13.050 --> 00:12:18.540 enquanto no Linux e no MacOS 00:12:14.850 --> 00:12:20.010 fica tudo sob um único nome. 00:12:18.540 --> 00:12:21.690 Vocês devem ter notado que eu mencionei 00:12:20.010 --> 00:12:27.360 caminho absoluto e talvez saibam o que isso 00:12:21.690 --> 00:12:29.460 significa. Caminhos absolutos são caminhos 00:12:27.360 --> 00:12:31.890 que determinam por completo a localização de um arquivo. 00:12:29.460 --> 00:12:33.720 Neste caso, isso quer dizer que 00:12:31.890 --> 00:12:36.540 queremos nos referir a um arquivo específico chamado echo 00:12:33.720 --> 00:12:39.030 e estamos dando o caminho completo até 00:12:36.540 --> 00:12:42.839 esse arquivo. Mas também há outro tipo 00:12:39.030 --> 00:12:45.240 conhecido como caminhos relativos. Um 00:12:42.839 --> 00:12:49.320 caminho relativo se refere a onde estamos no momento. 00:12:45.240 --> 00:12:52.490 Então a forma de saber onde estamos no 00:12:49.320 --> 00:12:56.190 momento é digitando pwd que significa 00:12:52.490 --> 00:13:00.060 "imprima o diretório atual". 00:12:56.190 --> 00:13:02.700 Então, se eu digitar pwd, ele 00:13:00.060 --> 00:13:05.790 vai mostrar o caminho atual onde estou 00:13:02.700 --> 00:13:08.220 agora, ou seja, estou no diretório 00:13:05.790 --> 00:13:11.030 home sob o diretório root e depois 00:13:08.220 --> 00:13:14.730 john, depois dev e assim por diante. 00:13:11.030 --> 00:13:16.770 Daqui eu posso então decidir mudar 00:13:14.730 --> 00:13:18.540 meu diretório atual, e todos os 00:13:16.770 --> 00:13:20.190 caminhos relativos são ligados ao 00:13:18.540 --> 00:13:21.329 diretório atual, que é 00:13:20.190 --> 00:13:24.629 basicamente onde estamos no momento. 00:13:21.329 --> 00:13:28.709 Por exemplo, neste caso, eu posso digitar 00:13:24.629 --> 00:13:30.449 cd \home. cd quer dizer "mudar de diretório". 00:13:28.709 --> 00:13:32.610 Essa é uma forma de mudar meu diretório 00:13:30.449 --> 00:13:34.829 atual. Neste caso, eu mudei 00:13:32.610 --> 00:13:37.889 para o home e vocês vêem que 00:13:34.829 --> 00:13:40.619 o prompt do shell mudou, agora dizendo 00:13:37.889 --> 00:13:42.660 que estou no home. Ele simplesmente mostra 00:13:40.619 --> 00:13:44.220 o nome do último segmento do caminho, 00:13:42.660 --> 00:13:45.509 mas vocês também podem configurar o terminal para mostrar 00:13:44.220 --> 00:13:50.309 o caminho completo onde quer que 00:13:45.509 --> 00:13:53.100 vocês estejam. Agora se eu digitar pwd de novo, ele 00:13:50.309 --> 00:13:54.869 vai me dizer que estou no /home. Há alguns 00:13:53.100 --> 00:13:59.100 diretórios especiais 00:13:54.869 --> 00:14:03.149 aqui. Há o . e o .. . O . 00:13:59.100 --> 00:14:05.129 se refere ao diretório atual e o .. 00:14:03.149 --> 00:14:06.749 se refere ao diretório acima. Essa é uma 00:14:05.129 --> 00:14:09.540 forma de navegar facilmente pelo 00:14:06.749 --> 00:14:13.079 sistema. Por exemplo, se eu digitar cd .. 00:14:09.540 --> 00:14:15.179 ele vai me dizer que estou agora no /, 00:14:13.079 --> 00:14:17.639 ou seja, no root do sistema de 00:14:15.179 --> 00:14:22.139 arquivos. Eu estava no /home e agora estou 00:14:17.639 --> 00:14:24.869 no /. De fato, se eu digitar pwd, ele mostra 00:14:22.139 --> 00:14:26.790 exatamente isso. Também posso usar 00:14:24.869 --> 00:14:28.980 caminhos relativos para descer um nível no 00:14:26.790 --> 00:14:31.769 caminho de arquivos. Então, se eu der cd . /home 00:14:28.980 --> 00:14:34.079 ele vai me mover para o 00:14:31.769 --> 00:14:36.899 diretório home sob o diretório atual. 00:14:34.079 --> 00:14:39.839 E isso me leva 00:14:36.899 --> 00:14:42.119 de volta ao /home. Se eu tentar agora cd ./home 00:14:39.839 --> 00:14:44.100 de novo, ele me avisa que não há nenhum 00:14:42.119 --> 00:14:45.569 diretório com esse nome porque não há um 00:14:44.100 --> 00:14:49.429 diretório home sob o diretório em que 00:14:45.569 --> 00:14:53.699 estou agora, no qual entrei com o cd. 00:14:49.429 --> 00:14:57.509 Eu consigo usar cd para voltar todo o caminho 00:14:53.699 --> 00:15:01.110 que percorri, usando 00:14:57.509 --> 00:15:07.040 caminhos relativos, e eu posso fazer outras coisas 00:15:01.110 --> 00:15:09.059 como ../../../../jon/ para voltar 00:15:07.040 --> 00:15:10.649 para algum lugar lá dentro do meu sistema de arquivos. 00:15:09.059 --> 00:15:13.019 Ocorre que ele está lá no root. 00:15:10.649 --> 00:15:15.629 Aqui temos o diretório bin, e nele 00:15:13.019 --> 00:15:17.850 há o arquivo echo. Daí eu 00:15:15.629 --> 00:15:20.309 posso dar world e ele roda o 00:15:17.850 --> 00:15:22.079 programa echo que está no bin. 00:15:20.309 --> 00:15:24.439 Essa é uma forma com a qual vocês podem construir caminhos para 00:15:22.079 --> 00:15:26.579 atravessar arbitrariamente seu sistema de arquivos. 00:15:24.439 --> 00:15:28.379 Às vezes vocês vão querer usar caminhos absolutos e 00:15:26.579 --> 00:15:29.789 às vezes, relativos. Geralmente 00:15:28.379 --> 00:15:33.179 vocês vão querer usar o que for mais curto 00:15:29.789 --> 00:15:34.390 mas se vocês quiserem, por exemplo, rodar 00:15:30.629 --> 00:15:34.390 um programa ou escrever 00:15:34.390 --> 00:15:38.980 um programa que roda esse programa, como 00:15:36.940 --> 00:15:41.830 echo ou date, e vocês querem poder 00:15:38.980 --> 00:15:43.660 rodá-lo a partir de qualquer local, ou 00:15:41.830 --> 00:15:45.640 vocês dão o nome do 00:15:43.660 --> 00:15:47.770 programa, como date ou echo, e deixam o 00:15:45.640 --> 00:15:49.720 shell usar o caminho para descobrir onde 00:15:47.770 --> 00:15:51.670 ele está, ou vocês dão o caminho 00:15:49.720 --> 00:15:53.500 absoluto, porque se vocês derem um caminho relativo, 00:15:51.670 --> 00:15:55.840 e eu for lá e rodar no meu diretório home, 00:15:53.500 --> 00:16:01.720 e vocês rodarem em um outro diretório, 00:15:55.840 --> 00:16:04.600 pode ser que funcione para mim mas não para vocês. 00:16:01.720 --> 00:16:06.340 Em geral, quando rodamos um programa, ele 00:16:04.600 --> 00:16:08.320 vai operar no diretório 00:16:06.340 --> 00:16:09.910 atual, ao menos esse é o padrão, 00:16:08.320 --> 00:16:11.980 a não ser que passemos outros argumentos. 00:16:09.910 --> 00:16:13.750 Isso é bem útil porque significa 00:16:11.980 --> 00:16:15.730 que muitas vezes não temos de dar 00:16:13.750 --> 00:16:17.680 o caminho completo para as coisas, podemos simplesmente 00:16:15.730 --> 00:16:20.050 usar o nome dos arquivos no diretório 00:16:17.680 --> 00:16:22.570 em que estamos. Uma coisa 00:16:20.050 --> 00:16:24.280 bem útil é descobrir em que diretório 00:16:22.570 --> 00:16:26.410 estamos. Nós já 00:16:24.280 --> 00:16:28.060 vimos o pwd que imprime o local 00:16:26.410 --> 00:16:31.090 onde estamos, e há um comando chamado 00:16:28.060 --> 00:16:33.310 ls que vai listar os 00:16:31.090 --> 00:16:35.980 arquivos no diretório atual. Então se eu 00:16:33.310 --> 00:16:38.050 digitar ls aqui, vemos todos os arquivos 00:16:35.980 --> 00:16:39.850 no diretório atual, certo? É uma forma 00:16:38.050 --> 00:16:43.420 boa de rapidamente navegar 00:16:39.850 --> 00:16:46.930 através do sistema de arquivos. Vocês vão 00:16:43.420 --> 00:16:48.490 ver que se eu der cd .. e depois ls, ele 00:16:46.930 --> 00:16:53.370 me mostra os arquivos naquele diretório, 00:16:48.490 --> 00:16:56.260 mas com o ls eu posso dar 00:16:53.370 --> 00:16:58.360 ls .. e um caminho e 00:16:56.260 --> 00:16:59.920 aí ele lista o que tiver naquele aquivo em 00:16:58.360 --> 00:17:04.270 vez do que o que estou agora. Ele lista o outro 00:16:59.920 --> 00:17:05.829 diretório. E vocês podem ver que se eu 00:17:04.270 --> 00:17:09.220 for até o root também, certo, o root 00:17:05.829 --> 00:17:11.560 tem outros arquivos. Um truque legal 00:17:09.220 --> 00:17:13.570 que talvez vocês não conheçam aqui: há 00:17:11.560 --> 00:17:16.570 dois outras coisas especiais que você pode fazer. 00:17:13.570 --> 00:17:18.339 Uma é usar o til. Esse 00:17:16.570 --> 00:17:21.130 caractere te leva pro diretório 00:17:18.339 --> 00:17:23.140 home. Então o til sempre se expande para 00:17:21.130 --> 00:17:25.780 o diretório home e você pode usar 00:17:23.140 --> 00:17:30.040 caminhos relativos a ele. Posso dar til / dev 00:17:25.780 --> 00:17:32.980 /pdos/classes/missing-semester/ e 00:17:30.040 --> 00:17:36.670 agora estou lá porque esse til se expandiu 00:17:32.980 --> 00:17:39.460 para /home/john. Um outro argumento legal 00:17:36.670 --> 00:17:42.250 que vocês podem dar para o cd especificamente 00:17:39.460 --> 00:17:44.530 é, se vocêm derem cd -, 00:17:42.250 --> 00:17:47.380 ele vai cd para o diretório onde você 00:17:44.530 --> 00:17:48.180 estava antes. Se eu der cd -, volto 00:17:47.380 --> 00:17:52.230 para o root. 00:17:48.180 --> 00:17:53.880 Se der cd - de novo, volto para o missing-semester. 00:17:52.230 --> 00:17:55.080 É uma maneira útil de ficar indo e vindo 00:17:53.880 --> 00:18:01.290 entre dois diretórios diferentes. 00:17:55.080 --> 00:18:03.570 Em caso do ls, ou em caso 00:18:01.290 --> 00:18:06.180 do cd, pode haver argumentos que vocês 00:18:03.570 --> 00:18:07.560 não conhecem, certo? Até agora, ainda não 00:18:06.180 --> 00:18:09.510 fizemos muito mais do que 00:18:07.560 --> 00:18:11.520 dar caminhos, mas como é que descobrimos 00:18:09.510 --> 00:18:14.250 que é possível passar um caminho para o ls 00:18:11.520 --> 00:18:16.530 pra começo de conversa? Bem, a maioria 00:18:14.250 --> 00:18:18.840 dos programas aceitam o que chamamos de argumentos, como 00:18:16.530 --> 00:18:21.570 flags e opções. Essas são coisas que 00:18:18.840 --> 00:18:24.810 geralmente são precedidas por um -. Um dos 00:18:21.570 --> 00:18:26.880 usos mais úteis é --help. Muitos programas 00:18:24.810 --> 00:18:30.000 implementam esse, então se vocês rodarem, 00:18:26.880 --> 00:18:34.020 por exemplo, ls -help, ele proveitosamente 00:18:30.000 --> 00:18:36.000 imprime um monte de informações sobre 00:18:34.020 --> 00:18:38.400 aquele comando. Vocêm podem ver que ele 00:18:36.000 --> 00:18:40.260 dize que o uso é ls e que é possível dar 00:18:38.400 --> 00:18:42.030 um número de opções, e um número de 00:18:40.260 --> 00:18:46.350 arquivos. A forma de se ler essa linha é 00:18:42.030 --> 00:18:48.600 três pontos significa zero ou um 00:18:46.350 --> 00:18:50.850 ou mais e os colchetes 00:18:48.600 --> 00:18:52.890 querem dizer opcional. Nesse caso, 00:18:50.850 --> 00:18:54.300 há um número opcional de opções 00:18:52.890 --> 00:18:56.790 e um número opcional de arquivos. 00:18:54.300 --> 00:18:58.740 Vejam que ele explica o que o programa 00:18:56.790 --> 00:19:00.720 faz e também especifica um número 00:18:58.740 --> 00:19:03.000 de diferentes tipos de flags e opções 00:19:00.720 --> 00:19:04.950 que podemos escolher. Geralmente chamamos essas coisas 00:19:03.000 --> 00:19:07.830 com um - e uma única letra 00:19:04.950 --> 00:19:09.900 de flag ou qualquer coisa que 00:19:07.830 --> 00:19:11.730 não leva um valor de flag, e qualquer 00:19:09.900 --> 00:19:16.640 coisa que leva um valor chamamos de opção. Então, 00:19:11.730 --> 00:19:22.260 por exemplo, - a and - all são ambos flags 00:19:16.640 --> 00:19:24.180 e -C ou --color é uma opção. Uma coisa 00:19:22.260 --> 00:19:30.330 que vocês vão ver se descerem bastante a 00:19:24.180 --> 00:19:37.140 tela é a flag -l. Ops. 00:19:30.330 --> 00:19:39.480 A flag -l usa 00:19:37.140 --> 00:19:40.860 o formato de lista longa. Isso é 00:19:39.480 --> 00:19:43.350 especialmente útil por si só, 00:19:40.860 --> 00:19:46.890 mas vamos ver o que ela faz. 00:19:43.350 --> 00:19:48.450 Se eu der ls -l, ele imprime 00:19:46.890 --> 00:19:49.890 os arquivos no diretório atual, mas ele 00:19:48.450 --> 00:19:52.170 dá muito mais informação sobre esses 00:19:49.890 --> 00:19:54.600 arquivos. Vocês vão ver que vão usar 00:19:52.170 --> 00:19:56.280 bastante isso porque 00:19:54.600 --> 00:20:00.810 essas informações adicionais que ele 00:19:56.280 --> 00:20:02.010 mostra são geralmente bem úteis. Vamos 00:20:00.810 --> 00:20:09.030 ver um pouco dessas informações. 00:20:02.010 --> 00:20:10.110 Primeiramente, o d no começo 00:20:09.030 --> 00:20:11.760 de alguns desses itens 00:20:10.110 --> 00:20:14.820 indica que aquele item é um diretório. 00:20:11.760 --> 00:20:16.020 Então o _data aqui, por exemplo, 00:20:14.820 --> 00:20:18.690 é um diretório, 00:20:16.020 --> 00:20:22.650 enquanto o html não é um diretório, 00:20:18.690 --> 00:20:25.410 mas sim um arquivo. As letras seguintes 00:20:22.650 --> 00:20:28.650 indicam as permissões que estão 00:20:25.410 --> 00:20:30.810 definidas para este arquivo. Então, como 00:20:28.650 --> 00:20:32.640 vimos antes, talvez eu não consiga abrir 00:20:30.810 --> 00:20:34.170 um certo arquivo ou não consiga 00:20:32.640 --> 00:20:35.760 entrar em um diretório. Tudo isso é 00:20:34.170 --> 00:20:37.980 regido pelas permissões daquele arquivo 00:20:35.760 --> 00:20:41.430 ou diretório em particular. A maneira de 00:20:37.980 --> 00:20:43.500 interpretar isso é: o primeiro dos três 00:20:41.430 --> 00:20:45.810 grupos são as permissões definidas para o 00:20:43.500 --> 00:20:49.560 dono do arquivo. Todos esses arquivos 00:20:45.810 --> 00:20:52.020 que estamos vendo têm eu dono como. 00:20:49.560 --> 00:20:53.880 O segundo grupo de três caraceteres se refere 00:20:52.020 --> 00:20:56.100 às permissões do grupo que é dono desse 00:20:53.880 --> 00:20:58.650 arquivo. Neste caso, todos esses arquivos 00:20:56.100 --> 00:21:01.770 também pertencem ao grupo john. 00:20:58.650 --> 00:21:03.900 Já o último grupo de três é uma lista 00:21:01.770 --> 00:21:06.290 das permissões para todo o restante, ou seja, 00:21:03.900 --> 00:21:08.550 qualquer um que não seja nem dono nem membro do grupo. 00:21:06.290 --> 00:21:10.980 Esse diretório está um pouco sem graça 00:21:08.550 --> 00:21:14.190 porque eu sou o dono de todos os itens, 00:21:10.980 --> 00:21:17.490 mas se dermos cd / 00:21:14.190 --> 00:21:20.280 ls -l vocês vão ver que 00:21:17.490 --> 00:21:22.800 aqui todos os arquivos pertencem ao root. 00:21:20.280 --> 00:21:24.090 Vamos voltar para esse assunto do usuário root, só vejam 00:21:22.800 --> 00:21:26.400 que aqui as permissões são 00:21:24.090 --> 00:21:31.410 um pouco mais interessantes. Os grupos de 00:21:26.400 --> 00:21:34.290 três significam leitura, escrita e execução. 00:21:31.410 --> 00:21:36.450 Isso signifca coisas diferentes para arquivos e para 00:21:34.290 --> 00:21:37.980 diretórios. Para arquivos, é bem simples: 00:21:36.450 --> 00:21:40.170 se vocês tiverem permissão de leitura para 00:21:37.980 --> 00:21:41.820 um arquivo, vocês conseguem ler seu 00:21:40.170 --> 00:21:43.950 conteído. Se tiver permissão de escrita 00:21:41.820 --> 00:21:46.200 para um arquivo, podem salvá-lo 00:21:43.950 --> 00:21:48.270 e adicionar conteúdo a ele, ou até 00:21:46.200 --> 00:21:50.670 substitui-lo completamente. E se você 00:21:48.270 --> 00:21:52.620 tiver x na execução de um arquivo, 00:21:50.670 --> 00:21:57.390 você pode executá-lo. Então, 00:21:52.620 --> 00:22:00.030 se dermos ls -l /usr/bin, 00:21:57.390 --> 00:22:02.640 vocês verão que todos 00:22:00.030 --> 00:22:04.590 têm a permissão de execução ativada 00:22:02.640 --> 00:22:06.480 para todas as pessoas que não forem donas 00:22:04.590 --> 00:22:08.280 do arquivo. É assim porque o programa 00:22:06.480 --> 00:22:09.420 echo, por exemplo, queremos que possa 00:22:08.280 --> 00:22:11.700 ser executado por qualquer um usando o computador. 00:22:09.420 --> 00:22:13.920 Não há motivo pra dizer que apenas 00:22:11.700 --> 00:22:15.570 alguns usuários podem rodar o echo. 00:22:13.920 --> 00:22:18.420 Isso não faz sentido. 00:22:15.570 --> 00:22:20.960 Já para diretórios, essas permissões 00:22:18.420 --> 00:22:23.550 são um pouco diferentes. Leitura 00:22:20.960 --> 00:22:26.460 quer dizer que podemos olhar quais 00:22:23.550 --> 00:22:28.770 arquivos existem dentro desse diretório. 00:22:26.460 --> 00:22:30.530 Associem leitura como list para diretórios. 00:22:28.770 --> 00:22:33.420 Estamos autorizados a listar seu conteúdo? 00:22:30.530 --> 00:22:36.210 Escrita para um diretório diz se estamos 00:22:33.420 --> 00:22:39.090 autorizados a renomear, criar ou remover 00:22:36.210 --> 00:22:42.030 arquivos dentro dele. Faz sentido, 00:22:39.090 --> 00:22:45.240 mas lembrem-se de que isso significa que, 00:22:42.030 --> 00:22:47.580 se vocês têm permissão de escrita em um arquivo 00:22:45.240 --> 00:22:49.950 mas não têm permissão de escrita no 00:22:47.580 --> 00:22:52.080 diretório dele, vocês não podem deletar o arquivo. 00:22:49.950 --> 00:22:54.420 Você pode esvaziá-lo, mas não deletá-lo, 00:22:52.080 --> 00:22:57.660 porque para isso seria preciso escrever 00:22:54.420 --> 00:22:59.130 no diretório em si. Finalmente, execução 00:22:57.660 --> 00:23:01.950 em diretórios é algo que confunde bastante 00:22:59.130 --> 00:23:04.650 as pessoas. Executar em um diretório 00:23:01.950 --> 00:23:07.230 é o que se chama buscar. O nome 00:23:04.650 --> 00:23:10.200 não ajuda muito, mas o que quer dizer é 00:23:07.230 --> 00:23:13.470 que podemos acessar esse diretório se 00:23:10.200 --> 00:23:15.240 quisermos chegar a um arquivo. 00:23:13.470 --> 00:23:16.670 Se quisermos abri-lo, lê-lo ou 00:23:15.240 --> 00:23:20.310 escrever nele, ou qualquer outra coisa, 00:23:16.670 --> 00:23:22.710 para dar cd e entrar em um diretório 00:23:20.310 --> 00:23:25.050 é preciso ter permissão de execução em 00:23:22.710 --> 00:23:28.170 todos os diretórios acima dele e 00:23:25.050 --> 00:23:30.480 no próprio diretório. Por exemplo, 00:23:28.170 --> 00:23:34.080 para eu acessar um arquivo dentro de 00:23:30.480 --> 00:23:35.820 /usr/bin como o /usr/bin/echo, preciso 00:23:34.080 --> 00:23:38.100 ter permissão de execução no root, 00:23:35.820 --> 00:23:40.380 no usr, no 00:23:38.100 --> 00:23:42.120 bin. Se eu não tiver algum deles, 00:23:40.380 --> 00:23:44.790 não terei permissão 00:23:42.120 --> 00:23:48.410 de acessar aquele arquivo, porque 00:23:44.790 --> 00:23:50.670 não terei acesso aos diretórios ao longo do caminho até ele. 00:23:48.410 --> 00:23:52.560 Vocês podem encontrar outros bits, 00:23:50.670 --> 00:23:55.320 por exemplo, vocês podem ver 00:23:52.560 --> 00:23:58.020 s ou t nessas listas, ou l. 00:23:55.320 --> 00:23:58.950 Podemos conversar no tira-dúvidas 00:23:58.020 --> 00:24:01.260 se ficarem curiosos, 00:23:58.950 --> 00:24:04.260 a maioria não importa muito para 00:24:01.260 --> 00:24:05.670 os assuntos que vocês vão ver neste curso, 00:24:04.260 --> 00:24:08.100 mas é legal conhecer. Então, se quiserem 00:24:05.670 --> 00:24:11.340 saber mais sobre eles, pesquisem 00:24:08.100 --> 00:24:13.080 ou venham falar conosco. 00:24:11.340 --> 00:24:14.580 Há outros programas que é bom 00:24:13.080 --> 00:24:16.200 conhecer. Desculpa, uma coisa mais. 00:24:14.580 --> 00:24:17.400 Como eu mencionei, se vocês só verem um - 00:24:16.200 --> 00:24:19.470 significa que vocês não têm aquela 00:24:17.400 --> 00:24:21.810 respectiva permissão. Por exemplo, se 00:24:19.470 --> 00:24:23.190 houver r-x, quer dizer que vocês podem 00:24:21.810 --> 00:24:27.390 ler e executar, mas não ler. 00:24:23.190 --> 00:24:29.240 Há outros programas úteis 00:24:27.390 --> 00:24:32.360 para vermos agora. 00:24:29.240 --> 00:24:35.450 Um deles é o comando move ou mv. 00:24:32.360 --> 00:24:39.350 Se eu der cd de volta para missing-semester, aqui o mv 00:24:35.450 --> 00:24:42.950 me permite renomear um arquivo usando 00:24:39.350 --> 00:24:45.320 dois caminhos, o caminho antigo e o 00:24:42.950 --> 00:24:47.870 caminho novo. Ou seja, move nos permite 00:24:45.320 --> 00:24:49.970 tanto renomear um arquivo, como quando 00:24:47.870 --> 00:24:52.130 mudamos o nome do arquivo mas não o 00:24:49.970 --> 00:24:54.290 diretório, ou ele permite mover 00:24:52.130 --> 00:24:56.360 um arquivo para um diretório diferente. 00:24:54.290 --> 00:24:57.890 É só dar o caminho atual do arquivo 00:24:56.360 --> 00:24:59.720 e o caminho para onde vocês querem movê-lo 00:24:57.890 --> 00:25:02.720 e isso vai alterar sua localização e 00:24:59.720 --> 00:25:05.480 seu nome. Por exemplo, eu posso mover 00:25:02.720 --> 00:25:09.020 dotfiles.md para foo.md 00:25:05.480 --> 00:25:16.280 e, da mesma forma, posso mover 00:25:09.020 --> 00:25:19.370 de volta. Há também o comando cp. 00:25:16.280 --> 00:25:21.860 O cp ou copy é bem parecido, 00:25:19.370 --> 00:25:23.750 ele nos permite copiar um arquivo também 00:25:21.860 --> 00:25:25.610 usando dois argumentos, o caminho de onde 00:25:23.750 --> 00:25:28.340 queremos copiar e o caminho para onde 00:25:25.610 --> 00:25:30.890 queremos copiar. Esses são caminhos completos, então eu poderia 00:25:28.340 --> 00:25:32.960 usar isso, por exemplo, para dizer que quero 00:25:30.890 --> 00:25:37.550 copiar dotfiles.md to ../foo.md. 00:25:32.960 --> 00:25:39.710 E agora se eu der ls . 00:25:37.550 --> 00:25:42.800 vocês podem ver que há um arquivo foo.md 00:25:39.710 --> 00:25:44.600 naquele diretório. O cp também 00:25:42.800 --> 00:25:47.780 recebe dois caminhos, não é preciso ser no 00:25:44.600 --> 00:25:49.700 mesmo diretório. Igualmente existe o 00:25:47.780 --> 00:25:52.070 comando rm que nos permite remover 00:25:49.700 --> 00:25:54.050 um arquivo e também dá para dar caminhos. 00:25:52.070 --> 00:25:56.750 Nesse caso, estou removendo ../foo. 00:25:54.050 --> 00:25:59.480 Lembrem-se que o remover, 00:25:56.750 --> 00:26:01.940 especialmente no Linux, por default 00:25:59.480 --> 00:26:05.000 não é recursivo, então não dá para remover 00:26:01.940 --> 00:26:07.100 um diretório usando rm. É preciso passar 00:26:05.000 --> 00:26:09.320 a flag -r que nos permite 00:26:07.100 --> 00:26:10.550 remover recursivamente e depois o 00:26:09.320 --> 00:26:12.890 caminho que quer remover. Daí ele 00:26:10.550 --> 00:26:16.370 remove tudo que estiver sob este diretório. Há também 00:26:12.890 --> 00:26:18.290 o comando rmdir que permite 00:26:16.370 --> 00:26:21.230 remover um diretório mas só se 00:26:18.290 --> 00:26:22.970 ele estiver vazio. Então a 00:26:21.230 --> 00:26:23.960 ideia aqui é criar um mecanismo pra 00:26:22.970 --> 00:26:25.429 nos dar uma certa segurança, para não 00:26:23.960 --> 00:26:28.610 jogarmos fora acidentalmente um monte 00:26:25.429 --> 00:26:31.040 de arquivos. O último comandozinho 00:26:28.610 --> 00:26:32.540 que é útil usar é o mkdir que 00:26:31.040 --> 00:26:34.429 permite criar um novo diretório. 00:26:32.540 --> 00:26:36.110 Como falamos antes, você não quer fazer 00:26:34.429 --> 00:26:37.940 algo assim porque senão ele vai 00:26:36.110 --> 00:26:40.580 criar dois diretórios, um chamado 00:26:37.940 --> 00:26:42.140 my e outro chamado photos. Para criar 00:26:40.580 --> 00:26:42.980 um diretório assim é preciso escapar 00:26:42.140 --> 00:26:50.120 o character de 00:26:42.980 --> 00:26:52.519 espaço ou usar aspas. 00:26:50.120 --> 00:26:54.919 Quando vocês quiserem mais informação 00:26:52.519 --> 00:26:57.049 sobre como qualquer comando 00:26:54.919 --> 00:26:58.220 nessas plataformas funciona, há um 00:26:57.049 --> 00:27:00.649 comando bem útil para isso, que 00:26:58.220 --> 00:27:04.610 invoca o programa chamado man, 00:27:00.649 --> 00:27:06.409 que significa manual pages. Este programa 00:27:04.610 --> 00:27:09.080 pede como argumento o nome de outro programa 00:27:06.409 --> 00:27:12.019 e retorna seu manual. Então, por exemplo, 00:27:09.080 --> 00:27:14.990 podemos digitar man ls e isso vai mostrar 00:27:12.019 --> 00:27:16.730 a página do manual do ls. Vocês vão ver 00:27:14.990 --> 00:27:19.250 que, nesse caso do ls, o resultado é bem 00:27:16.730 --> 00:27:20.870 parecido com o que vemos com ls -help, 00:27:19.250 --> 00:27:23.570 porém é mais fácil navegar e 00:27:20.870 --> 00:27:26.269 ler. Mais pro final da página vocês 00:27:23.570 --> 00:27:28.639 encontram exemplos 00:27:26.269 --> 00:27:29.899 sobre quem escreveu o programa, 00:27:28.639 --> 00:27:32.389 onde encontrar mais informação e esse 00:27:29.899 --> 00:27:32.990 tipo de coisa. Algo que pode causar confusão 00:27:32.389 --> 00:27:35.330 às vezes, 00:27:32.990 --> 00:27:36.289 ao menos até a versão mais atual em que 00:27:35.330 --> 00:27:38.779 eles adicionaram essa árvore no final, 00:27:36.289 --> 00:27:41.389 que diz q para sair, é que eles não costumavam 00:27:38.779 --> 00:27:43.279 dizer isso, aperte q para sair deste 00:27:41.389 --> 00:27:48.169 programa. Pode ser bem difícil de sair 00:27:43.279 --> 00:27:50.750 pra quem não conhece. Falando nisso, 00:27:48.169 --> 00:27:52.970 um atalho de teclado legal aqui é ctrl+l 00:27:50.750 --> 00:27:56.990 que limpa o terminal e volta pro topo. 00:27:52.970 --> 00:27:59.330 Até agora só falamos sobre 00:27:56.990 --> 00:28:01.370 programas isolados, mas o 00:27:59.330 --> 00:28:03.019 poder do shell, na verdade, aparece 00:28:01.370 --> 00:28:06.380 na hora em que começamos 00:28:03.019 --> 00:28:08.419 a combinar diferentes programas, certo? 00:28:06.380 --> 00:28:10.789 Então, em vez de rodar cd e rodar ls etc, 00:28:08.419 --> 00:28:12.500 vocês poderiam querer encadear 00:28:10.789 --> 00:28:13.940 diversos programas, ou 00:28:12.500 --> 00:28:15.980 querer interagir com arquivos e 00:28:13.940 --> 00:28:19.309 operá-los entre um programa e outro. 00:28:15.980 --> 00:28:21.200 A forma de fazer isso é usando a 00:28:19.309 --> 00:28:24.620 noção de streams que o shell nos dá. 00:28:21.200 --> 00:28:25.940 Todo programa, por default, tem... 00:28:24.620 --> 00:28:28.610 vou simplificar um pouco e falar de 00:28:25.940 --> 00:28:31.820 dois streams primários, o de entrada 00:28:28.610 --> 00:28:33.950 e o de saída. Por default, o stream de 00:28:31.820 --> 00:28:35.419 entrada é basicamente seu teclado, 00:28:33.950 --> 00:28:36.860 seu terminal, e 00:28:35.419 --> 00:28:38.929 o que quer que você digite no terminal vai 00:28:36.860 --> 00:28:40.610 acabar parando no seu programa, que tem 00:28:38.929 --> 00:28:42.049 um stream de saída padrão, que é 00:28:40.610 --> 00:28:44.330 usado sempre que o programa imprime 00:28:42.049 --> 00:28:46.279 algo. Ele imprime no stream e, por padrão, 00:28:44.330 --> 00:28:48.470 é também seu terminal. É por isso que 00:28:46.279 --> 00:28:50.690 quando digito echo hello, isso é impresso 00:28:48.470 --> 00:28:54.200 no terminal. Mas o 00:28:50.690 --> 00:28:56.360 shell lhes dá uma forma de redirecionar 00:28:54.200 --> 00:28:59.120 esses streams para mudar onde é a entrada 00:28:56.360 --> 00:29:00.980 e a saída de um programa. 00:28:59.120 --> 00:29:06.200 A maneira mais fácil de fazer isso é 00:29:00.980 --> 00:29:08.210 usando o < e >. De modo que vocês podem 00:29:06.200 --> 00:29:11.570 escrever algo assim ou escrever algo 00:29:08.210 --> 00:29:14.299 assim. O > significa que 00:29:11.570 --> 00:29:16.340 a entrada pra esse programa deve ser 00:29:14.299 --> 00:29:21.040 redirecionada para o conteúdo desse 00:29:16.340 --> 00:29:23.600 arquivo e o < significa que 00:29:21.040 --> 00:29:27.559 a saída do programa precedente deve ser 00:29:23.600 --> 00:29:28.580 redirecionada para este arquivo. Vamos 00:29:27.559 --> 00:29:32.240 ver um exemplo de como isso funciona. 00:29:28.580 --> 00:29:34.280 Se eu der echo hello, posso dizer que quero que 00:29:32.240 --> 00:29:36.710 o conteúdo seja salvo em 00:29:34.280 --> 00:29:39.049 um arquivo chamado hello.txt. Como eu dei 00:29:36.710 --> 00:29:40.520 esse caminho relativo, ele vai criar 00:29:39.049 --> 00:29:42.980 um arquivo no diretório atual 00:29:40.520 --> 00:29:45.440 chamado hello.text. Ao menos teoricamente 00:29:42.980 --> 00:29:47.780 seu conteúdo deveria ser a 00:29:45.440 --> 00:29:50.360 palavra hello. Se eu rodar isso, vejam 00:29:47.780 --> 00:29:52.100 que nada aparece na minha saída, da 00:29:50.360 --> 00:29:52.700 última vez que rodei echo hello 00:29:52.100 --> 00:29:55.340 a palavra hello aparecia na tela. 00:29:52.700 --> 00:29:57.799 Agora, essa saída foi direcionada para um 00:29:55.340 --> 00:30:00.610 arquivo chamado hello.txt. Dá para verificar 00:29:57.799 --> 00:30:03.860 isso usando um programa chamado cat. 00:30:00.610 --> 00:30:07.280 O cat imprime na tela o conteúdo de um arquivo, então 00:30:03.860 --> 00:30:11.059 posso rodar hello.txt e ele mostra 00:30:07.280 --> 00:30:13.220 hello. Porém o cat também permite 00:30:11.059 --> 00:30:16.220 esse tipo de direcionamento, então posso 00:30:13.220 --> 00:30:17.990 dizer cat, que por default imprime sua 00:30:16.220 --> 00:30:20.720 entrada na tela, ele apenas duplica a entrada 00:30:17.990 --> 00:30:23.809 na saída. Posso dizer que quero que 00:30:20.720 --> 00:30:25.160 pegue sua entrada do hello.txt, e o 00:30:23.809 --> 00:30:26.990 que vai acontecer neste caso é que 00:30:25.160 --> 00:30:29.840 o sheel vai abrir o hello.txt, 00:30:26.990 --> 00:30:32.540 pegar seu conteúdo e definir isso como 00:30:29.840 --> 00:30:34.370 a entrada do cat, e aí o car vai imprimir 00:30:32.540 --> 00:30:36.500 isso na sua saída. Como não direcionei a saída, 00:30:34.370 --> 00:30:38.179 vai aparecer no 00:30:36.500 --> 00:30:41.870 meu terminal. Então ele vai simplesmente imprimir 00:30:38.179 --> 00:30:43.549 hello na saída. Posso usar ambos 00:30:41.870 --> 00:30:45.470 ao menos tempo, por exemplo, 00:30:43.549 --> 00:30:47.000 se quero copiar um arquivo sem usar o 00:30:45.470 --> 00:30:51.500 comando cp por algum motivo, 00:30:47.000 --> 00:30:54.470 posso fazer assim. Neste caso, não 00:30:51.500 --> 00:30:56.540 estou passando nada ao programa cat, 00:30:54.470 --> 00:30:58.010 só estou dizendo, funcione normalmente, 00:30:56.540 --> 00:30:59.960 o programa cat não sabe 00:30:58.010 --> 00:31:02.150 nada sobre esse redirecionamento. Mas 00:30:59.960 --> 00:31:04.190 estou dizendo ao shell para usar o hello.txt 00:31:02.150 --> 00:31:08.120 como entrada para o cat e para escrever 00:31:04.190 --> 00:31:09.470 o que quer que seja que o cat vai soltar no arquivo hello.txt. 00:31:08.120 --> 00:31:10.010 De novo, nada aparece no meu terminal, 00:31:09.470 --> 00:31:13.340 mas se 00:31:10.010 --> 00:31:15.620 eu der cat hello2.txt, vejo a saída como 00:31:13.340 --> 00:31:20.630 era esperado, que é uma cópia do arquivo 00:31:15.620 --> 00:31:23.390 original. Há, também, o sinal >> 00:31:20.630 --> 00:31:26.570 que significa anexar em vez de 00:31:23.390 --> 00:31:27.380 escrever por cima. Então você vai notar 00:31:26.570 --> 00:31:29.870 que se eu digitar 00:31:27.380 --> 00:31:32.300 cat < hello.txt > hello2.txt 00:31:29.870 --> 00:31:34.160 de novo e depois cat hello2.txt, 00:31:32.300 --> 00:31:36.500 ele ainda contém somente hello, apesar de 00:31:34.160 --> 00:31:38.750 já conter um hello antes. Se eu mudar para 00:31:36.500 --> 00:31:41.090 >> para anexar 00:31:38.750 --> 00:31:45.890 e digitar cat nesse arquivo, 00:31:41.090 --> 00:31:47.570 agora hello aparece duas vezes. São 00:31:45.890 --> 00:31:49.850 comandos bem simples, geralmente 00:31:47.570 --> 00:31:51.590 só para interagir com arquivos, mas 00:31:49.850 --> 00:31:53.420 isso fica realmente interessante se usarmos 00:31:51.590 --> 00:31:56.150 um operador adicional do shell chamado 00:31:53.420 --> 00:32:00.020 pipe. O pipe é uma barra vertical 00:31:56.150 --> 00:32:02.900 e o que ele faz é pegar 00:32:00.020 --> 00:32:05.300 a saída de um programa à esquerda e 00:32:02.900 --> 00:32:09.650 torná-la entrada do programa 00:32:05.300 --> 00:32:13.940 à direita. Vamos ver como funciona. 00:32:09.650 --> 00:32:17.450 Vamos usar o exemplo do ls -l / 00:32:13.940 --> 00:32:19.550 Isso imprime um monte de coisas. Digamos 00:32:17.450 --> 00:32:22.460 que eu só quero a 00:32:19.550 --> 00:32:25.670 última linha dessa saída. Bem, há um 00:32:22.460 --> 00:32:28.940 comando chamado tail. O tail imprime 00:32:25.670 --> 00:32:32.420 as últimas n linhas da entrada, então 00:32:28.940 --> 00:32:34.520 posso digitar -n 1. Essa é a flag chamada 00:32:32.420 --> 00:32:36.890 n. Também dá pra usar --lines se quiserem 00:32:34.520 --> 00:32:38.660 uma opção mais longa, mas nesse caso 00:32:36.890 --> 00:32:42.260 o que isso faz é imprimir a última 00:32:38.660 --> 00:32:46.640 linha. Posso escrever tudo junto, 00:32:42.260 --> 00:32:50.840 ls -l | tail -n 1. 00:32:46.640 --> 00:32:53.060 Vejam aqui que o ls não sabe 00:32:50.840 --> 00:32:55.340 nada sobre o tail e o tail não sabe nada 00:32:53.060 --> 00:32:56.870 sobre o lr. São programas diferentes e que 00:32:55.340 --> 00:32:59.120 nunca foram programados para ser compatíveis 00:32:56.870 --> 00:33:00.650 um com o outro. Tudo que eles sabem 00:32:59.120 --> 00:33:02.900 fazer é ler uma entrada e escrever em uma 00:33:00.650 --> 00:33:05.360 saída. É o pipe que os conecta 00:33:02.900 --> 00:33:07.670 e, nesse caso particular, estou dizendo 00:33:05.360 --> 00:33:09.380 que quero que a saída do ls sirva de 00:33:07.670 --> 00:33:10.850 entrada para o tail e quero que a saída 00:33:09.380 --> 00:33:12.140 do tail vá para o terminal porque não 00:33:10.850 --> 00:33:14.240 a redirecionei. 00:33:12.140 --> 00:33:16.730 Eu também poderia definir que 00:33:14.240 --> 00:33:18.770 a saída deveria ir para ls.txt e, 00:33:16.730 --> 00:33:20.990 nesse caso, se eu der cat ls.txt vou 00:33:18.770 --> 00:33:22.640 ver a saída apropriada. Ocorre que 00:33:20.990 --> 00:33:21.815 é possível fazer coisas muito elegantes com isso. 00:33:23.340 --> 00:33:27.720 Nós vamos ir mais a fundo na aula 00:33:25.110 --> 00:33:30.720 'Duelando com os Dados' daqui 00:33:27.720 --> 00:33:32.490 uns quatro dias, sobre as coisas 00:33:30.720 --> 00:33:36.060 mais elaboradas que vocês podem fazer 00:33:32.490 --> 00:33:37.560 ao construir pipelines mais avançados. 00:33:36.060 --> 00:33:42.300 Pra dar um exemplo, podemos digitar 00:33:37.560 --> 00:33:46.320 curl --head --silent google.com. 00:33:42.300 --> 00:33:48.870 Só para mostrar como isso funciona, 00:33:46.320 --> 00:33:52.680 esse comando retorna todos os cabeçalhos HTTP 00:33:48.870 --> 00:33:56.520 para acessar google.com. E eu posso mandar 00:33:52.680 --> 00:34:01.260 isso direto para o grep --ignore-case 00:33:56.520 --> 00:34:04.230 ou -i se preferir, depois -content-lenght. 00:34:01.260 --> 00:34:06.120 Isso vai imprimir o 00:34:04.230 --> 00:34:07.500 tamanho do conteúdo do cabeçalho. O grep 00:34:06.120 --> 00:34:09.090 é um programa sobre o qual vamos falar mais tarde. 00:34:07.500 --> 00:34:12.660 Ele nos permite buscar uma palavra-chave 00:34:09.090 --> 00:34:15.560 em um stream de entrada. Podemos usar o pipe para mandar 00:34:12.660 --> 00:34:20.190 para o comando cut, que recebe um 00:34:15.560 --> 00:34:22.260 delimitador, escolhido como espaço, e eu 00:34:20.190 --> 00:34:24.420 quero o segundo campo. Isso imprime 00:34:22.260 --> 00:34:25.950 apenas o tamanho do conteúdo. Esse é 00:34:24.420 --> 00:34:28.380 um exemplo bobo, só para 00:34:25.950 --> 00:34:30.180 extrair o tamanho em bytes 00:34:28.380 --> 00:34:32.700 do google.com pela linha de comando. 00:34:30.180 --> 00:34:34.740 Não é algo muito útil, 00:34:32.700 --> 00:34:36.300 mas serve para mostrar que, encadeando 00:34:34.740 --> 00:34:38.330 essas coisas, conseguimos obter 00:34:36.300 --> 00:34:40.980 diversos efeitos de manipulação de texto. 00:34:38.330 --> 00:34:43.290 E os pipes não servem apenas para 00:34:40.980 --> 00:34:45.330 dados de texto, dá para usá-lo com 00:34:43.290 --> 00:34:47.850 imagens também. Podemos ter um 00:34:45.330 --> 00:34:49.590 programa que manipula uma imagem em 00:34:47.850 --> 00:34:51.450 binário como entrada e escreve uma 00:34:49.590 --> 00:34:53.400 imagem em binário como saída. E é possível encadeá-los 00:34:51.450 --> 00:34:54.840 dessa forma (vamos dar mais exemplos 00:34:53.400 --> 00:34:57.000 mais pra frente). 00:34:54.840 --> 00:34:59.430 É possível usá-lo até com 00:34:57.000 --> 00:35:00.900 vídeo se vocês quiserem. 00:34:59.430 --> 00:35:02.940 Por exemplo, uma ótima maneira de 00:35:00.900 --> 00:35:05.790 ter um chromecast em casa: você pode 00:35:02.940 --> 00:35:07.920 stream um arquivo de vídeo ao definir 00:35:05.790 --> 00:35:11.160 que o último programa no seu pipe é um 00:35:07.920 --> 00:35:13.050 chromecast send. Com isso, dá para enviar 00:35:11.160 --> 00:35:19.140 um arquivo de vídeo para o streaming ou 00:35:13.050 --> 00:35:20.370 usar http para seu chromecast. 00:35:19.140 --> 00:35:22.410 Vamos falar bem mais sobre isso na aula 00:35:20.370 --> 00:35:25.110 'Duelando com os Dados'. Uma coisa mais 00:35:22.410 --> 00:35:27.800 que gostaria de mostrar é como 00:35:25.110 --> 00:35:30.390 usar o terminal de uma forma mais 00:35:27.800 --> 00:35:31.920 interessante e talvez mais poderosa 00:35:30.390 --> 00:35:33.840 do que vocês estão acostumados. 00:35:31.920 --> 00:35:35.640 Essa dica talveu vai ser válida até para 00:35:33.840 --> 00:35:37.720 quem já se sente mais 00:35:35.640 --> 00:35:41.020 confortável com o terminal. 00:35:37.720 --> 00:35:43.030 Primeiro precisamos abordar um tópico 00:35:41.020 --> 00:35:44.890 importante no que diz respeito aos sistemas Linux 00:35:43.030 --> 00:35:47.620 e MacOS em particular, que é a noção 00:35:44.890 --> 00:35:49.300 de usuário root. O usuário root é como 00:35:47.620 --> 00:35:52.480 o administrador no Windows, 00:35:49.300 --> 00:35:55.000 ele tem ID 0. 00:35:52.480 --> 00:35:56.830 O usuário root é especial porque ele 00:35:55.000 --> 00:35:59.680 pode fazer o que quiser 00:35:56.830 --> 00:36:01.540 no seu sistema, ainda que um arquivo não 00:35:59.680 --> 00:36:03.790 possa ser lido ou escrito por mais 00:36:01.540 --> 00:36:06.010 ninguém, o root ainda pode acessá-lo. 00:36:03.790 --> 00:36:09.000 O root é como um super usuário 00:36:06.010 --> 00:36:11.260 que faz o que quiser. 00:36:09.000 --> 00:36:13.330 Na maiorias das vezes, vocês não vão 00:36:11.260 --> 00:36:15.550 operar como o super usuário, vocês não 00:36:13.330 --> 00:36:17.350 vão ser o root. Vocês vão ser um usuário como john 00:36:15.550 --> 00:36:19.660 ou qualquer que seja seu nome, Esse vai 00:36:17.350 --> 00:36:21.370 ser seu usuário, com o qual vocês agem, 00:36:19.660 --> 00:36:23.470 porque se vocês operassem seu computador 00:36:21.370 --> 00:36:24.700 como o usuário root o tempo todo, 00:36:23.470 --> 00:36:26.710 e rodasse um programa errado, pode ser 00:36:24.700 --> 00:36:29.950 que destruiriam o computador. Vocês não 00:36:26.710 --> 00:36:31.810 querem fazer isso, certo? Mas de vez em quando 00:36:29.950 --> 00:36:34.450 vocês podem querer fazer algo que requeira 00:36:31.810 --> 00:36:38.580 que vocês sejam root. Para esses casos, 00:36:34.450 --> 00:36:42.790 normalmente vocês vão usar um programa chamado sudo 00:36:38.580 --> 00:36:44.740 or 'faça como su" e, nesse caso, su significa 00:36:42.790 --> 00:36:46.590 super usuário. Essa é uma forma de fazer 00:36:44.740 --> 00:36:49.750 algo como super usuário. 00:36:46.590 --> 00:36:51.490 Normalmente funciona assim: 00:36:49.750 --> 00:36:53.020 escrevemos sudo e depois o comando 00:36:51.490 --> 00:36:54.580 como fazemos no terminal. Ele vai 00:36:53.020 --> 00:36:56.230 rodar aquele comando como se você 00:36:54.580 --> 00:37:01.180 fosse o root em vez do seu usuário normal. 00:36:56.230 --> 00:37:04.540 Onde vocês podem precisar de algo assim? 00:37:01.180 --> 00:37:05.800 Bem, um há vários arquivos de sistema 00:37:04.540 --> 00:37:07.510 especiais no seu computador, 00:37:05.800 --> 00:37:11.070 mas, em particular, há um 00:37:07.510 --> 00:37:14.800 chamado sysfs. Se você der cd /sys, 00:37:11.070 --> 00:37:17.320 vamos para um mundo bem diferente. 00:37:14.800 --> 00:37:19.720 Esse arquivo de sistema não é exatamente 00:37:17.320 --> 00:37:22.120 um arquivo em seu computador. Na verdade, 00:37:19.720 --> 00:37:24.180 são vários parâmetros do kernel. O kernel 00:37:22.120 --> 00:37:26.680 é basicamente o cérebro do seu computador. 00:37:24.180 --> 00:37:29.560 Essa é uma forma de acessar os diversos 00:37:26.680 --> 00:37:32.680 parâmetros do kernel através do que 00:37:29.560 --> 00:37:35.950 se parece com um arquivo de sistema. Vejam 00:37:32.680 --> 00:37:37.690 que se eu der cd em class, por exemplo, 00:37:35.950 --> 00:37:39.880 há diretórios para um monte de tipos 00:37:37.690 --> 00:37:43.750 diferentes de dispositivos com os quais 00:37:39.880 --> 00:37:47.920 posso interagir, ou muitas filas que posso acessar 00:37:43.750 --> 00:37:49.990 ou uma variedade de botões internos 00:37:47.920 --> 00:37:50.410 esquisitos. Como eles estão mostrados como arquivos, 00:37:50.410 --> 00:37:54.280 dá para usarmos todas as ferramentas que 00:37:52.030 --> 00:37:57.579 já vimos para manipulá-los. 00:37:54.280 --> 00:38:01.420 Um exemplo disso é se vocês entrarem 00:37:57.579 --> 00:38:02.440 em sys class backlight, esse backlight 00:38:01.420 --> 00:38:04.180 permite que configuremos diretamente 00:38:02.440 --> 00:38:06.760 a luz do nosso laptop, se ele tiver uma. 00:38:04.180 --> 00:38:08.920 Se eu der cd e entrar no intel backlight, 00:38:06.760 --> 00:38:10.990 porque esse é um laptop da Intel, 00:38:08.920 --> 00:38:12.760 aqui vocês vêem que há um arquivo chamado brightness 00:38:10.990 --> 00:38:16.089 e eu posso cat brightness. Esse é o brilho 00:38:12.760 --> 00:38:18.880 atual da minha tela. Mas mais que isso, 00:38:16.089 --> 00:38:21.460 posso modificá-lo também para mudar o 00:38:18.880 --> 00:38:23.740 brilho da tela. Então 00:38:21.460 --> 00:38:25.750 vocês podem pensar que consigo... 00:38:23.740 --> 00:38:26.799 deixe-me ver qual é o brilho máximo. 00:38:25.750 --> 00:38:29.589 Ok, agora está no máximo. 00:38:26.799 --> 00:38:32.319 Vocês podem imaginar que eu 00:38:29.589 --> 00:38:35.410 poderia fazer algo como echo, 00:38:32.319 --> 00:38:39.010 vamos reduzir, 00:38:35.410 --> 00:38:38.010 echo 500 para brightness, 00:38:38.010 --> 00:38:39.010 se faço isso ele diz 00:38:39.010 --> 00:38:43.089 que a permissão foi negada. Eu não posso 00:38:40.839 --> 00:38:45.220 modificar o brilho porque, para fazê-lo, 00:38:43.089 --> 00:38:46.599 para modificar coisas no 00:38:45.220 --> 00:38:48.460 kernel, é preciso ser o 00:38:46.599 --> 00:38:50.619 administrador. Vocês podem pensar 00:38:48.460 --> 00:38:52.960 que a forma de resolver isso é digitar 00:38:50.619 --> 00:38:55.779 sudo echo 500 mas ainda assim a 00:38:52.960 --> 00:38:58.260 permissão é negada. Por que? 00:38:55.779 --> 00:39:00.549 Porque, como mencionei, esses 00:38:58.260 --> 00:39:03.069 redirecionamentos de entrada e saída não 00:39:00.549 --> 00:39:05.470 são algo que os programas saibam quando 00:39:03.069 --> 00:39:07.240 usamos o pipe com o ls e o tail, o tail 00:39:05.470 --> 00:39:09.609 não sabia do ls e o ls não sabia do tail. 00:39:07.240 --> 00:39:11.859 O pipe e o redirecionamento foram estabelecidos 00:39:09.609 --> 00:39:14.079 pelo shell, então, nesse caso, 00:39:11.859 --> 00:39:18.039 o que está ocorrendo é que estou dizendo ao shell 00:39:14.079 --> 00:39:21.220 para rodar o programa sudo com os argumentos 00:39:18.039 --> 00:39:24.130 echo e 500 e mandar essa saída para o 00:39:21.220 --> 00:39:25.930 arquivo chamado brightness, mas é o shell 00:39:24.130 --> 00:39:29.410 que está abrindo o arquivo brightness, 00:39:25.930 --> 00:39:32.380 não o programa sudo. Nesse caso, é 00:39:29.410 --> 00:39:33.789 o shell que está rodando quando eu tento 00:39:32.380 --> 00:39:35.470 abrir o arquivo brightness para escrever nele 00:39:33.789 --> 00:39:37.079 e ele não tem permissão para fazer isso. 00:39:35.470 --> 00:39:39.779 Portanto, ele dá erro. 00:39:37.079 --> 00:39:42.339 Vocês já devem ter visto isso quando 00:39:39.779 --> 00:39:43.750 buscam algo e acabam, no Stack Overflow 00:39:42.339 --> 00:39:45.400 e dizem para rodar um comando tal 00:39:43.750 --> 00:39:47.440 e eles falam, por exemplo, 00:39:45.400 --> 00:39:52.930 eles dão uma instrução 00:39:47.440 --> 00:39:57.970 como 1 > /sys/class 00:39:52.930 --> 00:39:59.559 net ipv4 word, por exemplo. 00:39:57.970 --> 00:40:02.589 Isso é algo que vocês podem ter visto se 00:39:59.559 --> 00:40:04.240 tiverem tentado configurar um firewall 00:40:02.589 --> 00:40:05.680 e esse comando tem de funcionar 00:40:04.240 --> 00:40:08.200 porque o simbolozinho de hashtag 00:40:05.680 --> 00:40:09.640 indica que deve roda como root. 00:40:08.200 --> 00:40:11.170 Isso é raramente explicado, 00:40:09.640 --> 00:40:12.970 mas é isso que o # significa. 00:40:11.170 --> 00:40:15.099 Vejam no meu prompt um símbolo $ 00:40:12.970 --> 00:40:17.710 que indica 00:40:15.099 --> 00:40:18.819 que não estou rodando como root. 00:40:17.710 --> 00:40:22.270 Então a questão é como eu faço pra resolver isso? 00:40:18.819 --> 00:40:24.690 Bem, eu poderia mudar para outro terminal 00:40:22.270 --> 00:40:27.369 como root, e um jeito de fazer isso é 00:40:24.690 --> 00:40:32.140 rodar sudo su, que significa 'rode o seguinte 00:40:27.369 --> 00:40:34.329 comando como root' e o su é um comando 00:40:32.140 --> 00:40:37.290 complicado que nos abre um shell como 00:40:34.329 --> 00:40:40.599 super usuário. Então se faço isso, 00:40:37.290 --> 00:40:42.010 entro a senha, vocês podem ver 00:40:40.599 --> 00:40:44.530 que o nome de usuário no início 00:40:42.010 --> 00:40:47.109 mudou de john para root, e o prompt 00:40:44.530 --> 00:40:49.390 mudou de $ para #. 00:40:47.109 --> 00:40:52.240 Se eu agora der echo 500 para 00:40:49.390 --> 00:40:54.010 o arquivo brightness, minha tela 00:40:52.240 --> 00:40:57.040 ficou um pouco mais escura. Vocês 00:40:54.010 --> 00:40:58.990 não conseguem ver então terão de acreditar em mim. Não deu nenhum 00:40:57.040 --> 00:41:01.630 erro porque agora o shell está 00:40:58.990 --> 00:41:04.540 rodando como root e não mais como 00:41:01.630 --> 00:41:07.359 john. O usuário root tem permissão de 00:41:04.540 --> 00:41:09.760 abrir esse arquivo. Mas com o que sabemos 00:41:07.359 --> 00:41:11.349 sobre o terminal agora, há, na verdade, 00:41:09.760 --> 00:41:13.720 uma maneira de fazer isso sem ter 00:41:11.349 --> 00:41:19.119 de abrir um shell root. Funciona assim. 00:41:13.720 --> 00:41:22.990 Deixe-me voltar para 1060. 00:41:19.119 --> 00:41:26.589 Vocês vêem por que está diferente 00:41:22.990 --> 00:41:29.020 aqui? Estou dizendo ao shell para 00:41:26.589 --> 00:41:31.270 rodar o comando echo 1060, 00:41:29.020 --> 00:41:33.369 e estou dizendo para rodar o 00:41:31.270 --> 00:41:35.890 comando sudo tee brightness. 00:41:33.369 --> 00:41:39.160 Estou dizendo para mandar a saída do 00:41:35.890 --> 00:41:40.540 echo para o sudo tee. Para entender isso 00:41:39.160 --> 00:41:43.450 vocês precisam saber o que o comando tee faz. 00:41:40.540 --> 00:41:47.079 O comando tee pega sua entrada e a escreve 00:41:43.450 --> 00:41:49.540 tanto em um arquivo quanto na tela. 00:41:47.079 --> 00:41:52.329 Então o tee é uma maneira conveniente se 00:41:49.540 --> 00:41:54.160 vocês tiverem, por exemplo, um arquivo de logs que queiram enviar 00:41:52.329 --> 00:41:56.230 para deixar guardado para mais tarde, 00:41:54.160 --> 00:41:58.059 mas também querem checar vocês mesmos. 00:41:56.230 --> 00:41:59.770 Vocês podem usar o pipe para mandá-lo para o tee, passar o nome de 00:41:58.059 --> 00:42:01.809 um arquivo e ele vai escrever o que quer que esteja na sua 00:41:59.770 --> 00:42:04.270 entrada tanto no arquivo quanto na sua 00:42:01.809 --> 00:42:07.630 tela. Aqui estou aproveitando esse 00:42:04.270 --> 00:42:09.940 programa, estou dizendo 'rode o tee como 00:42:07.630 --> 00:42:12.970 rota e use o tee direto no arquivo brightness. 00:42:09.940 --> 00:42:14.380 Nesse caso, o programa tee, 00:42:12.970 --> 00:42:16.150 que é quem está abrindo o arquivo brightness, 00:42:14.380 --> 00:42:17.370 está rodando como root, então ele 00:42:16.150 --> 00:42:20.190 tem permissão de fazer isso. 00:42:17.370 --> 00:42:21.390 Se eu rodar de novo, vocês não conseguem 00:42:20.190 --> 00:42:23.850 ver, mas o brilho aumentou no laptop, 00:42:21.390 --> 00:42:25.770 não deu nenhum erro 00:42:23.850 --> 00:42:27.390 e não foi preciso abrir um shell como 00:42:25.770 --> 00:42:30.930 root e rodar comandos nele, 00:42:27.390 --> 00:42:32.160 o que muitas vezes pode ser perigoso. 00:42:30.930 --> 00:42:33.450 Se vocês quiserem explorar esses arquivos de sistema 00:42:32.160 --> 00:42:35.940 um pouco mais, há bastante coisa 00:42:33.450 --> 00:42:39.450 interessante aqui. Se vocês 00:42:35.940 --> 00:42:41.430 derem uma navegada por aqui, 00:42:39.450 --> 00:42:42.930 vão achar bastante coisas divertidas. 00:42:41.430 --> 00:42:45.090 Por exemplo, nós notamos que tem um 00:42:42.930 --> 00:42:48.540 comando legal para o brilho aqui, que 00:42:45.090 --> 00:42:49.980 outros tipos de brilhos eu poderia definir? 00:42:48.540 --> 00:42:51.860 Eu posso usar o comando find, sobre o 00:42:49.980 --> 00:42:56.000 qual também vamos falar numa próxima aula, 00:42:51.860 --> 00:42:58.860 Quero olhar qualquer arquivo cujo nome 00:42:56.000 --> 00:43:01.890 se parece com brightness no 00:42:58.860 --> 00:43:05.070 diretório atual. Não ajudou muito, talvez 00:43:01.890 --> 00:43:08.850 não sejam arquivos. Será que soletrei errado? 00:43:05.070 --> 00:43:17.010 Hum, por que não funciona? 00:43:08.850 --> 00:43:20.460 Oh, parece que ele não quer buscar por 00:43:17.010 --> 00:43:23.910 brightness. Para a sorte de vocês eu já 00:43:20.460 --> 00:43:27.480 conheço um legal. 00:43:23.910 --> 00:43:30.090 Há um subdiretório chamado leds e 00:43:27.480 --> 00:43:32.400 leds também têm brilho. Que tipos de leds 00:43:30.090 --> 00:43:36.960 existem? Um monte! 00:43:32.400 --> 00:43:38.280 Por exemplo, o led da tecla scroll lock. 00:43:36.960 --> 00:43:40.290 A maioria de vocês provavelmente não sabe 00:43:38.280 --> 00:43:42.780 o que é o led do scroll lock e muito 00:43:40.290 --> 00:43:45.770 menos o que o scroll lock faz. Talvez vocês já viram uma tecla 00:43:42.780 --> 00:43:47.670 no teclado chamada scroll lock. 00:43:45.770 --> 00:43:49.650 Basicamente ninguém mais sabe pra que 00:43:47.670 --> 00:43:51.750 serve, ninguém usa pra nada. 00:43:49.650 --> 00:43:55.680 É quase uma tecla morta e 00:43:51.750 --> 00:43:57.240 um led morto. E se vocês quisessem 00:43:55.680 --> 00:43:59.220 configurá-lo para que, toda vez que 00:43:57.240 --> 00:44:00.960 chegar um e-mail, o led do scroll lock acender? 00:43:59.220 --> 00:44:03.270 Por que não tem nenhuma outra razão para 00:44:00.960 --> 00:44:06.000 ele acender. Bem, se entrarmos nesse 00:44:03.270 --> 00:44:08.130 diretório que tem um brilho 00:44:06.000 --> 00:44:12.320 definido como 0. 00:44:08.130 --> 00:44:12.320 Bom, o que acontece se eu escrever 1 nele? 00:44:12.590 --> 00:44:17.220 É aconselhável vocês não saírem 00:44:15.330 --> 00:44:18.720 escrevendo números aleatórios em qualquer arquivo 00:44:17.220 --> 00:44:20.310 deste diretório porque isso vai afetar 00:44:18.720 --> 00:44:22.560 diretamente o kernel. Dêem uma olhada antes 00:44:20.310 --> 00:44:24.240 no que os arquivos fazem. Nesse caso aqui, 00:44:22.560 --> 00:44:28.050 eu fiz uma pesquisa prévia com cuidado. 00:44:24.240 --> 00:44:30.630 Vocês não conseguem ver, mas agora 00:44:28.050 --> 00:44:33.509 no meu teclado o led da tecla scroll lock 00:44:30.630 --> 00:44:35.400 está aceso. Se eu escrevesse um programa 00:44:33.509 --> 00:44:37.829 que checa e-mails, eu poderia, no final 00:44:35.400 --> 00:44:40.229 do programa, rodar um outro programa que 00:44:37.829 --> 00:44:43.499 manda echo 1 para este arquivo, e portanto 00:44:40.229 --> 00:44:47.460 teria uma maneira de acender o led do meu 00:44:43.499 --> 00:44:49.680 teclado para indicar que chegou um e-mail. 00:44:47.460 --> 00:44:50.940 Nessas alturas, vocês já devem saber 00:44:49.680 --> 00:44:54.269 mais ou menos se virar 00:44:50.940 --> 00:44:56.249 com o terminal, o shell e conhecer o 00:44:54.269 --> 00:44:58.920 bastante para realizar essas tarefas 00:44:56.249 --> 00:45:01.289 simples, ao menos teoricamente. Vocês não 00:44:58.920 --> 00:45:02.819 deveriam mais precisar de 00:45:01.289 --> 00:45:03.420 interfaces dependentes do mouse para 00:45:02.819 --> 00:45:05.279 encontrar arquivos. 00:45:03.420 --> 00:45:07.470 Um truque que faltou mostrar e vocês 00:45:05.279 --> 00:45:10.529 podem precisar é o de abrir arquivos. 00:45:07.470 --> 00:45:13.950 Até agora só mostrei como encontrar 00:45:10.529 --> 00:45:17.690 arquivos, mas algo que vocês precisam 00:45:13.950 --> 00:45:21.420 saber nesse curso é usar o 00:45:17.690 --> 00:45:23.640 xdg-open. Esse provavelmente só vai 00:45:21.420 --> 00:45:27.119 funcionar no Linux. Acho que no MacOS ele 00:45:23.640 --> 00:45:29.430 se chama open e no Windows... sei lá. 00:45:27.119 --> 00:45:31.739 O xdg-open recebe o nome de um arquivo e 00:45:29.430 --> 00:45:34.769 vai abri-lo usando o programa apropriado. 00:45:31.739 --> 00:45:36.180 Se vocês derem xdg-open em um arquivo 00:45:34.769 --> 00:45:39.269 html, ele vai abrir o navegador 00:45:36.180 --> 00:45:41.039 e abrir o arquivo. Uma vez que têm esse 00:45:39.269 --> 00:45:42.869 programa, teoricamente vocês não 00:45:41.039 --> 00:45:45.059 precisam nunca mais abrir uma janela do 00:45:42.869 --> 00:45:46.799 buscador. Talvez precisem por outros 00:45:45.059 --> 00:45:48.180 motivos, mas em teoria vocês conseguem 00:45:46.799 --> 00:45:50.789 fazer tudo usando as ferramentas 00:45:48.180 --> 00:45:53.849 que aprendemos hoje. Talvez pareça tudo 00:45:50.789 --> 00:45:55.589 relativamente básico para alguns de vocês, 00:45:53.849 --> 00:45:57.479 mas como eu mencionei, hoje tivemos 00:45:55.589 --> 00:45:59.460 uma introdução. Agora sabemos como o 00:45:57.479 --> 00:46:01.979 shell funciona e muito do que vamos 00:45:59.460 --> 00:46:03.450 fazer nas próximas aulas é usar esse 00:46:01.979 --> 00:46:07.019 conhecimento para fazer coisas bem 00:46:03.450 --> 00:46:09.450 interessantes usando o shell. 00:46:07.019 --> 00:46:10.979 Ou seja, hoje vimos como usar a interface 00:46:09.450 --> 00:46:14.849 que vamos precisar, então é importante 00:46:10.979 --> 00:46:16.650 todos saberem. Na próxima aula, 00:46:14.849 --> 00:46:18.269 vamos falar bastante sobre como 00:46:16.650 --> 00:46:20.309 automatizar tarefas como essas, 00:46:18.269 --> 00:46:22.140 como escrever scripts que rodam um monte 00:46:20.309 --> 00:46:24.390 de programas pra nós, usando 00:46:22.140 --> 00:46:26.700 condicionais, loops etc no terminal, 00:46:24.390 --> 00:46:29.009 ou mesmo coisas como rodar 00:46:26.700 --> 00:46:30.390 um programa até ele quebrar, o que pode 00:46:29.009 --> 00:46:31.979 ser bem útil em casos que queremos 00:46:30.390 --> 00:46:35.369 rodar algo até os testes darem erro, 00:46:31.979 --> 00:46:38.550 por exemplo. Então esse será o tópico da 00:46:35.369 --> 00:46:39.900 aula na próxima semana. Você tinha uma pergunta? 00:46:38.550 --> 00:46:42.420 Sim, com relação ao que você mostrou no 00:46:39.900 --> 00:46:49.770 diretório sys, provavelmente só vai funcionar 00:46:42.420 --> 00:46:52.530 se você estiver usando o subsistema do Windows pro Linux... 00:46:49.770 --> 00:46:55.440 Boa pergunta, eu não sei se 00:46:52.530 --> 00:46:57.570 o subsistema do Windows para Linux vai 00:46:55.440 --> 00:46:59.280 deixar aberto esses arquivos de sistema no sys. Se deixar, 00:46:57.570 --> 00:47:03.180 provavelmente vai mostrar só 00:46:59.280 --> 00:47:08.490 umas poucas coisas... 00:47:03.180 --> 00:47:10.320 Não sei, dê uma olhada. 00:47:08.490 --> 00:47:11.610 Algo que vocês vão ver é que as notas 00:47:10.320 --> 00:47:14.370 de aula dessa aula já estão 00:47:11.610 --> 00:47:16.770 online, e no final do arquivo 00:47:14.370 --> 00:47:18.420 tem diversos exercícios. Alguns 00:47:16.770 --> 00:47:20.190 são relativamente fáceis, outros um 00:47:18.420 --> 00:47:22.560 pouco mais difíceis. Sugerimos 00:47:20.190 --> 00:47:24.060 tentar resolvê-los. 00:47:22.560 --> 00:47:25.410 Se vocês já sabem esse conteúdo, 00:47:24.060 --> 00:47:27.660 vai ser bem rápido, 00:47:25.410 --> 00:47:29.400 e se não sabem vai servir para aprenderem 00:47:27.660 --> 00:47:31.740 um monte de coisas que talvez vocês 00:47:29.400 --> 00:47:33.150 percebam que não sabiam. No tira-dúvidas, 00:47:31.740 --> 00:47:35.190 que vai acontecer logo 00:47:33.150 --> 00:47:36.840 após essa aula, ficaremos felizes 00:47:35.190 --> 00:47:38.160 em ajudá-los com os exercícios ou 00:47:36.840 --> 00:47:39.540 com outros comandos que vocês vão 00:47:38.160 --> 00:47:42.300 aprender nesse processo e queiram saber 00:47:39.540 --> 00:47:44.910 como usar de forma eficiente. Enão na 00:47:42.300 --> 00:47:46.710 próxima aula, já amanhã, vamos assumir 00:47:44.910 --> 00:47:48.290 que vocês estão por dentro desse tipo de coisa 00:47:46.710 --> 00:47:51.750 que os exercícios vão ensinar. 00:47:48.290 --> 00:47:53.030 Há também um endereço de e-mail 00:47:51.750 --> 00:47:56.100 no website, vocês podem mandar questões 00:47:53.030 --> 00:47:58.860 que aparecerem depois do tira dúvidas. 00:47:56.100 --> 00:48:05.160 Mais alguma pergunta 00:47:58.860 --> 00:48:07.050 antes de terminar por hoje? Não? 00:48:05.160 --> 00:48:09.480 Tudo bem, estaremos disponíveis no 00:48:07.050 --> 00:48:12.150 nono andar do prédio Gates, o 32, 00:48:09.480 --> 00:48:15.830 dentro de cinco minutos. 00:48:12.150 --> 00:48:15.830 Vejo vocês lá!