Formação de Administradores de Redes Linux LPI – level 1 Aula 2 SENAC TI Fernando Costa Agenda • Introdução ao Shell • Variáveis do shell • Usando símbolos coringa • Síntese • Exercícios O shell • Como todo computador necessidade de uma interface uma humana, no linux a mais simples delas é o shell • Em termos técnicos o shell é um interpretador de comandos que analisa o texto digitado na linha de comandos e os executa produzindo algum resultado Contexto do shell $ ls Usuários / Programas SHELL – Interpreta comandos Bibliotecas “ls” é um comando KERNEL – Cérebro/Coração do sistema operacional HARDWARE Contexto do shell $ ls Usuários / Programas SHELL – Interpreta comandos Bibliotecas Está na biblioteca? KERNEL – Cérebro/Coração do sistema operacional HARDWARE Contexto do shell $ ls Usuários / Programas SHELL – Interpreta comandos Bibliotecas Preciso ler o disco... KERNEL – Cérebro/Coração do sistema operacional HARDWARE Contexto do shell Usuários / Programas SHELL – Interpreta comandos $ ls Bibliotecas Ler o disco na trilha X, setor Y, do disco Z KERNEL – Cérebro/Coração do sistema operacional HARDWARE Contexto do shell Usuários / Programas SHELL – Interpreta comandos $ ls Bibliotecas KERNEL – Cérebro/Coração do sistema operacional HARDWARE Carregar a informação no endereço H da memória Contexto do shell Usuários / Programas SHELL – Interpreta comandos $ ls Bibliotecas KERNEL – Cérebro/Coração do sistema operacional HARDWARE Prompt do shell • Você já deve ter visto este símbolo no terminal Linux: $ • Ele é o prompt de comandos do shell. • Algumas variações deste símbolo são permitidas como nome do computador, diretório corrente, etc. Prompt do shell • O prompt do shell pode variar dependendo do usuário que está utilizando o sistema no momento. • O sinal "$" significa que um usuário comum é que está usando a máquina • O sisnal "#" significa que o super-usuário está usando o sistema. Super-Usuário • O super-usuário é o administrador do sistema Linux. Ele é especial porque tem poderes para fazer absolutamente tudo no sistema. • Ele é conhecido como usuário "root" ou "raiz" traduzindo do inglês Tipos de shell • Existem várias shells, cada uma com suas configurações e funcionalidades específicas. A maior parte das diferenças existentes envolve facilidade de operação e tipos de configuração. • Exemplos: – C-SHELL – BASH (bourne again shell) – KSH (korn shell) Mais funcionalidades • Além de ser um interpretador, o shell também é um poderoso ambiente de programação capaz de automatizar praticamente tudo em um sistema linux. SHELL SCRIPT Variáveis de ambiente • Durante a execução do bash são mantidas algumas variáveis especiais que contém alguma informação importante para a execução do shell. • Estas variáveis são carregadas no início da execução do bash e também podem ser configuradas manualmente em qualquer momento. Variáveis do prompt • A primeira variável que iremos abordar é a PS1 ou simplesmente Prompt String 1. • Esta variável guarda o conteúdo do prompt de comandos do bash quando ele está pronto para receber comandos Variável PS2 • Existe também a variável PS2 que guarda o conteúdo do prompt de comandos quando é necessário múltiplas linhas para completar um comando Variáveis do prompt • Estas duas variáveis do shell não afetam como o interpretador irá processar os comandos recebidos, mas podem ser de grande ajuda quando carregam informações extras como nome do usuário, diretório corrente, etc. Vamos testar, abram um terminal Variável PATH • Outra variável importante do shell é o PATH. O path guarda uma lista dos diretórios que contém programas que você poderá executar sem passar a linha de comandos completa do caminho do programa Testem: $ echo $PATH /usr/local/bin:/sbin:/bin:/usr/sbin Diretório HOME • Repositório do usuário, diretório similar ao “Document And Settings” do windows. • Para acessar o home de qualquer usuário utilize o “~” • Exemplos: # cd ~ $ cd ~ # cd ~fernando Ordem de execução • É importante que você saiba que o interpretador de comandos do bash segue a seguinte ordem para achar e executar os comandos digitados: 1. O comando digitado é um comando interno do interpretador de comandos? (veremos mais em shell script) 2. Se não for, o comando é um programa executável localizado em algum diretório listado na variável PATH? 3. A localização do comando foi explicitamente declarada Visualizar as variáveis • Uma lista completa das variáveis do shell poderá ser obtida com o comando: set Criar variável • Para criar uma variável siga os passos abaixo. variáveis locais (somente para o shell): TREINAMENTO=“Linux SENAC TI” variáveis globais (visível por todos os filhos): export TREINAMENTO Visualizar a árvore de execução dos programas: pstree Palavras reservadas • Algumas palavras não podem ser utilizadas como variáveis, pois são o que chamamos de palavras reservadas do shell. • São elas: case, do, done, elif, else, esac, fi, for, function, if, in, select, then, until, while e time. Entrando com comandos • Entrar com comandos no shell é mais do que simplesmente digitá-los. • Primeiro o comando precisa ser válido e estar nos diretórios listados na variável PATH ou com sua localização explícita. • O comando também pode requerer opções, geralmente precedidos pelo símbolo "-" ou "--" e por os argumentos. • O importante é que cada comando tem sua sintaxe única e pode haver variações dependendo da distribuição do linux Exemplo • Chamada simples: “ls” • A opção ‘-l’ (menos-ele) pode ser acrescentada para gerar uma lista de arquivos detalhada: Execute: ls -l • Podemos ainda colocar mais opções: Execute: ls -l -a -t ou ls -lat Argumentos de programas • Alguns comandos podem aceitar argumentos. Para outros comandos são necessário. Os argumentos são parâmetros que os comandos aceitam ou necessitam. Vejamos o comando ls: ls -l *.txt Opções obrigatórias • Outra variação possível são os comandos que precisam obrigatoriamente de uma opção para executar uma tarefa que geralmente não são precedidas pelo traço. • É comum para esse tipo de comando que suas opções sejam sucedidas por argumentos. Veja como exemplo o comando dd: dd if=bootdisk.img of=/dev/fd0 Dica quente • Quase todos os comandos aceitam a opção --help que mostra uma ajuda simples da opções e argumentos aceitos pelo comando. • É importante que você tenha em mente que o Linux somente vai executar os comandos que sejam internos do interpretador, ou comandos cuja localização esteja na variável PATH ou comandos chamados com seu caminho explícito Mais de um comando • O bash permite também que você entre com uma sequência de comandos em uma mesma linha. Para isso você deve separar os comandos com o símbolo ; (ponto-e-vírgula) Exemplo: echo $PS1; echo $PS2 Histórico: .bash_history • O bash escreve em um arquivo chamado .bash_history localizado no diretório home de cada usuário o histórico de todos os comandos digitados. • Útil para fins de auditoria, relembrar a memória ou simplesmente economizar os dedos Experimente: history e cat ~/.bash_history Atalhos do histórico • !! Executa o último comando digitado • !n executa o comando na linha n do .bash_history • !texto executa o comando mais recente iniciado por “texto” • !texto executa o comando mais recente que contenha “texto” Descobrir o SHELL • Para descobrir o shell que você está usando: echo $SHELL Navegando pela árvore • O comando "cd" é utilizado para navegar pela árvore de direórios. Observe que "cd" do linux é um comando, e portanto seus argumentos devem ser separados das letras "cd". Exemplo: $ cd / • O comando acima diz ao bash para ir ao diretório raiz. A "/" é o símbolo que significa "raiz do sistema de arquivos". • O comando "cd" sem nenhum argumento diz ao bash para ir ao diretório home do usuário • O comando “cd” seguido o “~” tem a mesma função, porém pode ir a diretórios homes de outros usuários Onde estou? • o comando pwd mostra o diretório corrente, conforme o exemplo: pwd Caminhos • Caminho absoluto – se estou em qualquer diretório e quero acessar o diretório ~fernando cd /home/fernando • Caminho relativo – acessando partindo do ponto atual, por exemplo: pwd /usr/bin cd ../../home/fernando Símbolos “.” e “..” • O símbolo ".." é utilizado para fazer referência a um diretório imediatamente acima do corrente. ls ../../ • O símbolo "." é utilizado para fazer referência ao diretório corrente. É utilizado para executar um comando em um diretório que não esteja listado na PATH. ./imprime Fernando Costa www.fernandocosta.com.br [email protected]