Guia do usuário do Shell para iniciante

Março 2017


SHELL BASH – GUIA DO USUÁRIO - Nível Iniciante



Introdução

O objetivo deste tutorial é ajudar os iniciantes da linha de comando a se sair honrosamente.

Apesar de não ser completo, este pequeno tutorial irá ajudá-lo a se familiarizar com o Shell, como software e não como uma linguagem de programação.
Vou tentar ser bem rápido (explicações claras e concisas) porém, como ele é meio comprido, resolvi dividí-lo em capítulos.

Não é preciso ler o tutorial do começa ao fim. Você pode ir diretamente ao capítulo que te interessa, em função das suas necessidades.

II. O que é um shell ?

Para ter a resposta exata, aconselho dar uma olhada neste site SHELL

O shell é um programa que se encontra no diretório /bin.

Existem vários shells

- o /bin/sh Bourne Shell
- o /bin/bash Bash - Bourne Again Shell
- o /bin/csh C shell
- o /bin/ksh Korn shell
- o /bin/tcsh Tcsh
- o /bin/zsh/ Z shell


O restante deste tutorial trata apenas do shell do Bash - Bourne Again Shell que é o shell padrão para as distribuições GNU/Linux.

O shell pode executar comandos, explorar a árvore do sistema, criar, editar e apagar arquivos, etc.

III. Como acessar a linha de comandos

Para acessar a linha de comandos, você pode utilizar um terminal (xterm, kterm, gterm) ou ainda konsole.

kterm - é um terminal emulador multilingue baseado no xterm.

As principais diferenças entreo kterm e o xterm são:
  • a possibilidade de processar o texto multilingue codificado no ISO2022, * mostrar o texto colorido (Ver man kterm).


Para isso, existem duas possibilidades:
  • utilizar o menu da área de trabalho (http://br.gnome.org/Gnome, Kde, etc.). Este é o método aconselhado.
  • utilizar o menu executar um aplicativo. Na janela que aparece, digitar o nome do terminal e validar. A janela “executar um aplicativo” também pode ser aberta com as teclas Alt+F2
  • Utilizar os consoles virtuais (existem 6).

IV. Os consoles virtuais

O console virtual (do tty1 ao tty6) é uma tela preta onde um prompt de comando aparece, em forma de login :

A partir da interface gráfica, é possível se conectar a um console virtual usando a combinação das teclas Ctrl+Alt+FN, onde N é um número de 1 a 6.

Exemplo: Acessar o console 3 a partir da interface gráfica

CTRL+ALT+F3

Uma vez no console virtual, a navegação entre diversos consoles virtuais é feita com a combinação das teclas ALT + FN, onde N é um número de 1 a 6.

V. Conexão no console virtual

No prompt login, digitar o login do usuário e validar pressionando a tecla Entrar, o prompt Password aparecerá. Digitar a senha do usuário e validar.
  • a senha não aparece na tela por motivos de segurança. O fato de não ver na tela o que você digitou, não deve preocupá-lo.
  • Se a senha for válida, um prompt de comando indicando que a conexão foi bem-sucedida, aparecerá:

Exemplo:


VI. O prompt de comando do shell depois da conexão

O prompt de comando do shell, em geral, aparece assim:

nome@máquina ~ $
  • nome – representa o login do usuário conectado
  • máquina- representa o nome da máquina
  • ~ é um atalho que significa o diretório pessoal/home/usuário
  • $ significa que você está conectado como usuário


Se, em vez de $, aparecer o sinal #, então é porque você está conectado como superusuário (root).
Lembre-se que os sistemas Gnu/Linux utilizam por convenção # para o root e $ para outro usuário.
Este comportamento pode ser trocado alterando a variável de ambiente PS1, mas isto é altamente desaconselhado!

VII. Retornar ao modo gráfico a partir de um console virtual

Para retornar ao modo gráfico a partir de um console virtual, utilizar a combinação das teclas ALT+F7

VIII. O ambiente shell

Após a conexão, o usuário é registrado no seu ambiente. Isto significa que o shell põe à sua disposição, variáveis de ambiente, ou seja, um recipiente no qual são armazenados dados de memória.
Para exibir o conteúdo de uma variável de ambiente, o comando echo $NOME_VARIÁVEL pode ser utilizado.

O denominação das variáveis de ambiente é, por convenção, em letras maiúsculas, então, é preciso respeitar essa regra.

IX. Variáveis de ambiente a serem conhecidas

HOME, USER, GROUPS, UID, PWD, SHELL, PATH, HOSTNAME
  • HOME contém o diretório do usuário
  • USER contém o login do usuário
  • PWD contém o diretório atual
  • SHELL contém o nome do shell de conexão
  • PATH contém a lista dos diretórios onde se encontram os comandos que o usuário pode executar
  • HOSTNAME contém o nome da máquina
  • HISTSIZE contém o tamanho máximo dos comandos executados dentro do arquivo histórico
  • PS1 contém as configurações de exibição do prompt de comando

Exemplo de exibição:



O conjunto de comandos possibilita a exibição das variáveis e seus conteúdos.

X. Arquivos de configuração

Durante a conexão, no console virtual ou na abertura de um terminal em modo gráfico, o shell utiliza informações que se encontram em determinados arquivos (.bashrc, .bash_profile, etc)


O comportamento do shell pode ser alterado editando estes arquivos.
O arquivo .bashrc é utilizado no capítulo sobre os pseudônimos (alias), por exemplo.

Quanto à configuração do seu shell você deverá esperar um pouco, não será para agora. Você aprenderá a fazê-lo com o tempo, logo, não seja tão impaciente.

XI. Porque utilizar a linha de comando?

Muitas soluções são apresentadas na linha de comando, não que o GNU/Linux não tenha interface gráfica mas, para algumas tarefas, a utilização da linha de comando é bem mais prática e melhor do que o nosso querido mouse.

XII. Noções do comando

Um comando é um arquivo executável. A execução de um comando pode mudar, conforme o caso.
Os comandos utilizados neste capítulo são dados como exemplo, logo, não perca tempo tentando entendê-los se você tiver alguma dificuldade com alguns deles. Os comandos básicos serão detalhados posteriormente.

Exemplo: o comando ls

O comando ls exibe o conteúdo de um diretório. Veja man ls para mais detalhes.
  • sem argumentos ou opção
  • sem argumentos com uma ou várias opções
  • com argumentos
  • com argumentos e com uma ou várias opções


XIII. Onde se encontram os comandos?

Os comandos que podem ser executados a partir do seu terminal se acham em alguns diretórios do seu sistema.

A variável PATH (em português: "caminho") contém uma lista de diretórios que contêm os comando s acessíveis. Para ter acesso a todos os comandos é precisos ser superusuário.

Para encontrar a localização de um comando, utilize o "whereis" (em português "onde está") :

ou ainda o "which" (tradução "qual•o qual•a qual•os quais•as quais•que•quem•este que•este quem") :

Diferença entre whereis e which
  • whereis - busca arquivos executáveis, fontes e páginas do manual de um comando
  • which - busca na variável PATH os arquivos executáveis

Exemplo: busca da existência do comando iptables com o which

1. O usuário yogi quer saber se o comando iptables existe no sistema ; o resultado é NÃO


2. Verificamos como superusuário

Na verdade, o comando iptables existe no sistema, dentro do /sbin. O diretório /sbin não estando no PATH do usuário yogi, é normal que o which não retorne nenhum resultado.
Conclusão, whereis é mais reconfortante.

XIV. Documentação (páginas "man")

Ter acesso à documentação em linha de comando
man comando
man N comando
N – número da página man (você o verá na parte superior, à esquerda)
De um modo geral, na parte SEE ALSO de uma página do "man", você encontrará a lista dos comandos, que é bom consultar, com uma relação direta com o comando, o qual você deve ler o manual.

Exemplos:

1. Execução do comando man crontab


2. O prompt de comando vai desaparecer e a página man aparecerá

Veja a parte SEE ALSO e você verá as páginas que devem ser consultadas. Isso significa que você pode digitar:
man 5 crontab
man 8 cron

3. A tecla "s" para sair da página man e voltar ao prompt de comando

Para obter a descrição sucinta de um comando, vamos utilizar a opção "-f"
man -f comando
whatis comando

Para ver as rubricas que comportam uma chave em sua apresentação, a opção "-k" :
man -k comando

XV. A estrutura de uma página do man


COMMAND(1) Guia do usuário Linux COMMAND(1)

NAME
comando - resumo da ação do comando

SYNOPSYS
<sintaxe completa do comando >

DESCRIPTION
Explicações sobre a execução do comando

OPTIONS
Lista das opções disponíveis e o que fazem

FILES
Os arquivos utilizados pelo comando

SEE ALSO
comando _prima(1), comando _irmão(5), etc.

BUGS
Os bugs existentes no comando

AUTHOR
O nome do autor

XVI. Algumas regras para entender SYNOPSYS e/ou OPTIONS


- Qualquer texto isolado, sem [] (colchete), {} (chave), <> (colchete oblíquo), deve ser digitado como aparece
- o texto entre colchetes [] é facultativo
- o texto entre chaves {} contém as escolhas a serem feitas.
As escolhas são separadas por | (Tube Unix) ou por uma vírgula ,
comando -{a|b} quer dizer comando -a ou comando -b e não comando -ab
- o texto entre colchetes oblíquos <> deve ser substituído pelo texto apropriado
- Os parênteses (...), utilizados para as configurações tais como os nomes de arquivos
- os colchetes [] e os colchetes oblíquos <> podem ser combinados
[<nome_arquivo>] - facultativo, mas se você utilizá-los é preciso escrever o nome do arquivo
- os colchetes [] e as chaves {} podem ser combinados
[--opção={a|b|c}]

XVII. Comandos básicos


cat - Lit (concatena) um ou vários arquivo(s), exibição sobre a saída padrão
cd - ChangeDirectory, troca de diretório
chmod - CHangeMODe – troca o modo de acesso (permissões de acesso) de um ou vários arquivo(s)
chown - CHangeOWNer - troca o proprietário de um ou vários arquivo(s)
cp - copiar arquivos
crontab - planejamento de tarefas
cut - Remove partes específicas do texto em cada linha de um arquivo
date -Exibe a data com o formado pedido
dd - DevicetoDevice - Recopia, byte por byte, tudo ou parte do conteúdo de um periférico (normalmente de armazenamento) para outro periférico.
df - exibição da quantidade de espaço livre disponível em todos os sistemas de arquivos
du - DiksUsage – utilização do disco
echo - Exibe o texto na saída padrão (na tela)
exit - para a execução do shell
find - busca de arquivos
fsck - FileSystemChecK - verificação global do sistema de arquivos
grep - busca em um ou vários arquivos as linhas que correspondem a um motivo
groupadd- Adicionar um grupo de usuários
gunzip - descompactação de arquivos
gzip - compactação de arquivos
head - exibe as primeiras linhas (10, por padrão) de um arquivo
help - exibe uma ajuda sobre os comandos internos do bash
kill - enviar um sinal a um processo
less - programa de exibição na tela
ln - criação de links
ls - lista o conteúdo dos diretórios
man - exibe as páginas do manual
mkdir - MaKeDIRectory – cria um diretório
mkfs - MaKeFileSystem – criação de um sistema de arquivos
more - programa de exibição na tela
mount - montar um sistema de arquivos
mv - mover, renomear um arquivo
ps - exibe os processos em andamento
pwd - Print name of current/working directory - exibe o caminho completo do diretório atual
rm - remoção de arquivos
rmdir -Remove empty directories - remoção de uma pasta vazia
tail - exibe as 10 últimas linhas de um arquivo
tar - criação de arquivos
su - Substitute User identity ou Switch User – toma a identidade de um usuário
uname - exibe informações sobre o sistema.
useradd – adicionar um usuário
whereis – localizar um comando

XVIII. Execução de um comando

Há várias maneiras de executar um comando .
  • utilizando seu nome
  • utilizando o caminho absoluto
  • utilizando o caminho relativo
  • utilizando pseudônimos (prático para os comandos compridos e empregados com freqüência )


Um comando pode ser executado em segundo plano utilizando o sinal tironiano (&) depois do nome do comando .
A execução de um comando em segundo plano dá o controle de volta ao Shell, depois da execução.

Exemplo: execução do firefox a partir da linha de comando


XIX. Trocar de identidade (trocar de usuário)

A partir do seu shell você pode tomar a identidade de outro usuário presente em seu sistema, incluindo o superusuário “root”,

Para isso, você tem à sua disposição o comando su ou su -
Veja utilizar o comando su para mais detalhes.

XX. A raíz

Nos sistemas da família Unix, a raíz representa o topo da árvore dos diretórios.
Ela é representada pelo caractere / (barra) e significa "root" (raiz em português)

Todos os diretórios do seu sistema estão ligados à raiz de maneira direta ou indireta.

XXI. Os diretórios "." e ".."

  • . indica o diretório atual
  • .. indica o diretório pai


XXII. Onde estou? (posição na árvore)

Une chose très importante à savoir quand on est connecté dans un shell, c'est de savoir où on se trouve dans l'arborescence
Ao se conectar no Shell, é muito importante saber onde você está, na árvore.

O comando pwd (PrintWorkingDirectory) exibe sua localização na árvore.

XXIII. O caminho absoluto

O caminho absoluto representa a árvore completa de arquivos, partindo da raiz

Exemplo:

O arquivob.txt se encontra no /home/user/doc/text
Você se encontra no /home/user/ascii

O caminho absoluto para b.txt é /home/user/doc/text/b.txt

Seja qual for a sua localização na árvore, a utilização do caminho absoluto é o meio mais seguro para acessar o arquivo desejado.

XXIV. O caminho relativo

O caminho relativo para acessar um arquivo é a árvore trazida para a sua localização no shell.
Usamos a notação . e/ou ..

. nos ajuda a descer na árvore do diretório atual
.. nos ajuda a subir na árvore com o objetivo de atingir outros diretórios

Exemplo: o diretório atual .

O arquivob.txt se encontra no /home/user/doc/text
Você se encontra no /home/user

O caminho relativo para b.txt é ./doc/text/b.txt

Exemplo: o diretório pai ..

O arquivob.txt se encontra no /home/user/doc/text
Você se encontra no /home/user/ascii

O caminho relativo para b.txt é ../doc/text/b.txt

O diretório ascii se encontra no /home/yogi log, escrevendo.. eu vou utilizar o diretório pai /home/yogi como ponto de partida e, a seguir, eu vou no doc/text (observe que eu não disse /doc/text – que conectaria o documento da raiz/ )

XXV. Como se mover na árvore

Para este movimento na árvore utilizar o comando cd

cd /chemin/vers/diretório

Com o pwd você pode verificar sua nova localização na raiz

XXVI. Histórico

Os comandos executados são salvos num histórico.
A variável HISTSIZE contém o número máximo de comandos a ser salvo.
Você pode acessar o histórico com o comando history

history [n] | less
  • n - a opção n permite exibir os n dos últimos comandos (facultativo)
  • less - com o comando "less" você pode navegar no histórico
    • você pode navegar no histórico com as flechas pra cima e pra
    • !n - você pode executar o comando correspondente ao número "n" na lista SM precisar redigitá-lo

XXVII. O complemento dos comandos

Digitar um comando num terminal nem sempre é tarefa fácil.

Apesar disso, não se preocupe. Com o shell você poderá complementar os seus comandos.

Exemplo: comando tail utilizando o caminho absoluto

- isto supõe que você deva digitar /usr/bin/tail

Com a complementação podemos economizar na escrita do comando e, ao mesmo tempo, proteger a sintaxe.
A complementação é obtida utilizando a tecla TAB
Para isso, vamos começar com o primeiro caractere...
  • Eu digito /u e aperto a tecla TAB
    • O shell vai completar e vai escrever/usr/
    • Aí, eu adiciono um b, logo, estou com o /usr/b
    • Pressiono, de novo, a tecla TAB e terei /usr/bin/
    • Aí, eu adiciono ta, assim, terei /usr/bin/ta
    • Pressiono duas vezes a tecla TAB
      • O shell no meu sistema encontra 4 correspondências
        • tac tack tail tasksel
        • Continuo e adiciono um i
        • assim, terei /usr/bin/tai
        • Pressiono, de novo, a tecla TAB
        • e obtenho /usr/bin/tail

ls /u + TAB + b + TAB + ta + TAB + TAB + i + TAB



É verdade que explicando, temos a impressão de que é longo.

Mas não se preocupe, é bem rápido, mesmo se você teclar com um dedo só!!!

XXVIII. Edição de arquivos (vi,vim)

O editor vi.
Muito útil especialmente quando você tem um problema com o modo gráfico.

Etape I – MUITO RECOMENDADO

Backup do arquivo original: usamos o comando "cp” (cópia), seguido do próprio arquivo original, seguido do arquivo de destino (inexistente aqui), decidimos acrescentar ".original "no final do nome do arquivo para distinguir o backup do seu arquivo:

Etapa II - Abertura do arquivo



Etape III - Edição do arquivo

- paaperte a tecla i para passar para o modo inserção
No canto esquerdo, embaixo, você verá –INSERÇÃO--

- utilize as setas (direita, esquerda, pra cima, pra baixo) ou Página Seguinte. e Página anterior. Para navegar no arquivo

- Os caracteres são inseridos acima do cursor com uma viragem à direita do cursor

- a tecla supressão remove o caractere que se acha acima do cursor

Etape IV - Fim da edição do arquivo

Pressione a tecla ESC assim que terminar a edição.
--INSERÇÃO—vai desaparecer

Etapa V – Salvar as alterações e sair do vi

- apertar a tecla: (você vai vê-la aparecer no canto inferior esquerdo)
- digite wq (WriteQuit)
- aperte a tecla "Entrar"

Voltar para o terminal

Pronto, você viu tudo sobre a edição em linha de comando com o vi ou vim

XXIX. Os pseudônimos (aliás)

Pseudônimos são bem práticos para os comandos compridos utilizados regularmente. Ele evita a redigitação.
O uso excessivo de pseudônimos pode fazer você esquecer os comandos e suas opções.
Cabe a você administrar o uso de pseudônimos.
Você deve digitá-los no arquivo.bashrc, da seguinte maneira
(veja o capítulo XXVIII Edição de arquivos (vi, vim))

Pseudônimo nome='comando '

Depois de editar o arquivo/home/user/.bashrc, digitar
source /home/user/.bashrc

Para validar os pseudônimos imediatamente.

O comando pseudônimo exibe os pseudônimos existentes

XXX. Redirecionamento e pipelines

Primeiro, vamos dar uma explicaçãozinha sobre os descritores das “entradas – saídas” (input e output):
  • tudo que você escrever no shell se chama STDIN (STandarDINput)
  • tudo que você ver na tela pode ser:
    • STDOUT (STandarDOUTput)
    • STDERR (STandarDERRor)


Ests descritores são numerados da seguinte maneira :

0: entrada padrão (STDIN) <---------------- teclado

Processo 1: saída padrão (STDOUT) ---------------> teclado

2: saída errors (STDERR) ----------------> teclado

Redirecionamento

O que significa um redirecionamento?
É poder dirigir o resultado de um comando utilizando outros destinos além dos descritores padrão.
Para redirecionar utilizamos:

comando > arquivo - redirecionamento em modo de gravação para o arquivo
se o arquivo não existe, ele é criado
se ele já existe, seu conteúdo será substituído pelo novo arquivo
comando >> arquivo- redirecionamento em modo acréscimo para o arquivo
se o arquivo não existe, ele é criado
o resultado será adicionado ao final do arquivo

comando < arquivo - o comando lê a partir do arquivo

Exemplos de redirecionamentos:

- enviar o conteúdo do arquivo1 para o arquivo2
se o arquivo2 existe, seu conteúdo original será excluído, se o arquivo2 não existe, ele será criado

- enviar o conteúdo do arquivo1 para o arquivo2 – modo acréscimo
se o arquivo2 existe, o conteúdo do arquivo1 será adicionado ao final do arquivo2, se o arquivo2 não existe, ele será criado

- busca na raiz do arquivo chamado arquivo.txt, os erros, em vez de serem enviados para STDERR (na tela), serão enviados para /dev/null (espécie de lixeira sem fim)

- busca na raiz do arquivo chamado arquivo.txt, os erros, em vez de serem enviados para STDERR ( na tela ) serão enviados para os arquivos erro.txt

Pipelines


comando 1 | comando 2 - o resultado do comando 1 é usado pelo comando 2
comando 1 & comando 2 - os comandos são executados simultâneamente, o comando 1 é executado em segundo plano
comando 1 && comando 2 – se o comando 1 funcionar, o comando 2 será executado
comando 1 || comando 2 - o comando 2 só será executado se o comando 1 falhar
comando 1;comando 2 - os comand s serão executados em ordem

Exemplo de pipelines

- conduto tubular | (pipe)
]
Em primeiro lugar, executar perl -ne 'print unless /^s*$/' guideshell a fim de exibir o arquivo na tela, as linhas vazias serão eliminadas.
Em vez de exibir na tela, eu utilizo| para passar o resultado ao comando wc que contará o número de linhas deste arquivo

- Paralelismo &

Os 2 comandos serão executadost simultâneamente.

- Dependência &&

Observe que no 1° caso os 2 comandos serão executados.
Em compensação, no 2° caso eu cometi um erro de sintaxe propositalmente no 1° comando .
O shell nem olha para o 2°comando e ele para dizendo que ech é um comando desconhecido.

- Alternativa ||

No 1° caso você poderá observar que apenas o 1° comando será executado.
No 2° caso o shell exibe um erro no 1° comando mas executa o 2° assim mesmo.

- Seqüenciamento;

echo a é executado
espero 1 segundo
echo b é executado
espero 2 segundos
echo c é executado

XXXI. Os Wildcards do Shell

Para facilitar a entrada dos comandos, o shell põe à sua disposição dos wildcards, também chamados de caracteres genéricos ou jokers.

  • - corresponde a qualquer caractere e número de caracteres? - corresponde à apenas um caractere[...] - corresponde a um caractere que se encontra entre os colchetes

Com os colchetes, também podemos utilizar intervalos.

[0-9] - qualquer caractere entre 0 e 9
[a-zA-Z] – qualquer letra do intervalo (minúscula e maiúscula)

XXXII. Dicas e truques


cd : voltar ao diretório pessoal
cd - : voltar ao diretório anterior (só se você executar um CD)


Ctrl+l : apagar a tela
Ctrl+c : parada de um comando
Ctrl+z : suspender (pausa) um comando
CTRL+t : correção de um erro de digitação invertendo 2 letras
Ctrl+a : ir para o começo da linha
Ctrl+e : ir para o fim da linha
Ctrl+s : interrupção da saída do terminal (ocultar a entrada)
Ctrl+q : cancelar a interrupção da saída (exibir a entrada)
Ctrl+u : apaga tudo à esquerda do cursor
Ctrl+w : apaga a palavra à esquerda do cursor
Ctrl+k : apaga a palavra à direita do cursor
Ctrl+y : colar a entrada anterior
Ctrl+d : apaga o caractere atual, se a linha estiver vazia de conexão
Alt+b : avançar, palavra por palavra, na linha de comando
Alt+f : recuar, palavra por palavra, na linha de comando
Alt+d : apaga a palavra seguinte
Alt+t : troca a palavra atual pela palavra anterior
Alt+c : capitaliza a letra atual, enquanto o resto da palavra continua em minúsculos, e pula para a palavra seguinte
Alt+l : capitaliza a partir da letra atual até o fim da palavra, e pula para a palavra seguinte
Alt+u : põe em minúscula a partir da letra atual até o fim da palavra, e pula para a palavra seguinte
Alt+Backspace : apaga a palavra anterior (equivalente Ctrl+w)

XXXIII. Midnight Commander (MC)

Midnight Commander – gerenciador de arquivos em modo texto e uma captura de tela

Com este utilitário você poderá navegar, criar, editar, remover arquivos,etc.
Com o MC você poderá alterar os direitosits, trocar de proprietário, fazer buscas, se conectar a um servidor ftp, etc...
MC pode ser utilizado como explorador

XXXIV. Erro: command not found

Leia este tutorial (Capítulo IV.3) A variável de ambiente PATH
Outra razão deste erro: você não respeitou as maiúsculas e as minúsculas

Exemplo: Ls em vez de ls


XXXV. Erro: Nenhum arquivo ou diretório deste tipo

Erro exibido pelo shell quando você tenta executar um comando em um arquivo que não existe no caminho especificado.

Soluções
- Localize o arquivo com o comando find para saber se ele existe no disco afim e, se for o caso, conhecer o caminho real.

XXXVI. Erro : Permissão não concedida

É um problema de direito de acesso.
Leia este tutorial sobre os direitos de acesso

XXXVII. Conselhos de redação

O shell é superexigente no que se refere à redação de comandos.

Os caracteres possuem sentido especial para o shell devem ser excluídos e obter o caractere literal.

Caracteres que têm um sentido especial para o shell:
  • o espaço
  • o ponto e vírgula;
  • a barra oblíqua /
  • a barra invertida
  • o caractere | (barra)
  • o sinal &
  • o ponto .
  • aspas ( ' ) e ( " )


Em geral, é preciso prestar atenção aos caracteres não-alfanuméricos.

1. sensibilidade em relação às letras maiúsculas e minúsculas

Se o comando se chama ls então saiba que Ls não vai funcionar.
Idem quanto ao nome dos arquivos e/ou diretórios.

2. O espaço

Tomemos o exemplo de um arquivo chamado: meu arquivo.txt
Se você digitar ls-l meu arquivo.txt para ver os atributos deste arquivo então, cuidado, porque você não vai obter o resultado desejado.
Porque?

Porque o Shell vai ler: Exibir os atributos dos arquivos "meu" e "arquivo.txt"
Para obrigar o Shell à exibir o que quisermos, vamos utilizar o que ele puser à nossa disposição

ls -l meu arquivo.txt - sintaxe ok (com a barra invertida você pode ler o espaço como um caractere e não como um separador de argumentos do comando )
ls -l 'meu arquivo.txt' - sintaxe ok (a aspa simples trata cada caractere de maneira literal)

PERGUNTA: como posso ler uma aspa simples de maneira literal entre 2 aspas (‘)?
O espaço também tem a responsabilidade de separar os argumentos em linha de comando.

Um espaço simples usado em um lugar errado pode ser fatal para todo o sistema

Exemplo : exclusão da raiz por causa de um espaço simples

Cenário :
O Superuser quer remover uma determinada pasta. Para isso, ele vai utilizar o comando rm com as opções f (força) e R (recursivo).
A pasta a ser eliminada se chama a_eliminar e se encontra em /home/yogi/a_eliminar

a. comando correto

b. comando incorreto (erro de digitação) => sistema removido


Explicação :

Observe que, no 2° caso, eu acidentalmente digitei um espaço entre / e home.
O que acontecerá?
O shell vai acreditar que o comando rm deve eliminar, em primeiro lugar, a raiz / e depois home/yogi/a_eliminar.
Devo dizer-lhe que você acabou de apagar todos os dados do seu sistema.
Que "home/yogi/a_eliminar" não existe, mas o que importa se o seu sistema não existe mais.
A melhor coisa para evitar tudo isso, é UTILIZAR A COMPLEMENTAÇÃO dos comandos.

Se você teclar / e em seguida, a tecla Tab 2 vezes, várias opções aparecerão na tela. Normalmente são os diretórios da raiz: boot, Bin... home..., var.

Basta adicionar uma h para home e, novamente, TAB 2 vezes e assim por diante.
LEIA ESTE AVISO COM ATENÇÃO PARA NÃO SE ARREPENDER DEPOIS!!!

Outro exemplo com o espaço

Para reconhecer o espaço como um caractere e não como um separador de configurações, é preciso protegê-lo (colocar uma barra invertida antes)
Criar um arquivo vazio chamado "aa bb"


Observe que o resultado não é aquele que esperávamos.

Queríamos apenas um arquivo aa bb e não um arquivo aa e um arquivo bb
Por que obtivemos isso?
Por que o shell, ao digitarmos
touch aa bb 
,
Entendeu que queríamos criar um arquivo aa e um arquivo bb

Vamos corrigir isso :

Agora você vai me dizer : Mas eu não criei aa bb e sim aa bb !!!
Na verdade, você criou aa bb
O caractere permite o reconhecimento do espaço como caractere literal.
Aliás, o comando ls -l mostrará a existência do arquivo aa bb

Em vez da barra invertida você poderá utilizar as aspas simples touch 'aa bb'

O que podemos aprender com tudo isso?
Toda vez que você quiser usar caracteres não-alfanuméricos, como $, espaço, , etc. como um caractere literal, é preciso colocar as barras invertidas ou colocá-los entre aspas simples.

3. Os comandos que ocupam mais de uma linha

Se o comando for muito comprido você poderá pular a linha utilizando o caractere

XXXVIII. Executar um script

shell executar un script

Veja também

Publicado por pintuda.
Este documento, intitulado 'Guia do usuário do Shell para iniciante', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.