O bash é a shell mais popular do Linux. É ele que vai servir como intermediador entre o usuário e o sistema operacional e seus comandos. Este tutorial é um bom ponto de partida para as suas principas funções!
Utilizando o bash
Após o login de um usuário no modo texto, o mesmo entra em uma shell. Uma shell é um interpretador de comandos: ela lê o que o usuário digita, interpreta e executa as aplicações de acordo com o que você executou.
Existem diversos tipos de shells, como o sh, bash, tcsh, ksh, tclsh, entre outras. Neste treinamento estaremos trabalhando com a shell GNU bash (GNU Bourne-Again SHell), pois ela é a mais utilizada por padrão em todas as distribuições Linux.
Características dos arquivos no Linux
Nos nomes dos arquivos, os caracteres MAIÚSCULOS e minúsculos fazem diferença. Isso quer dizer que por exemplo: os arquivos PROGRAMA.tar.gz e programa.tar.gz são dois arquivos completamente diferentes. Ou então: ls é um comando e LS é um erro.
No Linux, não existem extensões especiais para programas executáveis (como .exe, .com). Ao invés disso, os arquivos têm permissão de executável ou não-executável. Mais detalhes no
Além de arquivos comuns, no Linux existem os chamados links simbólicos, que são uma espécie de atalhos. Mais detalhes no comando ln.
Executando comandos
Como um interpretador de comandos, o que o bash sabe fazer de melhor é: executar comandos! Assim como os prompts de comando da maioria dos sistemas operacionais, para executar um comando, o bash lê o que o usuário digitou e procura em diretórios pré-definidos (PATH) se aquele comando existe. Caso o programa exista e o arquivo for executável, o bash irá executá-lo.
Por exemplo, para executar o comando que lista arquivos no diretório atual:
$ ls
Quando o usuário digitou ls, o bash procurou nos diretórios do PATH e achou um comando chamado ls no diretório /bin, então o executou. Agora se um programa executável estiver fora do PATH, só será possível executá-lo especificando seu caminho completo:
$ /opt/programa/nonpath
E se um arquivo executável estiver no diretório atual, executamos o comando:
$ ./programa
Para sair da shell (logout), aperte CTRL+D ou execute o comando exit.
Completação por Tab
A completação por Tab é um recurso que permite completar comandos ou nomes de arquivos mais rapidamente, sem precisar digitar todos os caracteres. Para utilizar, basta apenas digitar as primeiras letras do comando ou arquivo e apertar a tecla Tab. O bash irá completar o nome do comando ou arquivo para você automaticamente.
Caso haja mais de um arquivo começando com as letras que você digitou, apertando Tab mais uma vez fará com que o bash apresente todas as opções disponíveis. Por exemplo, se você quiser saber todos os comandos que começam com as letras mo, execute na shell:
$ mo module-assistant montage mount mozilla mogrify more mountpoint mozilla-firefox
Imagine, se você simplesmente apertar Tab duas vezes sem ter digitado nada, o bash irá lhe apresentar todos os comandos disponíveis no sistema!
Configurando o PATH
Quando falamos em PATH, queremos dizer se um determinado diretório está acessivel sempre, de qualquer lugar, para executar comandos. Quando um comando está dentro de um diretório PATH, quer dizer que de qualquer lugar você poderá executá-lo.
Se for necessário mudar o PATH para adicionar um diretório de algum programa que você instalou, basta apenas manipular a variável do bash chamada de $PATH. Para ver os atuais diretórios que estão no PATH da sua sessão atual, digite o seguinte comando:
$ echo $PATH /home/coletivo/bin:/usr/local/bin:/usr/bin:/bin
Acima podemos ver que os diretórios no PATH são separados por dois pontos. Então para adicionar um novo diretório no PATH, basta reconfigurar a variável da seguinte forma:
$ PATH=$PATH:/novodiretorio
No comando acima, atribuímos à variável $PATH o valor dela mesma, adicionando :/novodiretorio. Agora o /novodiretorio também estará no PATH.
Procurando por comandos já digitados
Uma boa forma de salvar tempo é utilizar comandos já digitados ao invés de digitá-los novamente. Por padrão o bash implementa um histórico com uma lista de todos os comandos que você digitou. Este histórico fica no arquivo .bash_history, dentro do diretório HOME de cada usuário.
Para procurar por um comando digitado anteriormente, comece apertando a sequência de teclas CTRL+R. Quando feito isso, o prompt muda, indicando “(reverse-i-search)`’:”. Comece a digitar o comando e ele vai tentando achar para você. Se ele achou um comando e você quer procurar por outros comandos que têm a mesma palavra, continue apertando CTRL+R para visualizar o que ele achou a mais. Por final, quando encontrar o comando desejado, aperte ENTER para executá-lo, ou a seta para o lado para editá-lo antes de pressionar ENTER.
Outro jeito de visualizar o histórico de comandos é executar:
$ history
E o bash lhe mostrará uma lista de comandos precedidos pelo número de sequência do comando, ou seja, a ordem com que ele foi executado. Escolha uma linha, grave o número dessa linha e então para re-executar o comando, digite:
$ !numero
Por padrão o bash guarda 500 comandos em seu histórico. Para aumentar ou diminuir este limite, basta apenas mudar o valor da variável $HISTFILESIZE para a quantidade de comandos desejada:
$ HISTFILESIZE=2000
No caso acima mudamos a quantidade de comandos guardados no histórico para 2000.
Apelidos de comandos
Os aliases, ou apelidos, são um jeito fácil de criar atalhos para os comandos mais usados. Por exemplo, se eu tenho um comando “comando_realmente_grande -lZdsW” mas não quero ficar digitando tudo isto, posso criar um alias chamado “comando” da seguinte forma:
$ alias comando=”comando_realmente_grande -lZdsW”
Então toda vez que eu digitar comando, vai ser a mesma coisa que digitar todo este comando e seus parâmetros. Para visualizar todos os apelidos configurados para a sua atual sessão de shell, execute:
$ alias
Gerenciamento de tarefas
O bash oferece um gerenciamento de tarefas simples, que permite os usuários, em uma mesma shell, executar vários programas ao mesmo tempo, aproveitando os recursos de multi-tarefa do sistema operacional.
Quando um usuário executa um comando, dizemos que ele está no “plano ativo” (foreground), ou seja, está aparecendo na tela e o usuário pode interagir com ele. Além do plano ativo, existe o plano de fundo (background), onde um programa fica funcionando, mas não mostra na tela e nem interage com o usuário.
Por exemplo, comece executando uma aplicação que ficará funcionando no plano ativo:
$ man bash
Você pode interagir pela página de manual normalmente. Agora vamos suspender este programa e deixá-lo sendo executado no plano de fundo. Para isso, comece apertando a combinação de teclas CTRL+Z (Suspender). O bash irá sair da tela da página de manual e voltar ao prompt, com a seguinte mensagem:
[1]+ Stopped man bash
Isto significa que o programa 1 desta shell foi suspendido. Para mandá-lo para o plano de fundo, utilize o comando bg:
$ bg 1
Quando suspendemos o programa, ele parou completamente de funcionar e esperou uma ação do usuário. O comando bg fez com que o programa voltasse a funcionar, mas em plano de fundo. Para trazer o programa de volta ao plano ativo, utilize o comando fg:
$ fg 1
Assim a tela da página de manual irá aparecer novamente, do jeito que você a deixou. Você pode também executar múltiplos processos dessa forma. Agora se quisermos executar um comando mandando-o diretamente para o plano de fundo, ao invés do plano ativo, basta acrescentar o sinal “&” no final do comando, assim:
$ man bash &
Para listar os programas que estão suspendidos ou em plano de fundo, digite:
$ jobs
Arquivos de configuração
Muitas das coisas que aprendemos sobre o bash servem apenas para a sessão atual do usuário. Em outras palavras, se você criou apelidos para comandos ou mudou o tamanho do histórico de comandos, quando você efetuar o logoff tudo se perderá. No próximo login, você terá que fazer tudo novamente…
…A não ser que você utilize os arquivos de configuração e inicialização do bash.
O conteúdo do arquivo /etc/profile contém todos os comandos padrões para todos os usuários do sistema, uma vez que iniciaram uma sessão de login na shell. Nele podemos ver o PATH e o visual do prompt sendo configurados, por exemplo.
Já o conteúdo do arquivo .bash_profile dentro do diretório HOME do usuário contém os comandos de login para o usuário dono do HOME correspondente.
Em outras palavras, se você quiser deixar suas modificações (como variáveis e apelidos) permanentes, basta colocar os comandos dentro destes arquivos e os comandos serão re-executados toda vez que você iniciar uma shell interativa.