Você está na página 1de 10

Shell

O termo "Shell" usado para designar o programa que serve como o interpretador de comandos, e
tambm, interpretador de linguagem de programao na forma de scripts (Shell-Scripts) que podem ser
interpretados em sistemas Unix. Ele tambm pode ser utilizado como meio de interao entre o usurio e
o computador, funcionando uma interface entre o usurio e o Kernel do sistema operacional, aparecendo
na tela como uma linha de comandos, representada por um prompt, que aguarda na tela os comandos do
usurio.

Os principais shells so: bash, sh, csh, tcsh, ksh e zsh, sendo o bash, o shell padro da maioria das
distribuies Linux.

Para visualizar os shells, execute o comando: Video exemplo

$ cat /etc/shells

Para visualizar o shell corrente do usurio, execute o comando:

$ echo $SHELL

O Shell, quando executado carrega as variveis de ambiente controlam o prrprio Shell e os


programas que as utilizam para configuraes, quando o usurio efetua o login. As variveis de ambiente
so valores armazenados em memria e executadas no ambiente Shell, e sua configurao varia de
acordo com o Shell em uso. Existem dois tipos de variveis de ambiente: global e local.

Variveis de ambiente local: so as variveis disponveis somente pelo shell corrente, e que no esto
sendo acessadas por subprocessos do sistema.

Para visualizar as variveis de ambientes locais, execute:

$ set | more

Variveis de ambiente global: so as variveis disponveis tanto para o shell corrente como para os
subprocessos que tambm as utilizam.
Para visualizar as variveis ambientes globais, execute:

$ env
ou
$ printenv

voltar

Comandos para manipular as variveis ambientes

1
Video exemplo

echo - Exibe o valor de uma varivel ambiente.

echo [$variavel ambiente]


Exemplo:

$ echo $USER

sleep - Especifica um intervalo de tempo antes de executar o prximo comando.

Exemplo:

$ sleep 5

export - Torna global o valor de uma varivel ambiente.

export [variavel ambiente]=[valor]


Exemplo:

$ VALOR=10
$ export VALOR
$ echo $VALOR

source - Executa e exporta comandos contidos em um arquivo no shell corrente.

Exemplo:

$ vi /home/usuario/.bashrc
alias cor='ls --color' # acrescente essa linha no final do arquivo

$ source /home/usuario/.bashrc
$ cor

unset - Exclui o valor de uma varivel ambiente.

unset [variavel ambiente]


Exemplo:

$ unset VALOR

voltar

2
Variveis ambientes do bash

Video exemplo

printenv ou env - Exibe as variveis ambientes, geralmente encontradas em letras maisculas.

Exemplo:

$ printenv
ou
$ env

MANPATH - Exibe os diretrios onde o comando man encontra pginas de manual.

Exemplo:

$ echo $MANPATH

DISPLAY - Exibe o terminal do ambiente grfico atualmente usado.

Exemplo:

$ echo $DISPLAY

HOME - Exibe o diretrio home do usurio.

Exemplo:

$ echo $HOME

TERM - Exibe o terminal atualmente usado.

Exemplo:

$ echo $TERM

LOGNAME - Exibe o login do usurio.

Exemplo:

$ echo $LOGNAME

USER - Exibe o nome do usurio.

Exemplo:

3
$ echo $USER

LANG - Exibe o idioma do sistema.

Exemplo:

$ echo $LANG

HISTSIZE - Define o valor mximo de comandos do comando history.

Exemplo:

$ echo $HISTSIZE

OSTYPE - Exibe a arquitetura do sistema.

Exemplo:

$ echo $OSTYPE

SHELL - Exibe o Shell atualmente usado, caso queira alterar o Shell use chsh.

Exemplo:

$ echo $SHELL

chsh - Altera o Shell do usurio.

chsh [opes] [usurio]


opo explicao
-s [ Shell ] Especifica o nome do Shell no prximo login.
Exemplo:

$ echo $SHELL
$ chsh -s /bin/sh
# chsh -s /bin/sh usuario

PATH - Exibe o caminho onde o Shell localiza os programas executveis.

Exemplo:

$ mkdir pasta
$ PATH=$PATH:/pasta
$ echo $PATH
Esse exemplo acima somente vlido para o login atual, e no permanente, para que as configuraes

4
fiquem permanentes, edite e acrescente os comandos acima no arquivo de configuraes local do usurio
/home/usuario/.bash_profile, ou globalmente para todos os usurios o arquivo /etc/profile.

PS1 - Altera e especifica o prompt de comandos bash.

opo explicao
\] Termina
\t Exibe a hora
\h Exibe o host (nome da mquina)
\s Exibe o Shell
\u Especifica o nome do usurio
\w Especifica o diretrio corrente
Exemplo:

$ PS1="\d \t \u@\h \w:"

voltar

Histrico de comandos

Video exemplo

O Shell mantem um histrico dos ltimos comandos digitados pelo usurio, podendo serem visualizados
pelo smbolo de ! de 4 formas diferentes, e pelos comandos history e fc.

Comando Explicao
!! timo comando digitado.
!n Onde n o nmero do comando no histrico.
!string Comandos que iniciam com a string especificada.
!-n Onde n o nmero apartir do ltimo comando no histrico.
Exemplo:

$ !!
$ history
$ !499
$ !hist

history - Exibe histrico de comandos.

history [opes]

5
Opes Explicao
Usa como histrico o arquivo /home/usuario/.bash_history ao invs de usar o histrico
-r
de comandos.
-w Reescreve o arquivo /home/usuario/.bash_history.
-c Limpa histrico de comandos.
Exemplo:

$ history

fc - Vizualiza ou edita o histrico de comandos.

fc [opes]
Opo Explicao
-e [editor] Edita usando um editor de texto especificado.
-l [primeiro] [ltimo] Vizualiza um intervalo comandos no histrico dos ltimos 16 comandos.
Exemplo:

$ fc 3
$ fc -l 1 10

voltar

Aliases(apelidos de comandos)

Video exemplo

Alias so apelidos dados para comandos no Linux e Unix, um atalho para facilitar a digitao dos
comandos.O seu arquivo de configurao fica localizado no arquivo /home/usuario/.bashrc.

alias - Define um apelido para comandos no Linux e Unix.

alias [apelido=comando]

Exemplo:

$ alias cor="ls --color"


$ cor

unalias - Apaga um apelido de comandos no Linux e Unix.

unalias [apelido]

Exemplo:

6
$ unalias cor

voltar

Arquivos de configurao do Shell dos usurios

/etc/shells

Arquivo onde ficam armazenados os shells do sistema.

$ vi /etc/shells

/etc/profile

Esse arquivo executado no login do usurio, e nele ficam armazenadas as variveis ambientes globais
para todos usurios.

$ vi /etc/profile

/home/usuario/.bash_profile

Esse arquivo executado no login do usurio, e nele ficam armazenadas as variveis ambientes locais
para um usurio.

$ vi /home/usuario/.bash_profile

/etc/bash.bashrc

Esse arquivo executado no login do usurio, e nele ficam armazenados os aliases para todos os
usurios.

$ vi /etc/bash.bashrc

/home/usuario/.bashrc

Esse arquivo executado no login do usurio, e nele ficam armazenandos os aliases para um usurio.

$ vi /home/usuario/.bashrc

/home/usuario/.bash_logout

Esse arquivo executado no logout do usurio, e nele ficam armazenados os comandos para aquele
usurio.

7
$ vi /home/usuario/.bash_logout

/home/usuario/.bash_history

Esse arquivo onde ficam armazenados os ltimos comandos executados pelo usurio.

$ vi /home/usuario/.bash_history

voltar

Entrada e Sada

O sistema operacional para se comunicar com o usurio utiliza dispositivos de entrada e sada, assim
como os programas necessitam de servios (scripts de programao em Shell, Perl, C) para interagir com
o usurio).

* Entrada de dados(stdin)

(Teclado) Dispositivo onde so digitados os dados para os programas executarem suas aes, podendo
tambm esses comandos serem redirecionados para um arquivo.
* Sada de dados(stout)

(Vdeo) Dispositivo onde so exibidos os dados da execuo dos programas, podendo tambm esses
comandos serem redirecionados para um arquivo.
* Sada de erros(stderr)

Dispositivo onde so exibidos os erros e dados da execuo dos programas, podendo tambm esses
comandos serem redirecionados para um arquivo.

Numerao Entrada - Sada Abreviatura Dispositivo


0 Entrada stdin Teclado
1 Sada stdout Vdeo
2 Sada de erros stderr Vdeo
voltar

Redirecionamento de pipes

Um pipeline um mecanismo que permite dados de entrada e sada serem visualizados, armazenados ou
resgatados de arquivos. De tal forma que a sada de um processo utilizada como entrada do processo
seguinte.

8
Pipes ou redirecionadores Descrio
Comando > arquivo Redireciona sada.
comando < arquivo Redireciona entrada.
comando >> arquivo Une (concatena) a sada.
comando << arquivo Une (concatena) a entrada.
comando 2> arquivo Redireciona a sada de erro.
comando 2>> arquivo Une (concatena) a sada de erro.
comando1 | comando2 Pipe (une dois oui mais comandos.

Exemplo: Exemplo

Exemplos:

$ ls /etc/teste 2> saida.log (redireciona a sada de erro para o arquivo saida.log)


$ cat saida.log
ls: /etc/teste: Arquivo ou diretrio no encontrado

$ ls /etc/teste 2>> saida.log (concatena(acrescenta) a sada de erro para o arquivo saida.log)


$ cat saida.log
ls: /etc/teste: Arquivo ou diretrio no encontrado
ls: /etc/teste: Arquivo ou diretrio no encontrado

$ cat > test


Seja livre use o Linux !!!
aperte [ ENTER ]
aperte CTRL + D

$ cat < teste > saida.txt

$ ls /etc/ | grep hosts

voltar

FIFO - (pipe nomeado, primeiro a entrar, primeiro a sair)

FIFO (Firt-In First-Out - Primeiro a entrar, Primeiro a sair) tambm chamado de (pipe nomeado) um tipo
de arquivo especial similar a um pipe, exceto que ele acessado pelo sistema de arquivos.

Ele pode ser aberto por muitos processos para leitura ou escrita, Quando os processos esto trocando
dados via FIFO, o kernel transmite todos os dados internamente sem escreve-los no sistema de
arquivos.

9
Portanto, o arquivo especial FIFO no possui contedos no sistema de arquivos, a entrada do sistema
de arquivos meramente serve como um ponto de referncia de forma que processos podem acessar o
pipe usando um nome no sistema de arquivos.

Arquivos especiais FIFO podem ser criados por mkfifo.

Veja um exemplo prtico: Video exemplo

Crie o arquivo FIFO

$ mkfifo /tmp/arquivo-fifo

Exibindo o arquivo FIFO

$ ls -lF /tmp/arquivo-fifo
prw-r--r-- 1 fe fe 0 2008-03-15 18:16 arquivo-fifo|

Repare a letra "p" no incio da linha e um pipe no final "|", indicando que um arquivo pipe.

Agora acesse o arquivo para leitura

$ cat /tmp/arquivo-fifo

Agora abra um outro terminal (CTRL + ALT + F1) ou um terminal no modo grfico e escreva no arquivo.

$ echo "teste" > /tmp/arquivo-fifo

Agora volte para o teminal onde est lendo o arquivo, e repare os dados foram enviados para o arquivo
/tmp/arquivo-fifo pelo comando echo e lidos pelo comando cat no outro terminal.

10