




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Curso básico de shell script, ensina a como fazer programas básico usando shell script.
Tipologia: Manuais, Projetos, Pesquisas
1 / 118
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































É interessante como um ambiente operacional como o Unix pode possuir, embutido em um de seus interpretadores de comando, uma linguagem de programação completa, capaz de criar se for o caso, sistemas completos além de ferramentas que agilizam a operação e administração de sistemas.
Criado no final da década de 60, o Unix é um sistema operacional que começou como um ambiente de teste por estudantes que eram programadores e precisavam de um sistema operacional em que ferramentas independentes pudessem ser combinadas para obterem os resultados desejados.
Com a implementação da linguagem de programação Shell, o sistema foi tornando-se mais e mais poderoso. Podia-se combinar os recursos do Unix em forma de programas, e não somente no modo interativo.
Com esta obra procuro suprir para aqueles que vivem no ambiente Unix uma ferramenta tanto de referência como um tutorial. Referência porque por mais que usemos a ferramenta e nos atemos a um grupo de comandos, sempre esquecemos alguma funcionalidade que nos será útil algum dia. Tutorial por que para aqueles que querem aprender a linguagem Korn Shell, seja como mais uma nova linguagem ou como a primeira, poderá não só desenvolver sua lógica em uma linguagem completamente estruturada, mas também poderá sentir a diferença entre desenvolver programas no próprio sistema operacional e apenas criar arquivos com sequencias de comandos, pois às vezes mesmo no prompt de comandos, sentimos a necessidade de comandos para manipulação de strings, operações matemáticas, tratamento de variáveis, desvios, estruturas de laço (looping) e até mesmo colocar a saída de um comando em uma variável.
Procurei tornar esse livro o mais didático possível, de modo a ser entendido tanto pelos profissionais da área como por iniciantes no assunto. Coloquei ao longo do livro alguns exemplos, para que você possa ir se acostumando com o novo ambiente.
Complemento que, para iniciar neste livro você deve, como pré-requisito, conhecer o ambiente Unix em seu modo interativo, isto é, interagindo no prompt de comandos, embora no início do livro ocorra uma revisão rápida de conceitos do Unix e sobre o comportamento do Korn Shell em modo interativo. Mesmo assim, você deverá estar acostumado aos comandos básicos do Unix e, principalmente, ao uso do manual on-line pois, mesmo depois de anos e anos de uso do Unix, sempre tem uma opção ou parâmetro de algum comando que nunca conseguimos nos lembrar.
Espero poder, àqueles que estão à procura de uma obra sobre Korn Shell em português, ajudá-los a entender a linguagem e que, se for o caso, encontrar o caminho para vencer a resistência ao aprendizado e uso do Unix no que se refere à programação estruturada. Sugestões e críticas construtivas serão sempre bem vindas.
Bom aprendizado e boa sorte.
Rodivaldo Marcelo Raimundo Assessor Certificado em Gerenciamento de T.I. Auditor de Segurança da Informação Especialista em Sistemas Operacionais Unix
O Shell é um programa interativo que serve como interpretador de linha de comando com as seguintes funções:
Ele é responsável pela interface entre o usuário e o sistema operacional, traduzindo os comandos por ele digitados para serem executados pelo hardware.
O Korn Shell contém uma interface de programação interpretada, incluindo testes, desvios e loops. Aos programas criados usando a interface programada do Unix damos o nome de Shell-Script ou Shell Script.
Alias é um novo nome, ou apelido, para o comando. Para conseguir isso se usa o comando interno alias :
alias nome = string
Um alias pode ser usado para abreviar longas linhas de comando ou fazer com que comandos comportem-se diferente da execução padrão.
Se string contiver espaços, deverá ser digitada entre aspas (simples ou duplas).
Os aliases definidos possuem prioridade de execução em relação aos comandos do Unix. Quando atribuído interativamente, ficará ativo até o logout da sessão de terminal. Para que um alias esteja disponível no momento do logon, deve-se colocá-lo no arquivo /etc/profile (caso queira que os aliases estejam disponíveis para todos que se logarem), no arquivo .profile no diretório de login do usuário (ficando disponível somente para o usuário logado) ou no arquivo .kshrc , também existente no diretório de login do usuário. Exemplos:
alias cls=clear alias ls='ls –logt' alias lsf='ls –laF' alias rm='rm –i' alias del='rm –f' alias dir=ls
Para que os alias sejam carregados a partir do arquivo .kshrc - arquivo lido a cada execução do comando ksh - deve ser adicionada a seguinte linha no arquivo .profile do usuário:
export ENV=$HOME/.kshrc
Permite a recuperação da última linha de comando para ser executada.
Usando os comandos do editor de textos vi a linha poderá ser editada antes da execução.
Para ativar o recurso, deverá, no prompt de comando do Korn Shell, ser executado o seguinte comando:
set –o vi
Para que este recurso seja atribuído automaticamente no momento do logon, coloque o comando acima em seu arquivo .profile.
Para recuperar a linha de comando, pressione a tecla ESC e em seguida a tecla K , que no editor vi tem a função seta-para-cima.
editores de texto. Use os comandos de navegação do vi: L como seta-para-a-direita, H como seta-para-a-esquerda, K como seta-para-cima e J como seta-para-baixo. Os demais comandos de edição de texto do vi continuam valendo para a edição de linha de comando do Shell.
O ambiente do usuário descreve a sessão para o sistema, contendo as seguintes informações, geralmente armazenadas em variáveis de ambiente:
Muitos aplicativos necessitam que o ambiente seja customizado de alguma maneira. Isso é feito através da modificação do arquivo .profile do usuário. para que a customização valha de maneira geral, isso deve ser definido no arquivo /etc/profile.
do sistema operacional - usuário root - ou outro usuário com permissões equivalentes.
Variáveis do Shell são atribuídas da seguinte maneira:
NOME_DA_VARIAVEL = conteúdo
Isto pode ser digitado como uma linha de comando ou em uma linha de um Shell Script-script.
seja feita corretamente, não sendo interpretada como um comando e seus argumentos separados por espaços. Caso o conteúdo da variável contenha espaços este deverá ser atribuído entre aspas (simples ou duplas) ou serão mostrada mensagens de erro.
PATH – relação de diretórios, usada pelo Shell para a pesquisa de comandos. Os diretórios a serem
pesquisados devem estar separados por dois pontos (:). Exemplo:
export PATH=/usr/bin:/etc:/bin:/home/user1:.
variável PATH. Se algum programa estiver no diretório corrente que não o que pensa estar os resultados podem ser imprevisíveis ou desastrosos.
TERM – descreve o tipo de terminal. Deve ser atribuído um valor de acordo com o terminal em
uso. Para a maioria dos aplicativos usa-se o valor vt100 , mas pode assumir outros valores dependendo do fabricante do terminal, ou da necessidade para um aplicativo de um tipo de
1 - Crie um alias chamado limpatela que execute o comando clear.
2 - Coloque o alias criado anteriormente no seu arquivo .kshrc. Faça com que seja carregado a cada execução de shell ou em cada login efetuado
3 - Altere o comportamento dos seguintes comandos de acordo com as solicitações abaixo:
Uma característica interessante no Shell é a capacidade de podermos manipular textos, números e até saída de comandos através de variáveis. A isso chamamos substituição do Shell.
Existem 3 tipos de substituição no Shell:
Esses métodos de substituição são utilizados para acelerar a execução e a digitação da linha de comando, mas serão bastante úteis quando usados no desenvolvimento de aplicativos em Korn Shell.
Cada variável terá um valor a ela associado. Quando o nome de uma variável for precedido por um sinal de $ (dólar) o Shell substituirá o parâmetro pelo conteúdo da variável. Este procedimento é conhecido como Substituição de Variável. Uma das maneiras de exibirmos o conteúdo de uma variável é usando o comando echo:
echo $ PATH
/usr/bin:/usr/contrib/bin:/usr/local/bin
Ou pode ser passada como argumento para um comando:
ARQUIVO=/home/morro.txt
more $ ARQUIVO
Pode-se também alterar uma variável utilizando a mesma e/ou outra variável:
PATH= $ PATH: $ HOME:.
Preste atenção no exemplo de concatenação abaixo:
TXT1=Casa
TXT2=Mae
TXT3=Joana
echo $ TXT1da $ TXT2 $ TXT
MaeJoana
echo ${ TXT1 } da $ TXT2 $ TXT
CasadaMaeJoana
Observe que no último exemplo foram usadas as chaves para circundar o nome da variável, senão o Shell poderia interpretar a variável como TXT1da o que seria um nome de variável diferente de TXT1. Neste caso a variável TXT1da não existe, retornando uma string nula para a concatenação.
A substituição de comandos é usada para substituir um comando por seu resultado dentro da mesma linha de comando. Isto será útil quando for necessário armazenar a saída de um comando em uma variável ou passar essa mesma saída para outro comando. A sintaxe utilizada é:
$( comando )
A substituição de comandos permite que você capture o resultado de um comando e utilize-o como um argumento para outro comando ou armazene sua saída em uma variável. Veja os exemplos a seguir:
DIR_ATUAL= $(pwd)
cp $(cat filelist.txt) /home/user1/backup
A barra invertida no final da linha informa ao shell que o comando continua na linha seguinte, o que gera um prompt secundário ( > ) para que a linha seja completada. Isto é muito útil quando a linha de comando digitada começa e estourar os limites visíveis da tela.
A substituição do til é executada de acordo com as seguintes regras:
cd ~ user10 - vai para o diretório /home/user
ls -logtr ~ user5/bin - lista o conteúdo do diretório /home/user5/bin
HOME=/home/user echo ~ - retorna /home/user ls –lF ~ /file1 - será substituído por /home/user3/file
PWD=/home/user3/tree
ls –logt ~+ /poodle - Será substituído por /home/user3/tree/poodle
OLDPWD=/home/user3/mail
ls ~- - Será substituído por /home/user3/mail
Muitos caracteres no sistema Unix tem significado especial para o Shell. Por exemplo, o espaço em branco é o delimitador entre comandos e argumentos. O carriage-return (CR) dá o sinal para o Shell executar a linha introduzida. O $ é usado para mostrar o valor associado a uma variável.
Ha situações em que você quer que o Shell não interprete o significado especial associado a esses caracteres. Você precisa apenas do caractere literal. Portanto, o sistema Unix deve oferecer um mecanismo que remova ou omita o significado especial de um determinado caractere. Esse mecanismo é conhecido como Quoting.
Os caracteres usados no mecanismo de Quoting são os seguintes:
A barra invertida () remove o significado do caractere situado imediatamente depois ela.
A barra invertida sempre remove o significado do próximo caractere sem exceções. Exemplos:
echo a \ omite o efeito do próximo caractere echo a ** omite o efeito do próximo caractere
COR=vermelho ** branco ** e ** azul echo o valor de ** $COR e $COR o valor de $COR e vermelho branco e azul
** tres quatro um dois tres quatro
As aspas simples (' ') também desativam a interpretação especial dos caracteres especiais. Todos os significados dos caracteres especiais situados entre aspas simples são omitidos. As aspas simples não podem ter seu significado omitido porque são necessárias para abrir e fechar a string assinalada. Exemplos de uso de aspas simples:
COR= ' vermelho branco e azul ' echo ' o valor de $COR e $COR ' o valor de $COR e $COR
COR= ' Ciano, Fucsia, Roxo, Branco e Azul ' echo ' o valor de $COR e ' $COR o valor de $COR e Ciano, Fucsia, Roxo, Branco e Azul
echo 'this doesn't work'
faltou fechar a segunda aspa'
this doesnt work
faltou fechar a segunda aspa
echo ***** arq_temp.001 arq_temp.002 arq_temp.003 arq_temp.004 arq_temp. echo '*****'
echo ###########
echo '###########' ###########
Aspas duplas ( " " ) são menos abrangentes. A maior parte dos caracteres especiais situados entre
aspas duplas perdem o significado. As exceções são o símbolo $ (quando usado para substituição de variáveis e de comandos), { nome de variável } ,a barra invertida ( ** ), a crase ( ` ) e a aspa dupla ( " ), que é exigida para fechar a string assinalada. Você pode usar a barra invertida ou aspas simples entre as aspas duplas para omitir o significado de $ ou ". Exemplos:
COR="vermelho, amarelo branco e azul" echo "o valor de $ COR e $COR" o valor de $COR e vermelho, amarelo branco e azul
LOGNAME=$(whoami) DIR_CORR= " $LOGNAME - seu diretorio atual e $(pwd) " echo $DIR_CORR Administrador - seu diretorio atual e /home/Administrador
echo "todos estao aqui, \, ', ",{ } ( )" todos estao aqui, , ', ",{ } ( )