terça-feira, 24 de julho de 2012

Modo Texto Comandos Básicos

Consultando manul:
man “nome do comando”
Ex: man tar
mostra a próxima linha.
Mostra a próxima pagina.
ou : Finaliza a consulta ao manual e retorna ao Shell.
: Mostra o menu de Help do More.

Variaveis de ambiente:
PATH – Especifica os commandos disponiveis para um determinado usuário.
HOME – Contém o nome do diretório de trabalho original do usuário e sua posição no /home/.
LOGNAME – Nome e identificação do usuário no processo de autenticação de login.
TERM – Qual tipo de terminal utilizado pelo usuário.

Finalizando Sessão:
Crtl + d (se estiver habilitado);
Exit ;
Logout ;

Ambientes de usuários:
Os dados de login do usuário são armazenados em arquivos no diretório /etc, nos arquivos:
/etc/passwd: Informações referentes aos usuários. Dependendo da variação do Linux, poderá estar em /etc/shadown.
/etc/group: Informações referentes aos grupos de usuários e seus membros ativos.
O usuário uid 0 é chamado de root o “superusuário, e os gid 0 fazem parte do grupo de Administradores.
Cada usuário possui cadastrado no sistema possui um diretório especifico ou diretório pessoal, localizado no diretório /home. Apenas o usuário root tem seu diretório pessoal criado na raiz do disco.

Comando who: Exibe informações sobre os usuários que estão logados no sistema.
$who am i – Exibe o usuário logado e a hora que efetou o login e de qual máquina esta logado.
$whoami – Exibe apenas  o usuário logado.
Comando write: Envia mensagens remotas para usuários logados ao sistema.
$write root
Oi root, como vai?
Crtl + d
$

Comando date: exibe data e hora.
$date
Seg 09 Jun 12:35:20
Para alterar a data:
mm: mês
dd: dia
hh: hora
mm: minuto
yyyy: ano
$ date mmddhhmmyyyy

Comando passdw: tem como função alterar senhas de usuários. Cada usuário só poderá alterar sua própria senha.
$passwd

Comando  lp: Comando para impressão de arquivos.
$ lp manual.pdf

Comando tty: Informa qual a porta de comunicação do terminal conectado.
$tty

Comando uname: Informa sobre o sistema logado.

Parâmetros:
-s: Nome do sistema.
-r: Data.
-v: Versão.
-a: Todas versões acima.
$ uname –a

Comando cal: Semelhante ao date, mas exibe apenas calendário do mês corrente.
$cal

Comando cp: Copiar arquivos de um lugar para o outro.
$co fotos.gzip /home/usuário/manual
$cp ../docs.zip

Comando mount: Utilizado para montar dispositivos como Cd-Rom, disquetes, Cd-RW, partições do Windows.
Sintax: mount [local de montagem] [dispositivos a ser montado]
$mount /mnt/hda1 (monta a partição do Windows)
$mount –t vfta /dev/fd0 /mnt/floppy

Comando ln: Comando usado para criar atalhos ou links simbólicos.
$ln –s /mnt/hda1 windows
Esta criação criará um link simbólico (atalho) para o ponto de montagem da partição windows.

Arquivos e Diretorios:
Arquivos especiais – São arquivos associados aos dispositivos físicos, tais como terminais, impressoras, drivers e recursos de rede. Eles ficam armazenado no diretório /dev e não devem ser removidos se você não souber o que está fazendo

Comando pwd – Informa o caminho absoluto do diretório de trabalho atual.
$pwd

Comando cd – Utilizado para mover de um diretório para o outro.
$cd /mnt

Comando ls – Exibe uma lista com o conteúdo de um diretório.
$ls –F (usado para acrescentar / em arquivos-diretorios e * em arquivos executáveis).
$ls –a (usado para listar inclusive os arquivos ocultos).
$ls –l (usado para listar com detalhes as posições dos arquivos e diretórios).

Comando mkdir – Usado para criar diretórios.
$ mkdir “nome do diretório”

Comando rmdir – usado para remover diretórios vazios.
$rmdir “nome do diretório”

Os principais diretórios do sistema operacional Linux são:
/roo – Contém os arquivos de configuração do superusuário.
/bin – Normalmente é um link simbólico para /urs/bin. Contém a maioria dos comando do Linux ou links para comando Linux.
/lib – Em algumas distribuições pode ser apenas um link simbólico para /usr/lib. Ë onde ficam as bibliotecas do sistema.
/usr – Contém a maioria dos arquivos e diretórios de trabalho do Linux e outros comandos de sistema, bem como configurações pessoais.
/usr/bin – É onde é arquivada a maioria dos comando de seção 1 linux: ls, cp, mv, ln, date, mail..
/usr/lib – Local onde são armazenados arquivos de bibliotecas utilizados pelo sistema para suportar linguagens e aplicações especificas.
/var/spool/mail – A caixa postal do Linux. Contém um arquivo para cada usuário que possui correspondência. A depender da distribuição, pode ser um link simbólico de /usr/var/spool/mail ou /usr/spool/mail.
/user/man ou /usr/share/man
As páginas do manul on-line para as aplicações e comandos.
/usr/local/bin – armazena comandos executáveis desenvolvidos pelo usuários do padrão Linux.
/etc – contém a maioria dos arquivos e comando de administração relativos ao computador local.
/home ou /user ou /usr/users – Normalmente contem os diretórios de login do sistema, ou seja, arquivos de diretórios pessoais de todos os usuários.
/dev – armazena arquivos especiais (devices file) para comunicação de periféricos ( como discos, placas, impressora, etc.).
/tmp e /var/tmp -  Utilizado pelo sistema, processos, de downloads e instalações de aplicações para criação de arquivos temporários.

Manipulação de Arquivos
Tipo de arquivos
D: Diretório – localisa-se no início da linha de descrição do arquivo.
drw------Pasta1
-: Ausência de permissão no arquivo ou diretório.
-ewx-r-----------x
l: arquivo de link simbólico.
n: arquivo especial de rede.
c: arquivo device caracter.
b: arquivo device bloco.

Permissões:
R: Read – Permissão para leitura.
w: Write – permissão para escrita.
X: eXecute – permissão para executar(arquivo, pasta ou programa).
Ex: -rw-rw-rw
Onde o primeiro grupo de rw- são as permissões para propietario do arquivo. O segundo grupo de rw- (da esquerda para direita) pertence aos usuários do mesmo grupo do arquivo. Finalmente as permissões para todos os usuários, no terceiro e ultimo grupo de rw-.

Verificar o conteúdo de um arquivo com o comando a seguir:
head
more
pcat
cat
tail
pg
zcat

Copiar um arquivo:
cp
ln 

Alterar nome de arquivo e/ ou mover para outro diretório com:
mv

Remover um arquivo ou pasta:
rm (usar o argumento –rf para forçar a remoção)

Operação minuciosa com arquivos, usando alguns comandos:
cut
split
od
paste

Realizar comparação, diferenciação e identificação do conteudo de um arquivo atraves dos commandos:
cmp
file
diff

Compactar e descompactar arquivos:
gzip e gzip –d
pack e unpack
zip e unzip

Comando cat: Cria, concatena ou lista o conteúdo de um arquivo.
$ cat > arqteste
Linha1 do arquivo
Linha2 do arquivo
Crtl + d
$
$cat capitulo1 capitulo2 capitulo3 > monografia4 (concatena os arquivos)

Comando more: Exibe o conteúdo de um arquivo, paginando a visualização.
$ more relatório
...
More (20%)
Q ou q finaliza
< Enter > Muda de linha
< Space > muda de pagina
$
Comando pg: semelhante ao anterior, mostra o conteúdo de um arquivo, porem de forma paginada, utilizando recursos de movimentação.
$pg relatório
< conteúdo do relatório>
...
Opções de parâmetros:
+n : Indica a listagem a partir  de n ( onde n é o número de linha).
:n Mostra a pagina n.
:+n Mostra a página referente à solicitação (+n) após a pagina corrente.
:-n Exibe a pagina –n anterior a corrente.
:+nl Avança a página n linhas à frente da linha corrente.
:-nl Retorna a pagina n linhas antes da linha corrente.
:$ Vai para ultima pagina.
:q Encerra o comando.

Comando head: Exibe as primeiras linhas de um arquivo.
$head  Projeto_fac
< 10 primeiras linhas do arquivo projeto_fac>

Comando tail: Visualiza as últimas linhas de um determinado arquivo.
Visualiza as ultimas linhas de um determinado arquivo.
$tail /var/squid/log/acess.log
< 10 ultimas linhas do arquivo access.log >

Comando pcat e zcat: Esses comandos mostram o conteúdo de um arquivo que está compactado pro pack e compress.
$pcat backup

Comando cp: Utilizado para copiar arquivo de um local para outro.
Sintax:
cp [-i] arquivo [arquivo ..] destino
cp [-ir] diretório [diretório ... ] destino
Opções de parâmetros:
-i : O comando verifica e pede confirmação se o arquivo destino já existe.
-r : Realiza cópia recursivamente no caso de a origem ser um diretório.
$ cp relatório relatório_final
No exemplo acima, foi gerada uma cópia de relatório com o nome de relatório_final. Se o relatório final não existe, o comando irá cria-lo. Se o relatório_final já existir, o arquivo é sobescrito, sem prévio aviso. Para que o sistema lhe confirme a ação, é necessário usar a opção –i.
No caso da origem ser múltiplos arquivos o destino tem que ser obrigatoriamente um diretório.

Comando ln: comando usado para criar atalhos ou links simbólicos ( como são conhecidos no mundo Linux/Unix).
Sintaxe:
Ln [ -s] arquivo [arquivo ..]destino
$ ln pasta1 pasta2

No exemplo acima realizamos a criação do lnk da pasta1 com o nome pasta2. Se a pasta2 já existir no sistema, o conteúdo anterior é perdido, sem prévio aviso. A partir do momento da criação do link simbólico, o arquivo pode ser acessado com qualquer um dos dois nomes.
A diferença entre um link comum e um link simbólico é que, no comum, mesmo se o arquivo for removido, o outro continua existindo, e no simbólico, o link esta vinculado a existência do original se o exemplo for apagado, o link aponto para lugar nenhum.
Exemplo usando comando cp, mv e ln.

Comando mv: Sua função é mover arquivos e diretórios.
Sintaxe:
mv [parâmetros] arquivo [destino]
root@bt:# mv [ -i] arquivo1 [arquivo2 ..] diretório1 [diretório2..] destino
O parâmetro –i solicita do comando confirmação se o arquivo ou diretório destino já existe.
O comando possui duas funções, renomeia arquivos e move um ou mais arquivos e/ou diretórios para um destino.
$mv flash.tar.gz /cursos
No exemplo movemos o arquivo flash.tar.gz para o diretório cursos. Se a pasta não existir, uma mensagem de erro é apresentada na console; usando o incremento –i, o comando irá informa-lo da existência ou não do diretório. Assim como no comando cp, é necessário a opção –i para a notificação (normalmente isso já é feito pelo administrador em um alias).

Comando rm: para remover arquivos e diretórios.
Opções:
-i : Confirmação se o arquivo destino já existir.
-r : Remove progressivamente entre os subdiretórios.
-f : Força a remoção de uma arquivo ou diretório que não tenha permissão de escrita. Evita mensagem de erro se o arquivo ou diretório for inexistente.
$rm cartão.pdf
$rm –i plugin.tar
O diretório que esta sendo removido deve ter a permissão de escrita (w).

Comando past: Concatenação horizontal de arquivos. Esse comando faz com que a saída em colunas, cada uma com o conteúdo de um dos arquivos.
$past nome.txt
$ past nome.txt telefone.txt

Comando cut: recorta áreas selecionadas de um arquivo.
Opções:
-c x-y : determina intervalos x e y em caracteres.
-dx.
-f x,y : Determina quais são os campos x e y do arquivo.
$cut –c 1-28 Introducao
Selecionamos a posição 1 até a posição 28.
$cut –d: -f1,3 Bibliografia
Selecionamos a partir do campo 1 até o campo 3.
$cut –d: -f1-3 Dedicatoria
Selecionamos a seleção dos campo 1 e 3.

Comando file:
Identifica o tipo de arquivo solicitado.
$file serial
Serial: ascii text

Comando cmp: Compara arquivos.
$ cmp arquivo1 arquivo2
Se os arquivos são iguais, nada é mostrado, mas se eles diferem, o programa mostra em que caractere ( se for um arquivo em ASCII) ou em que byte (se for binário) está a diferença.

Comando diff: Informa a diferença entre arquivos.
$diff cadastro1 cadastro2

Comando pack: Comprime o conteúdo de um arquivo.
$pack cadastro
Após compactado recebe a extensão z.

Comando unpack: Expande o conteúdo de um arquivo comprimido por pack.
$ unpack cadastro.z

Comando compress: comprime o conteúdo de um arquivo.
$ compress folha_pgto.tar
Arquivos compactados pro compress recebem a extensão .z.
Para descompactar uncompress.
$ uncompress folha_pgto.tar.z

Comando zip: Comprime o conteúdo de um arquivo da emsma forma que o pkzip do DOS, portanto e 100% compatível com estes, diferindo apenas algumas opções.
Opções:
-l : Exibe o conteúdo de um arquivo zip.
-r : Atua recursivamente pelo subdiretório.
-v : Exibe uma lista longa do conteúdo de um arquivo zip.
$ zip –r dir1

Comando unzip: Descompacta o conteúdo de um arquivo compactado por zip.
Opções:
-l : Exibe o conteúdo de um arquivo zip.
-r : Atua recursivamente pelo subdiretório.
-v : Exibe uma lista longa do conteúdo de um arquivo zip.
$unzip dir1
Estes utilitários de compactação e descompactação (exceto o compress) não estão disponíveis em qualquer Linux, sendo geralmente encontrados no Unix.

Comando gzip: Esse comando compacta e descompacta arquivos zipados que geralmente estão prontos para pré-instalação.
Essa opção, acrescida do –d descompacta arquivos no formato gzip.
$gzip –d programa.tar.gz
Para compactar, usa-se, de modo prático, a seguinte linha:
$gzip programa.gz

Permissões de arquivos
Para cada arquivo, existem três classes de usuários:
Usuário: O dono do arquivo.
Grupo: O Grupo ao qual o arquivo pertence.
Outros: Outros usuários do sistema.
Somente o dono do arquivo (ou o superusuario) pode alterar essas informações. Para alterar o dono do arquivo, deve ser utilizado o comando chown. Para alterar o grupo de acesso a um arquivo, utiliza-se o comando chgrp.
Para cada nível de usuário, podem ser habilitados ou desabilitados os seguintes níveis de acesso:
r : leitura
w : Gravação
x : Execução
Para alterar as permissões de arquivos, utiliza-se o comando chmod.

Comando chown: Altera o dono do arquivo.
$chown root [nome do arquivo]
Somente o usuário dono do arquivo ou o superusuário podem alterar quem o possui. No exemplo acima alteramos o dono do arquivo para root.

Comando chgrp: Altera o grupo de acesso ao arquivo.
$chgpr [nome do grupo] [nome arquivo]

Comando chmod: Altera as permissões nos arquivos.
$chmod 754 [nome_arquivo]
Modo
Usuário
Grupo
Outros
Rwxr-r--
rwx
r-x
r--

111
101
100

7
5
4

Usando representação simbólica
Classe:
u : Dono.
g : Grupo.
o : Outros.
a : Todos.
Operadores:
+ : Adiciona permissão.
- : Retira permissão.
= : Atribui permissão.
Permissões:
r : leitura
w : Gravação
x : Execução
Sintaxe:
$ chmod [u,g,o,a] [+,-,=] [r,w,x] arquivo
$chmod go-rw clientes
$chmod o+r clientes

Diretório /etc
Configuração geral, os principais arquivos que compõem o /etc são:
adjtime : Fator de correção para o real time clock do seu computador.
confissue : Contém a tela inicial que é mostrada durante o login em Modo Texto. Algumas distribuições utilizam os arquivos issue e issue.net.
csh.login : Arquivo de configuração do interpretador de comandos tcsh.
disktab : Arquivo descritor de mídias.
fdrpm : Floppy disk parameter table. Tabela que descreve os formatos de disco a serem lidos pelo drive. Utilizado para ler os antigos disquetes.
fstab : Descritor de todos os sistemas de arquivos que podem ser motnados. Define os pontos de montagem, modos de montagem e permissões.
gettydefs : Esses arquivos contém definições de inicialização e finalização para cada saída seriais utilizadas pelos terminais burros conectados a sua maquina Linux.
group : Arquivo que abriga as definições de grupo.
inittab : Chama os scripts de inicialização durante o boot do Linux. Ë o primeiro arquivo lido pelo sistema.
id.so.conf : Lista os caminhos para as bibliotecas compartilhadas (share libraries) do sistema.
motd : A sigla mot message of the day (mensagem do dia). Seu conteúdo é exibido após o login. Esse arquivo é utilizado para mandar mensagens a todos usuários.
mtab : É um arquivo de controle no qual o sistema grava as as informações sobre os sistemas de arquivos atualmente montados.
passwd : Arquivos de senhas e informações de login de cada usuário. Caso se use shadow password em seu sistema, as senhas criptografadas estão no arquivos shadown.
profile : Arquivo que inicializa as variáveis de ambiente de programas durante o login. Esses arquivos abriga as configurações para todos os usuários.
securetty : Lista os terminais (ttys) nos quais o root pode acessar o sistema.
shadown : contem as senhas criptografadas relacionadas no arquivo passwd.
shells : Contém os caminhso completos dos shells de login válido. Alguns programas consultam este arquivo para saber se o usuário existe.
syslog.conf : Principal arquivo de configuração do syslogd, que é o daemon que armazena as mensagens do sistema.
ttytype : Dispositivo de terminal para mapeamento-padrão do tipo de terminal. Configura os tipos de terminal utilizados em cada linha serial.
Configuração de rede – Arquivos normalizados pelo FHS
exports : esse arquivo é usado para informar os diretórios que serão compartilhados na rede.
ftpusers  : Lista os usuários autorizados a fazer ftp em sua máquina caso algum servidor ftp esteja rodando.
gateways : Arquivo utilizado pelo daemon routed para definição de roteamento.
host.conf : Configura a ordem de procura dos nomes de maquinas. Normalmente ‘e configurado para procurar no DNS e no BIND e no arquivo hosts.
hosts : Arquivo que lista os hosts (maquinas conhecidas na rede). E usado como substituto mesmo em paralelo com um servidor DNS.
hosts.allow : Define os nomes das maquinas que podem se utilizar dos servidores de rede servidos por esta maquina.
hosts.deny : Contrapondo-se ao hosts.allow, esse arquivo lista todos os computadores que estao bloqueados para os serviços dessa maquina.
hosts.equiv : Listagem de maquinas e usuários que são confiáveis para rodar r-comandos. O arquivo hosts.equiv permite ou proíbe maquinas e usuários de usar os r-comandos (por exemplo, rlogin ou rcp) sem fornecer uma senha.
hosts.lpd : Nome de maquinas que podem acessar o deamon de impressão lpd.
inetd.conf : Descreve e configura os serviços que serão mantidos pelo servidor INETD. São estes mesmos serviços que são permitidos ou bloqueados por hosts.allow e hosts.deny.
networks : Lista nomes de endereços de redes conhecidos e utilizados pelo comando routed.
printcap : Arquivo de configuração de serviços de impressão. Sua impressora é configurada aqui.
protocols : Esse arquivo é um arquivo ASCII, descrevendo os vários protocolos Internet DARPA que estão disponíveis para o subsistema TCP/IP.
resolv.conf : Arquivo que aponta para um ou mais servidores DNS.
rpc : Os serviços RPC (Remote Procedure Calls) são a implementação de serviços no modelo cliente-servidor para UNIX desenvolvidos pela Sun Microsystems. Os serviços RPC são identificados por números, e o arquivo /rtc/rpc mapeia os nomes dos servidores com os números dos programas.

services : Lista as portas dos serviços de rede.

Interpretadores de Comandos Shell
O sistema operacional Linux possui o Bourne Shell (sh), o Korn Shell ( ksh) , o C-Shell (csh), o Bash e outros.
Variaveis Shell
Um nome que define um valor;
São inicializadas com NULL;
Algumas variáveis podem ser setadas pelo usuário.
São similares a uma variável algébrica, um nome com um valor associado,
Setando variáveis no Shell
Ao criar variáveis, não utilize espaço em branco antes ou depois do sinal de =. Ao utilizar espaços em branco, o Shell vai interpretara-las como ativação de um comando.
Deve-se obedecer as seguintes regras para criação de variáveis:
O nome da variável deve ser iniciado com letra.
O nome deve conter preferencialmente letras, dígitos underscores ( _ ).
Exemplos:
#echo $meu_nome
#echo $outrodir /etc
#ls $outrodir
lista o conteúdo do diretório /etc.
Cada Shell possui duas áeras de dados:
Area local de dados – é a area utilizada por programas em sua execução. Em um ambiente shell script, são as variaveis declaradas dentro do programa.
Ambiente – outra area de memoria utilizada para armazenar variaveis shell e seus respectivos valores.
Podemos utilizar os seguintes comando para alterar estas areas:
set
unset
env
export (sh, ksh, kish)
setenv (csh, tcsh)
source (csh, tcsh0

Comando set - Born Shell e Korn Shell
Informa nomes valores de todas as variaveis da area local de dados e do ambiente.
$set meu_nome=’usuario1’

Comando unset – Remove o valor de uma variavel e adiciona null. Existe tanto no ksh quanto no csh.
$unset meu_nome

Comando env – Informa nomes e valores de toas as variaveis Shell do ambiente. Disponivel em todos os shells.
$env

Comando export – Movimenta variaveis da area local de dados para o ambiente. Disponivel apenas nos shells ksh e sh.
$export meu_nome

Comando setenv -  Permiti visualizar valores e variaveis de area local de dados ou ambiente (normalmente maiusculas).Multiplos valores são separados pelo “:“ (dois pontos).
$setenv LIBPATH /lib:/usr/local/lib:/usr/lib
Sem argumentos o comando se comporta equivalente ao env.

Comando source – Salva no ambiente os dados que seriam apenas da area local de dados de um script.
Para saber qual é o shel default do sistema que esta utilizando:
$ cd bin/bash
$ cd bin/ksh
$ cd bin/sh
Para criar um arquivo com o comando cat digite o seguinte:
cat> teste.txt
Agora digite algum texto, qualquer texto; quando terminar, pressione Ctrl-d numa linha vazia para finalizar a entrada. Veja como fica:
[usuario@spaceghost usuario]$ cat> teste.txt
isto é um simples teste de criação de arquivo
[usuario@spaceghost usuario]$
Experimente digitar cat teste.txt; o comando cat irá lhe mostrar o conteúdo do arquivo.
[usuario@spaceghost usuario]$ cat> teste.txt
isto é um simples teste de criação de arquivo
[usuario@spaceghost usuario]$

Programação em Shell Script
O ash é um Shell mínimo, compatível com o bash, e por isso é o mais simples e ao mesmo tempo o mais útil.

Hello World
Todo o Script Shell começa com uma primeira linha indicando seu interpretador.
#!/bin/sh
Onde /bin/sh é o interpretador de comandos. O arquivo precisa ter permissão +x para poder ser executado.
Após a primeira linha se quiser acrescentar comentários, utilize #.
# Este é um comentário
Você pode implementar comandos que digitados no seu Shell, tal como cd, ls ou o echo.
#!/bin/sh
# Este é um comentário.
# Mais outro comentário.
Cd /
ls
echo “OLA MUNDO”
echo “Posso também passar parâmetros \
em várias linhas, se eu quiser que ele \
apareça em várias linhas na console.”
# comando termina aqui

Parâmetros Posicionais

Quando você passa parâmetros na execução do Shell Script, como, por exemplo.

. teste.sh 4
O dobro de 4 e 8

O && executa o primeiro comando e executa o segundo se e somente se o retorno do primeiro for 0 (ou seja, se ocorreu sem erros). O || é similar, mas executa o segundo comando se e somente o retorno do primeiro foi não-zero (ou seja, se houver erros). Ambos && e ||têm a mesma prioridade.
Exemplo:
[ -d /fd ] || mkdir /fd

O comando acima verifica a existência do diretório /fd com o comando [-d /fd], caso o comando não exista o segundo comando o criará.

O comando if, utilizado para controle de fluxo, tem a seguinte sintaxe:

Exemplo:
If [-d /fd]; then # se o diretório existe…
echo “Diretório /fd existe”
else
echo “Diretório /fd não existe”
fi # Termina a condição if.

While

O while, condição de loop, tem a seguinte sintaxe:

Exemplo:
#!/bin/sh
MYCOUNTER=0
while [ -d /fd ]; do
MYCOUNTER=’expr $MYCOUNTER +1’
echo “Entrei no loop MYCOUNTER “
done

FOR

Existe também o commando for (estilo foreach), que percorre uma lista executando certo commando.

#!/bin/sh
for a in 1 2 3; do # 2º for mais interno
for b in 1 2 3; do # 1o for mais interno
echo “$b”
done
done

Breack e Continue

Usados para interromper o cursos normal de um for ou while.
Break [n]
Continue[n]

Exemplo:
For a in 1 2 3; do # 2o for mais interno
For a in 1 2 3; do # 1o for mais interno
Break 2 # sai do 2o mais interno
Done
Done

Case
Existe também o case em Shell Script.
#!/bin/sh
case $1 in
y|Y) echo “Yes”;;
n|N) echo “No”;;
esac

Executando;
./teste.sh y

Funções
Você pode também definir funções em Shell Script.
#!/bin/sh
dobro() {
return ‘expr $1 \2’
}
X=2dobro $x y=$? # Aqui, $? E a saída de dobroEsta

Lendo a Entrada do Usuário

Read – este comando lê a entrada do usuário após execução do shell.
Este comando no meio de um Shell Script permitira um campo de texto para o usuário digitar qualquer texto, que será salvo na variável $LINE.

read LINE
echo $Line

Execução de Comandos
Comandos intrínsecos do Shell versus Comandos do Unix/Linux
cd,pwd,echo,ls,lp,pg
Comandos Intrísecos, esses comandos não existem em arquivos do sistema operacional Unix / Linux; são sub-rotinas do programa Shell.

Comando whereis
Pesquisa a lista de diretórios procurando por comandos.

$whereis vi
$whereis –b ls

Comando find
Pesquisa o sistema de arquivos procurando arquivos que satisfaçam uma condição.
Ele é muito lento, requer muita utilização de CPU e deve ter uma utilização criteriosa.

$find / -print

Opções uteis do comando find:
-name arquivo: Especifica o nome do arquivo.
-user nome: Especifica o dono dos arquivos.
-group nome: Especifica o  grupo dos arquivos.
-size nome: Especifica o tamanho em blocos (512 bytes).
-type nome: Especifica o tipo do arquivo (f,d,c,b...).
-exec cmd{}: Especifica o comando a executar nos arquivos localizados.

find / -name “* .bak” –exec rm{} \;
find / -name “*.old”-exec mv{} /bkp \;

Comando id

Informa a identificação do usuario (user-id e group id)

$id
Ele informa o número da identificação e nome do usuário, além do numero e nome do grupo do usuário logado corretamente.
A variável LOGNAME e o cmando whoami informando a identificação inicial de login, enquanto que os comando do id e who ami informam a identificação do usuário corrente.

Comando su
Altera a identificação do usuário (user-id)

$su usuario3

Quando o comando e executado sem parâmetros, significa altarar a identificação para o usuário root.

Comando newgrp

Altera a identificação do grupo (group-id)

$newgrp desenv
Quando o processo filho morre, mas o pai ainda não comunicou esse fato, o processo  e chamado de zumbi. O processo-filho cujo pai morre antes de sua conclusão e chamado de processo órfão.

Comando os
Apresenta informações (status) sobre os processos.
$ps [ -e | -f | -l]
$ps
$ps –ef

Algumas opções são:
-e: Apresenta informações sobre todos os processos do sistema.
-f: Apresenta mais informações sobre os processos.
-l: Apresenta a lista mais completa de informações sobre os processos.

Manipulação de Arquivos

A geração de nomes de arquivos é uma característica do shell.
?:  Iguala um único caractere exceto o primeiro ponto.
[]: Define uma classe de caracteres.
-:  Utilizado parar definir um intervalo.
!:  Utilizado para negar uma classe.
*: Iguala zero ou mais caracteres, exceto o primeiro ponto.

Caractere ?

$echo ???
Iguala todos os nomes de arquivos com três caracteres.
$echo abc?
Iguala todos os nomes de arquivos com quatro caracteres iniciados com abc.
$echo ??a?
Iguala todos os nomes de arquivos com cinco caracteres, com a letra a na terceira posição.

Redirecionamento de Entrada e Saida
Os arquivos dispositivos de E/S considerados padrão de um sistema Unix são stdin, stdout e stderr. Cada um deles tem um número associado como seu descritor.

Dispositivo (Saída Padrão, Entrada Padrão, Saída de erros)
Arquivo (stdin, stdout, stderr)
Descritor (0,1,2)

Sempre que o shell é startado, três arquivos são abertos automaticamente para o usuário. Esses arquivos são chamados stdin, stdout, stderr.

O arquivo stdin é o arquivo que o shell utiliza para ler entrada.
O arquivo stdin é usualmente chamado de entrada padrão, possui o descritor 0 e usualmente é associado ao teclado. Assim quando o shell necessita de uma entrada, ela e digitada no teclado.

O arquivo stdout é onde o shell realiza sua saída normal.

Redirecionamento de Entrada-Caractere <
$mail receba < arquivo

Redirecionamento de Saída-Caractere > e >>
$ls > arquivo
$date > >arquivo
Acrescenta a saída do comando date a um arquivo.
Se uma linha de comando contém um redirecionamento de saída (>) seguido de um nome de arquivo, a saída padrão do comando será realizada nesse arquivo. Se o arquivo não existir quando comando for ativado, o arquivo é automaticamente criado. Se o arquivo já existir antes da ativação do comando, o conteúdo desse arquivo será sobreposto.
Se o usuário necessitar adicionar do comando a um arquivo já existente, deve utilizar o simbolo >>. Esse símbolo também cria o arquivo se esta não existir. Não deve haver espaço em branco entre os símbolos de >.

Redirecionamento de Saída de Erros – caracteres 2> e 2>>
Redirecionam a saída padrão de erros (stdout) para outro arquivo.
$cp arquivo arq2 2> erros.log
Redireciona a saída de erros do comando cp para o arquivo erros.log
$ pg arqx 2> > erros.log
Redireciona a saída de erros do comando pg, adicionando os erros encontrados ao arquivo erros.log.
$cat arqx 2> /dev/null
Redireciona a saída de erros do comando cat ara o arquivo /dev/null (nulo).

Filtros

Comando CAT
Cria, concatena e apresenta o conteúdo de um arquivo.

$cat arq1  arq2  > arq3
Concatena o conteúdo de arq1 e arq2 e cria o arquivo arq3.
$cat arq4
           
+
Cria um arquivo com dados digitados no teclado.

Comando SORT
Este comando é poderoso e flexível. As linhas de um arquivo ou campos do arquivo podem ser classificadas de diversas maneiras.
Algumas opções do comando SORT:
-r: Inverte o sentido da classificação.
-f: Iguala letras maiúsculas e minúsculas na comparação.
-n: Indica que a comparação deve ser de valor numérico.
-u: Elimina as linhas com chaves duplicadas.
-tX: Indica que o caractere X é o delimitador de campos.
-m: Executa a intercalação de arquivos já classificados.
+posi –posf: Indica a chave de classificação; posi é a posição inicial e posf a posição inicial.
-o arq: Indica que arq será a saída do comando.

Classificação crescente do campo código:
$sort +0.0 -0.5 cadastro

Classificação inversa do campo nome:
$sort –r +0.5 -0.15 cadastro

Classificação crescente do campo cep e também do campo nome:
$sort +0.20 -0.28 +0.5 -0.15 cadastro

Comando GREP
Pesquisa padrão especifica em arquivo:

Exemplos:
$grep moshe /etc/passwd
$grep –v moshe /etc/passwd
$grep –n moshe /etc/passwd

Principais opções:
-c: Imprime o número de linhas que possuem o padrão.
-n: imprime cada linhas com o seu número.
-v: Imprime todas as linhas que não possuem o padrão.
-i: Iguala maiúscula e minúscula na comparação com padrão.

Comando WC
Conta caracteres, palavras e linhas em arquivos.
Exemplos:
$wc –c  < cadastro
$wc –w texto1
$wc –l /ect/passwd

Opções
-c: Conta o número de caracteres.
-w: Conta o número de palavras.
-l: Conta o número de linhas.
Por default, o comando sem opção apresenta a saída com as três opções.