M i n i - C u r s o d e I n t r o d u ç ã o a o G N U / L i n u x AULA 3 Bruno L. Albrecht Felipe A. Chies Lucas F. Zawacki PET Computação UFRGS Setembro 2009
L i n h a d e C o m a n d o I Terminal (Shell) Comandos de Ajuda (Documentação) Estrutura de diretórios Arquivos / Arquivos-Texto Árvore de diretórios
S h e l l Programa que recebe comandos do teclado e os envia ao Sisop para serem executados; Um concha envolvendo o sistema operacional.
S h e l l É um meio de interação entre o usuário e a máquina; Antigamente, era a única interface disponível nos computadores; Pode ser considerada um tipo de linguagem de programação -> Shell Programming Resumindo: É um intepretador de comandos!
S h e l l Tarefas executadas: Espera o usuário fornecer um comando (prompt) Analisa e trata caracteres especiais da linha de comando Procura arquivo executável do comando Cria um processo filho (fork) para executá-lo Espera que o comando termine para retornar ao prompt Exceção: comandos em background (&)
O s S h e l l s Bourne Shell (sh) Antigo padrão do UNIX Standart Shell Korn Shell (ksh) Compátivel com sh agregando outras funções Bourne Again Shell (bash) Shell do projeto GNU C Shell (csh) Estruturação similar à linguagem C Ignorou a compatibilidade com sh
T e r m i n a l ( g n o m e - t e r m i n a l ) É um programa de terminal gráfico -> emulador de terminal; Permite que façamos uma interação com a shell através de uma janela, dentro da interface gráfica;
M o d o T e x t o Se não quisermos usar o terminal, podemos entrar no modo texto (trocar de ambiente): Para isso basta apertar Crtl + Alt + F[1-6] Para voltar ao modo gráfico, deve-se apertar Ctrl + Alt + F7;
C o m a n d o s d e A j u d a - m a n man Principal comando de todos!!! Acessa as páginas de manuais (manpages); man ls man man #é válido Opção man -k <palavra> : comandos onde a palavra aparece em sua descrição ou nome. man -k java
O u t r o s c o m a n d o s d e A j u d a Info info gzip Help Manuais que utilizam uma linguagem mais simples, abordando apenas as opções mais comuns. help cd Exibe informações sobre os comandos internos do Bash;
E s t r u t u r a d e D i r e t ó r i o s A árvore de diretórios do Linux segue um padrão estabelecido pelo unix durante a maior parte de sua existência, mas controlada por um conjunto de regras estabelecidas pelo Linux Filesystem Standard, ou FSSTND.
D i r e t ó r i o s - D e s c r i ç ã o / : é o diretório raiz, todos os demais diretórios estão abaixo dele; /bin : contém os programas do sistema que são executados com freqüência pelos usuários; /boot : arquivos necessários para o boot (como o kernel e o carregador do sistema operacional); /dev : é o local onde ficam armazenadas as referências aos dispositivos presentes na máquina, para o controle destes dispositivos (HD, drive de disquete, etc).;
D i r e t ó r i o s - D e s c r i ç ã o /etc : arquivos de configuração do sistema; /home : contêm os diretórios dos usuários do sistema; /home/marcelo: Diretório pessoal do Marcelo; /home/thiago: Diretório pessoal do Thiago; /lib : bibliotecas compartilhadas pelos programas do sistema e módulos do kernel; /lost+found *: para arquivos recuperados; * Não faz parte do Filesystem Hierarchy Standard ( http://www.pathname.com/fhs/pub/fhs-2.3.html ).
D i r e t ó r i o s - D e s c r i ç ã o /media : dispositivos montados (CD-ROM, partição de HD, etc); /mnt : ponto de montagem temporário; /opt : aplicativos adicionais e pacotes de softwares. /proc : diretório virtual de informações do sistema, mantido pelo kernel. /root : diretório pessoal (home) do usuário root; /sbin : Diretório de programas usados pelo root para administração e controle do funcionamento do sistema -> /bin do root;
D i r e t ó r i o s - D e s c r i ç ã o /tmp : arquivos temporários; /usr :contém comandos, bibliotecas, manpages e outros arquivos estáveis (que não precisem ser modificados durante a operação normal do sistema) -> diretório só de leitura; /usr/bin : a maior parte dos executáveis dos programas se encontra aqui; /usr/lib : bibliotecas do sistema; /usr/src : código-fonte do kernel; /var :contém em geral os arquivos que sofrem modificações durante a sessão(logs, spool, e-mail);
D i r e t ó r i o s - C o m a n d o s cd : Descrição: permite-nos a navegação entre os diretórios do sistema; cd /usr Vamos para o diretório usr; Opções: cd ~ # vai para o diretório home do usuário cd. # diretório atual cd.. # vai para o diretório pai (na árvore) cd - # vai para o último diretório acessado
D i r e t ó r i o s - C o m a n d o s ls : Descrição: lista os arquivos do diretório desejado; ls Lista os arquivos do diretório atual; Opções: ls -a #mostra também os arquivos ocultos ls -l #listagem com mais detalhes ls -lhs # tamanhos de arquivos legíveis (-h) # e ordem de tamanho (-S) ls -R # lista também os sub-diretórios
D i r e t ó r i o s - C o m a n d o s dir : Descrição: comando similar ao ls; dir -lh pwd : Lista os arquivos do diretório atual no formato longo com tamanhos legíveis ; Descrição: permite saber em qual diretório estamos no momento, onde pwd significa "print working directory".; pwd
D i r e t ó r i o s - C o m a n d o s mkdir : Descrição: cria um diretório vazio; mkdir /home/marcelo/pet rmdir : #cria uma pasta pet no local desejado Remove diretório vazios ; rmdir /home/marcelo/pet #remove a pasta pet Obs.: Na sequência mostraremos o comando rm, que pode ser usado para excluir diretórios com arquivos e subdiretórios;
A r q u i v o s - C o m a n d o s mv : Descrição: move arquivos e diretórios, sendo muito usado também para renomear um determinado arquivo. mv ~/a.txt /tmp/a.txt #move o arquivo do diretório pessoal do usuário para a #pasta /tmp mv teste1.txt teste2.txt #renomeia o arquivo teste1 para teste2
A r q u i v o s - C o m a n d o s cp : Faz copias de arquivos e diretórios. cp /home/marcelo /tmp #faz uma cópia de toda a pasta do usuário Marcelo para #a pasta tmp; cp a.txt a_copia.txt #cria uma cópia do arquivo a.txt no diretório corrente; cp *.txt /tmp #copia todos arquivos texto para a pasta tmp;
A r q u i v o s - C o m a n d o s rm : Remove arquivos e diretórios. rm a.txt # remove o arquivo a.txt; rm -r /home/marcelo # remove o diretório marcelo e todos os seus arquivos e # subdiretórios recursivamente; Nota: Use este comando com muito cuidado! A princípio não existe lixeira!
A r q u i v o s - C o m a n d o s ln : Cria ligações (links) entre arquivos ou diretórios. ln -s /home/thiago/mp3 /mp3 # cria um link simbólico (soft link) mp3 na raiz para o #diretório dentro do home do usuário Thiago
A r q u i v o s - C o m a n d o s file : Indica o tipo do arquivo ou se é um diretório; file curso_linux_aula1.pdf
A r q u i v o s - C o m a n d o s locate : Pesquisa em uma base de dados de nomes de arquivos por nomes que satisfaçam um determinado padrão. Podemos atualizar a base de dados usando o comando updatedb;
A r q u i v o s - C o m a n d o s find : Comando utilizado para procurar por arquivos (ou diretórios) na árvore de diretórios, a partir de um caminho. find. -name a.txt #busca todos arquivos que tenham nome #a.txt, a partir do diretório atual find / -size +10000k #busca no computador todos arquivos com #tamanho maior que 10.000 Kb
A r q u i v o s - C o m a n d o s touch Muda a data e hora que um arquivo foi criado. Também pode ser usado para criar arquivos vazios. touch arq #cria um arquivo vazio se ele não existir, ou modifica a #data de última alteração para a atual touch -t 10201830 arq #altera a data do arquivo (ou cria) para 20/Out #às 18h30
R e d i c i o n a m e n t o d e F l u x o No ambiente shell, podemos utilizar os operadores >,>>,< para redirecionar a entrada e saída padrão (existem outros!!!); comando > arq.txt Redireciona a saída-padrão do comando para o arquivo b (sobrescrevendo, ou criando se o arquivo não existir). comando >> arq.txt O mesmo que o operador >, mas concatenando (não-sobrescrevendo)
R e d i c i o n a m e n t o d e F l u x o comando < arq.txt redireciona a entrada-padrão do comando para o arquivo. Nota: Veremos com mais detalhes esse assunto ao longo do curso.
A r q u i v o s T e x t o - C o m a n d o s cat : Utilizado, em geral, para concatenar arquivos ou exibir arquivos de texto na tela; cat -n arq.txt #exibe o conteúdo do arquivo na tela (-n) #com as linhas numeradas) cat arq1 arq2 arq3 > arq_final #concatena os 3 arquivos e coloca o #resultado no arq_final
A r q u i v o s T e x t o - C o m a n d o s tac : Comando similar ao cat, mas exibe ou concatena os arquivos na ordem inversa; tac arq.txt #exibe o conteúdo do arquivo na tela na ordem inversa
A r q u i v o s T e x t o - C o m a n d o s more : Mostra arquivos na tela de forma paginada; Navegação: para sair do aplicativo digite q use as teclas Page-Down, Ctrl+F ou Space para avançar use as teclas Page-Up ou Ctrl+B para voltar. use Enter para avançar apenas uma linha por vez. more arq.txt
A r q u i v o s T e x t o - C o m a n d o s less : Tem a mesma função do comando more, mas apresenta algumas melhorias; As teclas de navegação são as mesmas do more, mas permite a tecla h (help) para listar as demais teclas; less arq.txt
A r q u i v o s T e x t o - C o m a n d o s grep : Procura por uma expressão dentro de um arquivo(s) ou no dispositivo de entrada padrão. grep Curso Linux arq1.txt arq2.txt #Procura a expressão ( Curso Linux ) nos #dois arquivos; ls grep linux #Procura a expressão (linux) na saída do comando ls;
A r q u i v o s T e x t o - C o m a n d o s vi / vim : Editor de texto vim (vi improved); No Ubuntu ambos os comandos abrem o vim! vim arq.txt #Abre o arquivo para edição ou cria (desde que ao #fecharmos salvarmos) um novo se não existir; Nota: Veremos mais sobre o vim na aula 5!
A r q u i v o s T e x t o - C o m a n d o s diff : Compara o conteúdo de dois arquivos, exibindo a diferença entre eles; diff arq1.txt arq2.txt #exibe a diferença na tela dos dois arquivos; diff -i arq1.txt arq2.txt > arq.txt #salva no arq.txt a difença entre arquivos, #ignorando as diferenças entre maisúculas e # minúsculas (-i);
A r q u i v o s T e x t o - C o m a n d o s sort : Organiza as linhas de um arquivo texto ou da entrada padrão sort -d nomes.txt # exibe na tela os nomes em ordem alfabética (-d)! sort n numeros.txt > crescente.txt # ordena os numeros (-n) em ordem #crescente, colocando no crescente.txt
B i b l i o g r a f i a m í n i m a d a a u l a Lista completa de referências será dada ao final do curso: http://www.uniriotec.br/~morganna/guia/introd_guia.h http://wiki.ubuntubrasil.org/comandosbasicos https://help.ubuntu.com/community/commandlinehow http://linuxcommand.org/ http://jneves.wordpress.com/ http://www.commandlinefu.com/ http://www.ghacks.net/2009/08/14/get-to-know-linux-t