unidade 3.6 introdução ao shell

35
CSOR Configuração de Sistemas Operacionais de Rede

Upload: juan-carlos-lamarao

Post on 14-Apr-2017

122 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Unidade 3.6 Introdução ao Shell

CSOR

Configuração de Sistemas Operacionais de Rede

Page 2: Unidade 3.6 Introdução ao Shell

Aula Nº 9

Unidade III: Servidor Linux;

Introdução ao Shell

Page 3: Unidade 3.6 Introdução ao Shell

ApresentaçãoA maneira mais comum de se utilizar utilizar/administrar uma máquina Linux é através de um terminal executando um shell. Um shell, em uma definição simples, é um programa que interpreta comandos digitados pelo usuário, e os executa de maneira apropriada

Os comandos são interpretados pelo shell e enviados para sua execução. Com isso um shell pode também ser utilizado para programação simples. A combinação de um bom shell com pequenos programas utilitários permite automatizar tarefas, interagir com o usuário e fazer uso da flexibilidade e poder oferecido pela interface de linha de comando

Page 4: Unidade 3.6 Introdução ao Shell

ApresentaçãoExistem três tipos de execução de um shell: shell de login, shell interativo e shell não interativo.

Shell de login: quando o shell é iniciado como um shell de login, ele primeiro lê e executa os comandos que estão no arquivo /etc/profile (se esse arquivo existir). Após isso, o shell procura por seus arquivos de configuração (~/bash_profile, ~/bash_login e ~/.profile, por exemplo). O shell de login executará os comandos presentes no primeiro arquivo de comandos presentes em um arquivo de encerramento de Sessão (~/.bash_logout, por exemplo), enquanto um shell interativo regular não executa esses comandos.

Shell interativo: um shell interativo é aquele no qual você digita os comandos e aguarda enquanto o comando executa, interagindo com o sistema. Quando um shell interativo é iniciado, ele lê e executa os comandos presentes no arquivo de configuração do usuário (se esse arquivo existir; por exemplo, o ~/.bashrc). Normalmente, um shell de login também é um shell interativo.

Shell não-interativo: um shell não interativo é um shell utilizado para executar um script, por exemplo, onde o usuário não faz interação com a linha de comando.

Page 5: Unidade 3.6 Introdução ao Shell

ApresentaçãoExistem vários tipos de shells disponíveis para o Linux; os principais são:

sh ou Bourne Shell: este é o shell original, limitado em recursos e pequeno em tamanho. Implementações modernas utilizadas no Linux são o ash e dash (que almeja conformidade com o shell padrão POSIX, IEEE 1003.2).

csh ou C shell: shell cujos comandos obedecem a uma sintaxe inspirada na linguagem C (mas não particularmente similar). Alguns sistemas utilizam uma versão com melhorias chamada tcsh, ou TENEX C shell.

ksh ou Korn shell: é um shell compatível com o Bourne Shell e que adiciona muitos recursos adicionais. Implementações comumente utilizadas no Linux incluem o pdksh e o mksh.

bash ou Bourne-Again shell: é o shell padrão GNU, bastante intuitivo e flexível. Usado tanto por usuários iniciantes como programadores. Ele é compatível com o Bourne shell e com várias características do Korn shell. O que é executado com o sh pode ser executado no bash, mas nem sempre a recíproca é verdadeira.

O shel mais comumente utilizado em ambientes Linus é o bash.

Page 6: Unidade 3.6 Introdução ao Shell

Informações IniciaisO Bash: O bash tem, basicamente, três propósitos:

Utilização interativa: no uso interativo, o shell fornece uma linha de comando para o usuário e espera seus comandos serem digitados para processá-los e repassá-los para serem executados pelo sistema.

Personalização de uma sessão: o shell pode definir variáveis que alteram o comportamento do sistema. Essas variáveis podem ser definidas pelo usuário em arquivos que são lidos no início ou no termino de uma sessão.

Programação: shells permitem a programação através de scripts, compostos pela combinação de comandos do shell com comandos do sistema.

O Prompt:

Ao se logar em um sistema Linux via terminal (sem utilizar um gerenciador de login gráfico), será apresentado para o usuário uma linha de comando, como abaixo:

[aluno@lab01 aluno/Vídeos] $

A primeira parte (antes do caractere @) indica o nome de usuário que está acessando este shell no momento, Logo após o “@” é mostrado o nome da máquina (local ou remota), e por último, é mostrado o diretório onde o usuário se encontra no momento. Para usuário root, a única diferença é no final, Onde é mostrado um “#”

Page 7: Unidade 3.6 Introdução ao Shell

Informações IniciaisCaminhos:

Caminhos ou paths descrevem a localização de um arquivo dentro da estrutura em árvore do sistema de arquivos. Arquivos podem ser localizados/visualizados de duas formas: através de seu caminho relativo ou de seu caminho absoluto O caminho absoluto é o caminho completo desde o diretório raiz e o caminho relativo é o caminho a partir do diretório onde o usuário se encontra atualmente.

Exemplo: se o usuário desejar voltar um diretório ele poderia usar o caminho absoluto (desde o diretório / até o diretório desejado), ou digitando “..”, que seria o equivalente a voltar um diretório, relativo ao atual.

Terminais:

Um terminal é um dispositivo de acesso ao sistema através de uma interface de caractere (tipicamente o shell). Terminais podem ser utilizados diretamente no consolo, através do uso de terminais virtuais, ou através de um emulador de terminal disponível dentro de um ambiente gráfico. É possível alternar entre os terminais virtuais utilizando as teclas Alt+Fn, onde n pode variar de 1 até 6 na configuração padrão.

Diferentes emuladores de terminal estão disponíveis para os diversos ambientes gráficos utilizados no Linux, como xterm, gnome-terminal e konsole.

Page 8: Unidade 3.6 Introdução ao Shell

ComandosComandos podem ser utilizados para fazer com que o Linux execute determinadas tarefas. Existem tanto comandos internos ao shell como comandos que são programas ( que geralmente etão em /usr/bin ou /bin). Uma grande porção dos comandos básicos utilizados em um shell são programas provenientes do projeto GNU. Sendo assim, eles compartilham algumas características comuns, como opções e sintaxe, tendo o seguinte formato:

comando [opções] <parâmetro>

Sendo que <parâmetro> consistem em informações para a execução do comando (como nomes de arquivos) e [opções], em geral, têm dois formatos: longo e curto. O formato longo é composto de uma palavra precedida por dois traços, enquanto que o curto é uma letra seguida de um traço apenas. Várias opções curtas podem ser combinadas. Tanto as opções como os parâmetros podem ser opcionais dependendo do comando.

Page 9: Unidade 3.6 Introdução ao Shell

Comandos

Embora o padrão GNU seja amplamente utilizado, alguns programas têm sua própria sintaxe, sendo que em geral esta não foge muito da ideia de opções curtas e longas, precedidas de hífens. De qualquer modo, quando em dúvida, basta consultar a documentação do programa

Exemplos (genéricos) de opções de linha de comando padrão GNU

--help Exibe uma tela de ajuda, com um resumo das opções disponíveis

--version Exibe a versão do programa e informações de copyright

--opção=algo Liga a opção “opção”, passando a esta o parêmetro “algo”

-2 Liga a opção “2”

-v Liga a opção “v”

-b teste Liga a opção “b”, passando a esta o parâmetro “teste”

-a2v Liga as opções “a”, “2” e “v” simultaneamente

Page 10: Unidade 3.6 Introdução ao Shell

Comandos de AjudaConsultar a documentação disponível no sistema pode ser muito útil para solucionar dúvidas do funcionamento de um comando ou descobrir opções que possam facilitar o trabalho do usuário.

man

Consulta a página de manual (man page) de um determinado comando. A página de manual fornece uma ajuda rápida sobre o programa e de suas opções. Pode ser especificada a seção (1-9), de acordo com o tema da página de manual, sendo que um tópico pode estar contido em mais de uma seção.

Seções das Páginas de Manual

1. Comando do usuário 2. Chamadas ao sistema3. Bibliotecas de funções 4. Dispositivos5. Formatos de arquivos 6. Jogos7. Informações gerais 8. Administração do sistema9. Programação em geral

Page 11: Unidade 3.6 Introdução ao Shell

Comandos de AjudaPrincipais opções do man:

Exemplos:

$ man 1 man

Apresentará uma tela com informações sobre o comando man e suas descrições

$ man -K driver

Procura pelo termo driver em todas as páginas de manual do sistema

man [opções] comando

-k Procura determinada string na descrição das páginas de manual disponíveis. Equivalente ao comando apropos

-K Procura determinada string no conteúdo das páginas de manual disponíveis

Page 12: Unidade 3.6 Introdução ao Shell

Comandos da Ajudainfo

Exibe páginas de informações sobre comandos. As páginas info têm a caracteristicas de estarem formatadas em hipertexto, facilitando a pesquisa. Para certos comandos, a página info mostrará as mesmas informações da página de manual. Sintaxe:

info [comando]

Exemplos:

$ info

Mostra todas as páginas info existentes no sistema

$ info ls

Mostra a página info do comando ls

Page 13: Unidade 3.6 Introdução ao Shell

Comandos de Ajudawhatis

O Whatis procura por palavras chaves em uma base de dados que contém o nome e uma breve explicação de diversos comandos. Quando o whatis encontra a palavra procurada, ele exibe na saída padrão a descrição e o número da sessão da página de manual do comando. É equivalente a opção -f do man.

$ whatis socket

socket (2) - create an endpoint for communication

socket (7) - Linux socket interface

$ whatis printf

printf (3) - formatted output conversion

Page 14: Unidade 3.6 Introdução ao Shell

Comandos de Ajudaapropos

O apropos funciona de maneira semelhante ao whatis, porém realiza a busca pela palavra também nas descrições dos comandos. É bastante útil para situações onde o usuário não recorda o nome de um comando, pois pode pesquisar por palavras chaves relacionadas ao comando. É equivalente a opção -k do man.

Se o usuário deseja criar um diretório, mas não se lembra qual o comando para isso, pode buscar por directory (diretório), por exemplo, e então será listado, entre outras opções, o comando mkdir:

$ apropos directory

chdir (2) - change working directory

chroot (2) - change root directory

mkdir (2) - create a directory

dirfd (3) - get directory stream file descriptor

[...]

Page 15: Unidade 3.6 Introdução ao Shell

Comandos de Gerenciamento do Shell/ Terminal

Um usuário avançado de Linux deve sentir-se confortável utilizando o terminal. Entre os comandos básicos para seu uso estão a impressão de mensagens, limpeza, reinício e encerramento de sessão, listado a seguir.

echo

utilizado para mostrar (ecoar) um determinado texto na tela de terminal. As principais opções são:

echo [opções] expressão

-n expressão Não insere uma nova linha após a saída do comando

-e Habilita a barra invertida como caractere de escape, para saída de caracteres na expressão. Alguns caracteres que podem ser usados com esta opção são: \c: suprime a nova linha \n: nova linha \r: retorno de linha \t: tabulação horizontal \v: tabulação vertical \b: mesmo efeito da tecla backspace

Page 16: Unidade 3.6 Introdução ao Shell

Comandos de Gerenciamento do Shell/ Terminal

Exemplos:

$ echo “Isto é um teste”

Isto é um teste

Mostra a expressão entre aspas. Neste caso, as aspas são opcionais

$ echo -n “isto é um teste”

Isto é um teste$

Exibe a expressão entre aspas, tirando o espaço extra (basta notar o sinal do prompt ao lado do final da expressão)

$echo -e “Isto é u\bm\b teste”

Isto é um teste

A opção é permite o uso da notação com barra, o \b. O \b apaga o caractere anterior, ou seja, tudo que estiver antes do \b será suprimido

Page 17: Unidade 3.6 Introdução ao Shell

Comandos de Gerenciamento do Shell/ Terminal

Clear

Limpa a tela do terminal, apagando o conteúdo e movendo o prompt para o início do terminal. Sintaxe:

clear

reset

Restaura o estado original do terminal, corrigindo problemas com fontes e posicionamento do cursor.

Principais opções:

reset [opções]

-q O tipo de terminal é mostrado na saída padrão

-s Imprime na tela a sequência de comandos shell para reiniciar o ambiente do terminal

Page 18: Unidade 3.6 Introdução ao Shell

Comandos de Gerenciamento do Shell/ Terminal

Exemplo:

$ reset -s

Erase is delete.

Kill is control-U (^U).

Interrupt is control-C (^C).

Reinicia o terminal, mostrando informações sobre os atalhos para comandos que inicializam o ambiente, na saída padrão.

exit

sai do shell/console atual. Sintaxe:

exit

O comando exit também pode ser executado através da combinação de teclas Ctrl+d

Page 19: Unidade 3.6 Introdução ao Shell

Comandos para Navegação no Sistema de Arquivo

Os comandos a seguir possibilitam que o usuário possa acessar diretórios e, com isso, navegar no sistema de arquivos do sistema

___________________________________________________

pwd

Exibe o diretório onde o usuário atual está.

Exemplo:

$ pwd

/home/aluno

indica que o diretório /home/aluno é o diretório onde o usuário se encontra atualmente

Page 20: Unidade 3.6 Introdução ao Shell

Comandos para Navegação no Sistema de Arquivo

cdAcessa um diretório, ou seja, muda do diretório atual para o diretório especificado (change directory). O comando não possui uma página de manual individual; sua descrição está incluida na página de manual do bash. Sintaxe:

cd [diretório de destino]

Exemplos:

$ cd /usr/bin

Leva o usuário para o diretório /usr/bin

$ cd ../

Faz o usuário retornar um diretório na estrutura de diretórios

$ cd -

O Usuário retornará ao último diretório acessado

$ cd

Faz com que o usuário seja direcionado para o seu diretório home

Page 21: Unidade 3.6 Introdução ao Shell

Comandos para Navegação no Sistema de Arquivo

tree

Exibe a estrutura de diretórios a partirdo diretório atual caso não seja fornecido nenhum parâmetro), ou do diretório passado na linha de diretório passado na linha de comando.

Opção principal:

Exemplos:

$ tree -d /etc

Lista a estrutura de diretórios a partir de /etc, mostrando apenas diretórios

$ tree /var/log

Lista roda a estrutura de diretórios a partir de /var/log

tree [opções] [ diretório]

-d Lista apenas diretórios, não incluindo arquivos

Page 22: Unidade 3.6 Introdução ao Shell

Comandos para Navegação no Sistema de Arquivo

fileRetorna o tipo do arquivo, após a execução dos teste apropriados. As principais opções são:

Exemplos:

$ file favoritos.html

favoritos.html: HTML documento text

Fornece o nome do arquivo e o tipo do arquivo favoritos.html

$ file -d script.py

python script text executable

Fornece apenas o tipo do arquivo script.py

file [opções] arquivo

-b Não inclui o nome dos arquivos nas linhas de saída

-s O arquivo arq_desc deve conter uma lista de arquivos (um em cada linha). Assim, o comando etá tentar descobrir e mostrar o tipo de cada um dos arquivos contidos em arq_desc. Note que se o caminho absoluto não for fornecido para cada arquivo, o comando deve ser executado no local onde os arquivos se encontram.

Page 23: Unidade 3.6 Introdução ao Shell

Comandos para Navegação no Sistema de Arquivo

ls

Lista o conteúdo do diretório atual, ou do diretório/arquivo que for indicado na linha de comando. Bastante flexível, aceita inúmeros parâmetros e opções.

Principais opções:

file [opções] arquivo

-l Listagem no formato longo, com detalhes dos arquivos

-a Lista todos os arquivos, incluindo arquivos ocultos (aqueles que têm seu nome iniciado por “.”).

--color Listagem colorida. Opção padrão na maioria das distribuições.

-F Coloca no final dos nomes de arquivos um símbolo indicando o seu tipo (a barra no final da listagem indica que é um diretório).

-r Inverte a ordem de classificação.

-R Faz uma listagem em modo recursivo.

-1 Exibe a listagem em uma coluna única.

Page 24: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

mkdir

Cria um diretório. O caractere separador de diretórios “/” não pode ser usado no nome de um diretório.

Opção principal:

Exemplos:

$ mkdir teste_novo

Cria o diretório onde o usuário local se encontra

$ mkdir ../teste

Cria o diretório acima do diretório atual (diretório pai)

$ mkdir -p /tmp/teste/outro/local\ da\ estrutura

Cria, dentro do diretório /tmp, toda a estrutura de subdiritórios listada. Note que a barra invertida deve ser utilizada para que o caractere especial de espaço possa ser incluído

mkdir [opções] diretório

-p Cria o diretório e a estrutura de subdiretórios passada

Page 25: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

rmdir

Remove um diretório. O diretório deve estar vazio para ser removido.

Opção principal:

Exemplos:

$ rmdir teste

Apaga o diretório teste, no local onde o usuário se encontra

$ mkdir ../teste2

Remove o diretório localizado no diretório pai

$ rmdir -p /tmp/teste/outro/local\ da\ estrutura

Remove a estrutura de diretórios indicada (não apaga o diretório pai – no caso, /tmp)

mkdir [opções] diretório

-p Remove a estrutura de subdiretórios passada, caso esteja vazia.

Page 26: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

cat

Envia o conteúdo de um ou mais arquivos para a saída padrão. Serve também para associar arquivos, mas é mais utilizado para listar o conteúdo de um arquivo. Caso nenhum nome de arquivo ou argumento seja fornecido, o cat permite que o usuário entre com os dados na entrada padrão (pelo teclado), e liste o conteúdo.

Principais opções:

cat [opções] arquivo

-b Numera todas as linhas, menos as linhas em branco.

-E Mostra um caractere $ ao final de cada linha.

-n Numera todas as linhas mostradas.

-T Mostra, em vez de caracteres de tabulação (tab), um sinal ^I..

Page 27: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

Exemplos:

$ cat /etc/passwd

Joga na saída padrão (terminal) o conteúdo do arquivo /etc/passwd.

$ cat -b /etc/inputrc

Exibe o conteúdo do arquivo /etc/inputrc, numerando as linhas que são diferentes de linhas em branco.

$ cat exemplo1.txt exemplo2.txt

Associa os dois arquivos na ordem indicada, e mostra=os na saída padrão

O comando tac possui a mesma função do cat, só que a listagem dos arquivos é na ordem inversa

Page 28: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

more

Mostra o arquivo na saída padrão. Se o tamanho do arquivo dor maior do que o número de linhas da tela, faz uma pausa e aguarda o pressionamento de uma tecla (Enter, Espaço ou q/Esc) para continuar a exibição.

Principais opções:

more [opções] arquivo

-d Mostra informações para o usuário de como prosseguir.

+num Inicia a exibição na linha indicada no “num”.

-p Limpa a tela e depois exibe o conteúdo do arquivo, ao invés de paginar o conteúdo do arquivo.

-s Junta várias linhas em branco seguidas de trechos do arquivo e mostra apenas uma linha.

Page 29: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

less

O less é muito parecido com o comando more, mas permite a navegação dentro do arquivo utilizando as setas do teclado (e outras teclas).

Comparação entre more e less

Ação more less

Avança uma linha enter Enter, e, j, cursos para baixo

Volta uma linha - Y, k, cursos para cima

Avança uma tela Espaço, z, f Espaço, z, f

Volta uma tela b b

Arquivo anterior :p :p

Arquivo seguinte :n :n

Pesquisa / /

Sair q q

Page 30: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

cp

Copia um ou mais arquivos para o local especificado. Algumas observações importantes devem ser feitas a respeito de cópias de arquivos:

Copiar um arquivo para outro diretório onde já existe outro arquivo com o mesmo nome: o arquivo será sobrescrito.

Copiar um arquivo para outro diretório que, por sua vez, possui um diretório com mesmo nome do arquivo a ser copiado: não é permitido.

Copiar um arquivo, especificando como arquivo_destino outro nome: o arquivo será renomeado durante a cópia.

Page 31: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

Principais opções

$ cp doc.txt documento.txt

Cópia do arquivo doc.txt como nome de documento.txt

$ cp doc.txt /tmp

Cópia do arquivo doc.txt para /tmp mantendo o nome original

cp [opções] arquivo1 [arquivo2 diretório …] diretório

-a Preserva o máximo possível a estrutura e atributos dos arquivos originais na cópia (mas não preserva a estrutura de diretório).

-b Faz backup de arquivos que serão sobrescritos

-f Força a cópia, sobrescrevendo arquivos no destino sem confirmação

-d Copia ligações simbólicas com ligações simbólicas no lugar de copiar os arquivos para as quais apontam

-i Modo interativo, solicita confirmação antes de sobrescrever aquivos

-p Preserva o proprietário, grupo, permissões, tempo da última modificação e o tempo do último acesso originais

-R Copia diretórios recursivamente, ou seja, toda a árvore abaixo do diretório de origem. O destino sempre será um diretório.

Page 32: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

mv

Move ou renomeia arquivos e diretórios dentro de um sistema Linux.

Principais opções:

Exemplos:

$ mv /tmp/teste.txt /home/aluno/teste2.txt

Move e renomeia o arquivo

$ mv -f minha-lista.txt sua-lista.txt

Renomeia o arquivo

mv [opções] arquivo1 [arquivo2 diretório …] destino

-f Sobrescreve arquivos no destino

-i Solicita confirmação antes de sobrescrever um arquivo

Page 33: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

rm

Apaga um arquivo ou diretório (remove). É possível remover vários arquivos simultaneamente, bastando para tal colocar o nome dos arquivos a remover, logo depois do comando.

Principais opções:

$ rm documento.txt doc.txt documento2.txt

Remove, do diretório atual os arquivos informados

$ rm -ri /tmp

Remove o diretório /tmp e todo os arquivos e pastas dentro, porem perguntando se deseja excluir arquivo por arquivo.

more [opções] arquivo

-f Não solicita confirmação.

i+num Modo interativo: solicita confirmação para cada remoção.

-r ou -R Modo recursivo, apaga toda uma árvore de diretórios. Cuidado ao usar este parâmetro, principalmente em conjunto com o -f.

Page 34: Unidade 3.6 Introdução ao Shell

Comandos de Manipulação de Arquivos, Diretórios e Links

ln

Cria um link para outro arquivo. Por padrão, é um link direto (hard link). É importante relembrar que não é possível criar hard links para diretórios, e também é impossível criar links diretos entre sistemas de arquivos.

Principais opções:

Exemplos:

$ ln -s ~/arquivo.txt /tmp/arquivoX

Cria o link simbólico arquivoX em /tmp, apontando para o arquivo ~/arquivo.txt

ln [opções] origem [destino]

-f Força a criação do link, sobrescrevendo o outro arquivo (se for possível)

-s Cria um link simbólico

Page 35: Unidade 3.6 Introdução ao Shell

DicasO usuário pode, caso deseje, acessar o sistema como um novo usuário, utilizando um novo terminal. Ao acessar cada terminal virtual, será preciso digitar o login e a senha novamente, pois o terminal funcionará como um novo acesso.

No ambiente gráfico, ao pressionar as teclas Alt+Fn, o usuário não será levado ao terminal virtual – isso ocorre porque nesse ambiente a sequência de teclas pode ter outra função. Para acessar o console virtual, utiliza Ctrl+Alt+Fn, onde “n” pode variar de 1 até 6.

Cuidado ao usar certas opções de comandos e certifique-se do que vai fazer antes de proceder. Um exemplo: os parâmetros -Rf junto com o comando rm podem causar danos que podem ser irreparáveis a um arquivo de sistema, tornando-o inutilizável.