SHELL BASH - Guia de utilização - Nível debutante



Introdução

Convite aos membros Kioskea

Eu convido os membros contribuintes Kioskea, a fazer correções necessárias bem como modificar ou integrar coisas úteis por um debutante em linha de comando (evitando coisa complicadas este não é o objetivo). 
Eu convido também os membros não contribuintes do ccm , a me relatar eventuais erros e suas sugestões através do fórum Mensagens privadas. 
Obrigada 


O objetivo deste tutorial é o de permitir a um debutante da linha de comando de ter sucesso nesta tarefa. 
Longe de ser completo, este pequeno tutorial permitirá a você conhecer o Shell como software e não como uma linguagem de programação. 

Eu vou tentar ser o mais breve possível nos níveis de cada capítulo (explicações concisas e claras), porém este tutorial risca de ser longo. E por isso a idéia de vários capítulos. 
Não é necessário percorrer o tutorial do início ao fim. Você pode acessar diretamente o capítulo que lhe interessar em função de sua necessidade. 

II. O que é a shell ?

Para ter uma explicação exata eu recomendo visitar este site SHELL


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

Distinguem-se diversos Shells <códigos> 
- le /bin/sh shell Bourne 
- le /bin/bash Bourne Again SHell 
- le /bin/csh C shell 
- le /bin/ksh Korn shell 
- le /bin/tcsh C shell atualizado em espanhol 
- le /bin/zsh/ Z shell em espanhol 
</code> 

A continuidade deste tutorial trata unicamente do shell bash que é a Shell padrão para as distribuições GNU-LINUX

Shell permite executar comandos, explorar a arborescência do sistema, criar, editar e suprimir arquivos, etc. 

III. Como acessar a linha de comando

Para acessar a linha de comando, é possível utilizar um http://pt.wikipedia.org/wiki/Terminal_(inform%C3%A1tica) (xterm, kterm, gterm) ou então Console

kterm - é um terminal emulador multi-línguas baseado no xterm. 
As principais diferenças entre kterm e xterm são:
  • A possibilidade de tratar o texto multilínguas codificado em ISO2022 em inglês, * mostrar o texto colorido (Verr man kterm).


Para fazê-lo, duas possibilidades são oferecidas:
  • utilizar o menu da área de trabalho (GnomeKde, etc.). Trata-se do método aconselhado.
  • utilizar o menu lançar uma aplicação. Na janela aberta, escreva o nome do terminal e validar. A janela lançar uma aplicação pode ser Alt+F2
  • Utilizar os consoles virtuais (tem seis).

IV. Os consoles virtuais

O console virtual (tty1 à tty6) é um ecrã negro onde uma chamada de comando aparece da forma login : 

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

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

CTRL+ALT+F3 

Estando em um console virtual, a navegação entre as diferentes consoles virtuais se faz com a combinação das teclas Alt+FN, onde N é um número de 1 à 6 

V. Conexão a um console virtual

No campo login:, digitar a identificação (login) do usuário, depois validar pressionando Enter, o campo Password: se afixará. Digitar a senha do utilisador e validar.
  • A senha não está afixada no ecrã por razões de segurança. O fato de não ver na tela aquilo que você digita, não é motivo de inquietação.
  • Se a senha é válida, um campo de comando deve afixar-se, indicando que a conexão se completou


Exemplo :


VI. Na chamada do comando do shell após conexão

A chamada do comando (ou prompt) do shell tem a seguinte forma : nome@máquina ~ $
  • nom - representa o identificador 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 enquanto usuário

Se no lugar do $ o signo/caráter # aparece, então você está conectado como super usuário. 
(Root).em espanhol 
Tenha presente que os sistemas Gnu/Linux utilizam por convenção # para root e $ para um usuário outro que o root.em espanhol 
Este comportamento pode mudar trocando a variável do ambiente PS1, mas isto é desaconselhado! 

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

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

VIII. O ambiente Shell

Após conexão, o usuário está conectado em seu ambiente. Isto significa que Shell coloca à disposição variáveis de ambiente, quer dizer um recipiente memória no qual os dados são armazenados. Para afixar o conteúdo de uma variável de ambiente, o comando echo $NOM_VARIABLE pode ser utilizado. (eco $NOME_VARIÁVEL

O nome das variáveis de ambiente é por convenção em maiúsculas, é preciso respeitar a regra. 

IX.Variáveis de ambiente a conhecer

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 corrente
  • SHELL contém o nome do shell de conexão
  • PATH contém a lista dos diretórios onde se encontram as chamadas que o usuario pode executar
  • HOSTNAME contém o nome da máquina
  • HISTSIZE contém o tamanho máximo dos comandos executáveis contidos no arquivo do histórico
  • PS1 contém os parâmetros de afixagem da chamada do comando (o prompt)

Exemplo de afixagem :



O comando set permite afixar as variáveis e seu conteúdo. 

X. Arquivos de configuração

No momento da conexão, em um console virtual ou na abertura de um terminal em modo gráfico, shell utiliza informações que encontram-se em certos (.bashrc, .bash_profile, etc)


O comportamento do shell pode ser modificado editando estes arquivos.* 

O arquivo .bashrc é por exemplo utilizado no capítulo sobre os clones

Naquilo que concerne a configuração de seu shell, você deve esperar um pouco, não será para logo. Você vai aprender a fazê-lo com o tempo, então seja paciente. 

XI. Por que utilizar a linha de comando?

Muitas soluções são dadas em linha de comando, não é por que GNU/Linux não tem uma interface gráfica mas somente certas tarefas, que a utilização da linha de comando não se mostre bem mais prática e mais potente que o famoso mouse. 

XII. Noções do comando

Um comando é um arquivo executável. A execução de um comando pode ser diferente dependendo do caso. 
Os comandos utilizados são dados a título de exemplo ; então não obstine-se em compreendê-los, se você encontrar problemas com alguns deles. Os comandos de base serão detalhados ulteriormente. 

Exemplo: o comando ls

O comando ls afixa o conteúdo de um diretório. man ls para mais detalhes.
  • sem argumento e sem opção
  • sem argumento com uma ou diversas opções
  • com argumento
  • com argumento e com um ou diversas opções

XIII. Onde se encontram os comandos?

Os comandos, que você pode executar a partir de seu terminal, encontram-se em certos diretórios de seu sistema. 
A variável PATH (em português : « caminho ») contém uma lista de diretórios que contém os comandos acessíveis. Para ter acesso à todos os comandos é necessário geralmente ser Usuário root

Para encontrar o lugar de um comando utiliza-se "whereis" (em português "onde está"):

Ou então "which" (em português « o qual, a qual, o quê, quem, aquilo que qual ») :

A diferença entre whereis et which
  • whereis - busca de arquivos executáveis, as fontes e as páginas do manual de um comando.
  • which - busca em uma variável PATH os arquivos executáveis

Exemplo: busca da existência do comando com which

1. O usuário yogi pequisa se o comando iptables existe no sistema, o resultado para ele é NON


2. Verifica-se como root 


Na realidade o comando iptables existe no sistema no/sbin. O diretório/sbin não se ncontrando no PATH do usuário yogi, é bem normal que which não dê um resultado. 

Em resumo whereis é mais garantido. 

XIV. A documentação (As páginas « man »)

Ação em linha de comando man comando 
man N comando 

N - O número da página man (você o verá no alto a esquerda) 

Como regra geral na parte SEE ALSO de uma página «MAN», você obterá a lista dos comandos que é aconselhado consultar tendo relação direta com o comando sobre o qual você está lendo o manual. 

Exemplos:

1.execução do comando man crontab

2.o convite do comando ( o prompt) vai desaparecer e a página man será afixada 

Olhe a parte SEE ALSO e você verá as páginas que são aconselhadas para consultar. Isto quer dizer que pode-se escrever: 

man 5 crontab 
man 8 cron
 

3. a tecla « q » para sair da página man e voltar à chamada do comando (prompt) 


Para obter a descrição resumida de um comando, utiliza-se a opção "-f" 
man -f comando 
whatis comando
 

Para conhecer as rubricas que existem na apresentação da palavra chave, a "-k" : 

man -k comando 

XV. A estrutura de uma página de man

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

NAME  
     comando -  resumo da ação do comando  

SYNOPSYS  
    <sintaxe completa do comando>  

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

OPTIONS  
    Lista das opções e o quê elas fazem    

FILES  
    Os arquivos utilizados pelo comando   

SEE ALSO  
    Comando_prima(1), comamco-irmão(5), etc.  

BUGS  
    Os bugs existentes no comando  

AUTHOR  
    O nome do autor   

XVI. Algumas regras para compreender SYNOPSYS e/ou OPTIONS

- Todo texto isokado, sem  [] (colchete []), {} (chave{}), <> (setas"), digita-se tal e qual aparecem   
- O texto entre colchetes  [] é facultativo   
- O texto entre chaves  {} contém escolhas a fazer.  As escolhas são separadas por | (pipe) ou por uma vírgula ,  
  comando -{a|b}quer dizer comando -a ou comando -b mas não comando -ab
-O texto entre setas <> deve ser substituído pelo texto apropriado  
-os parênteses (...), utilizados por parâmetros como os nomes de arquivos   
- Os colchetes  [] e as setas  <> podem ser combinados  
  [<nome arquivo>] - facultativo mas se você utilizá-los deverá escrever o nome do arquivo   
- Os colchetes  [] e as chaves poderão ser combinados   
   [--opção={a|b|c}]  

XVII. Comandos de base

cat     - Lê (concatène) um ou diversos arquivos, afixagem na saída standard   
cd      - ChangeDdirectory, muda o diretório   
chmod   - CHangeMODe -muda o modo de acesso  (permissões de acesso) de um ou diversos arquivos   
chown   - CHangeOWNer - muda o proprietário de um ou de diversos arquivos    
cp      - copia arquivos  
crontab - planificação de tarefas   
cut      - Retira partes precisas do texto em cada linha do arquivo   
date    -Afixa a data de acordo com o formato solicitado   
dd      - DevicetoDevice  - Recopia  octeto por octeto  tudo ou parte de um periférico (habitualmente de armazenagem) em um outro periférico.    
df      - afixagem da quantidade do espaço livre em todos os sistemas de arquivos   
du      - DiksUsage - a utilização do disco   
echo    - Afixa o texto na saída standard (no ecrã)   
exit    - Para a execução do shell   
find    - procura de arquivos  
fsck    - FileSystemChecK - verificação da integralidade do sistema de arquivos   
grep    - busca em um ou diversos arquivos as linhas que correspondem à um motivo.   
groupadd- Integrar um grupo de usuários   
gunzip  - descompressão de arquivos   
gzip    - compressão de arquivos   
head    - afixa as primeiras linhas (por padrão 10) de um arquivo     
help    - afixa uma ajuda para comandos internos de bash  
kill    - envia um sinal à um processo    
less    - programa a afixagem do ecrã   
ln      - criação de links   
ls      - lista do conteúdo dos diretórios    
man     - afixa  as páginas do manual    
mkdir   - MaKeDIRdirectory - cria umdiretório   
mkfs    - MaKeFileSystem - criação de sistemas de arquivos   
more    - afixagem do ecrã   
mount   - monta um sistema de arquivos   
mv      - desloca, nomeia novamente um arquivo   
ps      - afixa os precessos com execução em andamento   
pwd     - Print name of current/wworking dDirectory - afixa o caminho completo do diretório corrente   
rm      - supressão de arquivos  
rmdir   -Remove empty directories - supressão de um dossier vazio   
tail    - afixa as 10 últimas linhas de um arquivo   
tar     - criação de arquivos   
su      - Ssustitute User identity ou Switch U     - substitui a identidade de um usuário    
uname   - Afixa as informações sobre o sistema.   
useradd - integra um usuário   
whereis - localiza um comando    

XVIII. Execução de um comando

Existe diversas maneiras de executar um comando.
  • utilzando simplesmente seu nome
  • utilizando o caminho absoluto
  • utilizando o caminho relativo
  • utilizando clones (prática para os comandos empregados seguidamente e que são longos)


Um comando pode ser executado no plano de fundo utilizando o signo « & » e depois o nome do comando. 
A execução de um comando em plano de fundo permite retornar ao shell depois da execução. 

Exemplo: lançamento do Firefox após uma linha de comando


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

De seu shell você tem a possibilidade de substituir a identidade de um outro usuario existente no seu sistema, inclusive o usuário "root". 

Para tanto você tem à disposição o comando su ou su - 

Olhe utilizar o comando su para mais detalhes 


XX. A raiz

Nos sistemas da família Unix, a raiz representa o top da arborescência dos diretórios. 
Ela é representada pelo signo/caráter / (slash) e significa "root" (raiz em português

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

XXI. Os diretório "." e ".."

  • . Indique o diretório corrente
  • .. indique o diretório parente



XXII. Onde estou ? (posição na arborescência)

Uma coisa muito importante a saber quando se está conectado no shell, é onde é que estamos na arborescência. O comando pwd (PrintWorkingDdirectory) afixa sua localização na arborescência. 

XXIII. O caminho absoluto

O caminho representa a arborescência completa de arquivos, partindo da raiz.

Exemplo :

O arquivo b.txt encontra-se no /home/user/doc/text 
Você se encontra no /home/user/ascii 

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



Qualquer que seja a localização na arborescência a utilização do caminho absoluto é o mais seguro para acessar o arquivo desejado. 

XXIV. O caminho relativo

O caminho relativo para acessar um arquivo é a arborescência dada à sua localização no shell.Utiliza-se as notações . e/ou .. 

. nos permite descer na arborescência do diretório corrente 
Nos permite num primeiro momento subir em arborescência.. nos permite num primeiro momento subir em arborescência com o objetivo de atingir outros diretórios. 

Exemplo : o diretório corrente.

O arquivo b.txt encontra-se no /home/user/doc/text 
Você encontra-se em /home/user 

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

Exemplo : o diretório parente ..

O arquivo b.txt encontra-se em /home/user/doc/text 
Você encontra-se em /home/user/ascii 

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


O diretório ascii encontra-se em /home/yogi então escrevendo .. eu vou utilizar o diretório parente /home/yogi como ponto de partida depois, em seguida, eu vou em doc/text (note que eu não disse /doc/text - que teria o doc da raiz / ) 

XXV.Como se deslocar na arborescência

Para se deslocar na arborescência utilizar o comando cd 

cd /caminho/para/diretório 

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

XXVI. Histórico

Os comandos executados estão registrados no histórico. A variável HISTSIZE contém o número máximo dos comandos a registrar. 
Você pode acessar o histórico com o comando history 

history [n] | less
  • n - a opção "n" permite afixar os "n" últimos comandos (facultativo)
  • less - o comando « less » permite navegar no histórico
    • As flechas alto e baixo lhe permitem navegar no histórico.
    • !n - permite executar o comando correspondente ao número "n" na lista sem ter de redigitá-la

XXVII. A finalização automática dos comandos

Digitar um comando em um terminal nem sempre é coisa fácil. 
Apesar disto, tranqüilize. O shell permite a finalização automática (digita-se por exemplo 1 ou 2 letras e o software completa todo o comando) dos comandos. 

Exemplo: comando tal utilizando o caminho absoluto

- Isto supõe que eu deva digitar /usr/bin/tail 

A finalização automática nos permite fazer economias com respeito a escrita do comando e ao mesmo tempo a segurança da sintaxe. 
A finalização automática se obtém utilizando a tecla TAB 
Para tanto vamos começar com o 1° caráter...
  • Eu digito J /u e pressiono sobre TAB
    • O shell vai completar e vai escrever /usr/
    • Neste momento eu integro um b então eu estou com/usr/b
    • Eu pressiono novamente sobre TAB e eu terei /usr/bin/
    • Neste momento eu integro ta,então eu terei /usr/bin/ta
    • Eu pressiono 2 vezes sobre TAB
      • O shell no meu sistema encontra 4 correspondentes
        • tac tack tail tasksel
        • Eu vou continuar e eu vou integrar um i
        • assim terei /usr/bin/tai
        • Eu pressiono novamente TAB
        • e eu obtenho /usr/bin/tail

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



É bem verdade que na explicação tem-se a impressão que é longo. 
Tranqüilize, é bastante rápido, mesmo se você digitar com somente um dedo:-) 

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

O editor vi 

Muito útil, sobretudo quando se tem um problema com o modo gráfico. 

Etapa I - CONSELHO

Backup do arquivo original, utiliza-se o comando "cp (copie) acompanhamento do arquivo fonte propriamente dito seguido do arquivo alvo (aqui inexistente)

Etapa II - Abertura do arquivo



Etapa III - Edição do arquivo

- pressione a tecla ipara passar ao modo inserção 
No canto esquerdo você verá --INSERÇÃO-- 

-utilize as flechas (direita, esquerda, alto, baixo) ou Pg Suiv. e Pg Prec. Para navegar pelo arquivo 

- A inserção dos sinais faz-se acima do cursor com o deslocamento à direita do cursor 

-A tecla supressão permite suprimir o sinal encontrando-se acima do cursor 

Etapa IV - Fim da edição do arquivo

Pressione a tecla Escap assim que você terminou a edição 
--INSERÇÃO-- vai desaparecer 

Etapa V -Gravação das modificações e sair de "vi"

- pressione a tecla : (você deverá vê-los aparecer no canto esquerdo abaixo a esquerda) 
- escrevawq (para WriteQuit) 
- pressione em "Enter


Voltar ao terminal 



Eis aqui referente à edição com "vi" ou "vim" 

XXIX. O alias

A utilização de alias é muito prático para os comandos longos que são utilizados regularmente. Isto evita de redigitá-los. A utilização excessiva de alias pode provocar o esquecimento dos comandos e de suas opções. 
Compete à você gerenciar a utilização dos alias. 
Os alias nós os escreveremos no arquivo .bashrc da seguinte maneira: 
(veja o capítulo XXVIII Edição de arquivos (vi, vim)

alias nome='comando' 
Assim que o arquivo /home/user/.bashrc estiver editado, digite 
fonte /home/user/.bashrc
 
Para integrar imediatamente os alias 

O comando aliasafixa os alias existentes 

XXX. Os redirecionamentos e os pipelines

Primeiro inicia-se com uma pequena explicação referente aos descriptadores das « entradas - saídas":
  • tudo aquilo que se escreve no shell chama-se STDIN (STandarDINput)
  • tudo aquilo que você vê no ecrã pode ser :
    • STDOUT (STandarDOUTput)
    • STDERR (STandarDERRor)


Estes descriptadores são numerados como abaixo descritos : 
                    0: entrada standard (STDIN) <---------------- teclado  

Processo           1: saída standard (STDOUT) ---------------> ecrã  

                    2: saída erros (STDERR) ----------------> ecrã  

Os redirecionamentos

O que é redirecionar? É a possibilidade de dirigir o resultado de um comando utilizando outras destinações do que aquelas dos descriptadores standards. 

Para realizar um redirecionamento utiliza-se: 

comando > arquivo - redirecionamento em modo de escrita para o arquivo 
O arquivo será criado se ele não existir 
Seu conteúdo será substituído pelo novo arquivo se o arquivo já existe 

comando >> arquivo - redirecionamento em modo adicionar para o arquivo 

O arquivo será criado se ele não existir 

O resultados será adicionado no final do arquivo 

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

Exemplos de redirecionamentos:

- enviar o conteúdo do arquivo 1 no arquivo 2 Se o arquivo 2 existe seu conteúdo de origem será suprimido, o arquivo 2 será criado se ele não existir 


-enviar o conteúdo do arquivo 1 para o arquivo 2 - modo adicionar 
Se o arquivo 2 existe, o conteúdo do arquivo 1 será adicionado no final do arquivo 2, se o arquivo 2 não existir, ele será criado 


-busque na raiz o arquivo chamado arquivo .txt, os erros ao invés de serem enviados para STDERR (o ecrã) serão enviados para /dev/null (espécie de lixeira sem fim


- procure na raiz o arquivo chamado.txt, os erros ao invés de serem enviados para STDERR (o ecrã) serão enviados ao arquivo erros.txt 

Os pipelines

comando1 | comando2  - o resultado do comando1 é utilizado pelo comando2   

comando1 & comando2  -os comandos são executados simultaneamente, comando1 executando-se no plano de fundo  
comando1 && comando2 -se o comando1 se completar o comando2 é executado    
comando1 || comando2 - o comando2 executa-se somente se o comando1 é abortado   
comando1; comando2    - os comandos são executados na ordem   

Exemplos de pipeline

- O tubo | (pipe)


Num primeiro momento eu executo perl -ne 'print unless /^\s*$/' guideshell com o objetivo de afixar, no ecrã, as linhas vazias eliminadas. 
Ao invés de afixar no ecrã eu utilizo | para passar o resultado ao comando wcque vai contar o número de linhas deste arquivo 

- O paralelismo & 


Os comandos se executam simultaneamente 

-A dependência && 


Você notará que no 1° caso os dois comandos executam-se. 
Mas no 2° caso eu faço voluntariamente um erro de sintaxe para 1° comando. 
O shell nem vê o 2° comando e ele pára nos dizendo que ech não é um comando conhecido. 

- A alternativa || 


No 1° caso você observará que somente o 1° comando executou-se. 
No 2° caso o shell afixa um erro para o 1° comando mas ele executa de qualquer forma o 2°. 

- O seqüenciamento: 


eco a executa-se 
Eu espero 1 segundo 
eco b executa-se 
Eu espero 2 segundos 
eco c executa-se 

XXXI. Os metacaráteres do shell

Para facilitar a apreensão dos comandos o shell disponibiliza meta caracteres, chamados igualmente caracteres genéricos ou coringas.
*     - corresponde a qualquer caráter e número de caráter   
?     - corresponde a um só caráter   
[...] - corresponde a um caráter entre  colchetes    

Com os colchetes pode-se também utilizar intervalos. 
[0-9]    - Todo o caráter compreendido entre 0 e 9   
[a-zA-Z] - toda a letra comprendida no intervalo (minúscula e maiúscula)  

XXXII. Truques e Dicas

cd   : voltar ao diretório pessoal   
cd - : voltar ao diretório precedente (unicamente se você executou um cd)   


Ctrl+l : apagar o ecrã   
Ctrl+c : interrupção de um comando   
Ctrl+z : suspender( pausa) um comando   
CTRL+t : correção de digitação invertendo duas letras   
Ctrl+a : ir ao início da linha   
Ctrl+e : ir ao final da linha   
Ctrl+s : interrupção da saída do terminal (mascarar a digitação)    
Ctrl+q : anular  a interrupção da saída (mascarar a digitação)  
Ctrl+u : apagar tudo à esquerda do cursor   
Ctrl+w : apagar a palavra à esquerda do cursor    
Ctrl+k : apagar a palavra à direita do cursor   
Ctrl+y : colar a digitação precedente   
Ctrl+d : apaga o atual caráter, se a linha estiver vazia  desconexão  

Alt+b : se desloca para frente, palavra por palavra na linha de comando.   
Alt+f : se desloca para trás palavra por palavra na linha de comando.   
Alt+d : apaga a palavra seguinte   
Alt+t : troca a palavra corrente com a palavra precedente   
Alt+c : coloca em maiúsculo a corrente letra , o resto todo da palavra em minúsculo, depois se desloca à palavra seguinte    
Alt+l : coloca em maiúscula a partir da corrente letra até o final da palavra, depois desloca-se à palavra seguinte   
Alt+u : coloca em minúscula a partir da corrente letra até o final da palavra depois se desloca à palavra seguinte   

Alt+Backspace : apaga a palavra precedente (equivalente Ctrl+w)

XXXIII. Midnight Commander (clone mc)

Midnight Commander - gerenciador em linha de comando em inglês e uma captura de ecrã 

Este utilitário permite navegar, criar, editar, suprimir, etc. 
Com mc você pode modificar os direitos, mudar de proprietário, fazer buscas, conectar-se à um servidor ftp, etc... 
mc pode ser utilizado como explorador 

XXXIV. Error: command not found

Leia este tutorial (Chapitre IV.3) variáveis de ambiente PATH 
Um outra origem deste erro : você não respeitou a forma dos caracteres 

Exemplo : Ls no lugar de ls


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

Erro afixado pelo shell quando você tenta executar um comando num arquivo que não existe no caminho precisado. 

Soluções 
-Encontre o arquivo com o comando find para saber se ele existe no disco afim, se é o caso, de conhecer seu verdadeiro caminho. 

XXXVI. Erro: Permissão recusada

É um problema de direitos de acesso. Leia este tutorial Direito de acesso 

XXXVII. Conselhos de redação

O shell é bastante exigente na redação dos comandos. 
Os caracteres que tem um sentido especial para o shell devem ser dissipados para obter o caráter literal. 
Caracteres que tem um sentido especial para o shell :
  • o espaço
  • o ponto e vírgula ;
  • o slash /
  • o anti-slash \
  • o caráter | (pipe)
  • o esperluate &
  • o ponto .
  • as apóstrofes simples ( ' ) e duplas ( " )


De maneira geral, deve-se observar atentivamente os caracteres não alfabeto numéricos. 

1. sensibilidade ao engano de digitação dos caracteres 

Se o comando chama-se lsesteja seguro que é exatamente igual se não Ls não funcionará 
Igualmente para o nome de arquivos e/ou diretórios. 

2. o espaço 

Pegue o exemplo de um arquivo que se chama: nome arquivo.txt 

Se você digitar ls -l meu arquivo.txt para ver os atributos deste arquivo, cuidado pois você não obterá o resultado desejado. 

Por que? 

Por causa daquilo que o shell vai ler: Afixar os atributos dos arquivos « nome » e « arquivo.txt » 
Para obrigar shell a exibir aquilo que se deseja, utiliza-se aquilo que ele nos disponibiliza. 

ls -l mome\ arquivo.txt - sintaxe ok (o ante-slash permite ler o espaço como um caráter e não como um separador de argumentos de comando) 

ls - 'meu arquivo.txt' - sintaxe ok (as apóstrofes simples tratam cada caráter de forma literal) 
QUESTÃO : Como é possível ler uma apóstrofe simples de maneira literal entre 2 apóstrofes simples? 

O espaço tem também como papel separar os argumentos em linha de comando. 

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

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

Cenário : 

root quer suprimir uma certa pasta. Para tanto ele vai utilizar o comando rmcom as opções f(força) e R (recursivo). 
A pasta a suprimir chama-se a_suprimir e encontra-se em /home/yogi/a_suprimir 

a. comando correto 


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

Explicação: 

Você observará que no 2° caso, por engano eu digitei um espaço entre / e home. 
O que acontece? 
O shell vai pensar que o comando deve ser suprimido, antes a raiz / e depois home/yogi/a suprimir. 
Devo dizer que você acabou de apagar todos os dados de seu sistema. 
Que "home/yogi/a_suprimmir" não existe, pouco importa, seu sistema não existe mais. 

ASSIM ATENÇÃO ÀQUILO QUE VOCÊ DIGITAR NO SHELL!!! 

Uma solução para evitar tudo isto é de UTILIZAR A COMPLETUDE dos comandos

Se você digita e em seguida a tecla TAB 2 vezes, diversas escolhas se afixarão no ecrã. Normalmente são os diretórios da raiz: boot,bin...home...,var. 

Você terá somente que acrescentar um h para home e de novo TAB 2 vezes e assim por adiante 
TOME O TEMPO DE LER ESTAS ADVERTÊNCIAS PARA NÃO ARREPENDER-SE DEPOIS!!! 

Um outro exemplo com o espaço

Para reconhecer o espaço com sendo um caráter e não como um separador de parâmetros é preciso proteger- (colocar um anti-slash na frente) 
Criar um arquivo que se chama "aa bb" 


Note que o resultado obtido não está conforme com aquilo que se desejava. 
Vamos ver somente um arquivo aa bb e não o arquivoaa e o arquivo bb 
Por que obtivemos isto? 
Pois o shell, quando digitamos
touch aa bb 

Entendeu que era necessário criar um arquivo aa e um arquivo bb. 

Corrigindo isto: 


Agora você vai dizer: Mas não foi criado aa bb mas aa\ bb !!! 
Na realidade você criou aa bb 
O caráter \ permite o espaço como um caráter literal. 
Aliás, o comando ls -l mostrará claramente a existência do arquivo aa bb 

No lugar do anteislash você pode utilizar as apóstrofes simples touch 'aa bb' 

O que se pode aprender com isto? 
Cada vez que você utilizar caracteres não alfabeto numéricos, tais como $,i -slashr ou então coloque-os entre apóstrofes simples. 

3. Os comandos longos que utilizam mais de uma linha 

Se o comando torna-se muito longo você pode passar para a linha seguinte utilizando o caráter \ 

XXXVIII. Executar um script

executar um script shell

Nenhum comentário:

Postar um comentário