Guia Essencial de Comandos e Scripts Shell no Linux
Classificado em Computação
Escrito em  em 
português com um tamanho de 7,84 KB
Introdução ao Shell
O Shell é um interpretador de comandos. Cada comando digitado é lido, verificado, interpretado e enviado ao sistema operacional para ser de fato executado.
Funcionando como uma ponte, o Shell é a ligação entre o usuário e o Kernel. O Kernel é quem acessa os equipamentos (hardware) da máquina, como disco rígido, placa de vídeo e modem. Por exemplo, para o usuário ler um arquivo qualquer, toda esta hierarquia é seguida:
USUÁRIO --> SHELL --> KERNEL --> DISCO RÍGIDOExecução de Comandos
Para que um comando seja executado, ele deve estar disponível no PATH do sistema.
Scripts Shell
Um script é um arquivo que armazena vários comandos e pode ser executado sempre que necessário.
Shebang
Para que o sistema saiba qual interpretador deve ser usado ao executar um script, é comum adicionar a linha #!/bin/bash (conhecida como shebang) no início do arquivo.
Tornando um Script Executável
Para tornar um script executável, utilize o comando chmod +x nome_do_script.
chmod +x sistemaComandos Essenciais do Shell
Comando echo
O comando echo é utilizado para exibir mensagens na tela. Para usá-lo, basta colocar o texto entre aspas. Se nenhum texto for fornecido, uma linha em branco será exibida.
Variáveis e Operadores
- O conteúdo de uma variável é acessado prefixando seu nome com um cifrão (
$). - O comando 
testé útil para realizar diversos tipos de verificações em textos e arquivos. - O operador lógico 
&&(AND) executa o segundo comando apenas se o primeiro for bem-sucedido. O operador inverso é o||(OR), que executa o segundo comando se o primeiro falhar. 
Armazenando Saída de Comandos em Variáveis
Para armazenar a saída de um comando em uma variável, utilize a sintaxe $(comando). Veja um exemplo:
prompt$ HOJE=$(date)
prompt$ echo "Hoje é: $HOJE"
Hoje é: Sáb Abr 24 18:40:00 BRT 2004Apagando Variáveis
O comando unset é utilizado para apagar uma variável.
Variáveis de Ambiente Padrão
Para visualizar as variáveis de ambiente que o Shell define por padrão, utilize o comando env.
Argumentos de Comandos
Diferente de outras linguagens de programação, o Shell não utiliza parênteses para separar um comando de seus argumentos.
Comando cat
O comando cat exibe o conteúdo de um arquivo. Por exemplo, cat -n sistema mostra o script 'sistema' com as linhas numeradas. A opção -n instrui o comando a numerar as linhas, e 'sistema' é o nome do arquivo.
Tabela de Comandos Úteis
| Comando | Função | Opções Úteis | |
|---|---|---|---|
cat | Mostra arquivo | -n, -s | |
cut | Extrai campo | -d, -f, -c | |
date | Mostra data | -d, +'...' | |
find | Encontra arquivos | -name, -iname, -type f, -exec | |
grep | Encontra texto | -i, -v, -r, -qs, -w, -x | |
head | Mostra Início | -n, -c | |
printf | Mostra texto | nenhuma | |
rev | Inverte texto | nenhuma | |
sed | Edita texto | -n, s/isso/aquilo/, d | |
seq | Conta Números | -s, -f | |
sort | Ordena texto | -n, -f, -r, -k, -t, -o | |
tail | Mostra Final | -n, -c, -f | |
tr | Transforma texto | -d, -s, A-Z a-z | |
uniq | Remove duplicatas | -i, -d, -u | |
wc | Conta Letras | -c, -w, -l, -L | 
Obtendo Ajuda sobre Comandos
Para obter mais informações sobre um comando específico, utilize man comando ou comando --help.
Operadores de Redirecionamento e Pipe
Pipe (|)
O operador pipe (|) permite canalizar a saída de um comando diretamente para a entrada de outro, criando uma cadeia de comandos. Exemplo:
prompt$ cat /etc/passwd | grep root | cut -c1-10
root:x:0:0
operator:xRedirecionamento de Saída (>)
É possível redirecionar a saída de um comando para um arquivo em vez de exibi-la na tela, utilizando o operador de redirecionamento (>). Para salvar a saída do comando anterior no arquivo 'saida', por exemplo:
prompt$ cat /etc/passwd | grep root | cut -c1-10 > saida
prompt$ cat saida
root:x:0:0
operator:xComando test: Verificações Condicionais
O comando test é fundamental para realizar verificações em scripts Shell.
| Testes em Variáveis | Descrição | Testes em Arquivos | Descrição | 
|---|---|---|---|
-lt | Número é menor que (LessThan) | -d | É um diretório | 
-gt | Número é maior que (GreaterThan) | -f | É um arquivo normal | 
-le | Número é menor ou igual (LessEqual) | -r | O arquivo tem permissão de leitura | 
-ge | Número é maior ou igual (GreaterEqual) | -s | O tamanho do arquivo é maior que zero | 
-w | O arquivo tem permissão de escrita | ||
-ne | Número é diferente (NotEqual) | -nt | O arquivo é mais recente (NewerThan) | 
= | String é igual | -ot | O arquivo é mais antigo (OlderThan) | 
!= | String é diferente | -ef | O arquivo é o mesmo (EqualFile) | 
-n | String é não nula | -a | E lógico (AND) | 
-z | String é nula | -o | OU lógico (OR) | 
Expressões Aritméticas
A construção utilizada para indicar uma expressão aritmética no Shell é $((...)).
Estruturas de Controle: Condicionais e Laços
O Shell também possui estruturas para condicionais e laços (loops). As mais utilizadas são if, for e while.
Estrutura if
if COMANDO
then
    comandos
else
    comandos
fiEstrutura for
for VAR in LISTA
do
    comandos
doneEstrutura while
while COMANDO
do
    comandos
done