Tentarei fornecer alguma noção básica sobre a utilização do poderoso BASH,o terminal de linha de comandos do linux.Este artigo serve apenas para estimular o leitor a ir em busca de informação mais completa a fim de ter um controle maior sobre seu sistema operacional.Considere este um bate-papo de usuário para usuário que tem seu linux instalado em casa e muitas vezes precisa “se virar sozinho”.O objetivo é eliminar a idéia de bicho-papão que se tem da linha de comandos,tentando mostrar sua utilidade e simplicidade.
Existem vários tipos de shell que são : Csh (C Shell),Tcsh(Tenex/Tops C Shell),Ksh (Korn Shell),Sh (Bourne Shell) e o citado acima,Bash (Bourne-Again Shell),este último geralmente o padrão no linux.
Existem duas formas básicas de acessar o shell,a forma tradicional é o que se chama “shell puro” e para saber como ele é tecle ctrl+alt+F1 e veja o que vai acontecer,não se assuste,para retornar ao modo gráfico simplesmente digite startx .
O usuário pode acessar,usar,vários terminais virtuais (console,shell) simultaneamente conforme descrito no Guia Foca Linux “2.2 Terminal Virtual (console)”.
“Terminal (ou console) é o teclado e tela conectados em seu computador. O GNU/Linux faz uso de sua característica multi-usuária usando os "terminais virtuais". Um terminal virtual é uma segunda seção de trabalho completamente independente de outras, que pode ser acessada no computador local ou remotamente via telnet, rsh, rlogin, etc.
No GNU/Linux, em modo texto, você pode acessar outros terminais virtuais segurando a tecla ALT e pressionando F1 a F6. Cada tecla de função corresponde a um número de terminal do 1 ao 6 (o sétimo é usado por padrão pelo ambiente gráfico X). O GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 estão disponíveis inicialmente por motivos de economia de memória RAM (cada terminal virtual ocupa aproximadamente 350 Kb de memória RAM, desative a quantidade que não estiver usando para liberar memória RAM para uso de outros programas!) .
Existem vários tipos de shell que são : Csh (C Shell),Tcsh(Tenex/Tops C Shell),Ksh (Korn Shell),Sh (Bourne Shell) e o citado acima,Bash (Bourne-Again Shell),este último geralmente o padrão no linux.
Existem duas formas básicas de acessar o shell,a forma tradicional é o que se chama “shell puro” e para saber como ele é tecle ctrl+alt+F1 e veja o que vai acontecer,não se assuste,para retornar ao modo gráfico simplesmente digite startx .
O usuário pode acessar,usar,vários terminais virtuais (console,shell) simultaneamente conforme descrito no Guia Foca Linux “2.2 Terminal Virtual (console)”.
“Terminal (ou console) é o teclado e tela conectados em seu computador. O GNU/Linux faz uso de sua característica multi-usuária usando os "terminais virtuais". Um terminal virtual é uma segunda seção de trabalho completamente independente de outras, que pode ser acessada no computador local ou remotamente via telnet, rsh, rlogin, etc.
No GNU/Linux, em modo texto, você pode acessar outros terminais virtuais segurando a tecla ALT e pressionando F1 a F6. Cada tecla de função corresponde a um número de terminal do 1 ao 6 (o sétimo é usado por padrão pelo ambiente gráfico X). O GNU/Linux possui mais de 63 terminais virtuais, mas apenas 6 estão disponíveis inicialmente por motivos de economia de memória RAM (cada terminal virtual ocupa aproximadamente 350 Kb de memória RAM, desative a quantidade que não estiver usando para liberar memória RAM para uso de outros programas!) .
Se estiver usando o modo gráfico, você deve segurar CTRL+ ALT enquanto pressiona uma tela de F1 a F6.
Um exemplo prático: Se você estiver usando o sistema no Terminal 1 com o nome "joao" e desejar entrar como "root" para instalar algum programa, segure ALT enquanto pressiona para abrir o segundo terminal virtual e faça o login como "root". Será aberta uma nova seção para o usuário "root" e você poderá retornar a hora que quiser para o primeiro terminal pressionando ALT+F1”.
Em algumas distribuíções é possível que você não consiga retornar ao modo gráfic o apenas dando um startx,caso aconteça não fique apavorado(a) apenas digite alguns comandos a mais,assim :
Um exemplo prático: Se você estiver usando o sistema no Terminal 1 com o nome "joao" e desejar entrar como "root" para instalar algum programa, segure ALT enquanto pressiona
Em algumas distribuíções é possível que você não consiga retornar ao modo gráfic
/etc/init.d/gdm stop (para gnome)
/etc/init.d/kdm stop (para kde)
/etc/init.d/kdm stop
Talvez seja necessário usar privilégios de root para fazer isto.Logo após o enter vai aparecer uma mensagem dizendo que o kdm ou gdm foi desativado.Então,aí sim,digite o startx.Se mesmo assim não der certo use o famoso crtl+alt+del,isto vai reiniciar o sistema e tudo volta ao lugar.
Outro detalhe importante que algumas distribuíções não permitem fazer é o login em modo gráfico como root,e estão certas,afinal logar como root é sempre um risco,mas em algumas situações talvez seja necessário fazer isso,resolver o que se pretende rapidamente e depois voltar como usuário comum.Uma forma de fazer é assim:
ctrl + alt + F1 para entrar em modo texto
login como usuario normal
sudo su para virar root ( em algumas é su + senha)
/etc/init.d/gdm stop para desativar o gdm e X ou
/etc/init.d/kdm stop para desativar o kdm e X
startx para iniciar o gnome ou kde como root dependendo de qual é o default.
login como usuario normal
sudo su para virar root ( em algumas é su + senha)
/etc/init.d/gdm stop para desativar o gdm e X ou
/etc/init.d/kdm stop para desativar o kdm e X
startx para iniciar o gnome ou kde como root dependendo de qual é o default.
Usuários do slackware não precisam destas instruções porque o default do sistema é o login em modo texto,o usuário tem a liberdade de escolher se vai logar como usuário comum ou root.
A estrutura do sistema operacional pode ser dividida em três níveis : O kernel,o Shell(terminal virtual,console) e as ferramentas e aplicativos.
Atualmente quando falamos em interface de usuário pensamos logo em tela gŕafica com botões,ícones,barras e links para interagirmos com o computador,mas o verdadeiro poder de uso de um sistema operacional é em modo texto e no linux isso é uma verdade e frequentemente uma necessidade se a pessoa quer saber realmente como as coisas funcionam.Finalmente,no linux o Shell é a interface mais simples entre o ser humano e o computador,técnicamente falando o shell é o interpretador de comandos.O trabalho dele é analisar o texto digitado,os comandos digitados,e executá-los produzindo algum tipo de resultado.É a ferramenta que nos possibilita comunicar com o kernel (núcleo) do sistema operacional.
Atualmente quando falamos em interface de usuário pensamos logo em tela gŕafica com botões,ícones,barras e links para interagirmos com o computador,mas o verdadeiro poder de uso de um sistema operacional é em modo texto e no linux isso é uma verdade e frequentemente uma necessidade se a pessoa quer saber realmente como as coisas funcionam.Finalmente,no linux o Shell é a interface mais simples entre o ser humano e o computador,técnicamente falando o shell é o interpretador de comandos.O trabalho dele é analisar o texto digitado,os comandos digitados,e executá-los produzindo algum tipo de resultado.É a ferramenta que nos possibilita comunicar com o kernel (núcleo) do sistema operacional.
Outra detalhe importante é saber identificar quando se está como root ou usuário comum no shell.fazemos isso observando os caracteres :
~$ significa vocẽ está como usuário comum ( com privilégios limitados,mas suficientes para tarefas comuns,rotineiras e sem condições de danificar o sistema)
~# significa que vocẽ está como root (que é o administrador todo-poderoso,podendo até destruir o sistema inteiro,porque tem-se acesso a todos os arquivos críticos do sistema com ampla permissão de leitura,escrita e execução ) .
Outro detalhe igualmente interessante de saber é o que siginifica os caracteres que aparecem antes do cursor,o formato do prompt de comandos padrão do Bash,que tem a seguinte sintaxe :
\u@\h:\w\$
Sendo,
O \u é para o nome do usuário,o \h é para o nome do sistema (hostname),o \w é o diretório atual.Por exemplo :
usuário@ubuntu:~$ ( o til representa o diretório /home)
É possível alterar o nome do hostname,existe um comando para fazer isso,chamado de hostname,sua sintaxe é:
hostname [nome]
Onde [nome] é o nome a ser atribuído ao host local,preferêncialmente em letras minúsculas e evitando usar os caracteres especiais(você foi avisado!).Caso omitido e nenhuma opção passada hostname retornará o nome do host tal qual obtido pela função gethostname().Para saber quais as opções disponíveis para o comando hostname digite:
~$ info hostname
Outra coisa interessante é saber qual shell está instalado e que fica disponível logo que o usuário faz o login,para saber digite no terminal:
~$ echo $SHELL
Se for o bash a resposta será
/bin/bash
/bin/bash
Precisamos estar atentos para um detalhe importante no mundo linux,quando digitamos os comandos no terminal,porque existe diferenças entre maiúsculas e minúsculas,sendo isto técnicamente chamdo de case sensitive,ou seja cd é diferente de CD,mv difere de MV,arquivo difere de ARQUIVO e assim por diante,portanto muito cuidado quando digitar comandos.
Para sair do shell ou encerrar a sessão,use os comandos:
~$ exit ( este encerra apenas o shell em uso )
~$ logout (encerra a sessão do usuário)
~$ logout (encerra a sessão do usuário)
Os especialistas recomendam utilizar preferencialmente o exit porque pode acontecer que o usuário tenha invocado um shell a partir do outro.
Quando estamos no modo texto ou linha de comando no linux temos uma diversidade enorme de comandos a nossa disposição para usar .Após digtarmos um comando qualquer sempre teclamos enter e a informação é examinada pelo interpretador de comandos (shell,terminal virtual,console ) e logo em seguida repassados para o linux (kernel) que então executa a ação desejada ou retorna uma mensagem de erro.A sintaxe comumente usada pelos comandos é esta:
$ comando [opções] [argumentos]
Outra coisa legal de saber é como usar a ajuda do sistema estando no shell,ou seja a ajuda nativa do sistema. Vamos lá.
No terminal é só digitar :
~$ Help
A saída do comando é esta ( aqui está em português porque eu instalaei os arquivos de tradução,mas normalmente estará em inglês mesmo):
~$ help
GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)
Esses comandos do shell são definidos internamente. Digite `help' para ver essa lista.
Digite `help nome' para saber mais sobre a função `nome'.
Use `info bash' para saber mais sobre shell em geral.
Use `man -k' ou `info' para saber mais sobre comandos que não estão nessa lista.
Esses comandos do shell são definidos internamente. Digite `help' para ver essa lista.
Digite `help nome' para saber mais sobre a função `nome'.
Use `info bash' para saber mais sobre shell em geral.
Use `man -k' ou `info' para saber mais sobre comandos que não estão nessa lista.
Um asterísco (*) próximo ao nome significa que o comando está desabilitado.
.....Depois deste texto acima vem uma lista de comandos internos do shell .
Segundo nosso guru de shell Julio Cézar Neves,em seu livro “Programação shell linux” na página 06,na 5ª edição explica o seguinte :
Segundo nosso guru de shell Julio Cézar Neves,em seu livro “Programação shell linux” na página 06,na 5ª edição explica o seguinte :
“O comando help é utilizado para mostrar informações gerais dos built-ins do shell ( chama-se built-ins os comandos que são incorporados ao shell,isto é,não são instruções autônomas como o who,por exemplo.São comandos cujos códigos se encontram incorporados ao código do shell).Este comando é muito útil para novos usuários.”
Outra explicação muito boa nos é oferecida pelo Guia Focalinux,deste jeito,no ítem 31.4 HELP:
“Ajuda rápida, útil para saber que opções podem ser usadas com os comandos internos do interpretador de comandos. O comando help somente mostra a ajuda para comandos internos...”
“Ajuda rápida, útil para saber que opções podem ser usadas com os comandos internos do interpretador de comandos. O comando help somente mostra a ajuda para comandos internos...”
Outra fonte de ajuda são as famosas man pages,páginas de manual,acessível também pelo shell. É a documentação padrão do linux,ali está a ajuda para todos os comandos padrão do sistema.Os utilitários e aplicativos podem incluir instruções nas man pages,mas isso tem de ser feito por eles mesmos na sua instalação,espera-se que o desenvolvedor do aplicativo ou utilitário tenha programado isto.As man pages são divididas em oito seções.,como descrito abaixo.
- 1 – Comandos do usuários(User Commands): Comandos para serem executados a partir do shell.
- 2 – Chamadas do sistema(System Calls): Funções executadas pelo kernel.
- 3 – Bibliotecas de funções(Library Subroutines): A maioria das funções da biblioteca libc
- 4 – Formatos de arquivos especiais(File Formats): Drivers e hardware
- 5 – Arquivos de configuração(Miscellaneous): Formatos de arquivos e convenções
- 6 – Jogos e demonstrações(Games): Jogos do X11
- 7 – Pacotes de macros e convenções(Devices): Sistemas de arquivos,protocolos de rede,códigos ASCII e outros.
- 8 – Comandos de administração do sistema(System Administration): Comandos que geralmente só o root pode executar.
Para fazer uma consulta nas man pages basta usar uma sintaxe muito simples e eficiente:
man [seção] [tópico] ou
man + comando
Exemplo
man 1 ls
man mkdir
man 1 ls
man mkdir
sendo,
[seção] Indica uma das selões do manual
[tópico] Qual tópico pesquisar.Deve ser o nome do comando,chamada do sistema,biblioteca,etc.
[tópico] Qual tópico pesquisar.Deve ser o nome do comando,chamada do sistema,biblioteca,etc.
Ou simplesmente:
man -k + palavra chave
(não se esqueça que sua palavra chave tem de estar em inglês ) Faz uma pesquisa com base na palavra chave que foi digitada listando comandos que possuam esta descrição.Exemplo:
~$ man -k copy
bcopy (3) - copy byte sequence
btcopyannounce (1) - copy torrent announce information to other torrents
copysign (3) - copy sign of a number
copysignf (3) - copy sign of a number
copysignl (3) - copy sign of a number
cp (1) - copy files and directories
.....
btcopyannounce (1) - copy torrent announce information to other torrents
copysign (3) - copy sign of a number
copysignf (3) - copy sign of a number
copysignl (3) - copy sign of a number
cp (1) - copy files and directories
.....
Uma diferença básica se faz necessária ao utilizar o termo man,porque existe o comando man e o utilitário man,o comando apresenta as páginas de manual,entretanto man é também o utilitário de documenmtação padrão.
Depois de encontrar o tópico selecionado o programa aceita comandos diretamente.Alguns são:
Depois de encontrar o tópico selecionado o programa aceita comandos diretamente.Alguns são:
- -h Mostra a ajuda
- q Sai do man
- [N]e Avança uma linha ou N linhas
- [N]y Volta uma linha ou N linhas
- f Avança uma tela
- b Volta uma tela
- /texto Pesquisa um texto no texto apresentado pelo man
Mostra a pŕoxima linha Mostra a pŕoxima página
Um comando muito útil que se pode utilizar no shell para obter informações é tembém o apropos
Sintaxe : apropos comando
Pesquisa um banco de dados que tem a descrição do comando desejado.Útil quando se deseja executar alguma tarefa e não se sabe o nome do comando.
Para descobrir por exemplo qual o compilador está instalado bastaria digitar:
Para descobrir por exemplo qual o compilador está instalado bastaria digitar:
$ apropos compiler
c++ (1) - GNU project C and C++ compiler
c89 (1) - ANSI (1989) C compiler
c89-gcc (1) - ANSI (1989) C compiler
c99 (1) - ANSI (1999) C compiler
c99-gcc (1) - ANSI (1999) C compiler
cc (1) - GNU project C and C++ compiler
ccmakedep (1x) - create dependencies in makefiles using a C compiler
g++ (1) - GNU project C and C++ compiler
g++-4.1 (1) - GNU project C and C++ compiler
gcc (1) - GNU project C and C++ compiler
gcc-4.1 (1) - GNU project C and C++ compiler
i486-linux-gnu-g++ (1) - GNU project C and C++ compiler
i486-linux-gnu-g++-4.1 (1) - GNU project C and C++ compiler
i486-linux-gnu-gcc (1) - GNU project C and C++ compiler
i486-linux-gnu-gcc-4.1 (1) - GNU project C and C++ compiler
.......
c89 (1) - ANSI (1989) C compiler
c89-gcc (1) - ANSI (1989) C compiler
c99 (1) - ANSI (1999) C compiler
c99-gcc (1) - ANSI (1999) C compiler
cc (1) - GNU project C and C++ compiler
ccmakedep (1x) - create dependencies in makefiles using a C compiler
g++ (1) - GNU project C and C++ compiler
g++-4.1 (1) - GNU project C and C++ compiler
gcc (1) - GNU project C and C++ compiler
gcc-4.1 (1) - GNU project C and C++ compiler
i486-linux-gnu-g++ (1) - GNU project C and C++ compiler
i486-linux-gnu-g++-4.1 (1) - GNU project C and C++ compiler
i486-linux-gnu-gcc (1) - GNU project C and C++ compiler
i486-linux-gnu-gcc-4.1 (1) - GNU project C and C++ compiler
.......
Depois de obtaer a informação bastaria:
man gcc
Como nem tudo são flores,caso apareça a seguinte mensagem:
~$ apropos compiler
apropos : file /usr/local/main/whatis not found
Create the whatis database using the catman -w comand
Isto significa que o tal banco de dados ainda não foi criado e a mensagem está te dizendo para fazer isso e te fornece inclusive qual o comando para criar o banco de dados que o apropos vai utilizar.Então para construir o banco de dados basta digitar:
~$ catman -w
Depois de criado o banco de dados o comando apropos ou man -k estará disponível.
Outro comando disponível para ajuda é o whatis.A diferença dele para o apropos é que o whatis obtém uma breve descrição do comando:
Sintaxe: whatis comando
~$ whatis chmod
chmod (1) - change file access permissions
chmod (2) - change permissions of a file
chmod (1) - change file access permissions
chmod (2) - change permissions of a file
Com apropos
~$ apropos chmod
chmod (1) - change file access permissions
chmod (2) - change permissions of a file
fchmod (2) - change permissions of a file
fchmodat (2) - change permissions of a file relative to a directory file descriptor
chmod (1) - change file access permissions
chmod (2) - change permissions of a file
fchmod (2) - change permissions of a file
fchmodat (2) - change permissions of a file relative to a directory file descriptor
Algumas teclas de atalho úteis do shell:
- Ctrl+A = Move o cursor para o inicio da linha;
- Ctrl+E = Move o cursor para o fim da linha;
- Ctrl+U = Apaga o que estiver a esquerda do cursor;
- Ctrl+K = Apaga o que estiver a direita do cursor;
- Ctrl+L = Limpa a tela e mantém o texto que estiver sendo digitado.
- Ctrl+f = Avança o cursor um caracter
- Ctrl+b = Volta o cursor um caracter
- Ctrl+d = Deleta o caracter sob o cursor
- Ctrl+h = Deleta o caracter antes do cursor
- ESC-f = Avança o cursor até o final de uma palavra
- ESC-b = Volta o cursor até o início de uma palavra
- ESC-d = Deleta a partir do cursor (inclusive) até o final da palavra
- ESC-C+h = Deleta a partir do cursor até o início da palavra
- ESC-\ = Deleta espaços em branco antes e depois do cursor
- ESC-[TAB] = Idem ao anterior, porém procura apenas os comandos que estão no histórico
- ESC-/ = Tenta completar procurando apenas no diretório corrente
- Ctrl+x-/ = Lista todas as possibilidades de completar o texto que precedeu o comando
- ESC-~ = Tenta completar procurando no passwd pelo nome do usuário
- Ctrl+x-~ = Lista todos os usuários que podem ser completados
- ESC-u = Passa para maiúsculo desde a posição do cursor até o final da palavra
- ESC-l = Passa para minúsculo desde a posição do cursor até o final da palavra
- ESC-c = Passa para maiúsculo apenas a letra sob o cursor e muda para minúscula a partir do caracter seguinte até o final da palavra.
- [Ctrl+x][Ctrl+e] =Edita a linha corrente usando o programa setado em $EDITOR executando o comando assim que finalizar o mesmo.
- [Ctrl+x][Ctrl+v] = Mostra a versão do shell
- TAB = Autocompletar - se for pressionada logo após alumas letras, ele tentará completar o comando procurando por programas executáveis. A ordem e os locais de procura são tirados do $PATH
Com estas dicas já temos condições de fuçar bastante nas man pages e ir testando os comandos. Entretanto vocẽ pode também adquirir algum livro ou baixar o Guia focalinux,o guia é grátis,os livros lógicamente não,mas comprando-os nós estaremos contribuíndo com os autores que se esforçam para disponibilizar material de qualidade,dê preferêrencia aos escritores Brasileiros sempre que possível.Espero que tenha contribuído,ainda que pouco,para seu estudo pessoal.Sucesso. :)
Bibliografia:
- Programação Shell Linux – 5ª edição – Julio Neves
- Certificação Linux – Uirá Ribeiro
- Linux Modo Texto Para Profissionais – Moisés pereira Alves
- Linux para profissionais – Do Básico à Conexão de Redes – George L. jamil &Bernardo A. Gouvêa
- Guia Foca Linux – Gleidysom mazioli da Silva
- Comandos do Linux – Guia de Consulta Rápida - Roberto G. A. Veiga
- Atalhos de teclado no Bash - Rodrigo Zarth - http://br-linux.org/tutoriais/002229.html
Nenhum comentário:
Postar um comentário