-
Tudo bem, pessoal, obrigado por virem.
-
Esse é o semestre que faltava na sua
fomação em ciência da computação.
-
Ou, pelo menos, é assim que decidimos
nomear
-
este curso. Se não é pra essa aula que
-
você veio, então você entrou na sala
errada. Nós
-
estaremos aqui por mais ou menos 1h só
-
para ajustar suas expectativas e...
eu quero falar
-
um pouco com vocês sobre o por quê
-
de estarmos dando este curso. O curso
-
se originou de uma observação que o Anish,
-
o José e eu fizemos enquanto dávamos
monitoria para vários
-
cursos no MIT. Basicamente,
-
todos nós, cientistas da computação,
sabemos
-
que computadores são ótimos em fazer
-
tarefas repetitivas e automatizar coisas.
-
Mas muitas vezes não percebemos que há
-
muitas ferramentas que podem fazer nossos
próprios
-
processos de desenvolvimento melhores.
Nós podemos ser
-
bem mais eficientes sobre como usamos
nossos
-
computadores porque podemos usá-los
-
como uma ferramenta para nós mesmos, não
-
apenas para criar websites ou software ou
-
coisas do gênero. Este curso é
-
uma tentativa de abordar isso e uma
tentativa
-
de mostrar para vocês algumas ferramentas
que vocês
-
podem usar para um ótimo efeito seu
dia a dia
-
em pesquisa e nos estudos.
-
Este vai ser um curso no qual nós
-
queremos ensinar tanto como aproveitar
-
ao máximo as ferramentas que você já
-
conhece, mas também, assim esperamos,
ensinar vocês sobre
-
algumas ferramentas novas,
-
além de como combinar essas ferramentas
-
para produzir coisas mais poderosas do que
-
vocês imaginam ser capaz de fazer
com o que
-
já sabem atualmente. Este curso está
-
estruturado em uma séria de aulas de 1h
-
e cada aula vai cobrir
-
um tópico em paticular. Vocês podem checar
-
o website, que está escrito lá, para
-
acessar a lista de tópicos e datas
-
de cada um. As aulas serão, em geral,
-
independentes, então vocês podem
-
comparecer às que lhes interessa.
-
Porém vamos assumir que
-
vocês vêm acompanhando o conteúdo, de modo
-
que, ao chegarmos às aulas futuras, não
-
vou ficar ensinando bash tudo outra vez.
-
Por exemplo, nós também vamos postar
-
tanto as notas de aula quanto as gravações
-
das aulas online. Ainda não decidimos
-
exatamente quando vamos fazer isso,
-
mas será após as aulas. Obviamente, os
-
vídeos têm de ser postados depois
que a aula ocorre.
-
O curso vai ser ministrado por mim, John e
-
Anish, sentados ali, e pelo Jose,
-
que não está aqui mas vai dar
-
a aula de amanhã. Lembrem-se que
-
estamos tentando abordar um monte
-
de assuntos neste curso de apenas 11
-
aulas de 1h, então vamos avançar
-
relativamente rápido. Mas, por favor,
-
interrompam se houver algo que vocês
-
não estiverem conseguindo acompanhar.
-
Se você achar que devemos dedicar
-
mais tempo a algum tópico, fale conosco.
-
Por favor, interrompa com perguntas.
-
Além disso, após cada aula estaremos
-
disponíveis no nono andar do
-
prédio 30 no Stata Center,
-
o prédio de ciência da computação. Então,
se você
-
aparecer no nono andar
-
lá, na Gates Tower, pode vir
-
e tentar fazer os exercícios que
-
vamos dar em cada aula ou simplesmente
fazer perguntas
-
sobre outras assuntos que tivermos
-
tratado nas aulas ou outras coisas,
-
como umar seu computador de forma
eficiente.
-
Devido ao tempo limitado que temos
-
disponível, não vai ser possível
-
abordar todas as ferramentas em detalhe,
-
então tentaremos salientar ferramentas
-
importantes e formas interessantes de
usá-las.
-
Não vamos, necessariamente, ir a fundo
-
nos detalhes de como tudo funciona or
-
discutir casos mais elaborados, mas
se vocês tiverem
-
perguntas sobre isso, por favor,
venha falar conosco
-
sobre isso também. Muitas dessas
ferramentas são
-
ferramentas que temos usado por anos
-
e podemos lhes direcionar a mais coisas
-
interessantes que vocês podem fazer
com elas.
-
Então, aproveitem que estamos aqui.
-
Esta aula vai... não quero dizer
-
escalar rapidamente, mas
-
o que vai acontecer no decorrer
-
dessa aula em particular é que vamos
-
abordar bastante do básico, e assumiremos
-
que vocês já sabem isso no restante do
-
semetre. Coisas como usar o
-
shell e o terminal (vou explicar o que são
-
para os que não conhecem ainda),
-
e depois, bem rapidamente, vamos
-
escalar para ferramentas mais avançadas
-
e como usá-las. Vocês já podem ver nas
-
notas de aula o tipo de
-
tópicos que vamos cobrir.
-
Então isso nos traz à aula de hoje
-
na qual vamos cobrir o shell.
-
O shell vai ser uma
-
das formas primárias de interagir com seu
-
computador. Quando você quiser fazer mais
coisas
-
do que as que são possíveis com as
interfaces visuais,
-
com as quais talvez você esteja
acostumada/o, lhe permitam fazer.
-
As interfaces visuais são limitadas no
-
que
-
elas lhe permitem fazer, porque você só
-
pode fazer as coisas para as quais há
-
botões, sliders ou campos de inputs.
-
Geralmente essas ferramentas textuais
são construídas
-
para serem combinadas umas com as outras,
mas
-
há também diversas formas diferentes de
-
combiná-las, programá-las ou
-
automatizá-las e é por isso que,
-
neste curso, vamos focar na
-
linha de comando ou em ferramentas
baseadas em texto.
-
O shell é o local se faz a
-
maioria desse trabalho. Então para
aqueles que
-
não estão acostumados com o shell,
a maioria
-
das plataformas oferecem algum tipo
de shell.
-
No Windows, há o PowerShell, mas
-
há também outros shell disponíveis
-
no Windows. Já no Linux vocês vão
encontrar um monte de
-
terminais, que são janelas que lhes
permitem
-
visualizar shells e vocês também vão
-
encontrar diversos tipos de shells. O mais
-
comum deles é o bash, ou 'born
-
again shell'. Por ser um shell tão comum,
-
é basicamente esse que vamos
-
usar nessas aulas.
-
Se você usa Mac OS, você provavelmente
-
já tem o bash ou uma versão antiga dele
-
se você abrir o app do terminal. Então,
-
se você quiser acompanhar em qualquer uma
-
dessas plataformas, fique à vontade, mas
-
tenha em mente que o curso vai ser
-
meio que baseado em Linux no que diz
respeito a como
-
vamos ensinar, ainda que a maioria dessas
ferramentas
-
funcione em todas as plataformas.
Se você quiser
-
instalar um terminal e um shell e
-
não sabe como fazer isso muito bem,
ficaremos felizes em
-
lhes ajudar na nossa sala ou, geralmente,
-
é bem fácil buscar no Google
-
'sua plataforma' mais 'terminal' e você
-
vai achar um. Bom, quando você abre um
-
terminal você vê algo que se parece com
-
isso. Normalmente vai ter
-
uma única linha no topo, o que é
-
conhecido como prompt do shell.
-
Você pode ver que meu prompt do shell
-
parece com isso, tem meu nome de usuário,
o nome
-
da máquina que estou usando, o caminho
-
da pasta onde estou (vamos falar de
caminhos
-
um pouco mais tarde) e daí ele
-
fica piscando lá, pedindo
-
um input. Esse é o prompt do shell
-
onde você diz ao shell o que quer
-
que ele faça. Dá pra customizar
-
bastante esse prompt, quando você abri-lo
-
na sua máquina talvez ele não vai ter
exatamente
-
essa aparência. Talvez um pouco,
-
se você já tiver configurado,
-
ou pode ter muitas outras
-
formas. Não vamos falar muito
-
sobre customizar seu shell nesta
-
aula em particular,
-
faremos isso mais tarde. Aqui vamos
-
só falar sobre como usar esse
-
shell para fazer coisas úteis. Esta é
-
a principal interface de texto que você
-
tem para seu computador, através do shell.
-
No shell, você pode digitar
-
comandos e os comandos podem ser
-
coisas relativamente simples. Geralmente
-
você vai executar programas com
-
argumentos. Como isso funciona? Bem,
-
um programa que podemos executar é o
de data.
-
É só digitar date e apertar
-
enter, aí ele vai
-
te mostrar a data e hora. Você também
-
pode executar um programa com argumentos.
-
Isso é uma forma de modificar o
comportamento
-
do programa. Por exemplo, há um
-
programa chamado echo. O echo imprime
-
os argumentos que você passa, e esses
-
arugmentos são simplesmente coisas
-
separadas por um espaço em branco logo
após o nome.
-
Então podemos dizer hello e ele vai
imprimir
-
hello de volta.
-
Talvez não muito surpreendente, mas isso
-
é uma das coisas básicas dos argumentos.
-
Uma coisa que vocês vão notar é que
eu disse
-
que argumentos são separados por
-
espaços em branco. Talveu vocês se
perguntem, "bom,
-
e se eu quiser um argumento com várias
-
palavras?" Você pode pôr essas coisas
entre aspas, e aí dá para
-
fazer coisas como echo hello espaço
-
world e agora o programa echo recebe
-
um argumento que contém a string
-
hello world com um espaço. Bom, também dá
-
para usar aspas simples para isso.
Vou explicar a
-
diferença entre aspas simples e
-
aspas duplas quando falarmos
-
sobre scripting em bash. Vocês também
-
podem escapar um caracter, então, por
-
exemplo, hello world. Isso também
-
funciona. Todas as regras sobre
-
como escapar e como analisar e
-
dar vários argumentos e variáveis
-
nós vamos cobrir mais tarde. Espero
-
que não encontrem muitas coisas esquisitas
sobre isso. Nós temos de
-
provocar vocês sobre isso. Lembrem-se pelo
-
menos que argumentos são separados
por espaços, então,
-
se você quiser fazer algo como criar um
-
diretório chamado "my photos",
-
não dá para simplesmente digitar
make directory my photos.
-
Assim ele vai criar dois diretórios,
-
um chamado my e outro chamado photos e
-
provavelmente não é isso que você quer.
-
Uma coisa que você pode se perguntar é
como o
-
shell sabe o que são esses programas
quando
-
eu digito date ou echo. Como ele
-
sabe o que esses programas devem
-
fazer. A resposta é que o seu
-
programa, seu
-
computador tem um monte de programas
-
embutidos que já vêm com a máquina.
-
Assim como seu computador pode vir com o
-
aplicativo do terminal, ou com
-
o Windows Explorer ou
-
com algum tipo de navegador, ele também
-
já vem com aplicações específicas para
-
o terminal, e elas ficam salvas no
-
seu sistema de arquivos e o shell tem
-
uma maneira de determinar onde um
programa está
-
localizado. Basicamente, ele tem uma
forma de buscar
-
por programas. Ele faz isso através de
-
algo chamado variável de ambiente
-
invariante. Uma variável de ambiente
-
é uma variável que pode ser
-
usada para linguagens de programação.
-
Na verdade, o shell e o bash
-
em particular é
-
uma linguagem de programação. Esse
-
prompt que aparece aqui
-
é capaz não somente de rodar um programa
-
com argumentos. Ele também pode fazer
outras coisas como
-
while loops, for loops, condicionais...
-
Tudo isso. Você pode definir
-
funções, pode ter variáveis, todas essas
-
coisas você consegue fazer no shell.
-
Vamos abordar boa parte disso na próxima
-
aula sobre shell scripting. Mas, por ora,
-
vamos olhar para
-
essa variável de ambiente em particular.
-
Variáveis de ambiente são coisas que
-
estão definidas toda vez que você inicia
o shell.
-
Vocês não precisam defini-las toda vez
-
que abrem o shell, há
-
várias delas que já estão definidas, como
-
onde fica seu diretório home, qual
-
é seu nome de usuário. Há uma que é
essencial
-
para esse caso em particular
-
que é a variável de caminho. Então se
-
eu digitar echo $PATH, ele vai
-
me mostrar todos os caminhos na minha
máquina
-
onde o shell vai buscar por programas.
-
Vocês vão notar que isso é uma lista
-
separada por dois pontos. Ela pode ser
-
um pouco longa e difícil de ler, mas o
importante
-
é que, sempre que você digitar o nome de
-
um programa, o shell vai buscar nesta
-
lista de caminhos da sua máquina, olhando
-
em cada diretório em busca de um
-
programa ou arquivo cujo nome coincida
-
com o comando que você está tentando
rodar. No meu caso,
-
quando tento rodar date ou echo, ele
-
vai rodar por essa lista um por vez
-
até achar um que contenha o
-
programa chamado date ou echo, e aí
-
ele vai rodá-lo. Se quisermos saber
-
qual exatamente ele roda, há um
-
comando chamado which. O which nos permite
-
fazer isso, então quando eu posso digitar
which echo e ele
-
vai me dizer que, se eu quiser rodar um
programa
-
chamado echo, ele iria rodar deste aqui.
-
Vale a pena pausar aqui e falar sobre o
-
que são caminhos. Caminhos são uma forma
nomear a
-
localização de um arquivo em seu
computador.
-
No Linux e no MacOS esses caminhos são
-
separados por /, então
-
você vai ver aqui que este está no
-
diretório root. O / logo no começo
-
indica que o caminho começa
-
no topo do sistema de arquivos.
-
Depois olha no diretório chamado
-
usr, depois no diretório chamado bin
-
e depois olha no arquivo chamado echo.
-
No Windows, caminhos como esse são
geralmente
-
separados por \.
-
Quando estamos no Linux ou MacOS,
-
tudo mora no root, então
-
todos os caminhos começam com um /,
ou melhor, todos os
-
caminhos absolutos. No Windows, há um root
-
cada cada partição. Vocês já devem ter
-
visto coisas como C:\ ou D:\ .
-
No Windows, há um tipo de hierarquia
-
de caminhos de sistema para cada drive
-
que você tem,
-
enquanto no Linux e no MacOS
-
fica tudo sob um único nome.
-
Vocês devem ter notado que eu mencionei
-
caminho absoluto e talvez saibam o que
isso
-
significa. Caminhos absolutos são caminhos
-
que determinam por completo a localização
de um arquivo.
-
Neste caso, isso quer dizer que
-
queremos nos referir a um arquivo
específico chamado echo
-
e estamos dando o caminho completo até
-
esse arquivo. Mas também há outro tipo
-
conhecido como caminhos relativos. Um
-
caminho relativo se refere a onde estamos
no momento.
-
Então a forma de saber onde estamos no
-
momento é digitando pwd que significa
-
"imprima o diretório atual".
-
Então, se eu digitar pwd, ele
-
vai mostrar o caminho atual onde estou
-
agora, ou seja, estou no diretório
-
home sob o diretório root e depois
-
john, depois dev e assim por diante.
-
Daqui eu posso então decidir mudar
-
meu diretório atual, e todos os
-
caminhos relativos são ligados ao
-
diretório atual, que é
-
basicamente onde estamos no momento.
-
Por exemplo, neste caso, eu posso digitar
-
cd \home. cd quer dizer
"mudar de diretório".
-
Essa é uma forma de mudar meu diretório
-
atual. Neste caso, eu mudei
-
para o home e vocês vêem que
-
o prompt do shell mudou, agora dizendo
-
que estou no home. Ele simplesmente mostra
-
o nome do último segmento do caminho,
-
mas vocês também podem configurar o
terminal para mostrar
-
o caminho completo onde quer que
-
vocês estejam. Agora se eu digitar pwd
de novo, ele
-
vai me dizer que estou no /home. Há alguns
-
diretórios especiais
-
aqui. Há o . e o .. . O .
-
se refere ao diretório atual e o ..
-
se refere ao diretório acima. Essa é uma
-
forma de navegar facilmente pelo
-
sistema. Por exemplo, se eu digitar cd ..
-
ele vai me dizer que estou agora no /,
-
ou seja, no root do sistema de
-
arquivos. Eu estava no /home e agora estou
-
no /. De fato, se eu digitar pwd, ele
mostra
-
exatamente isso. Também posso usar
-
caminhos relativos para descer um nível no
-
caminho de arquivos. Então, se eu der
cd . /home
-
ele vai me mover para o
-
diretório home sob o diretório atual.
-
E isso me leva
-
de volta ao /home. Se eu tentar agora
cd ./home
-
de novo, ele me avisa que não há nenhum
-
diretório com esse nome porque não há um
-
diretório home sob o diretório em que
-
estou agora, no qual entrei com o cd.
-
Eu consigo usar cd para voltar todo
o caminho
-
que percorri, usando
-
caminhos relativos, e eu posso fazer
outras coisas
-
como ../../../../jon/ para voltar
-
para algum lugar lá dentro do meu sistema
de arquivos.
-
Ocorre que ele está lá no root.
-
Aqui temos o diretório bin, e nele
-
há o arquivo echo. Daí eu
-
posso dar world e ele roda o
-
programa echo que está no bin.
-
Essa é uma forma com a qual vocês podem
construir caminhos para
-
atravessar arbitrariamente seu sistema
de arquivos.
-
Às vezes vocês vão querer usar caminhos
absolutos e
-
às vezes, relativos. Geralmente
-
vocês vão querer usar o que for mais curto
-
mas se vocês quiserem, por exemplo, rodar
-
um programa ou escrever
-
um programa que roda esse programa, como
-
echo ou date, e vocês querem poder
-
rodá-lo a partir de qualquer local, ou
-
vocês dão o nome do
-
programa, como date ou echo, e deixam o
-
shell usar o caminho para descobrir onde
-
ele está, ou vocês dão o caminho
-
absoluto, porque se vocês derem um
caminho relativo,
-
e eu for lá e rodar no meu diretório home,
-
e vocês rodarem em um outro diretório,
-
pode ser que funcione para mim mas não
para vocês.
-
Em geral, quando rodamos um programa, ele
-
vai operar no diretório
-
atual, ao menos esse é o padrão,
-
a não ser que passemos outros argumentos.
-
Isso é bem útil porque significa
-
que muitas vezes não temos de dar
-
o caminho completo para as coisas, podemos
simplesmente
-
usar o nome dos arquivos no diretório
-
em que estamos. Uma coisa
-
bem útil é descobrir em que diretório
-
estamos. Nós já
-
vimos o pwd que imprime o local
-
onde estamos, e há um comando chamado
-
ls que vai listar os
-
arquivos no diretório atual. Então se eu
-
digitar ls aqui, vemos todos os arquivos
-
no diretório atual, certo? É uma forma
-
boa de rapidamente navegar
-
através do sistema de arquivos. Vocês vão
-
ver que se eu der cd .. e depois ls, ele
-
me mostra os arquivos naquele diretório,
-
mas com o ls eu posso dar
-
ls .. e um caminho e
-
aí ele lista o que tiver naquele aquivo em
-
vez do que o que estou agora. Ele lista
o outro
-
diretório. E vocês podem ver que se eu
-
for até o root também, certo, o root
-
tem outros arquivos. Um truque legal
-
que talvez vocês não conheçam aqui: há
-
dois outras coisas especiais que você
pode fazer.
-
Uma é usar o til. Esse
-
caractere te leva pro diretório
-
home. Então o til sempre se expande para
-
o diretório home e você pode usar
-
caminhos relativos a ele. Posso dar
til / dev
-
/pdos/classes/missing-semester/ e
-
agora estou lá porque esse til se expandiu
-
para /home/john. Um outro argumento legal
-
que vocês podem dar para o cd
especificamente
-
é, se vocêm derem cd -,
-
ele vai cd para o diretório onde você
-
estava antes. Se eu der cd -, volto
-
para o root.
-
Se der cd - de novo, volto para o
missing-semester.
-
É uma maneira útil de ficar indo e vindo
-
entre dois diretórios diferentes.
-
Em caso do ls, ou em caso
-
do cd, pode haver argumentos que vocês
-
não conhecem, certo? Até agora, ainda não
-
fizemos muito mais do que
-
dar caminhos, mas como é que descobrimos
-
que é possível passar um caminho para o ls
-
pra começo de conversa? Bem, a maioria
-
dos programas aceitam o que chamamos de
argumentos, como
-
flags e opções. Essas são coisas que
-
geralmente são precedidas por um -. Um dos
-
usos mais úteis é --help. Muitos programas
-
implementam esse, então se vocês rodarem,
-
por exemplo, ls -help, ele proveitosamente
-
imprime um monte de informações sobre
-
aquele comando. Vocêm podem ver que ele
-
dize que o uso é ls e que é possível dar
-
um número de opções, e um número de
-
arquivos. A forma de se ler essa linha é
-
três pontos significa zero ou um
-
ou mais e os colchetes
-
querem dizer opcional. Nesse caso,
-
há um número opcional de opções
-
e um número opcional de arquivos.
-
Vejam que ele explica o que o programa
-
faz e também especifica um número
-
de diferentes tipos de flags e opções
-
que podemos escolher. Geralmente
chamamos essas coisas
-
com um - e uma única letra
-
de flag ou qualquer coisa que
-
não leva um valor de flag, e qualquer
-
coisa que leva um valor chamamos de
opção. Então,
-
por exemplo, - a and - all são ambos flags
-
e -C ou --color é uma opção. Uma coisa
-
que vocês vão ver se descerem bastante a
-
tela é a flag -l. Ops.
-
A flag -l usa
-
o formato de lista longa. Isso é
-
especialmente útil por si só,
-
mas vamos ver o que ela faz.
-
Se eu der ls -l, ele imprime
-
os arquivos no diretório atual, mas ele
-
dá muito mais informação sobre esses
-
arquivos. Vocês vão ver que vão usar
-
bastante isso porque
-
essas informações adicionais que ele
-
mostra são geralmente bem úteis. Vamos
-
ver um pouco dessas informações.
-
Primeiramente, o d no começo
-
de alguns desses itens
-
indica que aquele item é um diretório.
-
Então o _data aqui, por exemplo,
-
é um diretório,
-
enquanto o html não é um diretório,
-
mas sim um arquivo. As letras seguintes
-
indicam as permissões que estão
-
definidas para este arquivo. Então, como
-
vimos antes, talvez eu não consiga abrir
-
um certo arquivo ou não consiga
-
entrar em um diretório. Tudo isso é
-
regido pelas permissões daquele arquivo
-
ou diretório em particular. A maneira de
-
interpretar isso é: o primeiro dos três
-
grupos são as permissões definidas para o
-
dono do arquivo. Todos esses arquivos
-
que estamos vendo têm eu dono como.
-
O segundo grupo de três caraceteres se
refere
-
às permissões do grupo que é dono desse
-
arquivo. Neste caso, todos esses arquivos
-
também pertencem ao grupo john.
-
Já o último grupo de três é uma lista
-
das permissões para todo o restante,
ou seja,
-
qualquer um que não seja nem dono nem
membro do grupo.
-
Esse diretório está um pouco sem graça
-
porque eu sou o dono de todos os itens,
-
mas se dermos cd /
-
ls -l vocês vão ver que
-
aqui todos os arquivos pertencem ao root.
-
Vamos voltar para esse assunto do
usuário root, só vejam
-
que aqui as permissões são
-
um pouco mais interessantes. Os grupos de
-
três significam leitura, escrita e
execução.
-
Isso signifca coisas diferentes para
arquivos e para
-
diretórios. Para arquivos, é bem simples:
-
se vocês tiverem permissão de leitura para
-
um arquivo, vocês conseguem ler seu
-
conteído. Se tiver permissão de escrita
-
para um arquivo, podem salvá-lo
-
e adicionar conteúdo a ele, ou até
-
substitui-lo completamente. E se você
-
tiver x na execução de um arquivo,
-
você pode executá-lo. Então,
-
se dermos ls -l /usr/bin,
-
vocês verão que todos
-
têm a permissão de execução ativada
-
para todas as pessoas que não forem donas
-
do arquivo. É assim porque o programa
-
echo, por exemplo, queremos que possa
-
ser executado por qualquer um usando
o computador.
-
Não há motivo pra dizer que apenas
-
alguns usuários podem rodar o echo.
-
Isso não faz sentido.
-
Já para diretórios, essas permissões
-
são um pouco diferentes. Leitura
-
quer dizer que podemos olhar quais
-
arquivos existem dentro desse diretório.
-
Associem leitura como list para
diretórios.
-
Estamos autorizados a listar seu conteúdo?
-
Escrita para um diretório diz se estamos
-
autorizados a renomear, criar ou remover
-
arquivos dentro dele. Faz sentido,
-
mas lembrem-se de que isso significa que,
-
se vocês têm permissão de escrita em um
arquivo
-
mas não têm permissão de escrita no
-
diretório dele, vocês não podem deletar o
arquivo.
-
Você pode esvaziá-lo, mas não deletá-lo,
-
porque para isso seria preciso escrever
-
no diretório em si. Finalmente, execução
-
em diretórios é algo que confunde bastante
-
as pessoas. Executar em um diretório
-
é o que se chama buscar. O nome
-
não ajuda muito, mas o que quer dizer é
-
que podemos acessar esse diretório se
-
quisermos chegar a um arquivo.
-
Se quisermos abri-lo, lê-lo ou
-
escrever nele, ou qualquer outra coisa,
-
para dar cd e entrar em um diretório
-
é preciso ter permissão de execução em
-
todos os diretórios acima dele e
-
no próprio diretório. Por exemplo,
-
para eu acessar um arquivo dentro de
-
/usr/bin como o /usr/bin/echo, preciso
-
ter permissão de execução no root,
-
no usr, no
-
bin. Se eu não tiver algum deles,
-
não terei permissão
-
de acessar aquele arquivo, porque
-
não terei acesso aos diretórios ao longo
do caminho até ele.
-
Vocês podem encontrar outros bits,
-
por exemplo, vocês podem ver
-
s ou t nessas listas, ou l.
-
Podemos conversar no tira-dúvidas
-
se ficarem curiosos,
-
a maioria não importa muito para
-
os assuntos que vocês vão ver neste curso,
-
mas é legal conhecer. Então, se quiserem
-
saber mais sobre eles, pesquisem
-
ou venham falar conosco.
-
Há outros programas que é bom
-
conhecer. Desculpa, uma coisa mais.
-
Como eu mencionei, se vocês só verem um -
-
significa que vocês não têm aquela
-
respectiva permissão. Por exemplo, se
-
houver r-x, quer dizer que vocês podem
-
ler e executar, mas não ler.
-
Há outros programas úteis
-
para vermos agora.
-
Um deles é o comando move ou mv.
-
Se eu der cd de volta para
missing-semester, aqui o mv
-
me permite renomear um arquivo usando
-
dois caminhos, o caminho antigo e o
-
caminho novo. Ou seja, move nos permite
-
tanto renomear um arquivo, como quando
-
mudamos o nome do arquivo mas não o
-
diretório, ou ele permite mover
-
um arquivo para um diretório diferente.
-
É só dar o caminho atual do arquivo
-
e o caminho para onde vocês querem movê-lo
-
e isso vai alterar sua localização e
-
seu nome. Por exemplo, eu posso mover
-
dotfiles.md para foo.md
-
e, da mesma forma, posso mover
-
de volta. Há também o comando cp.
-
O cp ou copy é bem parecido,
-
ele nos permite copiar um arquivo também
-
usando dois argumentos, o caminho de onde
-
queremos copiar e o caminho para onde
-
queremos copiar. Esses são caminhos
completos, então eu poderia
-
usar isso, por exemplo, para dizer que
quero
-
copiar dotfiles.md to ../foo.md.
-
E agora se eu der ls .
-
vocês podem ver que há um arquivo foo.md
-
naquele diretório. O cp também
-
recebe dois caminhos, não é preciso ser no
-
mesmo diretório. Igualmente existe o
-
comando rm que nos permite remover
-
um arquivo e também dá para dar caminhos.
-
Nesse caso, estou removendo ../foo.
-
Lembrem-se que o remover,
-
especialmente no Linux, por default
-
não é recursivo, então não dá para remover
-
um diretório usando rm. É preciso passar
-
a flag -r que nos permite
-
remover recursivamente e depois o
-
caminho que quer remover. Daí ele
-
remove tudo que estiver sob este
diretório. Há também
-
o comando rmdir que permite
-
remover um diretório mas só se
-
ele estiver vazio. Então a
-
ideia aqui é criar um mecanismo pra
-
nos dar uma certa segurança, para não
-
jogarmos fora acidentalmente um monte
-
de arquivos. O último comandozinho
-
que é útil usar é o mkdir que
-
permite criar um novo diretório.
-
Como falamos antes, você não quer fazer
-
algo assim porque senão ele vai
-
criar dois diretórios, um chamado
-
my e outro chamado photos. Para criar
-
um diretório assim é preciso escapar
-
o character de
-
espaço ou usar aspas.
-
Quando vocês quiserem mais informação
-
sobre como qualquer comando
-
nessas plataformas funciona, há um
-
comando bem útil para isso, que
-
invoca o programa chamado man,
-
que significa manual pages. Este programa
-
pede como argumento o nome de outro
programa
-
e retorna seu manual. Então, por exemplo,
-
podemos digitar man ls e isso vai mostrar
-
a página do manual do ls. Vocês vão ver
-
que, nesse caso do ls, o resultado é bem
-
parecido com o que vemos com ls -help,
-
porém é mais fácil navegar e
-
ler. Mais pro final da página vocês
-
encontram exemplos
-
sobre quem escreveu o programa,
-
onde encontrar mais informação e esse
-
tipo de coisa. Algo que pode causar
confusão
-
às vezes,
-
ao menos até a versão mais atual em que
-
eles adicionaram essa árvore no final,
-
que diz q para sair, é que eles não
costumavam
-
dizer isso, aperte q para sair deste
-
programa. Pode ser bem difícil de sair
-
pra quem não conhece. Falando nisso,
-
um atalho de teclado legal aqui é
ctrl+l
-
que limpa o terminal e volta pro topo.
-
Até agora só falamos sobre
-
programas isolados, mas o
-
poder do shell, na verdade, aparece
-
na hora em que começamos
-
a combinar diferentes programas, certo?
-
Então, em vez de rodar cd e rodar ls etc,
-
vocês poderiam querer encadear
-
diversos programas, ou
-
querer interagir com arquivos e
-
operá-los entre um programa e outro.
-
A forma de fazer isso é usando a
-
noção de streams que o shell nos dá.
-
Todo programa, por default, tem...
-
vou simplificar um pouco e falar de
-
dois streams primários, o de entrada
-
e o de saída. Por default, o stream de
-
entrada é basicamente seu teclado,
-
seu terminal, e
-
o que quer que você digite no terminal vai
-
acabar parando no seu programa, que tem
-
um stream de saída padrão, que é
-
usado sempre que o programa imprime
-
algo. Ele imprime no stream e, por padrão,
-
é também seu terminal. É por isso que
-
quando digito echo hello, isso é impresso
-
no terminal. Mas o
-
shell lhes dá uma forma de redirecionar
-
esses streams para mudar onde é a entrada
-
e a saída de um programa.
-
A maneira mais fácil de fazer isso é
-
usando o < e >. De modo que vocês podem
-
escrever algo assim ou escrever algo
-
assim. O > significa que
-
a entrada pra esse programa deve ser
-
redirecionada para o conteúdo desse
-
arquivo e o < significa que
-
a saída do programa precedente deve ser
-
redirecionada para este arquivo. Vamos
-
ver um exemplo de como isso funciona.
-
Se eu der echo hello, posso dizer que
quero que
-
o conteúdo seja salvo em
-
um arquivo chamado hello.txt. Como eu dei
-
esse caminho relativo, ele vai criar
-
um arquivo no diretório atual
-
chamado hello.text. Ao menos teoricamente
-
seu conteúdo deveria ser a
-
palavra hello. Se eu rodar isso, vejam
-
que nada aparece na minha saída, da
-
última vez que rodei echo hello
-
a palavra hello aparecia na tela.
-
Agora, essa saída foi direcionada para um
-
arquivo chamado hello.txt. Dá para
verificar
-
isso usando um programa chamado cat.
-
O cat imprime na tela o conteúdo de um
arquivo, então
-
posso rodar hello.txt e ele mostra
-
hello. Porém o cat também permite
-
esse tipo de direcionamento, então posso
-
dizer cat, que por default imprime sua
-
entrada na tela, ele apenas duplica
a entrada
-
na saída. Posso dizer que quero que
-
pegue sua entrada do hello.txt, e o
-
que vai acontecer neste caso é que
-
o sheel vai abrir o hello.txt,
-
pegar seu conteúdo e definir isso como
-
a entrada do cat, e aí o car vai imprimir
-
isso na sua saída. Como não direcionei a
saída,
-
vai aparecer no
-
meu terminal. Então ele vai simplesmente
imprimir
-
hello na saída. Posso usar ambos
-
ao menos tempo, por exemplo,
-
se quero copiar um arquivo sem usar o
-
comando cp por algum motivo,
-
posso fazer assim. Neste caso, não
-
estou passando nada ao programa cat,
-
só estou dizendo, funcione normalmente,
-
o programa cat não sabe
-
nada sobre esse redirecionamento. Mas
-
estou dizendo ao shell para usar o
hello.txt
-
como entrada para o cat e para escrever
-
o que quer que seja que o cat vai soltar
no arquivo hello.txt.
-
De novo, nada aparece no meu terminal,
-
mas se
-
eu der cat hello2.txt, vejo a saída como
-
era esperado, que é uma cópia do arquivo
-
original. Há, também, o sinal >>
-
que significa anexar em vez de
-
escrever por cima. Então você vai notar
-
que se eu digitar
-
cat < hello.txt > hello2.txt
-
de novo e depois cat hello2.txt,
-
ele ainda contém somente hello, apesar de
-
já conter um hello antes. Se eu mudar para
-
>> para anexar
-
e digitar cat nesse arquivo,
-
agora hello aparece duas vezes. São
-
comandos bem simples, geralmente
-
só para interagir com arquivos, mas
-
isso fica realmente interessante se
usarmos
-
um operador adicional do shell chamado
-
pipe. O pipe é uma barra vertical
-
e o que ele faz é pegar
-
a saída de um programa à esquerda e
-
torná-la entrada do programa
-
à direita. Vamos ver como funciona.
-
Vamos usar o exemplo do ls -l /
-
Isso imprime um monte de coisas. Digamos
-
que eu só quero a
-
última linha dessa saída. Bem, há um
-
comando chamado tail. O tail imprime
-
as últimas n linhas da entrada, então
-
posso digitar -n 1. Essa é a flag chamada
-
n. Também dá pra usar --lines se quiserem
-
uma opção mais longa, mas nesse caso
-
o que isso faz é imprimir a última
-
linha. Posso escrever tudo junto,
-
ls -l | tail -n 1.
-
Vejam aqui que o ls não sabe
-
nada sobre o tail e o tail não sabe nada
-
sobre o lr. São programas diferentes e que
-
nunca foram programados para ser
compatíveis
-
um com o outro. Tudo que eles sabem
-
fazer é ler uma entrada e escrever em uma
-
saída. É o pipe que os conecta
-
e, nesse caso particular, estou dizendo
-
que quero que a saída do ls sirva de
-
entrada para o tail e quero que a saída
-
do tail vá para o terminal porque não
-
a redirecionei.
-
Eu também poderia definir que
-
a saída deveria ir para ls.txt e,
-
nesse caso, se eu der cat ls.txt vou
-
ver a saída apropriada. Ocorre que
-
é possível fazer coisas muito elegantes
com isso.
-
Nós vamos ir mais a fundo na aula
-
'Duelando com os Dados' daqui
-
uns quatro dias, sobre as coisas
-
mais elaboradas que vocês podem fazer
-
ao construir pipelines mais avançados.
-
Pra dar um exemplo, podemos digitar
-
curl --head --silent google.com.
-
Só para mostrar como isso funciona,
-
esse comando retorna todos os
cabeçalhos HTTP
-
para acessar google.com. E eu posso mandar
-
isso direto para o grep --ignore-case
-
ou -i se preferir, depois -content-lenght.
-
Isso vai imprimir o
-
tamanho do conteúdo do cabeçalho. O grep
-
é um programa sobre o qual vamos falar
mais tarde.
-
Ele nos permite buscar uma palavra-chave
-
em um stream de entrada. Podemos usar o
pipe para mandar
-
para o comando cut, que recebe um
-
delimitador, escolhido como espaço, e eu
-
quero o segundo campo. Isso imprime
-
apenas o tamanho do conteúdo. Esse é
-
um exemplo bobo, só para
-
extrair o tamanho em bytes
-
do google.com pela linha de comando.
-
Não é algo muito útil,
-
mas serve para mostrar que, encadeando
-
essas coisas, conseguimos obter
-
diversos efeitos de manipulação de texto.
-
E os pipes não servem apenas para
-
dados de texto, dá para usá-lo com
-
imagens também. Podemos ter um
-
programa que manipula uma imagem em
-
binário como entrada e escreve uma
-
imagem em binário como saída. E é
possível encadeá-los
-
dessa forma (vamos dar mais exemplos
-
mais pra frente).
-
É possível usá-lo até com
-
vídeo se vocês quiserem.
-
Por exemplo, uma ótima maneira de
-
ter um chromecast em casa: você pode
-
stream um arquivo de vídeo ao definir
-
que o último programa no seu pipe é um
-
chromecast send. Com isso, dá para enviar
-
um arquivo de vídeo para o streaming ou
-
usar http para seu chromecast.
-
Vamos falar bem mais sobre isso na aula
-
'Duelando com os Dados'. Uma coisa mais
-
que gostaria de mostrar é como
-
usar o terminal de uma forma mais
-
interessante e talvez mais poderosa
-
do que vocês estão acostumados.
-
Essa dica talveu vai ser válida até para
-
quem já se sente mais
-
confortável com o terminal.
-
Primeiro precisamos abordar um tópico
-
importante no que diz respeito aos
sistemas Linux
-
e MacOS em particular, que é a noção
-
de usuário root. O usuário root é como
-
o administrador no Windows,
-
ele tem ID 0.
-
O usuário root é especial porque ele
-
pode fazer o que quiser
-
no seu sistema, ainda que um arquivo não
-
possa ser lido ou escrito por mais
-
ninguém, o root ainda pode acessá-lo.
-
O root é como um super usuário
-
que faz o que quiser.
-
Na maiorias das vezes, vocês não vão
-
operar como o super usuário, vocês não
-
vão ser o root. Vocês vão ser um usuário
como john
-
ou qualquer que seja seu nome, Esse vai
-
ser seu usuário, com o qual vocês agem,
-
porque se vocês operassem seu computador
-
como o usuário root o tempo todo,
-
e rodasse um programa errado, pode ser
-
que destruiriam o computador. Vocês não
-
querem fazer isso, certo? Mas de vez em
quando
-
vocês podem querer fazer algo que requeira
-
que vocês sejam root. Para esses casos,
-
normalmente vocês vão usar um programa
chamado sudo
-
or 'faça como su" e, nesse caso, su
significa
-
super usuário. Essa é uma forma de fazer
-
algo como super usuário.
-
Normalmente funciona assim:
-
escrevemos sudo e depois o comando
-
como fazemos no terminal. Ele vai
-
rodar aquele comando como se você
-
fosse o root em vez do seu usuário normal.
-
Onde vocês podem precisar de algo assim?
-
Bem, um há vários arquivos de sistema
-
especiais no seu computador,
-
mas, em particular, há um
-
chamado sysfs. Se você der cd /sys,
-
vamos para um mundo bem diferente.
-
Esse arquivo de sistema não é exatamente
-
um arquivo em seu computador. Na verdade,
-
são vários parâmetros do kernel. O kernel
-
é basicamente o cérebro do seu computador.
-
Essa é uma forma de acessar os diversos
-
parâmetros do kernel através do que
-
se parece com um arquivo de sistema. Vejam
-
que se eu der cd em class, por exemplo,
-
há diretórios para um monte de tipos
-
diferentes de dispositivos com os quais
-
posso interagir, ou muitas filas que
posso acessar
-
ou uma variedade de botões internos
-
esquisitos. Como eles estão mostrados
como arquivos,
-
dá para usarmos todas as ferramentas que
-
já vimos para manipulá-los.
-
Um exemplo disso é se vocês entrarem
-
em sys class backlight, esse backlight
-
permite que configuremos diretamente
-
a luz do nosso laptop, se ele tiver uma.
-
Se eu der cd e entrar no intel backlight,
-
porque esse é um laptop da Intel,
-
aqui vocês vêem que há um arquivo chamado
brightness
-
e eu posso cat brightness. Esse é o brilho
-
atual da minha tela. Mas mais que isso,
-
posso modificá-lo também para mudar o
-
brilho da tela. Então
-
vocês podem pensar que consigo...
-
deixe-me ver qual é o brilho máximo.
-
Ok, agora está no máximo.
-
Vocês podem imaginar que eu
-
poderia fazer algo como echo,
-
vamos reduzir,
-
echo 500 para brightness,
-
se faço isso ele diz
-
que a permissão foi negada. Eu não posso
-
modificar o brilho porque, para fazê-lo,
-
para modificar coisas no
-
kernel, é preciso ser o
-
administrador. Vocês podem pensar
-
que a forma de resolver isso é digitar
-
sudo echo 500 mas ainda assim a
-
permissão é negada. Por que?
-
Porque, como mencionei, esses
-
redirecionamentos de entrada e saída não
-
são algo que os programas saibam quando
-
usamos o pipe com o ls e o tail, o tail
-
não sabia do ls e o ls não sabia do tail.
-
O pipe e o redirecionamento foram
estabelecidos
-
pelo shell, então, nesse caso,
-
o que está ocorrendo é que estou
dizendo ao shell
-
para rodar o programa sudo com os
argumentos
-
echo e 500 e mandar essa saída para o
-
arquivo chamado brightness, mas é o shell
-
que está abrindo o arquivo brightness,
-
não o programa sudo. Nesse caso, é
-
o shell que está rodando quando eu tento
-
abrir o arquivo brightness para escrever
nele
-
e ele não tem permissão para fazer isso.
-
Portanto, ele dá erro.
-
Vocês já devem ter visto isso quando
-
buscam algo e acabam, no Stack Overflow
-
e dizem para rodar um comando tal
-
e eles falam, por exemplo,
-
eles dão uma instrução
-
como 1 > /sys/class
-
net ipv4 word, por exemplo.
-
Isso é algo que vocês podem ter visto se
-
tiverem tentado configurar um firewall
-
e esse comando tem de funcionar
-
porque o simbolozinho de hashtag
-
indica que deve roda como root.
-
Isso é raramente explicado,
-
mas é isso que o # significa.
-
Vejam no meu prompt um símbolo $
-
que indica
-
que não estou rodando como root.
-
Então a questão é como eu faço pra
resolver isso?
-
Bem, eu poderia mudar para outro terminal
-
como root, e um jeito de fazer isso é
-
rodar sudo su, que significa
'rode o seguinte
-
comando como root' e o su é um comando
-
complicado que nos abre um shell como
-
super usuário. Então se faço isso,
-
entro a senha, vocês podem ver
-
que o nome de usuário no início
-
mudou de john para root, e o prompt
-
mudou de $ para #.
-
Se eu agora der echo 500 para
-
o arquivo brightness, minha tela
-
ficou um pouco mais escura. Vocês
-
não conseguem ver então terão de acreditar
em mim. Não deu nenhum
-
erro porque agora o shell está
-
rodando como root e não mais como
-
john. O usuário root tem permissão de
-
abrir esse arquivo. Mas com o que sabemos
-
sobre o terminal agora, há, na verdade,
-
uma maneira de fazer isso sem ter
-
de abrir um shell root. Funciona assim.
-
Deixe-me voltar para 1060.
-
Vocês vêem por que está diferente
-
aqui? Estou dizendo ao shell para
-
rodar o comando echo 1060,
-
e estou dizendo para rodar o
-
comando sudo tee brightness.
-
Estou dizendo para mandar a saída do
-
echo para o sudo tee. Para entender isso
-
vocês precisam saber o que o comando
tee faz.
-
O comando tee pega sua entrada e a escreve
-
tanto em um arquivo quanto na tela.
-
Então o tee é uma maneira conveniente se
-
vocês tiverem, por exemplo, um arquivo
de logs que queiram enviar
-
para deixar guardado para mais tarde,
-
mas também querem checar vocês mesmos.
-
Vocês podem usar o pipe para mandá-lo
para o tee, passar o nome de
-
um arquivo e ele vai escrever o que quer
que esteja na sua
-
entrada tanto no arquivo quanto na sua
-
tela. Aqui estou aproveitando esse
-
programa, estou dizendo 'rode o tee como
-
rota e use o tee direto no arquivo
brightness.
-
Nesse caso, o programa tee,
-
que é quem está abrindo o arquivo
brightness,
-
está rodando como root, então ele
-
tem permissão de fazer isso.
-
Se eu rodar de novo, vocês não conseguem
-
ver, mas o brilho aumentou no laptop,
-
não deu nenhum erro
-
e não foi preciso abrir um shell como
-
root e rodar comandos nele,
-
o que muitas vezes pode ser perigoso.
-
Se vocês quiserem explorar esses
arquivos de sistema
-
um pouco mais, há bastante coisa
-
interessante aqui. Se vocês
-
derem uma navegada por aqui,
-
vão achar bastante coisas divertidas.
-
Por exemplo, nós notamos que tem um
-
comando legal para o brilho aqui, que
-
outros tipos de brilhos eu poderia
definir?
-
Eu posso usar o comando find, sobre o
-
qual também vamos falar numa próxima aula,
-
Quero olhar qualquer arquivo cujo nome
-
se parece com brightness no
-
diretório atual. Não ajudou muito, talvez
-
não sejam arquivos. Será que soletrei
errado?
-
Hum, por que não funciona?
-
Oh, parece que ele não quer buscar por
-
brightness. Para a sorte de vocês eu já
-
conheço um legal.
-
Há um subdiretório chamado leds e
-
leds também têm brilho. Que tipos de leds
-
existem? Um monte!
-
Por exemplo, o led da tecla scroll lock.
-
A maioria de vocês provavelmente não sabe
-
o que é o led do scroll lock e muito
-
menos o que o scroll lock faz. Talvez
vocês já viram uma tecla
-
no teclado chamada scroll lock.
-
Basicamente ninguém mais sabe pra que
-
serve, ninguém usa pra nada.
-
É quase uma tecla morta e
-
um led morto. E se vocês quisessem
-
configurá-lo para que, toda vez que
-
chegar um e-mail, o led do scroll lock
acender?
-
Por que não tem nenhuma outra razão para
-
ele acender. Bem, se entrarmos nesse
-
diretório que tem um brilho
-
definido como 0.
-
Bom, o que acontece se eu escrever 1 nele?
-
É aconselhável vocês não saírem
-
escrevendo números aleatórios em qualquer
arquivo
-
deste diretório porque isso vai afetar
-
diretamente o kernel. Dêem uma olhada
antes
-
no que os arquivos fazem. Nesse caso aqui,
-
eu fiz uma pesquisa prévia com cuidado.
-
Vocês não conseguem ver, mas agora
-
no meu teclado o led da tecla scroll lock
-
está aceso. Se eu escrevesse um programa
-
que checa e-mails, eu poderia, no final
-
do programa, rodar um outro programa que
-
manda echo 1 para este arquivo, e portanto
-
teria uma maneira de acender o led do meu
-
teclado para indicar que chegou um e-mail.
-
Nessas alturas, vocês já devem saber
-
mais ou menos se virar
-
com o terminal, o shell e conhecer o
-
bastante para realizar essas tarefas
-
simples, ao menos teoricamente. Vocês não
-
deveriam mais precisar de
-
interfaces dependentes do mouse para
-
encontrar arquivos.
-
Um truque que faltou mostrar e vocês
-
podem precisar é o de abrir arquivos.
-
Até agora só mostrei como encontrar
-
arquivos, mas algo que vocês precisam
-
saber nesse curso é usar o
-
xdg-open. Esse provavelmente só vai
-
funcionar no Linux. Acho que no MacOS ele
-
se chama open e no Windows... sei lá.
-
O xdg-open recebe o nome de um arquivo e
-
vai abri-lo usando o programa apropriado.
-
Se vocês derem xdg-open em um arquivo
-
html, ele vai abrir o navegador
-
e abrir o arquivo. Uma vez que têm esse
-
programa, teoricamente vocês não
-
precisam nunca mais abrir uma janela do
-
buscador. Talvez precisem por outros
-
motivos, mas em teoria vocês conseguem
-
fazer tudo usando as ferramentas
-
que aprendemos hoje. Talvez pareça tudo
-
relativamente básico para alguns de vocês,
-
mas como eu mencionei, hoje tivemos
-
uma introdução. Agora sabemos como o
-
shell funciona e muito do que vamos
-
fazer nas próximas aulas é usar esse
-
conhecimento para fazer coisas bem
-
interessantes usando o shell.
-
Ou seja, hoje vimos como usar a interface
-
que vamos precisar, então é importante
-
todos saberem. Na próxima aula,
-
vamos falar bastante sobre como
-
automatizar tarefas como essas,
-
como escrever scripts que rodam um monte
-
de programas pra nós, usando
-
condicionais, loops etc no terminal,
-
ou mesmo coisas como rodar
-
um programa até ele quebrar, o que pode
-
ser bem útil em casos que queremos
-
rodar algo até os testes darem erro,
-
por exemplo. Então esse será o tópico da
-
aula na próxima semana. Você tinha
uma pergunta?
-
Sim, com relação ao que você mostrou no
-
diretório sys, provavelmente só vai
funcionar
-
se você estiver usando o subsistema do
Windows pro Linux...
-
Boa pergunta, eu não sei se
-
o subsistema do Windows para Linux vai
-
deixar aberto esses arquivos de sistema
no sys. Se deixar,
-
provavelmente vai mostrar só
-
umas poucas coisas...
-
Não sei, dê uma olhada.
-
Algo que vocês vão ver é que as notas
-
de aula dessa aula já estão
-
online, e no final do arquivo
-
tem diversos exercícios. Alguns
-
são relativamente fáceis, outros um
-
pouco mais difíceis. Sugerimos
-
tentar resolvê-los.
-
Se vocês já sabem esse conteúdo,
-
vai ser bem rápido,
-
e se não sabem vai servir para aprenderem
-
um monte de coisas que talvez vocês
-
percebam que não sabiam. No tira-dúvidas,
-
que vai acontecer logo
-
após essa aula, ficaremos felizes
-
em ajudá-los com os exercícios ou
-
com outros comandos que vocês vão
-
aprender nesse processo e queiram saber
-
como usar de forma eficiente. Enão na
-
próxima aula, já amanhã, vamos assumir
-
que vocês estão por dentro desse tipo
de coisa
-
que os exercícios vão ensinar.
-
Há também um endereço de e-mail
-
no website, vocês podem mandar questões
-
que aparecerem depois do tira dúvidas.
-
Mais alguma pergunta
-
antes de terminar por hoje? Não?
-
Tudo bem, estaremos disponíveis no
-
nono andar do prédio Gates, o 32,
-
dentro de cinco minutos.
-
Vejo vocês lá!