SANTOS
Sistemas Operacionais
Profa. Dora 2
Índice
Criando usuário ... 03
Bloquear e desbloquear conta do usuário ... 05
Criar grupo ... 06
Permissões de arquivos ... 09
Documentação Linux ... 14
Editor VI ... 17
Criando Script ... 20
Conceito de variáveis em shell script ... 21
Lista 07 ... 25
Controle de fluxo com o if ... 25
Operadores relacionais ... 28
Operadores lógicos ... 28
Testes em arquivos ... 29
Lista 08 ... 31
Seleção múltipla ... 32
Estrutura Case ... 35
Lista 09 ... 39
Estrutura de repetição – Laço For ... 40
Lista 10 ... 45
Estrutura de repetição – Laço While ... 46
Lista 11 ... 49
Comandos de tratamento de texto ... 50
Profa. Dora 3
Capitulo 07
Criando usuário
Agora vamos acessar a VMware como superusuário, e direcionar para a pasta home, estando lá:
Criaremos um usuário joao, para tanto:
[root@01mx home]useradd joao
Definiremos sua senha de acesso:
[root@01mx home]passwd joao
Atribua para new password como sendo joao
O próprio usuário pode alterar a senha usando o comando "passwd", desde que ele saiba a senha antiga.
Se o usuário esqueceu a senha, você pode definir uma nova executando o comando como root; nesse caso o sistema pede a nova senha diretamente, sem solicitar a senha antiga.
Profa. Dora 4 Esse arquivo contém várias informações sobre cada usuário:
- o seu nome de login (ou seja, o nome que é necessário digitar para entrar no sistema);
- senha (neste caso, a informação da senha pode estar criptografada ou em outro arquivo);
- UID (User IDentification), ou seja, número de identificação do usuário;
- GID (Group IDentification), isto é, número de identificação do grupo do usuário;
- informações adicionais sobre o usuário (nome completo, dados de contato, etc);
- diretório "home", ou seja, o diretório principal de cada usuário;
- shell do usuário, uma espécie de programa que interpretará os comandos que o usuário digitar
Profa. Dora 5 1. É neste ponto que fica localizado o nome de login do usuário, neste caso, joao.
Esse nome não pode ser igual a outro já existente no sistema e, geralmente é limitado a 32 caracteres.
2. Essa posição indica a senha do usuário.
A letra x informa que a senha está armazenada e protegida dentro do arquivo /etc/shadow.
Se houver um asterisco (*) no lugar, significa que a conta está desativada.
Todavia, se não houver nada, significa que não há senha para esse usuário.
Em alguns casos, embora isso não seja recomendável, a senha pode estar inserida diretamente ali, mas criptografada;
3. Indica o número UID, é número que serve para identificar o usuário. Em geral, o sistema pode suportar UIDs que vão de 0 a 4.294.967.296. Normalmente, o UID 0 é atribuído pelo próprio GNU/Linux ao usuário root.
4. Esse é o campo que indica o GID do usuário, isto é, o número de identificação do grupo do qual ele faz parte. Assim como no UID, geralmente o usuário 0 é indicado para o grupo do usuário root. Note, no entanto, que um mesmo usuário pode fazer parte de mais de um grupo (geralmente, o GNU/Linux permite a participação do usuário em até 32 grupos).
5. Cada usuário criado no sistema tem direito a uma pasta "home", ou seja, uma pasta sua, para uso exclusivo. Em geral, essas pastas ficam dentro do diretório /home/, mas você pode definir o diretório que quiser (ou mesmo não indicar nenhum).
6. Esse é o campo que informa qual o shell (interpretador de comandos) de login que o usuário utilizará. O GNU/Linux trabalha com vários, entre eles, o bash, o sh e o csh. Caso nenhum shell seja informado, o sistema utilizará o bash como padrão.
Bloquear e Desbloquear conta do usuário
Você também pode bloquear temporariamente um usuário, sem remover o home ou qualquer outro arquivo usando o comando "passwd -l", como em:
# passwd -l joao
Profa. Dora 6 o "passwd -u", como em:
# passwd -u joao
Agora crie dois outros usuários, a saber:
maria e jose com seu respectivo login e password
Criar Grupo
Agora vamos criar um grupo, para tanto, utilizamos o comando:
Groupadd
Para facilitar a administração do sistema, pode-se utilizar o conceito de grupos de usuários com perfis semelhantes. Por exemplo, definir grupos conforme departamentos de uma empresa.
Sintaxe: groupadd <nome do grupo>
Profa. Dora 7 Groupdel
Serve para eliminar grupos do sistema
Sintaxe: groupdel <nome do grupo>
Gpasswd
Este comando é utilizado para administrar o arquivo /etc/group.
Todos os grupos podem ter administradores, membros e senhas.
O administrador do sistema (superusuário) pode ser a opção –A para definir o administrador do grupo e –M para definir os membros.
Sintaxe: gpasswd [parâmetros] usuário grupo
Exemplos:
1º) Definir a senha de um grupo
[prompt] gpasswd intranet
2º) Adicionar um usuário no grupo
[prompt] gpasswd –a jose intranet 3º) Excluir um usuário do grupo
[prompt] gpasswd –r jose intranet 4º) Remover a senha do grupo
[prompt] gpasswd –r intranet
5º) Acesso do superusuário criando uma estrutura de grupos e membros
[prompt] gpasswd –A usuário, .... –M usuário, .... gestão
Profa. Dora 8 O comando usermod modifica as configurações de uma determinada conta de usuário.
As opções mais usadas são:
-d diretório_home : Esta opção fornece o caminho completo do diretório home do usuário.
-c "nomedousuário" : Esta opção grava no arquivo passwd o nome do proprietário da conta ou qualquer outra observação e comentário importantes.
-g grupo : Esta opção fornece o grupo padrão da conta do usuário.
-s shell : Esta opção deve fornecer o caminho completo do shell utilizado pela conta. Por exemplo /bin/bash, /bin/sh.
-L : Trava a conta de usuário adicionando o sinal de "!" na senha.
-U : Destrava a conta de usuário, remove o sinal de "!" da senha.
Profa. Dora 9
Permissões de Arquivos
A cada arquivo ou diretório do sistema é associado um proprietário, um grupo e seus respectivos direitos de acesso, ou permissões.
Por exemplo:
[prompt] ls –l texto.txt
Modo de acesso Arquivo regular/especial Diretório r (leitura) examinar conteúdo listar arquivos
w (escrita) modificar o conteúdo alterar diretório
x (execução) executar o arquivo pesquisar no diretório
Comando chmod
Finalidade: Permite que se alterem as permissões de um ou mais arquivos.
Sintaxe: [prompt] chmod [opções] [permissões] [diretório/arquivo]
Existem duas notações para se aplicar o comando, a saber: o modo simbólico e o octal.
Permissão octais do chmod
Decimal associado Permissão
4 Leitura
2 Escrita
Profa. Dora 10 para tanto, levamos em consideração as seguintes especificações:
O dono poderá ler,gravar e executar → 4+2+1 = 7
O grupo poderá ler e executar → 4+1 = 5
Os outros poderão somente executar → 1
Como se sabe:
4 Leitura
2 Escrita
1 Execução
Então: [prompt]# chmod 751 texto.txt
Sintaxe: [prompt] chmod [opções] [permissões] [diretório/arquivo] Notação simbólica
Símbolo Descrição
u usuário, ou dono do arquivo
g grupo do arquivo
o outros usuários que não são os donos, nem cadastrados no grupo especificado.
Profa. Dora 11
Operador Descrição
+ concede permissão especificada
- remove permissão
= atribui somente esta permissão ao arquivo, retirando as que não se encontram especificadas, isto é, estabelece permissão independente das que já existiam.
Permissão Descrição
r concede ou remove a permissão de leitura
w concede ou remove a permissão de escrita
x concede ou remove a permissão de execução
Alteremos novamente as permissões do arquivo texto.txt utilizando a notação simbólica, de tal sorte que, serão concedidas permissões de leitura e gravação ao dono e execução ao grupo.
Então: [prompt]# chmod u-x,g-r texto.txt
Comando chown
O comando chown permite ao root a alteração do dono e do grupo relacionado ao arquivo, ou arquivos, selecionados.
Sintaxe: [prompt] chown [novo_proprietário] [:novo_grupo] arquivos
Profa. Dora 12 ata, então mude o grupo para intranet, assim teremos:
Profa. Dora 13
Comando chgrp
O chgrp é um comando utilizado para alterar somente o grupo de um arquivo, arquivos ou diretório.
Sintaxe: [prompt] chgrp grupo arquivo
Estando na máquina Alt F2 logada como usuário maria.
Crie um arquivo vazio denominado lixo, exiba o conteúdo em formato longo.
Você verá que o dono é maria e o grupo é maria,
Então altere o grupo para intranet.
Profa. Dora 14
Capitulo 08
Documentação Linux
Finalidade: Visualizar Uma página de manual na forma de texto único com rolagem vertical.
Sintaxe: [prompt]# man [seção] [comando/arquivo]
É a seção de manual que será aberta, se omitido, mostra a primeira seção sobre o comando encontrada (em ordem crescente).
A navegação dentro das páginas de manual é feita usando-se as teclas:
q Sai da página de manual ·
PageDown ou f Rola 25 linhas abaixo ·
PageUP ou w Rola 25 linhas acima ·
SetaAcima ou k Rola 1 linha acima ·
SetaAbaixo ou e Rola 1 linha abaixo ·
r Redesenha a tela (refresh) ·
p ou g Início da página ·
h Ajuda sobre as opções da página de manual ·
s Salva a página de manual em formato texto no arquivo criado.
Profa. Dora 15 Finalidade: Mostra os comandos internos do shell bash.
Profa. Dora 16 Finalidade: As páginas tem a característica de estarem formatadas em hipertexto, facilitando a pesquisa, dica → Ao selecionar o tópico desejado deve-se teclar ENTER. A tecla d volta ao tópico anterior.
Sintaxe: [prompt]# info
Finalidade: Localiza um programa na estrutura de diretórios do path.
Sintaxe: [prompt]# which [programa/comando]
Links importantes:
http://ldp-br.conectiva.com.br/ http://trac.watter.net/ldpbr/ http://www.ubuntu-br.org/
Profa. Dora 17
Editor Linux - vi
Configurando o teclado – digite direto no prompt:
[prompt]# loadkeys br-abnt2
Utilizando o editor de texto do Linux – vi. Toda vez que desejar usar o modo comando, pressione a tecla ESC.
Movimentando o cursor
k : para cima
Backspace : esquerda
Space : direita
j : para baixo
Modo de entrada:
a acrescenta texto depois do cursor
i insere texto antes do cursor
o abre uma linha de texto abaixo
O abre uma linha de texto
A acrescenta texto no fim da linha
I insere texto no início da linha
Deletando texto:
x deleta um caracter
dw deleta palavra
ex: 2dw delete duas palavras
dd deleta linha corrente
dG deleta até a última linha do arquivo
d$ deleta até o fim da linha
Profa. Dora 18 Movimentação de palavra:
w pula uma palavra
b volta uma palavra
c vai para o fim da palavra
ex: 2w pula duas palavras
$ vai para o fim da linha
^ ou O vai para o início da linha
Movendo texto:
Primeiro executar o comando deletar, depois executar o colar:
p cola abaixo do cursor
P cola acima do cursor
Controle do cursor:
G final do arquivo
#G vai para uma linha qualquer
:# vai para uma linha
Ctrl g informa a linha que você foi
Ctrl b retorna página
Ctrl f avança página
Ctrl u retorna metade da página
Ctrl d avança metade da página
Ctrl I refresh da tela
L última linha da tela
M meio da linha na tela
Profa. Dora 19 Copiando texto:
yw copia palavra corrente
yy copia a linha corrente
yG copia até a última linha do arquivo
y$ copia até o fim da linha
y^ copia até o início da linha
Alterando o texto:
r substitui caracter
R substitui todas as letras até pressionar ESC
cw altera palavra
cc altera a linha inteira
cG altera até a última linha do arquivo
c$ altera até o fim da linha
Profa. Dora 20
Capitulo 09
Criando Scripts
Quem usa Linux conhece bem o prompt de comando como o bash.
O que muita gente não sabe é que o sh ou o bash têm uma “poderosa” linguagem de script embutido nelas mesmas.
Diversas pessoas utilizam-se desta linguagem para facilitar a realização de inúmeras tarefas administrativas no Linux, ou até mesmo criar seus próprios programinhas. Patrick Volkerding, criador da distribuição Slackware, utiliza esta linguagem para toda a instalação e configuração de sua distribuição.
Você poderá criar scripts para automatizar as tarefas diárias de um servidor, para efetuar backup automático regularmente, procurar textos, criar formatações, e muito mais. Para você ver como esta linguagem pode ser útil, vamos ver alguns passos introdutórios sobre ela.
Interpretadores de comandos são programas feitos para intermediar o usuário e seu sistema. Através destes interpretadores, o usuário manda um comando, e o interpretador o executa no sistema.
Eles são a “Shell” do sistema Linux. Usaremos o interpretador de comandos bash, por ser mais “extenso” que o sh, e para que haja uma melhor compreensão das informações obtidas aqui, é bom ter uma base sobre o conceito de lógica de programação.
Uma das vantagens destes shell scripts é que eles não precisam ser compilados, ou seja, basta apenas criar um arquivo texto qualquer, e inserir comandos à ele.
Profa. Dora 21 A primeira linha indica que todas as outras linhas abaixo deverão ser executadas pelo bash (que se localiza em /bin/bash),
e a segunda linha imprimirá na tela a frase “Alo Mundo...”,
utilizando o comando echo, que serve justamente para isto.
Como você pôde ver, todos os comandos que você digita diretamente na linha de comando, você poderá incluir no seu shell script, criando uma série de comandos, e é essa combinação de comandos que forma o chamado shell script.
Contudo, para o arquivo poder se executável, você tem de atribuir o comando de executável para ele. E como citamos anteriormente, o comando chmod se encarrega disto:
chmod +x mundo
Pronto, o arquivo poderá ser executado com um simples ./mundo.
Conceito de Variáveis em shell script
Variáveis são caracteres que armazenam dados, uma espécie de atalho.
Profa. Dora 22 Valor pode ser uma frase, números, e até outras variáveis e comandos.
O valor pode ser expressado entre:
aspas (“”) - vão interpretar as variáveis que estiverem dentro do valor,
apóstrofos (”) - lerão o valor literalmente, sem interpretar nada, ou
crases (“) - vão interpretar um comando e retornar a sua saída para a variável.
Exemplo – 01:
Vamos criar um Script que através da variável nome armazene o seu nome e exiba seu conteúdo, para tanto:
Exemplo – 02:
Profa. Dora 23 Exemplo – 03:
Profa. Dora 24 Vamos criar um script aonde declaramos uma variável denominada diratual que armazenará uma string e executar um comando, exibindo o valor da variável.
Exemplo – 05:
Profa. Dora 25
NOME DO ALUNO
NÚMERO
LISTA
–
07
Estando no diretório home, criam-se os seguintes arquivos vazios: aula1 aula2 ex1 ex2 pesq1 pesq2
Deve-se criar um script que: Crie a seguinte estrutura /
/home /home/ads /home/ads/teoria /home/ads/pratica /home/ads/pesquisa
Aonde os arquivos:
Profa. Dora 26
Capitulo 10
Controle de fluxo com o if
Controle de fluxo são comandos que vão testando algumas alternativas, e de acordo com essas alternativas, vão executando comandos. Um dos comandos de controle de fluxo mais usados é certamente o if, que é baseado na lógica “se acontecer isso, irei fazer isso, se não, irei fazer aquilo”.
Fluxograma Algoritmo Sintaxe em Linux
Se <condição> então <instrução> : <instrução> Senão
< instrução >
:
< instrução >
Fim
if [condição]
then
<instrução>
:
<instrução>
else
<instrução>
:
<instrução>
fi
Exemplo – 01:
Profa. Dora 27 Executando o script temos o seguinte resultado:
Profa. Dora 28
Operadores relacionais:
Comparação Numérica
-lt É menor que (LessThan)
-gt É maior que (GreaterThan)
-le É menor igual (LessEqual)
-ge É maior igual (GreaterEqual)
-eq É igual (EQual)
-ne É diferente (NotEqual)
Comparação com strings
= É igual
!= É diferente
-n É não nula
-z É nula
Operadores Lógicos
! NÃO lógico (NOT)
-a E lógico (AND)
Profa. Dora 29
Testes em arquivos
-b É um dispositivo de bloco
-c É um dispositivo de caractere
-d É um diretório
-e O arquivo existe
-f É um arquivo normal
-g O bit SGID está ativado
-G O grupo do arquivo é o do usuário atual
-k O sticky-bit está ativado
-L O arquivo é um link simbólico
-O O dono do arquivo é o usuário atual
-p O arquivo é um named pipe
-r O arquivo tem permissão de leitura
-s O tamanho do arquivo é maior que zero
-S O arquivo é um socket
-t O descritor de arquivos N é um terminal
-u O bit SUID está ativado
-w O arquivo tem permissão de escrita
-x O arquivo tem permissão de execução
-nt O arquivo é mais recente (NewerThan)
-ot O arquivo é mais antigo (OlderThan)
-ef O arquivo é o mesmo (EqualFile)
Profa. Dora 30 que disponibilizará os comandos embutidos no interpretador de comandos. Uma das coisas essenciais para o aprendizado é sair coletando exemplos de outros scripts e ir estudando-os minuciosamente.
Procure sempre comandos e expressões novas em outros scripts e em manpages dos comandos.
Profa. Dora 31
NOME DO ALUNO
NÚMERO
LISTA
–
08
Exercício 01
Que recebe o nome de um arquivo e verificar se o mesmo existe ou não no diretório home.
Exercício 02
Que recebe o caminho e procura um arquivo nesse caminho
Exercício 03
Que recebe um caminho verifica se existe ou não. Existindo recebe o nome de um arquivo e verifica se existe ou não o arquivo. Caso exista o arquivo exiba seu conteúdo.
Exercício 04
Que receba um determinado path verifique sua validade. Caso exista, receba o nome de um arquivo, verifique se o mesmo contém um texto. Caso exista o texto exiba seu conteúdo.
Exercício 05
Profa. Dora 32
Capitulo 11
Seleção Múltipla
Qual seria a estratégia para criar um script que permitisse gerar um menu escolhendo uma determinada atividade?
Para tanto, deve-se conhecer a estrutura if encadeado (por exemplo), então:
Fluxograma Algoritmo
Se <condição> então <instrução>
:
<instrução>
Senão Se <condição> então < instrução >
:
< instrução >
Senão Se <condição> então < instrução >
:
< instrução > Senão
< instrução > :
< instrução > Fim Se
Sintaxe em Linux
if <condição>; then <instrução> :
<instrução>
elif <condição >; then <instrução>
:
<instrução>
elif <condição >; then <instrução>
:
<instrução> else
<instrução> :
<instrução> fi
Profa. Dora 33 #!/bin/bash
clear;
echo “+---+”
echo “| M E N U |”
echo “| 1. Limpar a tela |”
echo “| 2. Mostrar o diretorio home |”
echo “| 3. Exibir o arquivo NOTA |”
echo “| 4. Sair |”
echo “+---+”
echo
echo –n “Qual a opção desejada ... “
read opcao
If [ $opcao = “1” ]; then
clear
echo “A tela foi limpa...” elif [ $opcao = “2” ]; then
clear
cd /home
ls
elif [ $opcao = “3” ]; then
clear
cat Nota
elif [ $opcao = “4” ]; then
exit
Profa. Dora 34 fi
Executando temos:
Se a opção for 1
Se a opção for 2
Profa. Dora 35 Se a opção for 4
Se a opção não for 1 ou 2 ou 3 ou 4, então:
Estrutura Case
Através desse comando também teremos a oportunidade de resolver estruturas seletivas que irão atender uma demanda em função da escolha de uma opção.
Profa. Dora 36 Caso <variavel> seja
opção 1) parametro ;;
opção 2) parâmento ;;
:
opção n) parametro ;;
opção *) parametro ;;
Fim Caso
case <variavel> in
1) parametro ;;
2) parametro ;;
:
n) parametro ;;
*) parametro ;;
esac
Obs.: * considera qualquer outro valor da variavel que não valida o processo de escolha feito por esse encadeamento.
Vamos criar um exemplo para utilizar essa estrutura, assim entre no vi e digite os códigos a seguir:
#!/bin/bash
Principal () {
clear;
echo “+---+”
echo “| M E N U |”
echo “| 1. Limpar a tela |”
echo “| 2. Mostrar o diretório home |”
echo “| 3. Exibir o arquivo NOTA |”
echo “| 4. Sair |”
Profa. Dora 37 echo
echo –n “Qual a opção desejada ... “; read opcao
case $opcao in
1) Limpa ;;
2) Mostra ;;
3) Exibe ;;
4) exit ;;
*) Erro ;;
esac
}
Limpa () {
clear
echo “Tela foi limpa... “
sleep 1
Principal
}
Mostra () {
clear cd /home ls sleep 1 Principal }
Exibe () {
Profa. Dora 38 sleep 1
Principal
}
Erro () {
clear
echo “Opção errada...”
sleep 1
Principal
}
Principal
Observações sobre o script:
O comando exit finaliza o script.
O comando sleep é um temporizador
O termo Principal em cada estrutura do case fará sempre o retorno ao menu.
Profa. Dora 39
NOME DO ALUNO
NÚMERO
LISTA
–
09
Crie um script que quando executado solicite uma senha
Se a senha estiver errada encerra deve-se encerrar o script.
Caso a senha esteja correta.
Deve ser feito um menu com as seguintes características, a saber:
1. Identificar um usuário
2. Criar um usuário
3. Apagar um usuário
Profa. Dora 40
Capitulo 12
Estrutura de repetição
Laço For
O laço for vai substituindo uma variável por um valor, e vai executando os comandos pedidos, como mostrado no quadro abaixo:
Fluxograma Algoritmo Sintaxe em Linux
Para<var>ate <var> faça
<instrução>
:
<instrução>
< instrução >
:
< instrução >
Fim
for var in var; do
<instrução>
:
<instrução>
<instrução>
:
<instrução>
Profa. Dora 41 Exemplo – 01:
Façamos agora mais um script utilizando a estrutura FOR, como mostra a figura a seguir:
Profa. Dora 42 Exemplo – 02:
Faça um script que receba um número inteiro qualquer e a partir dessa informação gere a tabuada do referido número, como mostra o layout a seguir:
Profa. Dora 43 Exemplo – 03:
Vamos criar um cenário operacional, isto é, estando no diretório home, crie dois diretórios um denominado texto e outro denominado backup.
Entre no diretório texto e crie os seguintes arquivos: teoria.txt, pratica.txt, comandos.txt.
Retorne ao diretório home e crie então um script que irá gerar o backup de todos os arquivos txt e move-los para o diretório backup com extensão bkp.
Profa. Dora 45
NOME DO ALUNO
NÚMERO
LISTA
–
10
Para executar essa lista iremos inicialmente criar um cenário, isto é:
1. Estando no diretório home
2. Crie um diretório denominado texto
3.
Ingressando no diretório texto abra o editor de texto “vi” e digite
o seguinte texto: Testando uma estrutura de laço. Grave o
mesmo com o seguinte nome a.txt
4. Retorne ao diretório home e ai crie um script capaz de ir ao
diretório texto automaticamente e localize o arquivo a.txt e então
exiba o conteúdo do arquivo separando as palavras que o
compõem por um X na frente e um X atrás, como mostra o
layout a seguir.
Profa. Dora 46
Capitulo 13
Estrutura de repetição
Laço While
O while testa continuamente uma expressão, até que ela se torne falsa.
Fluxograma Algoritmo Sintaxe em Linux
Enquanto <condição > faça
<instrução>
:
<instrução>
< instrução >
:
< instrução >
Fim
while <condição>; do
<instrução>
:
<instrução>
<instrução>
:
<instrução>
Profa. Dora 47 Exemplo 01:
Faça um script que receba um peso, sendo esse composto só por números inteiros. Caso o peso seja negativo ou maior que 300 se deve exibir a mensagem de erro “Dado errado...” dar um tempo de 2 segundos e retornar a pedir o peso. Se o peso fornecido for menor que 55 exibamos a mensagem “Nossa como você está magro”. Se o peso estiver entre 55 e 80 exiba “Você está com um bom peso” e caso o peso seja superior a 80 exiba “Você está precisando fazer um regime” dê um tempo de 2 segundos para visualizar a mensagem.
Profa. Dora 48 Exemplo 02:
Faça um script que receba por argumento um ou mais parâmetros e a partir disso seja feita uma identificação de cada argumento e sua respectiva posição. Caso não seja fornecido nenhum parâmetro exiba mensagem orientando o usuário.
Observação:
Profa. Dora 49
NOME DO ALUNO
NÚMERO
LISTA
–
11
Exercicio 01:
Escrever script para exibir a soma de todos os dígitos de um determinado número. Como mostra a figura a seguir:
Exercício 02:
Faça um script capaz de identificar se você irá mudar para letra Maiúscula ou Minúscula, uma vez reconhecida a escolha deve-se informar o diretório que irá sofrer essa alteração, então todos os arquivos desse diretório deverão ser remodelados em função do caractere especificado. Veja o layout abaixo para esclarecer qualquer dúvida.
Profa. Dora 50
Capitulo 14
Comandos tratamento de texto
Comando cut é um delimitador de arquivos, onde pode ser utilizado para delimitar um arquivo em colunas, numero de caracteres ou por posição de campo.
Sintaxe: cut <opções> <arquivo>
Opções mais utilizados:
-d: Especifica o caractere delimitador;
- f: Informa a posição do campo;
Exemplo: cut -d “:” -f 1,3,5 /etc/passwd
Ira mostrar as colunas 1, 3 e 5 do arquivo /etc/passwd com o delimitador “:”.
Comando sed procura e substitui padrões em textos, mostrando o resultado em STDOUT.
Sintaxe: sed <opções> 'comando e expressão relugar' <arquivo original>
Exemplo: sed -e ' /^#/d' /boot/grub/menu.lst
Nesse caso, todas as linhas em branco do arquivo /boot/grub/menu.lst serão excluídas das visualização em STDOUT (sem alterar o arquivo original).
Opção:
-e: Executa uma expressão regular;
Profa. Dora 51 g: Substituir todas as ocorrências;
d: Apagar a linha;
Nesse seu caso, pode tentar o comando abaixo, supondo que seu arquivo tenha 16 linhas (por exemplo):
# sed -e 1,4d -e 8,\$d <nome arquivo> ou
# sed -e 1,4d -e 8,16d <nome do arquivo>
Se quiser, pode criar um novo arquivo com o resultado do sed:
# sed -e 1,4d -e 8,16d <nome do arquivo original> > <nome do novo arquivo>
Comando grep procura por um texto dentro de um arquivo(s) ou no dispositivo de entrada padrão.
Sintaxe: grep [expressão] [arquivo] [opções]
Onde:
expressão
palavra ou frase que será procurada no texto. Se tiver mais de 2 palavras você deve identifica-la com aspas "" caso contrário o grep assumirá que a segunda palavra é o arquivo! Para entender melhor o funcionamento da expressão, ver o livro Expressões regulares
arquivo
Arquivo onde será feita a procura.
opções -A [número]
Mostra o [número] de linhas após a linha encontrada pelo grep.
-B [número]
Mostra o [número] de linhas antes da linha encontrada pelo grep.
Profa. Dora 52 -h, --no-filename
Não mostra os nomes dos arquivos durante a procura.
-i, --ignore-case
Ignora diferença entre maiúsculas e minúsculas no texto procurado e arquivo.
-n, --line-number
Mostra o nome de cada linha encontrada pelo grep.
-U, --binary
Trata o arquivo que será procurado como binário.
Se não for especificado o nome de um arquivo ou se for usado um hí-fen "-", grep procurará a string no dispositivo de entrada padrão. O grep faz sua pesquisa em arquivos texto. Use o comando zgrep para pesquisar diretamente em arquivos compactados com gzip, os comandos e opções são as mesmas.
Exemplo: grep "capitulo" texto.txt, ps ax|grep inetd, grep "capitulo" texto.txt -A 2 -B 2.
Comando tr é usado para converter caracteres, ou melhor, trocar um conjunto por outro.
As opções mais usadas são:
-d : Elimina os caracteres especificados.
-s : Comprime a seqûencia de caracteres repetidos.
Exemplo: fernandopaiva@Tux:$ cat arquivo.txt | tr a-z A-Z
Neste exemplo o comando tr troca todas as letras de a a z para maiúsculas.
Profa. Dora 53 Sintaxe: uniq <arquivo>
Exemplo: Imagine que você tem um arquivo com alguns nomes como é mostrado a seguir: #cat nomes Jonathan Lilian Lilian Danilo Daphne Daphne Jonathan #uniq nomes Jonathan Lilian Danilo Daphne Jonathan
Comando short permite organizar um arquivo em ordem crescente (A-Z) ou decrescente (Z-A).
Sintaxe crescente: short <nome do arquivo>
Sintaxe decrescente: short –r <nome do arquivo>
Comando paste permite combinar vários arquivos em um só estabelecendo uma linha de equivalência entre as linhas dos diversos arquivos, separando os campos com TAB.
Profa. Dora 54 #cat pessoas
Lilian
Jonathan
Danilo
Daphne
#cat email
lilian@bol.com.br
jonathan@yahoo.com
danilo@terra.com.br
daphne@globo.com
#paste pessoas email
Lilian lilian@bol.com.br
Jonathan Jonathan@yahoo.com
Danilo danilo@terra.com.br
Profa. Dora 55
NOME DO ALUNO
NÚMERO
LISTA
–
12
1. Recebe dois números como parâmetro e mostra a relação entre eles. Exemplo:
prompt$ ./relacao.sh 3 5
3 é menor que 5
prompt$ ./relacao.sh 5 3
5 é maior que 3
prompt$ ./relacao.sh 5 5
5 é igual a 5
2. Recebe um número como parâmetro e o diminui até chegar a zero, mostrando na tela cada passo, em uma mesma linha.
Exemplo:
prompt$ ./zerador.sh 5
5 4 3 2 1 0
prompt$ ./zerador.sh 10
10 9 8 7 6 5 4 3 2 1 0
3. Recebe duas palavras como parâmetro e verifica se a primeira palavra está contida dentro da segunda. Só mostra mensagem informativa em caso de sucesso, do contrário não mostra nada.
Exemplo:
Profa. Dora 56
prompt$ ./substring.sh banana prompt$ ./substring.sh
4. Mostra na tela "grudados" todos os parâmetros recebidos na linha de comando, como uma única palavra.
Exemplo:
prompt$ ./juntatudo.sh a b c d e f verde azul abcdefverdeazul
5. Do arquivo /etc/passwd, mostra o usuário e o nome completo de cada usuário do sistema (campos 1 e 5) separados por um TAB.
Exemplo:
prompt$ ./users.sh ftp FTP User
nobody Nobody
named Domain name server xfs X Font Server
mysql MySQL server
6. Do arquivo /etc/passwd, mostra todos os shells (último campo) que os usuários usam. Não mostrar linhas repetidas.