SlideShare uma empresa Scribd logo
Escrito por Vivek G. Gite.
Cyberciti Computers & nixCraft, Pune, ÍNDIA.
Machine Translated by Google
Como instalar o Linux
Onde posso usar o Linux?
Como obter o Linux?
O que é kernel?
Variáveis no shell
Regras para nomear nomes de variáveis (UDV e variáveis de sistema)
Como definir variáveis definidas pelo usuário (UDV)
O que é Linux?
Capítulo 2: Introdução à programação Shell
Como escrever script de shell
Quem desenvolveu o Linux?
Por que escrever Shell Script?
Capítulo 1: Introdução rápida ao Linux
Mais sobre a Shell...
O que é Linux Shell?
Copyright © 1999-2002 por Vivek G. Gite
<vivek@nixcraft.com>
Como imprimir ou acessar o valor do comando echo UDV (variáveis definidas
pelo usuário)
Como usar o Shell O
que é Shell Script?
(Formalmente conhecido como www.vivek-tech.com)
Tutorial de script de shell
do Linux v1.05r3
Um manual para iniciantes
http://www.cyberciti.biz/pdf/lsst/index.html (1 de 5) [29/07/2002 18:50:01]
Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes
Índice
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/index.html (2 de 5) [29/07/2002 18:50:01]
Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes
Capítulo 4: Comandos avançados de script de shell
Tomada de decisão em shell script (ou seja, comando if) comando
de teste ou [expr] if...else...fi
Loops if-then-else multiníveis
em scripts de shell for loop
Loop for
aninhado loop while
A instrução
case Como depurar o
script de shell?
/dev/null - para enviar saída indesejada da variável local e
global do programa Shell (comando de exportação)
Mais comandos em uma linha de comando
Processamento de linha de
comando Por que argumentos de linha de comando
são necessários Redirecionamento de saída/entrada padrão, ou seja, redirecionamento
de
entrada
- saída Filtro de tubos
O que é processos Por que
processo é necessário Comando(s) Linux Relacionado(s) ao processo
Ifs aninhados
Capítulo 3: Construções de linguagem estruturada de shells (bash)
Aritmética do Shell
Mais sobre cotações
Status de
saída Os curingas da
instrução de leitura (abreviação do nome do arquivo ou metacaracteres)
Execução condicional, ou seja, && e ||
Redirecionamento de E/S e descritores de
arquivo
Funções Interface do usuário e utilitário de diálogo
- Parte I Interface do usuário e utilitário de diálogo
- Parte II Caixa de mensagens (msgbox) usando o
utilitário de diálogo Caixa de confirmação (caixa yesno) usando o
utilitário de diálogo Entrada (inputbox) usando
o utilitário de diálogo Interface do usuário usando o utilitário de diálogo -
Juntando tudo
comando trap O comando shift
Machine Translated by Google
Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes
http://www.cyberciti.biz/pdf/lsst/index.html (3 de 5) [29/07/2002 18:50:01]
Removendo linhas duplicadas do arquivo de banco de dados de texto usando o utilitário uniq
Manipulação de dados usando o utilitário awk
utilitário sed - Editando arquivo sem usar o editor
comando getopts
Encontrando padrão correspondente usando o utilitário grep
Localizar e substituir (substituindo expressão regular)
Substituindo palavra pela confirmação do usuário
Encontrando palavras
O utilitário de junção
Copiando linhas
Mais exemplos de sed
Procurando as palavras
Traduzindo intervalo de caracteres usando o utilitário tr
Capítulo 8: Exemplos de Shell Scripts
Imprimindo texto na tela
Selecionando parte de um arquivo usando o utilitário cut
Convertendo caracteres minúsculos em maiúsculos
Capítulo 7: awk revisitado
Introdução ao awk Variáveis
predefinidas do awk Fazendo
aritmética com awk Variáveis
definidas pelo usuário no awk Uso
da instrução printf Uso da
especificação de formato Código if
condição no awk Loops
no awk Exemplos
da vida real no awk awk
diversos sed -
Introdução rápida
Redirecionamento a saída do comando sed
Como escrever scripts sed?
Juntando linhas usando o utilitário paste
Excluindo linhas
Capítulo 6: Aprendendo expressões com ex
Capítulo 5: Utilitários essenciais para usuários avançados
Usando intervalo de caracteres em expressões regulares
Usando & como caractere de substituição especial
Preparando-se para um tour rápido de utilitários essenciais
Começando com ex
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/index.html (4 de 5) [29/07/2002 18:50:01]
Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes
Implementação do processo em segundo plano:
Relógio digital usando shell script Interface
de usuário e funções em shell script: Shell script para
implementar sistema baseado em menu.
Loops usando loop while e for: Imprime
nos. como 5,4,3,2,1 usando loop while Imprimindo
os padrões usando loop for.
Comando de manuseio/eco de tela com código de sequência de escape: Shell
script para imprimir a mensagem "Hello World", em negrito, efeito Blink e em cores diferentes como vermelho, marrom etc.
Capítulo 9: Outros Recursos
Manipulação de linha de comando (args):
Adicionando 2 números. fornecido como argumentos de linha
de comando Calculando a média de números fornecidos em argumentos de linha
de comando Descobrindo o maior número de três números fornecidos como argumentos de linha de comando
Script de shell para implementar a instrução getopts.
Aritmética em shell script: Executando
cálculo de número real em shell script Convertendo número decimal
em número hexadecimal Calculando fatorial de determinado número
Manipulação de arquivos: Shell script para
determinar se
determinado arquivo existe ou não.
Calculadora matemática básica (declaração de caso)
Desenvolvimento de lógica:
Shell script para imprimir determinados números, soma de todos os
dígitos Shell script para imprimir contém o arquivo de um determinado número de linha até o próximo número de linhas
Shell script para dizer Bom dia/Tarde/Noite ao fazer login no sistema Shell script para encontrar se o
ano inserido é bissexto ou não Classifique os cinco números fornecidos
em ordem crescente (uso de matriz)
etc.
Apêndice - A : Tutorial do servidor de arquivos Linux (LFST) versão b0.1 Rev. 2 Apêndice - B :
Referência de comandos do Linux (LCR)
Sobre o autor Sobre
este documento
Administração do sistema:
Obtendo mais informações sobre seu ambiente de trabalho por meio de script de shell Script de shell para
coletar informações úteis do sistema, como CPU, discos, RAM e seu ambiente
Script de shell para adicionar DNS Entery ao banco de dados BIND com servidores de nomes, servidores de correio (MX) e host padrão
Integrando
script awk com shell script: Script para converter nomes
de arquivos de MAIÚSCULAS para nomes de arquivos em minúsculas ou vice-versa.
Machine Translated by Google
(Cyeberciti Computers & nixCraft tem anos de experiência em Linux/Unix/FreeBSD. Se você precisar de algum
assistência, educação, suporte para Linux/Unix, escreva para sales@cyberciti.biz )
http://www.cyberciti.biz/pdf/lsst/index.html (5 de 5) [29/07/2002 18:50:01]
Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes
Lar Próximo
Acima Introdução rápida ao Linux
Machine Translated by Google
O que há de diferente neste tutorial
Organização do Capítulo
Público deste tutorial
Introdução
http://www.cyberciti.biz/pdf/lsst/ch01.html (1 de 2) [29/07/2002 18:50:59]
LSST v1.05r3 > Capítulo 1 > Introdução rápida ao Linux
Presumo que você tenha pelo menos conhecimento prático de Linux, ou seja, comandos básicos como criar, copiar, remover
arquivos/diretórios etc. ou como usar editores como vi ou mcedit e fazer login em seu sistema. Mas não espera nenhuma
experiência em linguagem de programação. Se você tiver acesso ao Linux, este tutorial fornecerá uma introdução fácil de
seguir ao script de shell.
Muitos outros tutoriais e livros sobre scripts de shell do Linux são muito básicos ou ignoram etapas intermediárias
importantes. Mas este tutorial manteve o equilíbrio entre os dois. Ele cobre muitos exemplos modernos de scripts de shell da
vida real que quase são perdidos por muitos outros tutoriais/documentos/livros. Usei uma
abordagem prática neste tutorial. A ideia é muito clara "faça você mesmo ou aprenda fazendo", ou seja, tentar as coisas
sozinho é a melhor maneira de aprender, então os exemplos são apresentados como scripts de shell completos e funcionais,
que podem ser digitados e executados
Os capítulos 1 a 4 mostram a maioria dos conceitos úteis e importantes de shell scripting. Capítulo 5, introdução às ferramentas
e utilitários que podem ser usados durante a programação inteligente do shell do Linux. Os capítulos 6 e 7 são sobre
expressões e expressões usadas principalmente por ferramentas como sed e awk. O Capítulo 8 está repleto de exemplos de
scripts de shell divididos em diferentes categorias. O Capítulo 9 fornece mais informações sobre recursos que podem ser usados
ao aprender o script de shell, como informações sobre o sistema de arquivos Linux, referência de comandos comuns do
Linux e outros recursos.
O Capítulo 1 apresenta conceitos básicos como o que é Linux, onde o Linux pode ser usado e continua explicando o
shell, shell script e kernel, etc.
Próximo
Este tutorial foi desenvolvido para iniciantes que desejam aprender o básico de script/programação de shell, além de introdução
a ferramentas poderosas como awk, sed, etc. ao ler este tutorial, você pode achar o manual bastante útil (digite man bash no
prompt $ para ver as páginas do manual). O manual contém todas as informações necessárias, mas não terá muitos
exemplos, o que deixa a ideia mais clara. Por esse motivo, este tutorial contém exemplos em vez de todos os recursos do
shell.
Anterior
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 1:
Introdução: Introdução rápida ao Linux
O Capítulo 2 mostra como escrever o shell script e executá-lo. Ele explica muitos conceitos básicos necessários para escrever
scripts de shell.
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/ch01.html (2 de 2) [29/07/2002 18:50:59]
LSST v1.05r3 > Capítulo 1 > Introdução rápida ao Linux
Espero que você tenha tanto prazer lendo este tutorial quanto eu tive ao escrevê-lo. Depois de ler este tutorial, se você
for capaz de escrever seus próprios scripts de shell poderosos, então acho que o propósito de escrever este tutorial foi
atendido e, finalmente, se você tiver tempo depois de ler este tutorial, envie-me uma mensagem de e-mail
sobre seu comentário/sugestão /questions e bugs (erros) fora do curso que você encontrar neste tutorial.
Os capítulos 6 e 7 fornecem mais informações sobre padrões, filtros, expressões e, claro, sed e awk são abordados
em profundidade.
Observe que isso indica conceitos avançados de script de shell. Você pode pular isso se for realmente novo em Linux ou
programação, embora isso não seja RECOMENDADO por mim.
Anterior
O Capítulo 5 apresenta programas utilitários poderosos que podem ser usados para diversos fins durante a
programação do shell.
O Capítulo 8 contém muitos exemplos de scripts de shell divididos em várias categorias, como desenvolvimento
lógico, administração de sistema, etc.
O Capítulo 4 apresenta muitos conceitos avançados de script de shell, como função, interface de usuário, descritores
de arquivo, manipulação de sinal, vários argumentos de linha de comando, etc.
O Capítulo 3 é sobre como tomar decisões em scripts de shell, bem como em loops em shell. Explica o que são
expressões, como o Shell entende as condições/decisões. Ele também mostra o conceito de aninhamento para
instruções de loop if e for e depuração de script de shell.
Lar
Acima Próximo O que é Linux?
Machine Translated by Google
O que é Linux?
http://www.cyberciti.biz/pdf/lsst/ch01sec01.html [29/07/2002 18:51:07]
LSST v1.05r3 > Capítulo 1 > O que é Linux?
• Semelhante ao Unix
• Gratuito
• Código aberto
Acima
Anterior Próximo
Capítulo 1: Introdução: Introdução rápida ao Linux
Tutorial de script de shell do Linux (LSST) v1.05r3
Lar
Anterior
Quem desenvolveu o Linux?
Próximo
• Sistema operacional de rede
Machine Translated by Google
Quem desenvolveu o Linux?
mais informações sobre Linus Torvalds, visite sua página inicial.
LSST v1.05r3 > Capítulo 1 > Quem desenvolveu o Linux?
http://www.cyberciti.biz/pdf/lsst/ch01sec02.html [29/07/2002 18:51:08]
sistema operacional de propósito específico chamado Minix (versão pequena do Unix e usada em ambiente acadêmico). Mas
Em 1991, Linus Torvalds estudou Unix na Universidade, onde utilizou experimentos educacionais especiais
O Minix tinha suas próprias limitações. Linus sentiu que poderia fazer melhor que o Minix. Então ele desenvolveu seu próprio
Lar
Anterior Próximo
Capítulo 1: Introdução: Introdução rápida ao Linux
Tutorial de script de shell do Linux (LSST) v1.05r3
Anterior O que é Linux? Como obter o Linux?
Próximo
versão do Minix, que agora é conhecido como Linux. Linux é código aberto desde o início do dia. Para
Acima
Machine Translated by Google
Site/Logotipo
Distribuições Linux.
SuSE Linux: http://www.suse.com/
Mandrake Linux:
http://www.mandrakesoft.com/
Próximo
Linux disponível para download pela rede, isso é útil se sua conexão com a internet for rápida. Outra forma é encomendar os
CD-ROMs o que economiza tempo, e a instalação a partir do CD-ROM é rápida/automática. Várias distribuições Linux
disponíveis. A seguir estão distribuições importantes do Linux.
Anterior
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 1:
Introdução: Introdução rápida ao Linux
Debian GNU/Linux: http://
www.debian.org/
Slackware Linux:
http://www.slackware.com/
Nota: Se você estiver na Índia, poderá obter a distribuição Linux da revista Leading Computer, como PC Quest (Até o PCQuest
tem seu próprio sabor Linux) ou se você estiver em Pune, Índia, visite nosso site para obter o Red Hat Linux ou qualquer outra
distribuição oficial do Linux. Observe que você também pode obter sua distribuição Linux com livros sobre Linux que você
compra na livraria local.
Caldera Linux:
http://www.calderasystems.com/
Red Hat Linux: http://
www.redhat.com/
LSST v1.05 > Capítulo 1 > Como obter o Linux?
http://www.cyberciti.biz/pdf/lsst/ch01sec03.html (1 de 2) [29/07/2002 18:51:11]
Como obter o Linux?
Machine Translated by Google
Acima Como instalar o Linux
Lar
Anterior Quem desenvolveu o Linux?
Próximo
LSST v1.05 > Capítulo 1 > Como obter o Linux?
http://www.cyberciti.biz/pdf/lsst/ch01sec03.html (2 de 2) [29/07/2002 18:51:11]
Machine Translated by Google
Lar
Anterior Como obter o Linux? Acima
Próximo
Capítulo 1: Introdução: Introdução rápida ao Linux
versão 6.2 e 7.2.
Por favor visite o LESSBS Página inicial do projeto para Guia de instalação visual rápida para Red Hat Linux
Tutorial de script de shell do Linux (LSST) v1.05r3
Onde posso usar o Linux?
Anterior Próximo
LSST v1.05 > Capítulo 1 > Como instalar o Linux?
http://www.cyberciti.biz/pdf/lsst/ch01sec04.html [29/07/2002 18:51:22]
Como instalar o Linux?
Machine Translated by Google
Onde posso usar o Linux?
Servidor Linux com diferentes sistemas operacionais clientes
• Robusto
• Estável
• Seguro
• Alto desempenho
Anterior Próximo
Você pode usar o Linux como sistema operacional de servidor ou como sistema operacional independente em seu PC. (Mas é mais adequado para servidor.) Como um
sistema operacional de servidor, ele fornece diferentes serviços/recursos de rede para o cliente. O sistema operacional do servidor deve ser:
Tutorial de script do Linux Shell (LSST) v1.05r3 Capítulo 1:
Introdução: Noções básicas do Linux Shell
O Linux oferece todas as características acima, além de seu sistema operacional de código aberto e gratuito. Portanto, o Linux pode ser usado como:
(1) Em estação de trabalho/ PC independente para processamento de texto, gráficos, desenvolvimento de software, internet, e-mail, bate-
papo, pequeno sistema de gerenciamento de banco de dados pessoal, etc.
(2) Em ambiente de rede como: (A) Arquivo
e impressão ou servidor de aplicativos Compartilhar os
dados, conectar o dispositivo caro como impressora e compartilhá-lo, e-mail dentro da LAN/intranet etc. são algumas das aplicações.
(B) O servidor Linux pode ser conectado à Internet, para que os PCs na intranet possam compartilhar a internet/e-mail, etc.
Você pode colocar seu servidor web que administra seu site ou transmitir as informações pela internet.
LSST v1.05 > Capítulo 1 > Onde posso usar Linux?
http://www.cyberciti.biz/pdf/lsst/ch01sec05.html (1 de 2) [29/07/2002 18:51:26]
Machine Translated by Google
Veja o MENOSBS projeto para obter mais informações sobre Linux Essential Services (conforme mencionado acima) e
Dispositivo de cache etc.
como implementá-los de maneira fácil para você ou sua organização.
• Servidor de grupo de trabalho
Próximo
No Data Center para diversas atividades de servidor como FTP, Telnet, SSH, Web, Mail, Proxy, Proxy
O que é kernel?
Lar
• Servidor Web
• Estação de trabalho de desenvolvimento de software
Portanto, você pode usar o Linux para:
Anterior
Acima
Como instalar o Linux
• Trabalho Pessoal
O servidor Linux pode atuar como servidor proxy/correio/WWW/roteador, etc.
http://www.cyberciti.biz/pdf/lsst/ch01sec05.html (2 de 2) [29/07/2002 18:51:26]
LSST v1.05 > Capítulo 1 > Onde posso usar Linux?
•
Machine Translated by Google
O Kernel decide quem utilizará esse recurso, por quanto tempo e quando. Ele executa seus programas (ou configura para
dados, dados de impressão na impressora, memória, gerenciamento de arquivos etc.
• Gerenciamento de arquivos
Tutorial de script de shell do Linux (LSST) v1.05r3
executar arquivos binários).
• Gerenciamento de memória
Anterior Onde posso usar o Linux?
Kernel é o coração do Linux OS.
• Gestão de processos
Ele gerencia recursos do Linux Os. Recursos significa recursos disponíveis no Linux. Por exemplo, facilidade para armazenar
• Gerenciamento de dispositivos
É a parte residente na memória do Linux. Ele executa a seguinte tarefa: -
Próximo
Anterior
O que é Linux Shell?
Próximo
Capítulo 1: Introdução: Noções básicas do Linux Shell
O kernel atua como um intermediário entre o hardware do computador e vários
• Gerenciamento de E/S
Lar
programas/aplicativo/shell.
Acima
http://www.cyberciti.biz/pdf/lsst/ch01sec06.html [29/07/2002 18:51:28]
LSST v1.05 > Capítulo 1 > LSST v1.05 > Capítulo 1 >
O que é kernel?
Machine Translated by Google
Vários shell disponíveis com Linux, incluindo:
Software grátis
a programação C
Anterior
Veja a página de manual.
$ gato /etc/conchas
Laboratórios AT&T Bell
--
Capítulo 1: Introdução: Noções básicas do Linux Shell
A sintaxe do shell C e
interpretador que executa comandos lidos do dispositivo de entrada padrão (teclado) ou de um arquivo.
BASH (Bourne-de novo
$ prompt. Este prompt depende do seu shell e ambiente que você definiu ou do seu sistema
Tutorial de script de shell do Linux (LSST) v1.05r3
Shell é um programa de usuário ou um ambiente fornecido para interação do usuário. Shell é uma linguagem de comando
Observação
tão poderosos quanto nossos Linux Shells são!
nós, para ler e escrever. Portanto, no Os existe um programa especial chamado Shell. A Shell aceita suas instruções ou
Ramey
Shell mais comum em
KSH (Korn Shell)
versão compatível de
CSH (C SHell)
TCSH é um aprimoramento
diferentes funções integradas.
O computador entende a linguagem de 0 e 1 chamada linguagem binária.
Desenvolvido por
Universidade da Califórnia
Fundação
Próximo
Nome do Concha
linguagem.
Digite $ man tcsh
Dica: Para encontrar todos os shells disponíveis em seu sistema, digite o seguinte comando:
Shell não faz parte do kernel do sistema, mas usa o kernel do sistema para executar programas, criar arquivos, etc.
Concha )
o uso é muito semelhante ao
--
Observe que cada shell faz o mesmo trabalho, mas cada um entende uma sintaxe de comando diferente e fornece
Administrador, portanto você pode receber um prompt diferente).
concha.
David Korn
shell (CSH).
querer. Se estivermos dando comandos do teclado, isso é chamado de interface de linha de comando (geralmente na frente do
Onde
Linux. É gratuito
TCSH
comandos em inglês (principalmente) e se for um comando válido, ele é passado para o kernel.
o Berkeley UNIX C
Qualquer um dos shells acima lê o comando do usuário (via teclado ou mouse) e informa ao Linux OS quais usuários
mas completamente
No MS-DOS, o nome do Shell é COMMAND.COM, que também é usado para a mesma finalidade, mas não é tão
Nos primórdios da computação, as instruções eram fornecidas em linguagem binária, o que era difícil para todos
Brian Fox e Chet
(Para BSD)
Bill Alegria
http://www.cyberciti.biz/pdf/lsst/ch01sec07.html (1 de 2) [29/07/2002 18:51:30]
LSST v1.05 > Capítulo 1 > O que é Linux Shell?
O que é Linux Shell?
Machine Translated by Google
Anterior O que é Kernel? Acima
$ eco $SHELL
Dica: Para encontrar seu shell atual, digite o seguinte comando
Como usar o Shell
Lar Próximo
http://www.cyberciti.biz/pdf/lsst/ch01sec07.html (2 de 2) [29/07/2002 18:51:30]
LSST v1.05 > Capítulo 1 > O que é Linux Shell?
Machine Translated by Google
programando o shell.
Veja o comando comum do Linux para sintaxe e exemplo, isso pode ser usado como referência rápida enquanto
Anterior O que é Linux Shell? O que é ShellScript?
Para usar o shell (você começa a usar o shell assim que faz login no sistema), basta digitar
comandos.
Capítulo 1: Introdução: Noções básicas do Linux Shell
Tutorial de script de shell do Linux (LSST) v1.05r3
Acima
Próximo
Próximo
Lar
Anterior
http://www.cyberciti.biz/pdf/lsst/ch01sec08.html [29/07/2002 18:51:31]
LSST v1.05 > Capítulo 1 > Como usar o Shell
Como usar o Shell
Machine Translated by Google
comandos. Isso é conhecido como shell script.
sequência de comando para arquivo de texto e diga ao shell para executar este arquivo de texto em vez de inserir o
Próximo
Tutorial de script de shell do Linux (LSST) v1.05r3
Script de shell definido como:
Por que escrever Shell Script?
Normalmente os shells são interativos. Significa que o shell aceita o comando seu (via teclado) e executa
Lar
eles. Mas se você usar o comando um por um (sequência de 'n' número de comandos), você poderá armazenar isso
Acima
Anterior
Anterior Próximo
Capítulo 1: Introdução: Noções básicas do Linux Shell
"Shell Script é uma série de comandos escritos em arquivo de texto simples. Shell script é exatamente como o arquivo em lote é MS-DOS
Como usar o Shell
mas tem mais poder que o arquivo em lote do MS-DOS."
http://www.cyberciti.biz/pdf/lsst/ch01sec09.html [29/07/2002 18:51:33]
LSST v1.05 > Capítulo 1 > O que é Shell Script?
O que é ShellScript?
Machine Translated by Google
Próximo
Anterior
• Economize muito tempo.
• Para automatizar alguma tarefa do dia a dia.
Capítulo 1: Introdução: Noções básicas do Linux Shell
• Útil para criar nossos próprios comandos.
• O shell script pode receber entradas do usuário, arquivá-las e exibi-las na tela.
Tutorial de script de shell do Linux (LSST) v1.05r3
• A parte de Administração do Sistema também pode ser automatizada.
Acima
Próximo
Lar
Mais sobre a Shell...
Anterior O que é Shell Script?
http://www.cyberciti.biz/pdf/lsst/ch01sec10.html [29/07/2002 18:51:34]
LSST v1.05 > Capítulo 1 > Por que escrever Shell Script?
Por que escrever Shell Script?
Machine Translated by Google
Tente entender o sistema operacional Linux
Distribuição Red Hat Linux). Todos os scripts também são testados no Red Hat Linux versão 7.2.
Tente entender o básico do shell do Linux
Tutorial de script de shell do Linux (LSST) v1.05r3
Anterior Por que escrever Shell Script?
Lar
Navegue na Web para ler o tutorial. (IE ou Netscape) Para a versão PDF você precisa de um leitor de PDF.
Neste tutorial estamos usando o shell bash.
Linux - shell bash. (Disponível em quase todas as distribuições Linux. Por padrão, bash é o shell padrão para
Introdução à programação Shell
Próximo
SO Linux (usei a distribuição Red Hat Linux versão 6.x+)
Capítulo 1: Introdução: Noções básicas do Linux Shell
Tente aprender a programação do shell do Linux
Acima
Anterior
Próximo
LSST v1.05 > Capítulo 1 > Noções básicas do Linux Shell
http://www.cyberciti.biz/pdf/lsst/ch01sec11.html [29/07/2002 18:51:36]
Objetivo deste tutorial (LSST v.1.5)
O que eu preciso para aprender este tutorial (LSST
Roteiro ?
Qual Shell estamos usando para escrever Shell
v.1.5)
Machine Translated by Google
Começaremos a escrever um pequeno script de shell, que imprimirá "Conhecimento é poder" na tela.
Nesta parte do tutorial você será apresentado à programação shell, como escrever scripts, executá-los, etc.
Antes de começar com isso você deve saber
• Como usar um editor de texto como o vi, consulte o comando vi comum para obter mais informações.
Capítulo 2: Introdução à programação Shell Próximo
Anterior
Tutorial de script de shell do Linux (LSST) v1.05r3
• Navegação básica de comandos
Acima
Próximo
Lar
Como escrever script de shell
Anterior Mais sobre Shell...
http://www.cyberciti.biz/pdf/lsst/ch02.html [29/07/2002 18:51:37]
LSST v1.05r3 > Capítulo 2 > Introdução à programação Shell
Introdução à programação Shell
Machine Translated by Google
(2) Depois de escrever o shell script, defina a permissão de execução para o seu script conforme
a
seguinte sintaxe: chmod permission your-script-name
(1) Use qualquer editor como vi ou mcedit para escrever scripts de shell.
Exemplos: $
chmod +x nome do seu script $ chmod 755 nome
do seu script
se você é novo no vi.
$ vi primeiro #
,
Próximo
Exemplo:
$. foo
Agora você está pronto para escrever o primeiro script de shell que imprimirá "Conhecimento é poder" na tela. Veja a lista de comandos comuns do vi
As etapas a seguir são necessárias para escrever o script Shell:
Exemplos: $
bash bar $ sh bar
$ ./bar
echo "Conhecimento é Poder"
Depois de salvar o script acima, você pode executá-lo da seguinte maneira:
$ ./first
Anterior
NOTA Na última sintaxe ./ significa diretório atual, mas apenas . (ponto) significa executar determinado arquivo de comando no shell atual sem
iniciar a nova cópia do shell. A sintaxe para. O comando (ponto) é o seguinte Sintaxe: . nome do
comando
Nota: Isso definirá a permissão de leitura, gravação e execução (7) para o proprietário, para o grupo e outras permissões são somente leitura e execução (5).
#Meu primeiro script de shell#
claro
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2:
Introdução à programação Shell
(3) Execute seu script como
sintaxe:
bash nome-seu-script sh
nome-seu-script ./nome-
seu-script
[Anúncio]
[Obtenha o domínio Cyberciti por apenas Rs.445 com 2 e-mails grátis]
LSST v1.05r3 > Capítulo 2 > Como escrever script de shell
http://www.cyberciti.biz/pdf/lsst/ch02sec01.html (1 de 2) [29/07/2002 18:51:39]
Como escrever script de shell
Machine Translated by Google
Como o Shell localiza o arquivo (meu próprio diretório bin para executar o script)
cal
Significado
A primeira tela ficará clara e, em seguida, Conhecimento é Poder será impresso na tela.
claro
claro
Próximo
Isso não executará o script, pois não definimos primeiro a permissão de execução para nosso script; para fazer isso digite o comando $
chmod 755 first $ ./first
#Meu primeiro script de
shell#
#
Sintaxe:
# comment-text
limpa a tela Para
imprimir mensagem ou valor de variáveis na tela,
usamos o comando echo, a forma geral do
comando echo é a seguinte sintaxe: echo
"Mensagem"
Introdução à programação Shell
# Script para imprimir informações do usuário que está atualmente logado e horário
Inicie o editor vi
Exercício:
1) Escreva o seguinte script de shell, salve-o, execute-o e anote sua saída.
Ponto Futuro: No final, por que a instrução exit 0 é usada? Consulte o status de saída para obter mais informações.
saída 0
$ vi primeiro
Dica: Para arquivos de script de shell, tente fornecer uma extensão de arquivo como .sh, que pode ser facilmente identificada por você como script de shell.
Comando(s) de script
echo "Olá $USER" echo "Hoje é c
";date echo "Número de login do usuário: c" ;
quem | wc -l echo "Calendário"
echo "Conhecimento é Poder"
Variáveis no Shell
Acima
data atual
Lar
#
# seguido de qualquer texto é considerado
comentário. O comentário fornece mais
informações sobre o script, explicação
lógica sobre o shell script.
$viginfo##
Anterior
[Obtenha o domínio Cyberciti por apenas Rs.445 com 2 e-mails grátis]
LSST v1.05r3 > Capítulo 2 > Como escrever script de shell
http://www.cyberciti.biz/pdf/lsst/ch02sec01.html (2 de 2) [29/07/2002 18:51:39]
[Anúncio]
Machine Translated by Google
LETRAS MAIÚSCULAS.
Nº de colunas para nossa tela
Nº de colunas para nossa tela
Próximo
SHELL=/bin/bash
a) $echo $HOME
PS1=[u@hW]$
Exercício:
Capítulo 2: Introdução à programação Shell
PATH=/usr/bin:/sbin:/bin:/usr/sbin
No Linux (Shell), existem dois tipos de variáveis:
Nosso nome de concha
Tutorial de script de shell do Linux (LSST) v1.05r3
um por vez).
BASH=/bin/bash
que é usado para armazenar nossos dados. O programador pode dar um nome exclusivo a este local/endereço de memória
LINHAS=25
Variável de sistema
Nossas configurações imediatas
das variáveis acima contém o seguinte:
Nosso tipo de sistema operacional
Nome de usuário que está atualmente conectado a este PC
Para processar nossos dados/informações, os dados devem ser mantidos na memória RAM do computador. A memória RAM é
letras mais baixas.
COLUNAS=80
BASH_VERSION=1.14.7(1)
(2) Variáveis definidas pelo usuário (UDV) - Criadas e mantidas pelo usuário. Este tipo de variável definida em
alunos Nosso nome de registro
NOME DE USUÁRIO=vivek
1) Se você deseja imprimir a localização do seu diretório inicial, dê o comando:
OU
(1) Variáveis de sistema - Criadas e mantidas pelo próprio Linux. Este tipo de variável definida em
Nosso nome de versão do shell
Anterior
Nosso diretório inicial
PWD=/home/alunos/Comum
OSTYPE=Linux
Nosso nome de concha
$echo $HOME
Significado
LOGNAME=alunos
Nosso diretório de trabalho atual
chamada variável de memória ou variável (é um local de armazenamento nomeado que pode assumir valores diferentes, mas apenas
$ echo $ NOME DE USUÁRIO
NOTA que algumas das configurações acima podem ser diferentes em seu ambiente PC/Linux. Você pode imprimir qualquer
dividido em pequenos locais, e cada local tinha um número único chamado local/endereço de memória,
Você pode ver as variáveis do sistema fornecendo comandos como $ set. Algumas das variáveis importantes do sistema são:
CASA=/casa/vivek
Nossas configurações de caminho
http://www.cyberciti.biz/pdf/lsst/ch02sec02.html (1 de 2) [29/07/2002 18:51:42]
LSST v1.05r3 > Capítulo 2 > Variáveis no Shell
Variáveis no Shell
Machine Translated by Google
Acima
Anterior Lar Próximo
Cuidado: Não modifique a variável do sistema, pois isso pode criar problemas em algum momento.
Como escrever script de shell
Qual dos comandos acima está correto e por quê? Clique aqui para responder.
(b) $ eco HOME
(UDV)
Como definir variáveis definidas pelo usuário
LSST v1.05r3 > Capítulo 2 > Variáveis no Shell
http://www.cyberciti.biz/pdf/lsst/ch02sec02.html (2 de 2) [29/07/2002 18:51:42]
Machine Translated by Google
nome da variável = valor
Sintaxe:
'valor' é atribuído a um determinado 'nome de variável' e o valor deve estar no lado direito = sinal.
Tutorial de script de shell do Linux (LSST) v1.05r3
$n=10
Anterior
Variáveis no shell
$vech=Ônibus
UDV e variável de sistema)
Para definir uma variável chamada n com valor 10
Para definir UDV use a seguinte sintaxe
$ 10=não # Erro, NÃO Ok, o valor deve estar no lado direito do sinal =.
Próximo
Próximo
Regras para nomear nomes de variáveis (ambos
Para definir a variável chamada 'vech' com valor Bus
Exemplo:
Capítulo 2: Introdução à programação Shell
Lar
Acima
Anterior
$ não = 10 # tudo bem
LSST v1.05r3 > Capítulo 2 > Como definir variáveis definidas pelo usuário (UDV)
http://www.cyberciti.biz/pdf/lsst/ch02sec03.html [29/07/2002 18:51:44]
(UDV)
Como definir variáveis definidas pelo usuário
Machine Translated by Google
(2) Não coloque espaços em ambos os lados do sinal de igual ao atribuir valor à variável. Por exemplo, na seguinte
declaração de variável não haverá erro $ no=10 Mas haverá
problema
para qualquer uma das seguintes declarações de variável: $ no =10 $ no= 10 $ no = 10
(1) O nome da variável deve começar com caractere alfanumérico ou sublinhado (_), seguido de um ou mais caracteres alfanuméricos.
Por exemplo, as variáveis de shell válidas são as seguintes HOME SYSTEM_VERSION vech
(3) As variáveis diferenciam maiúsculas de minúsculas, assim como o nome do arquivo
no Linux.
Por exemplo,
$ no=10 $
No=11 $
NO=20 $ nO=2 Acima de tudo estão nomes de variáveis diferentes, então para imprimir o valor 20 temos que usar $ echo $NO e
nenhum dos
seguintes $ echo $no # irá imprima 10, mas não 20
$ echo $No # imprimirá 11, mas não 20 $ echo $nO
# imprimirá 2, mas não 20
(5) Não use ?,* etc, para nomear seus nomes de variáveis.
Próximo
não
Anterior
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2:
Introdução à programação Shell
Tente imprimir seu valor emitindo o seguinte comando $ echo $vech
Nada será mostrado
porque a variável não tem valor, ou seja, variável NULL.
(4) Você pode definir a variável NULL da seguinte forma (variável NULL é uma variável que não tem valor no momento da definição)
Por exemplo, $ vech= $
vech=""
Próximo
Lar
Anterior
LSST v1.05r3 > Capítulo 2 > Regras para nomear nomes de variáveis (UDV e variáveis de sistema)
http://www.cyberciti.biz/pdf/lsst/ch02sec04.html (1 de 2) [29/07/2002 18:51:46]
Regras para nomear nomes de variáveis (ambos
UDV e variável de sistema)
Machine Translated by Google
(UDV)
Acima
Como imprimir ou acessar o valor do UDV
Como definir variáveis definidas pelo usuário
(Variáveis definidas pelo usuário)
http://www.cyberciti.biz/pdf/lsst/ch02sec04.html (2 de 2) [29/07/2002 18:51:46]
LSST v1.05r3 > Capítulo 2 > Regras para nomear nomes de variáveis (UDV e variáveis de sistema)
Machine Translated by Google
Para imprimir contém a variável 'vech' digite $
echo $vech
Defina a variável vech en da seguinte forma: $
vech=Bus $ n=10
Ele irá imprimir 'Bus', para imprimir contém a variável 'n' digite o comando da seguinte forma $
echo $n
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2:
Introdução à programação Shell
Para respostas clique aqui
Anterior Lar
Para imprimir ou acessar a UDV use a seguinte sintaxe
Q.5.Modifique acima e armazene a divisão de xey na variável chamada z Q.6.Aponte
o erro, se houver, no script a seguir
$ vi variscript # # # Script
para testar MEU conhecimento sobre variáveis! # meunome=Vivek myos = TroubleOS
myno=5 echo "Meu
nome é $meunome" echo
"Meu
sistema operacional é $myos" echo "Meu
número é myno, você pode ver este
número"
Sintaxe:
$nomedavariável
Q.2.Como definir a variável xn com valor Rani e imprimi-la na tela Q.3.Como imprimir a
soma de dois números, digamos 6 e 3?
Q.4.Como definir duas variáveis x=20, y=5 e depois imprimir a divisão de xey (ou seja, x/y)
Cuidado: Não tente $ echo vech, pois ele imprimirá vech em vez do valor 'Bus' e $ echo n, pois imprimirá n em vez do valor '10'.
Você deve usar $ seguido do nome da variável.
Anterior
Próximo
Próximo
Exercício
Q.1.Como definir a variável x com valor 10 e imprimi-la na tela.
http://www.cyberciti.biz/pdf/lsst/ch02sec05.html (1 de 2) [29/07/2002 18:51:48]
LSST v1.05r3 > Capítulo 2 > Como imprimir ou acessar o valor de UDV (variáveis definidas pelo usuário)
(Variáveis definidas pelo usuário)
Como imprimir ou acessar o valor do UDV
Machine Translated by Google
Acima
UDV e variável de sistema)
Regras para nomear nomes de variáveis (ambos
Comando de eco
LSST v1.05r3 > Capítulo 2 > Como imprimir ou acessar o valor de UDV (variáveis definidas pelo usuário)
http://www.cyberciti.biz/pdf/lsst/ch02sec05.html (2 de 2) [29/07/2002 18:51:48]
Machine Translated by Google
Opções
Acima
Exibe texto ou valor de variáveis na tela.
Tutorial de script de shell do Linux (LSST) v1.05r3
-n Não gera a nova linha final.
t guia horizontal
 barra invertida
Por exemplo, $ echo -e "Uma maçã por dia mantém longe attdoctorn"
Próximo
Use o comando echo para exibir texto ou valor da variável.
n nova linha
variáveis definidas)
r retorno de carro
echo [opções] [string, variáveis...]
Lar
b retrocesso
Anterior
Anterior
Como imprimir ou acessar o valor do UDV (User
Próximo
c suprimir a nova linha final
-e Habilite a interpretação dos seguintes caracteres de escape de barra invertida nas strings:
Capítulo 2: Introdução à programação Shell
Como exibir texto colorido na tela com efeitos de negrito ou piscar, como imprimir texto em qualquer linha ou coluna
Aritmética de casca
na tela, clique aqui para mais!
um alerta (sino)
http://www.cyberciti.biz/pdf/lsst/ch02sec06.html [29/07/2002 18:51:50]
LSST v1.05r3 > Capítulo 2 > Comando echo
Comando de eco
Machine Translated by Google
Para a última afirmação, não os seguintes pontos
Nota:
expr 20 %3 - Resto lido como 20 mod 3 e resto é 2. expr 10 * 3 - Multiplicação
use * e não * desde seu curinga.
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2:
Introdução à programação Shell
(1) Primeiro, antes da palavra-chave expr, usamos o sinal ` (aspas crases) e não o sinal (aspas simples, ou seja, '). Aspas atrás
geralmente são encontradas na tecla abaixo do til (~) no teclado do PC OU acima da tecla TAB.
Acima
Próximo
Mais sobre citações
Sintaxe:
expr op1 operador matemático op2
Comando de eco anterior
Lar
Exemplos: $
expr 1 + 3 $ expr 2 -
1 $ expr 10/2 $ expr
20% 3 $ expr 10 * 3 $
echo `expr 6 + 3`
(4) Aqui, se você usar aspas duplas ou simples, NÃO funcionará. Por exemplo, $
echo
"expr 6 + 3" # Irá imprimir expr 6 + 3 $ echo 'expr 6 +
3' # Irá imprimir expr 6 + 3
Próximo
Use para realizar operações aritméticas.
Consulte Substituição de parâmetros - Para economizar seu tempo.
(2) Em segundo lugar, expr também termina com `, ou seja, aspas anteriores.
Anterior
(3) Aqui expr 6 + 3 é avaliado como 9, então o comando echo imprime 9 como soma
http://www.cyberciti.biz/pdf/lsst/ch02sec07.html [29/07/2002 18:51:52]
LSST v1.05r3 > Capítulo 2 > Aritmética de Shell
Aritmética de casca
Machine Translated by Google
"Aspas Duplas" - Qualquer coisa colocada entre aspas duplas removeu o significado disso
Próximo
Significado
Tutorial de script de shell do Linux (LSST) v1.05r3
Caracteres de
aspas duplas (exceto  e $).
Exemplo:
$ echo "Hoje é data"
Não é possível imprimir a mensagem com a data de hoje.
Status de saída
Existem três tipos de citações
`
Lar
`Citação anterior` - Para executar o comando
Nome das citações
Acima
Citação anterior
Próximo
Anterior
Aritmética de casca
'
"
Capítulo 2: Introdução à programação Shell
$ echo "Hoje é `data`".
Ele imprimirá a data de hoje como Hoje é terça-feira, janeiro ..... Você pode ver que a instrução `date` usa aspas invertidas?
Anterior
Aspas simples 'Aspas simples' - Entre aspas simples permanece inalterado.
http://www.cyberciti.biz/pdf/lsst/ch02sec08.html [29/07/2002 18:51:53]
LSST v1.05r3 > Capítulo 2 > Mais sobre cotações
Mais sobre citações
Machine Translated by Google
Mas como descobrir o status de saída do comando ou script de shell?
Este valor é conhecido como Status de Saída.
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2:
Introdução à programação Shell
Simples, para determinar esse status de saída você pode usar $? variável especial do shell.
$echon$? $ eco
$?
$? variável útil, quer saber mais sobre essas variáveis do Linux, clique aqui para explorá-las!
(1) Se o valor de retorno for zero (0), o comando foi bem-sucedido.
$ oeste selvagem pode funcionar?
$ eco $?
$ data $
eco $?
(2) Se o valor de retorno for diferente de zero, o comando não foi bem-sucedido ou algum tipo de erro ao executar o comando/shell
script.
Exercício
Tente os seguintes comandos e não desça o status de saída: $ expr 1 +
3 $ echo $?
Anterior Próximo
$ echo Bem-vindo $ echo
$?
Por exemplo (este exemplo assume que unknow1file não existe em seu disco rígido) $ rm unknow1file
Ele mostrará o erro da
seguinte forma rm: não é possível
remover `unkowm1file': Esse arquivo ou diretório não existe e depois disso
se você der o comando $ echo $? ele
imprimirá
um valor diferente de zero para indicar erro. Agora dê o comando $ ls $ echo $?
Ele imprimirá 0 para indicar que o comando foi bem-sucedido.
Por padrão no Linux, se um determinado comando/shell script for executado, ele retornará dois tipos de valores que são usados
para ver se o comando ou shell script executado foi bem-sucedido ou não.
http://www.cyberciti.biz/pdf/lsst/ch02sec09.html (1 de 2) [29/07/2002 18:51:55]
LSST v1.05r3 > Capítulo 2 > Status de saída
Status de saída
Machine Translated by Google
Lar Próximo
Mais sobre citações
Anterior
Acima A declaração lida
http://www.cyberciti.biz/pdf/lsst/ch02sec09.html (2 de 2) [29/07/2002 18:51:55]
LSST v1.05r3 > Capítulo 2 > Status de saída
Machine Translated by Google
#
Seu primeiro nome, por favor: vivek
Anterior
Capítulo 2: Introdução à programação Shell
o teclado é armazenado (atribuído) à variável fname.
$ chmod 755 digaH
Curingas (abreviação de nome de arquivo ou meta
Tutorial de script de shell do Linux (LSST) v1.05r3
insere o nome no teclado (depois de fornecer o nome você deve pressionar a tecla ENTER) e insere o nome através
Execute-o da seguinte maneira:
leia variável1, variável2,...variávelN
Lar
leia nome
Use para obter entrada (dados do usuário) do teclado e armazenar (dados) na variável.
#
Anterior
Olá vivek, vamos ser amigos!
Próximo
#Script para ler seu nome no teclado
$ vi dizerH
$ ./digaH
Personagens)
Próximo
echo "Olá $fname, vamos ser amigos!"
Acima
O script a seguir primeiro pergunta ao usuário o nome e depois espera para inserir o nome do usuário por meio do teclado. Então usuário
Sintaxe:
echo "Seu primeiro nome, por favor:"
Status de saída
http://www.cyberciti.biz/pdf/lsst/ch02sec10.html [29/07/2002 18:51:56]
LSST v1.05r3 > Capítulo 2 > A instrução read
A declaração lida
Machine Translated by Google
$l é um*
extensão .c, mas o nome do arquivo deve
$ls ?
Próximo
$ ls /bin/[ac]*
$ls /bin/[!ao]
[..-..] Um par de caracteres separados por um sinal de menos indica um intervalo.
/bin/chgrp /bin/consolechars /bin/csh
Capítulo 2: Introdução à programação Shell
letras a,b,c
mostrará todos os arquivos
*
Exemplos
Tutorial de script de shell do Linux (LSST) v1.05r3
$ ls *.c
caracteres.
/Forma abreviada
têm 3 caracteres e nome de arquivo
extensão .c
Corresponde a qualquer um dos
/bin/arch /bin/awk /bin/bsh /bin/chmod /bin/ash /bin/nomebase /bin/cat /
bin/chown /bin/ash.static /bin/bash
Corresponde a qualquer caractere único.
$ls[abc]*
Se o primeiro caractere após [ for um ! ou um ^, então qualquer caractere não incluído será correspondido, ou seja, não
o nome começa com a letra 'a'
mostrará todos os arquivos cujos nomes
comece com 'ut'.
?
mostrará todos os arquivos cujo primeiro
[...]
$ ls /bin/[^ao]
Mas
Anterior
$ lsut*.c
mostrará todos os arquivos com
$ls*
Exemplo:
mostrará todos os arquivos começando com
Observação:
/bin/cpio
Corresponde a qualquer string ou grupo de
comece com fo
caracteres fechados
Significado
/bin/cp
Mostrará todos os nomes de arquivos começando com a letra a, b ou c como
mostre-nos o nome do arquivo que começa com a,b,c,e...o, como
Curinga
mostrará todos os arquivos com
têm 1 caractere mostrará
todos os arquivos cujos nomes
$ ls fo?
http://www.cyberciti.biz/pdf/lsst/ch02sec11.html (1 de 2) [29/07/2002 18:51:58]
LSST v1.05r3 > Capítulo 2 > Curingas (abreviação de nome de arquivo ou metacaracteres)
Curingas (abreviação de nome de arquivo ou meta
Personagens)
Machine Translated by Google
/bin/sh /bin/tcsh /bin/vi
/bin/sfxload /bin/tar /bin/usleep
/bin/ps /
bin/pwd /
bin/red /
bin/remadmin /bin/sed /bin/
rm /bin/
rmdir /bin/
rpm
Anterior
/bin/su /bin/uname /bin/ypdomainname
Mais comandos em uma linha de comando
/bin/setserial /bin/sync /bin/userconf /bin/zcat
Acima
/bin/classificar /bin/true /bin/wcomp
/bin/digaOlá /bin/stty /bin/umount /bin/xconf
Próximo
A declaração lida
/bin/rvi /
bin/rview
/bin/dormir /bin/tocar /bin/visualizar
Lar
http://www.cyberciti.biz/pdf/lsst/ch02sec11.html (2 de 2) [29/07/2002 18:51:58]
LSST v1.05r3 > Capítulo 2 > Curingas (abreviação de nome de arquivo ou metacaracteres)
Machine Translated by Google
Exemplos:
Para executar dois comandos com uma linha de comando.
Tutorial de script de shell do Linux (LSST) v1.05r3
$ data;quem
Lar
Acima
Próximo
Sintaxe:
Curingas (abreviação de nome de arquivo ou meta
Personagens)
comando1;comando2
para o mesmo propósito, você deve colocar ponto e vírgula entre a data e o comando who.
Próximo
Anterior
Irá imprimir a data de hoje seguida pelos usuários que estão logados no momento. Observe que você não pode usar
Capítulo 2: Introdução à programação Shell
Processamento de linha de comando
Anterior
$ data quem
http://www.cyberciti.biz/pdf/lsst/ch02sec12.html [29/07/2002 18:52:00]
LSST v1.05r3 > Capítulo 2 > Mais comandos em uma linha de comando
Mais comandos em uma linha de comando
Machine Translated by Google
Todo o resto na linha de comando é considerado argumento para este comando. Por exemplo
$ correio raj
eu
Anterior
3
correspondência
2
-r, -n e meuf
Capítulo 2: Introdução à programação Shell
grate_stories_of ?
$ mv y.bak y.ok
Comando
Tutorial de script de shell do Linux (LSST) v1.05r3
incitar. Agora surge mais uma pergunta : O que são comandos? O que aconteceu quando você digitou $ ls
$ cp e y.bak
OBSERVAÇÃO:
Ele imprimirá uma mensagem semelhante a - grate_stories_of: Esse arquivo ou diretório não existe.
Responder:
Tente determinar o comando e os argumentos dos seguintes comandos
1
y.bak e y.ok
mv
0
data
Tente o seguinte comando (supõe que o arquivo "grate_stories_of" não existe em seu sistema)
O nome do comando é tail e os argumentos são +10 e myf.
$ data
$ sort -r -n meuf
Próximo
$ cauda +10 myf
CP
0
cauda
A primeira palavra na linha de comando é ls - é o nome do comando a ser executado.
$ cauda -10 myf
Argumento real
1
organizar
(ou seja, $#)
2
Raj
$ ls foo
Nº de argumentos para este comando
2
ls é o nome de um comando real e o shell executou esse comando quando você digitou o comando no shell
-10 e meu Deus
$# contém o número de argumentos especificados na linha de comando. E $* ou $@ referem-se a todos os argumentos passados para
você e você.bak
claro
$ ls grate_stories_of
Exercício
$ claro
foo
http://www.cyberciti.biz/pdf/lsst/ch02sec13.html (1 de 2) [29/07/2002 18:52:02]
LSST v1.05r3 > Capítulo 2 > Processamento de linha de comando
Processamento de linha de comando
Machine Translated by Google
Mais comandos em uma linha de comando Acima
Anterior
roteiro.
Por que os argumentos da linha de comando são necessários
Lar Próximo
http://www.cyberciti.biz/pdf/lsst/ch02sec13.html (2 de 2) [29/07/2002 18:52:02]
LSST v1.05r3 > Capítulo 2 > Processamento de linha de comando
Machine Translated by Google
Vamos usar o comando ls
$ Ls -a /*
Este comando tem 2 argumentos de linha de comando -a e /* é outro. Para script de shell, $ myshell
foo bar
Aqui rm é o comando e filename é o arquivo que você deseja remover. Dessa forma, você segue o comando rm qual arquivo deseja
remover. Portanto, estamos fazendo comunicação unilateral com nosso comando, especificando o nome do arquivo. Além disso, você
pode passar argumentos de linha de comando para o seu script para torná-lo mais amigável. Mas como acessamos o argumento da linha de
comando em nosso script.
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução
à programação Shell
Nome do Shell Script, ou seja, myshell
Próximo
cara, é $ 1
barra custa $ 2
Vamos pegar o comando rm, que é usado para remover o arquivo, mas qual arquivo você deseja remover e como você dirá isso ao comando
rm (mesmo o comando rm não pergunta o nome do arquivo que você gostaria de remover). Então o que fazemos é escrever o comando
da seguinte forma: $ rm {nome do arquivo}
No shell, se quisermos nos referir a este argumento de linha de comando, nos referimos acima como segue
2. Informar ao utilitário/comando qual arquivo ou grupo de arquivos processar (leitura/gravação de arquivos).
Anterior
meu shell é $ 0
Primeiro argumento de linha de comando passado para myshell, ou seja, foo
1. Informar ao comando/utilitário qual opção usar.
Segundo argumento da linha de comando passado para myshell, ou seja, bar
http://www.cyberciti.biz/pdf/lsst/ch02sec14.html (1 de 3) [29/07/2002 18:52:05]
LSST v1.05r3 > Capítulo 2 > Por que argumentos de linha de comando são necessários
Por que os argumentos da linha de comando são necessário
Machine Translated by Google
O script a seguir é usado para imprimir o argumento ling do comando e mostrará como acessá-los:
#
matemática
$ cal
Aqui $# (variável embutida no shell) será 2 (já que foo e bar apenas dois argumentos), observe de cada vez
Nº de argumentos para o script
$#
1
Nº de argumentos (ou seja, $#),
4 GRANDE
$ matemática 4 - 7
11
echo "Todos eles são: - $* ou $@"
-5
2
parâmetros".
encontrarBS
3
Nome do script de shell ($0),
-
Nome do script de
shell $0
echo "O número total de argumentos da linha de comando é $#"
$ 1 $ 2 $ 3 $ 4 $ 5
`$1,$2...$9`). Observe que $1..$9, ou seja, argumentos de linha de comando para shell script, são conhecidos como "posicionais
meu +20
24
4
#!/bin/sh
soma
$Ls*
echo "$2 é o segundo argumento"
cal
Tente escrever o seguinte para comandos
0
$ soma 11 20
#
7
Responder
echo "$1 é o primeiro argumento"
Ls
Argumento real ($1,..$9)
esses 9 argumentos podem ser usados de $1..$9. Você também pode referir todos eles usando $* (que se expande para
20
$ bp -5 myf +20
$ vi demonstração
# Script que demonstra, argumentos de linha de comando
$ encontrarBS 4 8 24 GRANDE
d
8
0
E argumento real (ou seja, $ 1, $ 2 etc.)
4
$ d
echo "$0 é o nome do script"
bp
*
3
Exercício
Execute-o da seguinte maneira
http://www.cyberciti.biz/pdf/lsst/ch02sec14.html (2 de 3) [29/07/2002 18:52:05]
LSST v1.05r3 > Capítulo 2 > Por que argumentos de linha de comando são necessários
Machine Translated by Google
Portanto, todas as instruções no shell script são inválidas: $1 = 5 $2 =
"My
Name"
Verifique se está funcionando ou não (?) $ demo $
demo Olá
Mundo
Observe também que você não pode atribuir o novo valor aos argumentos da linha de comando, ou seja, parâmetros posicionais.
Lar
Se o teste for bem-sucedido, copie o script para seu próprio diretório bin (instale o script para uso privado) $ cp
demo ~/bin
NOTA: Depois disso, para qualquer script você terá que usar o comando acima, em sequência, não vou mostrar todos os comandos acima
para o restante do Tutorial.
Execute-o e teste-o da seguinte
maneira: $ ./demo Hello World
Defina a permissão de execução da seguinte
forma: $ chmod 755 demo
Anterior
Acima
Próximo Redirecionamento de saída/entrada
padrão ieInput - Redirecionamento de sa
Processamento de linha de comando
http://www.cyberciti.biz/pdf/lsst/ch02sec14.html (3 de 3) [29/07/2002 18:52:05]
LSST v1.05r3 > Capítulo 2 > Por que argumentos de linha de comando são necessários
Machine Translated by Google
Existem três símbolos principais de redirecionamento >,>>,<
$ ls > nome do
arquivo Significa colocar a saída do comando ls no nome do arquivo.
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução
à programação Shell
(1) > Sintaxe do símbolo do
redirecionador: comando Linux > nome
do arquivo Para gerar o resultado dos comandos Linux (saída do comando ou script shell) para o arquivo. Observe que se o arquivo já existir, ele
será sobrescrito, caso contrário, um novo arquivo será criado. Por exemplo, para enviar a saída do comando ls, dê $ ls > myfiles Agora, se
o arquivo 'myfiles'
existir em seu diretório atual, ele será sobrescrito sem qualquer tipo de aviso.
Crie um nome de arquivo de texto da seguinte maneira
Quase todos os comandos fornecem saída na tela ou recebem entrada do teclado, mas no Linux (e também em outros sistemas operacionais) é possível
enviar a saída para um arquivo ou ler a entrada do arquivo.
Clique aqui para saber mais sobre Redirecionamento de E/S
Você também pode usar os redirecionadores acima simultaneamente da seguinte maneira
Por
exemplo, o comando $ ls fornece saída para a tela; para enviar a saída para o arquivo do comando ls dê o comando
ele será aberto e novas informações/dados serão gravados no FIM do arquivo, sem perder os anteriores
,
(2) >> Sintaxe do símbolo do
redirecionador: comando Linux >> nome
do arquivo Para gerar o resultado dos comandos Linux (saída do comando ou script shell) para o FIM do arquivo. Observe que se o arquivo existir
informações/dados, e se o arquivo não existir, um novo arquivo será criado. Por exemplo, para enviar a saída do comando date para um
arquivo já existente, dê o comando $ date >> meus arquivos
Anterior
(3) < Sintaxe do símbolo do
redirecionador: comando Linux <nome
do arquivo Para obter entrada para o comando Linux do arquivo em vez do teclado. Por exemplo, para obter entrada para o comando cat, dê $ cat
<myfiles
Próximo
LSST v1.05r3 > Capítulo 2 > Redirecionamento de saída/entrada padrão, ou seja, redirecionamento de entrada - saída
http://www.cyberciti.biz/pdf/lsst/ch02sec15.html (1 de 2) [29/07/2002 18:52:06]
Entrada - Redirecionamento de saída
Redirecionamento de saída/entrada padrão, ou seja
Machine Translated by Google
O comando tr é usado para traduzir todos os caracteres minúsculos em letras maiúsculas. Ele recebe a entrada do arquivo
sname e a saída do tr é redirecionada para o arquivo cap_names.
BABU
$cat > sname
vivek
ashish
zebra
babu
Pressione CTRL + D para salvar.
Ponto Futuro: Tente seguir o comando e descubra o ponto mais importante: $ sort >
new_sorted_names <sname $ cat
new_sorted_names
CINZA
Próximo
Cano
ZEBRA
Lar
Experimente mais um exemplo para esclarecer
sua ideia: $ tr "[az]" "[AZ]" < sname > cap_names $
cat cap_names
VIVEK
Acima
Anterior
Agora emita o seguinte comando. $ sort
<sname> nomes_classificados $ cat
nomes_classificados
ashish
babu
vivek
zebra
No exemplo acima, o comando sort ($ sort <sname> sorted_names) recebe a entrada do arquivo sname e a saída do
comando sort (ou seja, nomes classificados) é redirecionada para o arquivo sorted_names.
Por que os argumentos da linha de comando são necessários
http://www.cyberciti.biz/pdf/lsst/ch02sec15.html (2 de 2) [29/07/2002 18:52:06]
LSST v1.05r3 > Capítulo 2 > Redirecionamento de saída/entrada padrão, ou seja, redirecionamento de entrada - saída
Machine Translated by Google
Comando usando Pipes
Exemplos:
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2:
Introdução à programação Shell
Significado ou uso de tubos A
saída do comando ls é fornecida como entrada para o
comando more, para que a saída seja impressa em uma página
inteira de tela por vez.
Pipe Definido como:
"Um pipe nada mais é do que um local de armazenamento temporário onde a saída de um comando é armazenada e depois
passada como entrada para o segundo comando. Pipes são usados para executar mais de dois comandos (vários comandos)
na mesma linha de comando. "
$ quem | wc-l
$ ls -l | wc-l
Sintaxe:
comando1 | comando2
$ quem | organizar
Um pipe é uma forma de conectar a saída de um programa à entrada de outro programa sem nenhum arquivo temporário.
$ quem | classificar> lista_usuários
A saída do comando who é fornecida como entrada para o
comando sort Para que ele imprima a lista classificada de
usuários O mesmo que acima, exceto que a saída do sort
é enviada para (redirecionado)
o arquivo user_list A saída do comando who é fornecida
como entrada para o comando wc Para que ele imprimir o
número do usuário
que faz logon no sistema A saída do comando ls é
fornecida como entrada para o comando wc Para que ele
imprima o número de arquivos no diretório atual.
Anterior
$ ls | mais
Próximo
LSST v1.05r3 > Capítulo 2 > Tubulações
http://www.cyberciti.biz/pdf/lsst/ch02sec16.html (1 de 2) [29/07/2002 18:52:08]
Tubos
Machine Translated by Google
ieInput - Redirecionamento de saída
determinado usuário está logado ou não)
Anterior Redirecionamento de saída/entrada padrão
Lar
nome se ele está logado ou nada está impresso (Ver
$ quem | grep raju
comando Para que ele imprima se um usuário específico
A saída do comando who é fornecida como entrada para grep
Acima
Próximo
Filtro
http://www.cyberciti.biz/pdf/lsst/ch02sec16.html (2 de 2) [29/07/2002 18:52:08]
LSST v1.05r3 > Capítulo 2 > Tubulações
Machine Translated by Google
contém da linha número 20 à linha número 30 e armazene esse resultado em um arquivo chamado 'hlist' e depois forneça
Suponha que você tenha um arquivo chamado 'hotel.txt' com dados de 100 linhas e de 'hotel.txt' você gostaria de imprimir
Tutorial de script de shell do Linux (LSST) v1.05r3
comando:
Aqui uniq é o filtro que recebe sua entrada do comando sort e passa essas linhas como entrada para uniq; Então
A saída do uniqs é redirecionada para o arquivo "u_sname".
Anterior
Se um comando do Linux aceitar sua entrada da entrada padrão e produzir sua saída na saída padrão
Considere mais um exemplo a seguir
O que são processos
$ sort < nome | uniq > seu_nome
é conhecido como filtro. Um filtro executa algum tipo de processo na entrada e fornece saída. Por exemplo.
linha número 20 de determinado arquivo, ou seja, hotel.txt) e passa essas linhas como entrada para head, cuja saída é
Próximo
Acima
Próximo
redirecionado para o arquivo 'hlist'.
$ tail +20 < hotel.txt | head -n30 >hlista
Capítulo 2: Introdução à programação Shell
Tubos
Lar
Aqui o comando head é o filtro que recebe sua entrada do comando tail (o comando tail começa a selecionar em
Anterior
http://www.cyberciti.biz/pdf/lsst/ch02sec17.html [29/07/2002 18:52:09]
LSST v1.05r3 > Capítulo 2 > Filtro
Filtro
Machine Translated by Google
processo.
Comando ls ou uma solicitação para listar arquivos em um diretório e todos os subdiretórios em seu diretório atual - é um
Tutorial de script de shell do Linux (LSST) v1.05r3
Processo definido como:
Próximo
Por que o processo é necessário
Processo é um tipo de programa ou tarefa realizada pelo seu PC. Por exemplo
Lar
Acima
$ ls -lR
Anterior
Próximo
Filtro
"Um processo é um programa (comando dado pelo usuário) para realizar um trabalho específico. No Linux, quando você inicia
Capítulo 2: Introdução à programação Shell
processo, fornece um número para processar (chamado PID ou process-id), o PID começa de 0 a 65535."
Anterior
http://www.cyberciti.biz/pdf/lsst/ch02sec18.html [29/07/2002 18:52:11]
LSST v1.05r3 > Capítulo 2 > O que são processos
O que são processos
Machine Translated by Google
$ls/-R | wc-l
comando como:
Tutorial de script de shell do Linux (LSST) v1.05r3
Este comando levará muito tempo para pesquisar todos os arquivos do seu sistema. Então você pode executar esse comando em
(PID), este PID pode ser usado para se referir a um processo específico em execução."
Anterior
O que são processos
Como você sabe, o Linux é um sistema operacional multiusuário e multitarefa. Isso significa que você pode executar mais de dois processos
Processo e PID definidos como:
"Uma instância do comando em execução é chamada de processo e o número impresso pelo shell é chamado de process-id
simultaneamente, se desejar. Por exemplo, para descobrir quantos arquivos você tem em seu sistema, você pode fornecer
O e comercial (&) no final do comando informa aos shells para iniciar o processo (ls / -R | wc -l) e executá-lo em
Anterior
Próximo
Comando(s) do Linux relacionados ao processo
Próximo
background executa o próximo comando imediatamente.
Em segundo plano ou simultaneamente, dando um comando como
Capítulo 2: Introdução à programação Shell
Lar
Acima
$ls/-R | wc -l&
http://www.cyberciti.biz/pdf/lsst/ch02sec19.html [29/07/2002 18:52:12]
LSST v1.05r3 > Capítulo 2 > Por que o processo é necessário
Por que o processo é necessário
Machine Translated by Google
Comando Linux relacionado ao processo
Em relação a esta situação, responda à seguinte questão:
process
Para interromper todos os processos, exceto seu shell kill
0 Para processamento em segundo plano (com &,
$ killall httpd
se o servidor web Apache
Próximo
e outras informações como memória
combinação com o comando grep
Você está trabalhando em sua estação de trabalho Linux (pode estar aprendendo LSST ou algum outro trabalho como enviar
Capítulo 2: Introdução à programação Shell
ps aux
kill process
Para parar processos por nome, ou seja, para matar
obs:
Tutorial de script de shell do Linux (LSST) v1.05r3
Para ver o processo atualmente em execução
Para parar qualquer processo por PID, ou seja, para
$ matar 1012
NOTA que você só pode encerrar processos criados por você. Um administrador quase pode matar
Use este comando
comando linux &
processos junto com os processos
Para ver se um determinado processo é
$ ps machado | grep httpd
machado ps | grep process-U-quer-ver
atualizações.
pstree
As tabelas a seguir são os comandos mais comumente usados com o processo:
programa em segundo plano)
$ matar 0
$ ps -ag
use para colocar um comando específico e
o processo está em execução ou não
e uso da CPU em tempo real
$pstree
e-mails, digitando carta), enquanto fazia esse trabalho você começou a reproduzir arquivos MP3 em sua estação de trabalho.
killall {Nome do processo} processo
Para obter
informações sobre todos os processos em execução
matar {PID}
Anterior
Por exemplo, você quer ver
Para ver os processos atualmente em execução
$ps aux
tem que usar o comando ps em
principal
Exercício:
$ps
$ls/-R | wc -l&
correndo ou não. Para este propósito você
Exemplos*
$ superior
Processo de 95-98%. Mas alguns processos não podem ser eliminados, como o processo VDU.
Para exibir uma árvore de processos
* Para executar parte deste comando você precisa ser usuário root ou equivalente.
Para este propósito
Para exibir o proprietário do
ps-ag
então dê o comando
http://www.cyberciti.biz/pdf/lsst/ch02sec20.html (1 de 2) [29/07/2002 18:52:14]
LSST v1.05r3 > Capítulo 3 > Comando Linux relacionado ao processo
Veja a saída do comando superior.
comando pressione q.
Observe que para sair do topo
Machine Translated by Google
Por que o processo é necessário
4) Você não deseja ouvir música (arquivos MP3), mas deseja continuar com outro trabalho no PC, você executará uma das seguintes ações: 1.
Desligue os alto-falantes 2. Desligue o
computador / desligue o
sistema operacional Linux 3. Mate o processo de reprodução
de MP3 4. Nenhuma das opções acima
Anterior Lar
2) Como você descobrirá o processo de execução (reprodução de MP3 e digitação de letras)?
Clique aqui para obter respostas.
3) "Atualmente apenas dois processos estão rodando em seu ambiente Linux/PC", É Verdadeiro ou Falso?, E como você irá verificar isso?
1) É um exemplo de multitarefa?
Acima
Próximo
Construções
Linguagem estruturada Shells (bash)
LSST v1.05r3 > Capítulo 3 > Comando Linux relacionado ao processo
http://www.cyberciti.biz/pdf/lsst/ch02sec20.html (2 de 2) [29/07/2002 18:52:14]
Machine Translated by Google
decisões. O que o computador sabe é 0 (zero) e 1 que é Sim ou Não. Para deixar essa ideia clara, vamos jogar
5/2
mostrando 0 (Zero). Lembre-se de que em bc, a expressão relacional sempre retorna verdadeiro (1) ou falso (0 - zero).
Anterior
5 é igual a 10
5 == 10
Significado para nós Resposta do BC
Capítulo 3: Construções de linguagem estruturada de shells (bash)
Existe alguma diferença na tomada de decisões na vida real e nos computadores? Bem, as decisões da vida real são bastante
7 é a resposta de bc, ou seja, adição de 5 + 2, você pode até tentar
0
Tutorial de script de shell do Linux (LSST) v1.05r3
• Ciclos
7
construções de linguagem como:
1 (Um?) é a resposta de bc, Como? bc compare 5 com 2, pois 5 é maior que 2, (se eu fizer a mesma pergunta para
digite 5 + 2 como:
5! = 2
NÃO
5 > 12
Expressão 5
> 12
0
Tomar decisões é uma parte importante na vida do ONCE, bem como no programa orientado pela lógica dos computadores. Na verdade
$bc
5 > 2
Veja o que aconteceu se você digitar 5 > 2 da seguinte maneira
Próximo
algum jogo (UAU!) com bc - programa de calculadora Linux.
Tente seguir o bc para esclarecer sua ideia e não anular a resposta do bc
5 NÃO é igual a 2
0
complicado para todos nós e os computadores ainda não têm tanto poder para entender nossa vida real
5 - 2
0 (Zero) indica falso, ou seja, 5 é menor que 2?, Sua resposta será não, o que é indicado por bc por
5 é maior que 12
5! = 2
5 <2
12 <2
SIM
5 + 2
você, sua resposta será SIM), bc dá esta resposta 'SIM' mostrando 1 valor. Agora tente
5 == 5
• Tomada de decisão
NÃO
sua Resposta
1
a lógica não é LÓGICA até que você use a tomada de decisão. Este capítulo apresenta a estrutura estruturada do bash
Depois que este comando bc for iniciado e aguardando seus comandos, ou seja, faça alguns cálculos como segue
1
5 == 10
LSST v1.05r3 > Capítulo 3 > Introdução
http://www.cyberciti.biz/pdf/lsst/ch03.html (1 de 2) [29/07/2002 18:52:15]
Introdução
Machine Translated by Google
Significado
Valor
Anterior
1 é menor que 2
1 < 2
No valor do shell do Linux
não zero
0
5 == 5
1
Não/Falso
Sim
Falso/Não
-1, 32, 55 tudo menos
Próximo
Lar
e NÃO é outro.
Exemplo
Mostrado no Linux Shell como
Mostrado em bc como
Significa que sempre que houver algum tipo de comparação no Linux Shell dá apenas duas respostas, uma é SIM
Sim, verdade
Comando(s) do Linux relacionados ao processo
5 é igual a 5
Lembre-se de que tanto o bc quanto o Linux Shell usam maneiras diferentes de mostrar valores Verdadeiro/ Falso
Valor Zero (0)
Valor diferente de zero
0
Valor diferente de zero
1
se condição
1
SIM
0
Verdadeiro/Sim
Acima
http://www.cyberciti.biz/pdf/lsst/ch03.html (2 de 2) [29/07/2002 18:52:15]
LSST v1.05r3 > Capítulo 3 > Introdução
Machine Translated by Google
comando1 se a condição for verdadeira ou se o status de saída da condição for 0 (zero)
então
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 3: Construções de linguagem estruturada de shells (bash)
...
Digite os seguintes comandos (supõe que você tenha um arquivo chamado
foo) $ cat
foo $ echo $?
O comando cat retorna zero (0), ou seja, status de saída, em caso de sucesso, isso pode ser usado, na condição if a seguir,
Escreva o script shell como
Sintaxe:
Expressão é definida como:
"Uma expressão nada mais é do que uma combinação de valores, operadores relacionais (como >,<, <>
etc) e operadores matemáticos (como +, -, / etc)."
A seguir estão todos os exemplos de expressão: 5
> 2 3
+ 6 3
* 65 a
< bc
> 5 c
> 5 + 30 -1
se condição
Condição é definida como:
"Condição nada mais é do que comparação entre dois valores."
se a condição usada para tomada de decisão no shell script, se a condição fornecida for verdadeira, o comando1 será executado.
Para compactação, você pode usar instruções test ou [expr] ou até mesmo o status existente também pode ser usado.
...
Anterior Próximo
fi
http://www.cyberciti.biz/pdf/lsst/ch03sec01.html (1 de 3) [29/07/2002 18:52:16]
LSST v1.05r3 > Capítulo 3 > se condição
se condição
Machine Translated by Google
# Script para testar o comando rm e status existente # if rm $1
gato > trmif #
$ cat > showfile #!/bin/sh #
#Script para
imprimir o arquivo # if cat $1
então
Anterior Lar Próximo
Exercício
(C) E se você digitar $ ./trmfi Qual será a saída?
Para resposta clique aqui.
Escreva o script shell da seguinte maneira:
Responda à seguinte pergunta com referência ao script acima: (A) o arquivo
foo existe em seu disco e você dá o comando, $ ./trmfi foo qual será a saída?
Execute o script acima
como: $ chmod 755 showfile
$./showfile foo O
nome do script do shell é showfile ($0) e foo é o argumento (que é $1). Em seguida, compare-o como segue: if cat $1 que é expandido
para if cat foo.
Explicação detalhada se o
comando cat encontrar o arquivo foo e se for mostrado com sucesso na tela, significa que nosso comando cat foi bem-sucedido
e seu status de existência é 0 (indica sucesso). Portanto, nossa condição if também é verdadeira e, portanto, a instrução echo -e "n
nArquivo $1, encontrado e ecoado com sucesso" é processado pelo shell. Agora, se o comando cat não for bem-sucedido, ele
retornará um valor diferente de zero (indica algum tipo de falha) e esta instrução echo -e "nnArquivo $1, encontrado e ecoado
com sucesso" será ignorada pelo nosso shell.
(B) Se o arquivo bar não estiver presente em seu disco e você der o comando $ ./trmfi bar , o que será gerado?
echo "$1 arquivo excluído" fi
então
echo -e "nnArquivo $1, encontrado e ecoado com sucesso" fi
Pressione Ctrl + d para
salvar $ chmod 755 trmif
http://www.cyberciti.biz/pdf/lsst/ch03sec01.html (2 de 3) [29/07/2002 18:52:16]
LSST v1.05r3 > Capítulo 3 > se condição
Machine Translated by Google
Acima
Construções
Linguagem estruturada Shells (bash)
comando de teste ou [expr]
http://www.cyberciti.biz/pdf/lsst/ch03sec01.html (3 de 3) [29/07/2002 18:52:16]
LSST v1.05r3 > Capítulo 3 > se condição
Machine Translated by Google
echo "$1 número é positivo" fi
$ cat > ispositivo #!/bin/sh # # Script
para ver se o
argumento é positivo # if test $1 -gt 0 then
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 3: Construções de linguagem estruturada de shells (bash)
Execute-o da seguinte
maneira: $ chmod 755 ispostive
,
para evitar tal erro, podemos testar se o argumento da linha de comando
,
Sintaxe:
expressão de teste OU [expressão]
Explicação detalhada
A linha, if test $1 -gt 0 test para ver se o primeiro argumento da linha de comando ($1) é maior que 0. Se for verdadeiro
(0), então o teste retornará 0 e a saída será impressa como 5, o número é positivo, mas para Argumento -45, não há
saída porque nossa condição não é verdadeira (0) (nenhum -45 não é maior que 0), portanto, a instrução echo é ignorada.
E para a última instrução não fornecemos nenhum argumento, portanto, erro ./ispostive: test: -gt: operador unário
esperado, é gerado pelo shell é fornecido ou
não.
Exemplo:
o script a seguir determina se o número do argumento fornecido é positivo.
Nada é impresso
O comando test ou [expr] é usado para ver se uma expressão é verdadeira e, se for verdadeira, retorna zero (0), caso contrário,
retorna diferente de zero para falso.
$ispostive ./
ispostive: teste: -gt: operador unário esperado
$ ispostive 5
5 número é positivo
Anterior
test ou [expr] funciona com
1.Integer (Número sem ponto decimal)
2.Tipos de arquivo
3.Sequências de caracteres
Próximo
$ispositivo -45
http://www.cyberciti.biz/pdf/lsst/ch03sec02.html (1 de 3) [29/07/2002 18:52:17]
LSST v1.05r3 > Capítulo 3 > comando de teste ou [expr]
comando de teste ou [expr]
Machine Translated by Google
Shell também testa tipos de arquivos e diretórios
declaração com
Operadores lógicos são usados para combinar duas ou mais condições ao mesmo tempo
string1 string1 NÃO é NULL ou não está definida -n string1 string1 NÃO
é NULL e existe
-ge
-d diretório
se [5 -ne 6]
ou igual a
Lógico NÃO
Significado
Para comparações de strings, use
-ne
Aritmética Normal/
É um arquivo gravável
-x arquivo
se [5 -ge 6]
se teste 5 -gt 6
declaração com
-w arquivo
se [5 -le 6]
se [5 -lt 6]
se comando
É um arquivo somente leitura
Significado do Operador
Matemático
-lt
se teste 5 -ge 6
se comando
Teste
Lógico E
é igual a não
é igual a 5! = 6 é menor que
5 <6
Matemático
Arquivo não vazio
5 <= 6
se [5 -gt6]
Significado
-r arquivo
O arquivo é executável
string1 = string2 string1 é igual a string2
-le
Declarações
O arquivo existe ou é um arquivo normal e não um diretório
-s arquivo
é menor que ou
se teste 5 -eq 6
se teste 5 -ne 6
-z string1 string1 é NULL e existe
se teste 5 -lt 6
5 == 6
Operador no Shell
5 >= 6
Operador !
expressão
expressão1 -uma expressão2
Operadores lógicos
-gt
Para teste
Para matemática, use o seguinte operador no Shell Script
Mas na Shell
string1 != string2 string1 NÃO é igual a string2
-f arquivo
igual a é
maior que 5 > 6 é maior que
se [5 -eq 6]
NOTA: == é igual, != não é igual.
-eq
Roteiro
O diretório existe e não é um arquivo
Para [expr]
se teste 5 -le 6
Significado
LSST v1.05r3 > Capítulo 3 > comando de teste ou [expr]
http://www.cyberciti.biz/pdf/lsst/ch03sec02.html (2 de 3) [29/07/2002 18:52:17]
Machine Translated by Google
Próximo
comando)
Acima se...senão...fi
Anterior Tomada de decisão em shell script (ou seja, se
Lar
OU lógico
expressão1 -o expressão2
http://www.cyberciti.biz/pdf/lsst/ch03sec02.html (3 de 3) [29/07/2002 18:52:17]
LSST v1.05r3 > Capítulo 3 > comando de teste ou [expr]
Machine Translated by Google
a condição é zero (verdadeiro - 0) execute todos os
comandos até a instrução else
então
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 3: Construções de linguagem estruturada de shells (bash)
se a condição não for verdadeira, execute todos os
comandos até fi
echo "$1 número é positivo" else
echo "$1 número é negativo" fi
Experimente da seguinte
maneira: $ chmod 755 isnump_n
Próximo
echo "$0: Você deve fornecer/fornecer um número inteiro" exit 1 fi
se testar $1 -gt 0 então
se condição
Por exemplo, escreva o script da seguinte maneira:
Sintaxe:
Anterior
$ vi isnump_n #!/bin/sh # #
Script para ver se
o
argumento é positivo ou negativo # if [ $# -eq 0 ] then
outro
$ isnump_n 5 5
número é positivo
$ isnump_n -45
Se a condição fornecida for verdadeira, o comando1 será executado, caso contrário, o comando2 será executado.
fi
http://www.cyberciti.biz/pdf/lsst/ch03sec03.html (1 de 4) [29/07/2002 18:52:18]
LSST v1.05r3 > Capítulo 3 > if...else...fi
se...senão...fi
Machine Translated by Google
A última amostra executada $ isnump_n 0 fornece a saída como "0 número é negativo", porque o argumento fornecido não é> 0, portanto,
a condição é falsa e é considerada um número negativo. Para evitar isso, substitua a segunda instrução if por if test $1 -ge 0.
-45 número é negativo
Você pode escrever toda a construção if-else no corpo da instrução if ou no corpo de uma instrução else. Isso é chamado de aninhamento
de ifs.
| | 2
echo "Você escolhe Unix (Sun Os)"
else #### aninhado if, ou seja, se dentro de if ######
1 imprimirá o nome do script 2
imprimirá esta mensagem de erro E,
finalmente, a instrução exit 1 causa o encerramento normal do programa com status de saída 1 (diferente de zero significa que o
script não foi executado com êxito).
se [$osch -eq 1]
Explicação detalhada O
primeiro script verifica se o argumento da linha de comando é fornecido ou não, se não for fornecido, ele imprime a mensagem de
erro como "./ ispos_n: Você deve fornecer/ fornecer um número inteiro". A instrução if verifica se o número de argumentos ($#)
passados para o script não é igual (-eq) a 0, se passamos algum argumento para o script, então esta instrução if é falsa e se nenhum
argumento de linha de comando for fornecido, então esta instrução if é verdadeiro. O comando echo, ou seja, echo "$0: Você deve
fornecer/fornecer
um número inteiro"
| | 1
; então
$ vi nestedif.sh osch=0
$ isnump_n ./
ispos_n : Você deve fornecer/ fornecer um número inteiro
echo "1. Unix (Sun Os)" echo "2. Linux (Red
Hat)" echo -n "Selecione sua escolha de sistema
operacional [1 ou 2]?" leia osch
$ isnump_n 0 0
número é negativo
http://www.cyberciti.biz/pdf/lsst/ch03sec03.html (2 de 4) [29/07/2002 18:52:18]
LSST v1.05r3 > Capítulo 3 > if...else...fi
If-else-fi aninhado
Machine Translated by Google
$ ./nestedif.sh
1. Unix (Sun Os)
então
outro
echo "O que você não gosta do sistema operacional Unix/Linux."
; então
ecoe "Você escolhe Linux (Red Hat)"
2. Linux (Chapéu Vermelho)
então
fazem isto
se [$osch -eq 2]
$ ./nestedif.sh
1. Unix (Sun Os)
se condição
2. Linux (Chapéu Vermelho)
outro
Você também pode usar os ifs aninhados da seguinte maneira:
fi
Selecione sua opção [1 ou 2]? 3 O que
você não gosta do sistema operacional Unix/ Linux.
..
.....
fi
2. Linux (Chapéu Vermelho)
outro
se condição
Selecione sua opção [1 ou 2]? 2
Você escolhe Linux (Red Hat)
fi
..
Sintaxe:
....
Selecione sua opção [1 ou 2]? 1
Você escolhe Unix (Sun Os)
Execute o script de shell acima da seguinte
maneira: $ chmod +x
nestedif.sh $ ./
nestedif.sh 1. Unix (Sun Os)
Observe que a segunda construção if-else está aninhada na primeira instrução else . Se a condição na primeira instrução
if for falsa, a condição na segunda instrução if será verificada. Se também for falso, a instrução else final será executada.
fazem isto
http://www.cyberciti.biz/pdf/lsst/ch03sec03.html (3 de 4) [29/07/2002 18:52:18]
LSST v1.05r3 > Capítulo 3 > if...else...fi
Machine Translated by Google
Acima
fi
Lar Próximo
fazem isto
Comando de teste anterior ou [expr]
.....
...
Multinível if-then-else
http://www.cyberciti.biz/pdf/lsst/ch03sec03.html (4 de 4) [29/07/2002 18:52:18]
LSST v1.05r3 > Capítulo 3 > if...else...fi
Machine Translated by Google
condição de Elif1
a condição é zero (verdadeiro - 0) execute todos os
comandos até a instrução elif
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 3: Construções de linguagem estruturada de shells (bash)
então
fi
Para instrução if-then-else multinível, tente o seguinte script:
$ cat > elf # #!/bin/sh
# Script para
testar if..elif...else # if [ $1 -gt 0 ]; então
se condição
outro
Nenhuma das condições acima, condição1, condição2 são verdadeiras (ou seja, todas as anteriores diferentes de zero
ou falsas) execute todos os comandos até fi
então
então
Próximo
Sintaxe:
condição2 é zero (verdadeiro - 0) execute todos os
comandos até a instrução elif
condição1 é zero (verdadeiro - 0) execute todos os
comandos até a instrução elif
echo "$1 é positivo" elif [ $1 -lt 0 ] então
echo "$1 é negativo" elif [ $1 -eq
0 ] então
echo "$1 é zero" else echo "Ops! $1 não é
número, dê o número" fi
Tente o script acima da seguinte
maneira: $ chmod
755 elf
$ ./elf 1
$ ./elf -2
$ ./elf 0
$ ./elf a Aqui o/p para a última
execução de amostra: ./elf: [: -gt: unary
operador esperado ./elf: [: -lt: operador
unário esperado ./elf: [: -eq: operador unário
esperado Ops! a não é número, dê o número
condição de Elif2
Anterior
http://www.cyberciti.biz/pdf/lsst/ch03sec04.html (1 de 2) [29/07/2002 18:52:19]
LSST v1.05r3 > Capítulo 3 > Multinível if-then-else
Multinível if-then-else
Machine Translated by Google
Anterior if...else...fi Acima
esperado" ocorre, mas ainda assim nosso programa notifica esse erro ao usuário fornecendo a mensagem "Opps! a não é um número, dê um número".
O programa acima apresenta erro na última execução, aqui a comparação de inteiros é esperada, portanto, erros como "./ elf: [: -gt: operador unário
Loops em scripts de shell
Lar Próximo
LSST v1.05r3 > Capítulo 3 > Multinível if-then-else
http://www.cyberciti.biz/pdf/lsst/ch03sec04.html (2 de 2) [29/07/2002 18:52:19]
Machine Translated by Google
Bash suporta:
grupo de instruções que é executado repetidamente é chamado de loop."
Tutorial de script de shell do Linux (LSST) v1.05r3
• loop for
Multinível if-then-else
Lar
Acima
Laço definido como:
(c) O corpo do loop termina com uma instrução que modifica o valor da variável de teste (condição).
Anterior
“O computador pode repetir instruções específicas continuamente, até que uma condição específica seja satisfeita.
(a) Primeiro, a variável usada na condição do loop deve ser inicializada e, em seguida, a execução do loop começa.
Anterior Próximo
(b) Um teste (condição) é feito no início de cada iteração.
• ciclo while
Capítulo 3: Construções de linguagem estruturada de shells (bash)
Próximo
para loop
Observe que em cada loop,
http://www.cyberciti.biz/pdf/lsst/ch03sec05.html [29/07/2002 18:52:23]
LSST v1.05r3 > Capítulo 3 > Loops em Shell Scripts
Loops em scripts de shell
Machine Translated by Google
Sintaxe:
execute um para cada item da lista até que a lista não termine (e repita todas as instruções entre do e done)
feito
$ cat > mtable #!/bin/sh #
#Script para testar
o
loop # # if [ $# -eq 0 ] then echo "Erro - Número
faltando no argumento da linha
de
comando do formulário" echo "Sintaxe: $0 número" echo "Use para imprimir tabela de multiplicação para determinado
número" exit 1 fi n=$1 for i in 1 2 3 4 5 6 7 8 9 10 do
echo "$n * $i = `expr $i * $n`" pronto
Próximo
para {nome da variável} em {lista} faça
Anterior
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3:
Construções de linguagem estruturada de shells (bash)
$ cat > testfor for i in 1 2 3 4
5 do echo "Bem-vindo $i vezes"
concluído
Execute o script acima da seguinte
maneira: $ chmod +x
testfor $ ./
testfor O loop for primeiro cria a variável i e atribui um número a i da lista de números de 1 a 5. O shell executa a instrução echo para cada atribuição de i.
(Isso geralmente é conhecido como iteração) Este processo continuará até que todos os itens da lista sejam concluídos, por isso repetirá 5 instruções de eco.
Para deixar sua ideia mais clara, tente o seguinte script:
Antes de tentar entender a sintaxe acima, tente o seguinte script:
Salve o script acima e execute-o como:
$ chmod 755 mtable $ ./
mtable 7 $ ./
mtable Para
a primeira execução, o script acima imprime a tabela de multiplicação de um determinado número onde i = 1,2 ... 10 é multiplicado por determinado n (aqui
LSST v1.05r3 > Capítulo 3 > Loop for
http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (1 de 5) [29/07/2002 18:52:26]
para Loop
Machine Translated by Google
para ((expr1; expr2; expr3)) faça
Sintaxe:
argumento de linha de comando 7) para produzir a tabuada como 7 * 1 = 7 7 * 2 =
14
.....
$ cat > for2
for (( i = 0 ; i <= 5; i++ )) do echo
"Bem-vindo $i vezes" concluído
Execute o script acima da seguinte
maneira: $ chmod +x
for2 $ ./
for2 Bem-vindo 0
vezes Bem-vindo 1
vezes Bem-vindo 2
vezes Bem-vindo 3
vezes Bem-vindo 4
vezes Bem-vindo 5 vezes
No exemplo acima, a primeira expressão (i = 0) é usada para definir a variável de valor i como zero.
Observe que para encerrar nosso script usamos o comando 'exit 1' que leva 1 como argumento (1 indica erro e, portanto, o script foi encerrado)
Todas as instruções entre do e done são executadas repetidamente ATÉ que o valor de expr2 seja TRUE.
APÓS cada iteração do loop, expr3 é avaliado. Isso geralmente é usado para incrementar um contador de loop.
Até você pode usar a seguinte sintaxe:
Feito
7 * 10 = 70 E
para a segunda execução de teste, ele imprimirá a
mensagem - Erro - Número faltando no formulário argumento da linha
de comando Sintaxe: ./mtable
number Use para imprimir a tabela de multiplicação para um determinado número
Isso aconteceu porque não fornecemos o número para o qual desejamos a tabuada. Portanto, o script está mostrando mensagem de erro,
sintaxe e uso do nosso script. É uma boa ideia se nosso programa receber algum argumento, informar ao usuário qual é a utilização do script
e como usá-lo.
Na sintaxe acima ANTES da primeira iteração, expr1 é avaliado. Isso geralmente é usado para inicializar variáveis para o loop.
...
...
A segunda expressão é a condição, ou seja, todas as instruções entre do e done executadas desde que a expressão 2 (ou seja,
continue enquanto o valor da variável i for menor ou equivalente a 5) for TRUE.
A última expressão i++ incrementa o valor de i em 1, ou seja, é equivalente à instrução i = i + 1.
..
repita todas as instruções entre do e done até que expr2 seja
TRUE
http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (2 de 5) [29/07/2002 18:52:26]
LSST v1.05r3 > Capítulo 3 > Loop for
Machine Translated by Google
Aninhamento de for Loop
http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (3 de 5) [29/07/2002 18:52:26]
LSST v1.05r3 > Capítulo 3 > Loop for
feito
echo "" #### imprime a nova linha ###
Execute o script acima da seguinte forma:
$ chmod +x nestedfor.sh $ ./
nestefor.sh 1 1 1
1 1 2 2 2 2
2 3 3 3 3 3
4 4 4 4 4 5
5 5 5 5
fi
echo -e -n "033[40m" #### volta a cor de fundo para preto echo "" #### imprime a nova linha ### pronto
feito
eco -n "$i"
tot=`expr $i + $j` tmp=`expr $tot % 2`
se [ $tmp -eq 0 ]; então
echo -e -n "033[47m " senão echo -e -n
"033[40m "
feito
$ vi tabuleiro de xadrez for (( i
= 1; i <= 9; i++ )) ### Outer for loop ### do
### Loop for externo ###
for (( j = 1 ; j <= 5; j++ )) ### Loop for interno ### do
for (( j = 1 ; j <= 9; j++ )) ### Loop for interno ### do
Aqui, para cada valor de i, o loop interno é alternado 5 vezes, com a variável j assumindo valores de 1 a 5. O loop
for interno termina quando o valor de j excede 5, e o loop externo termina quando o valor de i excede 5.
Como você pode ver, a instrução if pode ser aninhada, da mesma forma, a instrução de loop pode ser aninhada. Você pode aninhar o loop for. Para
entender o aninhamento do loop for, consulte o script de shell a seguir.
Execute o script acima da seguinte
maneira: $ chmod +x tabuleiro
de xadrez $ ./chessboard
$ vi nestedfor.sh for (( i = 1; i <= 5;
i++ )) fazer
O script a seguir é bastante interessante, pois imprime o tabuleiro de xadrez na tela.
Machine Translated by Google
para (( j = 1 ; j <= 9; j++ )) faça
para (( i = 1; i <= 9; i++ )) faça
No meu terminal acima, o script produz a saída da seguinte forma:
tot=`expr $i + $j`
tmp=`expr $tot % 2` se
[ $tmp -eq 0 ]; então
O fim do loop externo e os scripts de shell são encerrados com a impressão
do tabuleiro de xadrez.
Exercício
Tente entender os scripts shell (for loops) mostrados no capítulo do exercício.
feito
Se a posição do número par imprimir o bloco de cor branca (usando
a instrução echo -e -n "033[47m " ); caso contrário, para uma posição
ímpar, imprima a caixa de cor preta (usando a instrução echo -e -n
"033[40m " ). Estas declarações são responsáveis por imprimir todo o
tabuleiro de xadrez na tela com cores alternativas.
eco "" Imprima a linha em branco
Fim do loop interno
Certifique-se de que seu fundo seja preto, como sempre fazemos em
nossos terminais.
feito
Explicação
Comece o loop externo que é executado 9 vezes, e o loop externo
termina quando o valor de i excede 9 Inicia o loop
interno, para cada valor de i o loop interno é alternado 9 vezes, com a
variável j assumindo valores de 1 para 9. O loop for interno termina
quando o valor de j excede 9.
Veja as posições de números pares e ímpares usando essas instruções.
eco -e -n "033[40m"
echo -e -n "033[47m " senão
echo
-e -n "033[40m "
O script de shell acima pode ser explicado da seguinte forma:
Comando(s)/Declarações
fi
LSST v1.05r3 > Capítulo 3 > Loop for
http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (4 de 5) [29/07/2002 18:52:26]
Machine Translated by Google
Loops em scripts de shell
Próximo
Lar
Anterior
Acima enquanto loop
http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (5 de 5) [29/07/2002 18:52:26]
LSST v1.05r3 > Capítulo 3 > Loop for
Machine Translated by Google
....
..
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 3: Construções de linguagem estruturada de shells (bash)
feito
Salve-o e tente
como $ chmod 755
nt1 $./
nt1 7 O loop acima pode ser explicado da seguinte forma:
enquanto [condição] faça
exit 1 fi n=$1
i=1
enquanto
[ $i
-le 10 ] faça
echo "$n * $i = `expr $i * $n`" i=`expr $i + 1` concluído
comando1
comando2
comando3
echo "Erro - Número faltando no argumento da linha de comando do formulário" echo
"Sintaxe: $0 número"
Próximo
Sintaxe:
Use para imprimir a tabuada de multiplicação para um determinado número" echo "
O loop é executado enquanto a condição dada for verdadeira. Por exemplo. O programa for loop acima (mostrado na
última seção do loop for) pode ser escrito usando o loop while como:
$cat > nt1 #!/bin/sh
# #Script para
testar a instrução while # # if [ $# -eq 0 ] then
Anterior
http://www.cyberciti.biz/pdf/lsst/ch03sec07.html (1 de 2) [29/07/2002 18:52:28]
LSST v1.05r3 > Capítulo 3 > A declaração do caso
enquanto loop
Machine Translated by Google
enquanto [$i -le 10]
o programa só produzirá
feito
Esta é a nossa condição de loop, aqui se o valor de i for menor
variável (Aqui está definido como 7 )
n=$1
Cuidado: Se você ignorar (remover) esta instrução, nosso loop
se tornará um loop infinito porque o valor
condição do loop não é verdadeira. Por isso
Defina o valor do argumento da linha de comando como
7 * 2 = 14
Aumente i em 1 e armazene o resultado em i. (ou seja, eu = eu + 1)
Imprimir tabela de multiplicação como
...
7 * 10 = 70, aqui cada valor de tempo da variável n é
Próximo
Lar
fazer e pronto
echo "$n * $i = `expr $i * $n`"
i=`expr $i + 1`
7 * 1 = 7
maior que 10 então, o shell executa todas as instruções entre
fazer
Anterior para loop
Defina a variável i como 1
da variável i sempre permanece menor que 10 e
eu=1
o loop é encerrado.
O loop para aqui se i não for menor que 10, ou seja
multiplique seja eu.
E (vezes infinitas)
A declaração do caso
7 * 1 = 7
Iniciar ciclo
....
...
Acima
http://www.cyberciti.biz/pdf/lsst/ch03sec07.html (2 de 2) [29/07/2002 18:52:28]
LSST v1.05r3 > Capítulo 3 > A declaração do caso
Machine Translated by Google
..
aluguel="*** Veículo desconhecido ***" elif [ -n $1 ] then
...
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 3: Construções de linguagem estruturada de shells (bash)
comando;;
comando padrão2)
comando;;
comando
*)
...
# caso contrário, faça o primeiro argumento como aluguel
Sintaxe:
...
$ cat > car # # se
nenhum nome de veículo for fornecido # ou seja, -z
$1 é definido e é NULL # # se nenhum argumento de linha de comando
..
case $ nome da variável no comando
padrão1)
se [-z $1] então
comando;;
Próximo
esac
O $variable-name é comparado com os padrões até que uma correspondência seja encontrada. O shell então executa todas as
instruções até os dois pontos e vírgulas próximos um do outro. O padrão é *) e será executado se nenhuma correspondência
for encontrada. Por exemplo, escreva o script da seguinte forma:
A instrução case é uma boa alternativa à instrução multinível if-then-else-fi. Ele permite que você combine vários
valores com uma variável. É mais fácil ler e escrever.
comando padrãoN)
...
..
comando;;
Anterior
..
http://www.cyberciti.biz/pdf/lsst/ch03sec08.html (1 de 2) [29/07/2002 18:52:32]
LSST v1.05r3 > Capítulo 3 > A declaração do caso
A declaração do caso
Machine Translated by Google
Para o segundo teste, imprima "Para carro Rs.20 por km/ m".
Salve-o pressionando CTRL+D e execute-o da seguinte forma:
$ chmod +x car $
car van $
car car $
car Maruti-800
Para o primeiro teste, combine com a van e mostrará a saída "Para van Rs.10 por km/ m."
Anterior while loop
esac
O primeiro script verificará se $1 (primeiro argumento da linha de comando) é fornecido ou não, se NÃO for fornecido, defina o valor da variável de
aluguel como "*** Veículo desconhecido ***", se o argumento da linha de comando for fornecido/fornece o valor definido de variável de aluguel para
determinado valor (linha de comando arg). O aluguel $ é comparado com os padrões até que uma correspondência seja encontrada.
case $aluguel em "carro")
echo "Por $aluguel Rs.20 por km/m";; "van") echo "Por $ aluguel Rs.10 por
km/m";; "jipe") echo "Por $ aluguel Rs.5 por km/m";; "bicicleta") echo "Por
$aluguel 20 paisa por km/m";; *) echo "Desculpe, não consigo alugar $ para
você";;
aluguel = $ 1 fi
Lar
Observe que esac é sempre necessário para indicar a declaração de fim de caso.
E para a última execução, não há correspondência para Maruti-800, portanto, o padrão, ou seja, *) é executado e imprime: "Desculpe,
não consigo obter um Maruti-800 para você".
Acima Próximo Como depurar o shell script?
Veja mais um exemplo de instrução case no capítulo 4 da seção comando shift.
http://www.cyberciti.biz/pdf/lsst/ch03sec08.html (2 de 2) [29/07/2002 18:52:32]
LSST v1.05r3 > Capítulo 3 > A declaração do caso
Machine Translated by Google
A opção pode
ser -v Imprimir linhas de entrada do shell à medida
que são lidas. -x Depois de expandir cada comando simples, o bash exibe o valor expandido da variável do sistema PS4,
seguido pelo comando e seus argumentos expandidos.
OU
opção bash {shell-script-name}
Exemplo:
$ cat > dsh1.sh # #
Script para mostrar a depuração do shell
#
tot=`expr $1 + $2` echo
$tot
Anterior
Ao programar o shell, às vezes você precisa encontrar os erros (bugs) no script do shell e corrigi-los (remover erros - depurar).
Para este propósito, você pode usar as opções -v e -x com o comando sh ou bash para depurar o script de shell. A sintaxe geral
é a seguinte: Sintaxe: sh option {shell-script-name }
Próximo
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
3: Construções de linguagem estruturada de shells (bash)
Pressione ctrl + d para salvar e execute-o
como $ chmod 755 dsh1.sh
$ ./dsh1.sh 4 5 9
$
sh -x dsh1.sh 4 5 # #
Script para mostrar a depuração do shell
#
tot=`expr $1 + $2` expr
$1 + $2 ++ expr
4 + 5 + tot=9 echo
$tot +
echo 9 9
Veja a saída acima, -x mostra os valores exatos das variáveis (ou as instruções são mostradas na tela com valores).
LSST v1.05r3 > Capítulo 3 > Como depurar o shell script?
http://www.cyberciti.biz/pdf/lsst/ch03sec09.html (1 de 2) [29/07/2002 18:52:33]
Como depurar o shell script?
Machine Translated by Google
Próximo
A declaração do caso Acima
Anterior Lar
Use a opção -v para depurar scripts de shell complexos.
$ sh -v dsh1.sh 4 5
Script avançado de shell
http://www.cyberciti.biz/pdf/lsst/ch03sec09.html (2 de 2) [29/07/2002 18:52:33]
LSST v1.05r3 > Capítulo 3 > Como depurar o shell script?
Machine Translated by Google
• Interface do usuário
• Funções
Tutorial de script de shell do Linux (LSST) v1.05r3
• Execução condicional
Acima
Próximo
/dev/null - para enviar saída indesejada de
Depois de aprender a base do script de shell, é hora de aprender mais recursos avançados de script/comando de shell
Como depurar o shell script?
Lar
como:
• Manipulação de vários argumentos de linha de comando, etc.
Próximo
Anterior
• Descritores de arquivos
Capítulo 4: Comandos avançados de script de shell
programa
Anterior
• armadilhas
http://www.cyberciti.biz/pdf/lsst/ch04.html [29/07/2002 18:52:35]
LSST v1.05r3 > Capítulo 4 > Introdução
Introdução
Machine Translated by Google
comando> /dev/null
Variável local e global do Shell (exportação
Sintaxe:
Tutorial de script de shell do Linux (LSST) v1.05r3
Exemplo:
Execute os dois comandos a seguir
$ ls > /dev/nulo
$ rm > /dev/nulo
comando)
partição e sistema de arquivos.
Acima
Ponto Futuro:
Este é um arquivo especial do Linux que é usado para enviar qualquer saída indesejada do programa/comando.
Próximo
outros arquivos do dispositivo. Os arquivos neste diretório representam principalmente dispositivos periféricos, como disquetes
Próximo
Comandos avançados de script de shell
Lar
disco, placa de som, impressoras de linha etc. Veja o tutorial do sistema de arquivos para obter mais informações sobre o disco Linux,
$ ls > /dev/nulo
Capítulo 4: Comandos avançados de script de shell
1) Por que a saída do último comando não é redirecionada para o dispositivo /dev/null?
Anterior
A saída do comando acima não é mostrada na tela e é enviada para este arquivo especial. O diretório /dev contém
Anterior
LSST v1.05r3 > Capítulo 4 > /dev/null - Use para enviar saída indesejada do programa
http://www.cyberciti.biz/pdf/lsst/ch04sec1.html [29/07/2002 18:52:36]
do programa
/dev/null - Use para enviar saída indesejada
Machine Translated by Google
Ônibus
Carro
$ saída
$ echo $ vech
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4:
Comandos avançados de script de shell
Comando
$ vech=Car $
echo $vech Imprime o conteúdo da variável vech
Sair do segundo shell retornar para o primeiro shell
$ saída
Considere o seguinte exemplo $
vech=Bus $
echo $vech Bus
$ /
bin/bash $
echo $vech
$ /bin/bash
Sintaxe:
exportar variável1, variável2,.....variávelN
Crie uma nova variável local 'vech' com Car como valor no segundo shell
NOTA: -Linha vazia impressa $
vech=Car $
echo $vech
$ vech=Bus $
echo $vech Imprime o conteúdo da variável vech
Shell global definido como:
"Você pode copiar a variável do shell antigo para o novo shell (ou seja, a variável do primeiro shell para o shell do segundo), tal variável é
conhecida como variável Global Shell."
Para definir a variável global você deve usar o comando export.
Normalmente todas as nossas variáveis são locais. A variável local pode ser usada no mesmo shell, se você carregar outra cópia do shell
(digitando /bin/bash no prompt $), então o novo shell ignorou todas as variáveis do shell antigo. Por exemplo
Agora carregue o segundo shell na memória (que ignora todas as variáveis do shell
antigo) $
echo $vech Imprima o conteúdo da variável vech
Significado
Anterior
$ echo $vech
Imprima o conteúdo da variável vech (agora você pode ver a primeira variável shell e seu valor)
Próximo
Crie uma nova variável local 'vech' com Bus como valor no primeiro shell
http://www.cyberciti.biz/pdf/lsst/ch04sec2.html (1 de 2) [29/07/2002 18:52:41]
LSST v1.05r3 > Capítulo 4 > Variável Shell local e global (comando de exportação
Variável Shell Local e Global (comando
de exportação)
Machine Translated by Google
Significado
$ /bin/bash
Ônibus
$vech=Ônibus
Ônibus
se forem exportados )
Próximo
Exemplos:
$ echo $vech
Agora carregue o segundo shell na memória (a variável do shell antigo é acessada a partir do segundo shell,
Ônibus
programa
véspera
$ /bin/bash
$ echo $vech Imprime o conteúdo da variável vech
$ exit
$ echo $vech Imprime o conteúdo da variável vech
Sair do segundo shell retornar para o primeiro shell
$ exportar dia
$ vech=Bus Crie uma nova variável local 'vech' com Bus como valor no primeiro shell
$ echo $vech
$ echo $vech Imprime o conteúdo da variável vech
Comando
Execução condicional, ou seja, && e ||
Acima
Exporte a primeira variável do shell para o segundo shell, ou seja, a variável global
Lar
$ saída
$ echo $vech
$ exportação
Anterior /dev/null - para enviar saída indesejada de
http://www.cyberciti.biz/pdf/lsst/ch04sec2.html (2 de 2) [29/07/2002 18:52:41]
LSST v1.05r3 > Capítulo 4 > Variável Shell local e global (comando de exportação
Machine Translated by Google
command2 é executado se e somente se command1 retornar um status de saída diferente de zero.
a instrução é executada, caso contrário, a instrução "echo File is not removido" é executada (uma vez que o status existente é
Anterior
Capítulo 4: Comandos avançados de script de shell
Sintaxe:
$ rm myf && echo "Arquivo removido com sucesso" || echo "Arquivo não foi removido"
Próximo
Tutorial de script de shell do Linux (LSST) v1.05r3
A sintaxe para a lista OR é a seguinte
Exemplo:
comando1 && comando2
comando)
se o comando1 for executado com sucesso, o shell executará o comando2 e se o comando1 não for bem-sucedido
Os operadores de controle são && (lido como AND) e || (leia como OU). A sintaxe para a lista AND é a seguinte
Sintaxe:
Anterior
diferente de zero)
Próximo
Você pode usar ambos da seguinte maneira
comando1 || comando2
Se o arquivo (myf) for removido com sucesso (o status de existência é zero), então "echo O arquivo foi removido com sucesso"
Redirecionamento de E/S e descritores de arquivo
Acima
então o comando3 é executado.
Lar
command2 é executado se, e somente se, command1 retornar um status de saída zero.
Sintaxe:
command1 && comamnd2 se o status existir for zero || comando3 se o status de saída for diferente de zero
Variável local e global do Shell (exportação
LSST v1.05r3 > Capítulo 4 > Execução condicional, ou seja, && e ||
http://www.cyberciti.biz/pdf/lsst/ch04sec3.html [29/07/2002 18:52:44]
Execução condicional, ou seja, && e ||
Machine Translated by Google
O comando acima envia a saída do comando cat para o arquivo myf
Considere o seguinte exemplo $ cat >
myf Este é meu
arquivo ^D
(pressione CTRL + D para salvar o arquivo)
$ cal
O comando acima imprime o calendário na tela, mas se você deseja armazenar este calendário em um arquivo, dê o comando
$ cal >
mycal O comando
cal envia a saída para o arquivo mycal. Isso é chamado de redirecionamento de saída. $ sort 10 -20
11 2 ^D
-20
2 10
11
O
comando sort recebe a entrada do teclado e, em seguida, classifica o número e imprime (envia) a saída para a própria tela. Se você
deseja obter informações do arquivo (para o comando sort), dê o comando da seguinte forma: $ cat > nos 10 -20
11 2 ^D $ sort
<
nos
-20
2 10 11 Primeiro
você criou o arquivo nos usando o comando cat, depois nos arquivo fornecido como entrada para o comando sort que imprime números
classificados. Isso é chamado de redirecionamento de entrada.
No Linux (e na linguagem de programação C), seu teclado, tela, etc. são todos tratados como arquivos. A seguir estão os nomes de tais arquivos
Anterior
Como você sabe, os redirecionadores de E/S são usados para enviar a saída do comando para o arquivo ou para ler a entrada do arquivo.
Próximo
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4:
Comandos avançados de script de shell
http://www.cyberciti.biz/pdf/lsst/ch04sec4.html (1 de 3) [29/07/2002 18:52:45]
LSST v1.05r3 > Capítulo 4 > Redirecionamento de E/S e descritores de arquivo
Redirecionamento de E/S e descritores de arquivo
Machine Translated by Google
1
Sintaxe:
Ainda assim, ele imprime a saída em stderr como rm: não é possível remover `bad_file_name111': Nenhum arquivo ou diretório, e se
Usar
$ gato > demonstração
Execute-o da seguinte maneira:
exemplo, escrevendo shell script da seguinte maneira:
resposta=`expr $1 + $2`
número
0
três arquivos são abertos automaticamente pelo seu shell). O uso dos dois primeiros arquivos (ou seja, stdin e stdout),
já vistos por nós. O último arquivo stderr (numerado como 2) é usado pelo nosso programa para imprimir o erro na tela.
saída de erro para arquivo, não pode ser enviado (redirecionamento) para arquivo, tente o seguinte:
Descritores de arquivos
stdin
Por padrão no Linux, todo programa possui três arquivos associados a ele (quando iniciamos nosso programa, esses
Uso: ./ demoscr número1 número2
entrada como padrão
$ rm bad_file_name111
Tela
$rm bad_file_name111 2>er
echo "Uso: $0 número1 número2"
copie esta saída de erro para o seu arquivo 'er'. Para superar esse problema, você deve usar o seguinte
então
$ ./demoscr
Teclado
stderr
são
número do descritor de arquivo> nome do arquivo
Exemplo
Tela
você vê o arquivo como $ cat er este arquivo está vazio, pois a saída é enviada para o dispositivo de erro e você não pode redirecionar
se [ $# -ne 2 ]
echo "A soma é $ans"
Arquivo padrão
Você pode redirecionar a saída de um descritor de arquivo diretamente para um arquivo com a seguinte sintaxe
saída padrão
$ rm bad_file_name111 > er
,
$ chmod 755 demonstração
O comando acima dá um erro como saída, já que você não possui o arquivo. Agora, se tentarmos redirecionar isso
número é o número padrão (número dos descritores de arquivo) do arquivo stderr. Para esclarecer sua ideia, considere outra
fi
erro
rm: não é possível remover `bad_file_name111': Esse arquivo ou diretório não existe
Observe que nenhum espaço é permitido entre 2 e >. O 2>er direciona a saída de erro padrão para o arquivo. 2
saída
como padrão
saída 1
echo "Erro: Número não fornecido"
Erro: O número não foi fornecido
como padrão
2
Exemplos: (suponha que o arquivo bad_file_name111 não exista)
comando:
http://www.cyberciti.biz/pdf/lsst/ch04sec4.html (2 de 3) [29/07/2002 18:52:45]
LSST v1.05r3 > Capítulo 4 > Redirecionamento de E/S e descritores de arquivo
Machine Translated by Google
substitua as instruções de eco acima como segue
para o usuário, significa que temos que imprimir nossa mensagem de erro no stderr e não no stdout. Para superar esse problema
$ ./demoscr > er1
echo "Erro: Número não fornecido" 1>&2
saída padrão (stdout) para dispositivo de erro padrão (stderr).
Sintaxe:
de>&destino
,
Uso: ./ demoscr número1 número2
Funções
Ele imprimirá uma mensagem de erro no stderr e não no stdout. O 1>&2 no final da instrução echo direciona o
Para a segunda execução de amostra, você redirecionou a saída do script para o arquivo er1, pois é um erro, temos que mostrá-lo
$ ./demoscr > er1
Para a primeira execução de amostra
Acima
Próximo
nosso script imprime uma mensagem de erro indicando que você não forneceu dois números.
Erro: O número não foi fornecido
echo "Uso: $0 número1 número2" 1>&2
$ ./demoscr 5 7
Anterior Execução condicional, ou seja, && e ||
Lar
A soma é 12
Agora, se você executá-lo da seguinte maneira:
LSST v1.05r3 > Capítulo 4 > Redirecionamento de E/S e descritores de arquivo
http://www.cyberciti.biz/pdf/lsst/ch04sec4.html (3 de 3) [29/07/2002 18:52:45]
Machine Translated by Google
comando1
nome da função ( ) {
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 4: Comandos avançados de script de shell
comando2
}
Para executar esta função SayHello() basta digitar o nome da seguinte
forma: $
SayHello Hello vivek, Tenha uma boa computação.
Desta forma você pode chamar a função. Observe que após reiniciar o computador você perderá esta função
SayHello(), pois ela foi criada apenas para a sessão atual. Para superar esse problema e adicionar sua própria
função para automatizar algumas tarefas do dia a dia, adicione sua função ao arquivo /etc/ bashrc . Para
adicionar função a este arquivo você deve fazer logon como root. A seguir está o exemplo de arquivo /etc/ bashrc com a
função today() que é usada para imprimir a data formatada. Primeiro faça login como root ou se você já fez login com seu
A lógica acima também se aplica a programas de computador (shell script). Quando o programa se torna complexo, precisamos
usar a técnica de dividir e conquistar. Isso significa que sempre que os programas ficam complicados, nós os dividimos em
pequenos pedaços/entidades que são conhecidos como funções.
}
Onde nome da função é o nome da sua função, que executa uma série de comandos. Uma instrução return encerrará a função. Exemplo: digite
SayHello() no $ prompt da seguinte maneira
$ SayHello() { echo "Hello $LOGNAME, Tenha uma
boa computação"
return
Função é uma série de instruções/comandos. A função executa uma atividade específica no shell, ou seja, tinha um
trabalho específico a fazer ou simplesmente diz tarefa. Para definir a função use a seguinte
sintaxe: Sintaxe:
comandoN
Próximo
quando perguntado
,
Os humanos são animais inteligentes. Eles trabalham juntos para realizar todas as tarefas da vida; na verdade, a maioria de nós depende
um do outro. Por exemplo, você depende do leiteiro para fornecer leite ou do professor para aprender novas tecnologias (se for
professor de informática). O que tudo isso significa é que você não pode realizar todas as tarefas da vida sozinho. Você precisa de alguém
para ajudá-lo a resolver uma tarefa/problema específico.
retornar
.....
,
login não é root) e deseja mover para a conta root, você pode digitar o seguinte comando
Anterior
...
http://www.cyberciti.biz/pdf/lsst/ch04sec5.html (1 de 4) [29/07/2002 18:52:46]
LSST v1.05r3 > Capítulo 4 > Funções
Funções
Machine Translated by Google
# cat /etc/bashrc # /
etc/bashrc
Salve o arquivo e saia dele, após toda essa modificação seu arquivo poderá ficar assim (digite o comando cat /etc/bashrc)
para senha digite root (administradores) senha $ su -l senha:
# Funções e aliases de todo o sistema
# Adicionado por Vivek para mostrar a função no Linux
hoje()
{ echo Esta é uma `data +"%A %d em %B de %Y (%r)"`
retornar
}
# Adicionado por Vivek para mostrar a função no Linux # today() { echo Este é um retorno
`date +"%A
%d em %B de %Y (%r)"`
# # hoje() para imprimir a data formatada
#
# Para executar esta função digite hoje no prompt $
}
# Colocar o PS1 aqui garante que ele seja carregado sempre.
# No final do arquivo adicione o seguinte no arquivo /etc/bashrc # # today() para imprimir a data
formatada #
# Para executar esta função digite hoje no prompt $
PS1="[u@h W]$ "
# O material do ambiente entra em /etc/profile
Abra o arquivo /etc/bashrc usando vi e vá para o final do arquivo (pressionando shift+G) e digite a função today():
Para executar a função, primeiro saia completamente digitando exit no prompt $ (ou pressione CTRL + D, observe que você
pode ter que digitar exit (CTRL + D) duas vezes se fizer login na conta root usando o comando su), então faça login e digite $
hoje, desta forma hoje() está disponível para todos os usuários do seu sistema, se você quiser adicionar um determinado
# vi /etc/bashrc
# Por alguma razão desconhecida, o bash se recusa a herdar
o # PS1 em algumas circunstâncias que não consigo entender.
LSST v1.05r3 > Capítulo 4 > Funções
http://www.cyberciti.biz/pdf/lsst/ch04sec5.html (2 de 4) [29/07/2002 18:52:46]
Machine Translated by Google
Salve o arquivo e saia dele, após toda essa modificação seu arquivo poderá ficar assim (digite o comando cat .bashrc)
# mcedit .bashrc No final do
arquivo adicione o seguinte arquivo .bashrc SayBuy() { echo "Compre $LOGNAME! A vida nunca mais
será a mesma,
até você fazer login novamente!" echo "Pressione uma tecla para sair. . ." ler
}
}
OU
retornar
#vi.bashrc
função para um usuário específico e abra o arquivo .bashrc no diretório inicial do usuário da seguinte forma:
retornar
SayBuy()
{ echo "Compre $LOGNAME! A vida nunca mais será a mesma, até você fazer login
novamente!" echo "Pressione uma tecla
para sair. . ." ler
Dica: Se você quiser mostrar alguma mensagem ou realizar alguma ação ao sair, abra o arquivo .bash_logout em seu diretório inicial
e adicione suas coisas aqui. Por exemplo, sempre que eu sair, quero mostrar a mensagem Comprar! Em seguida, abra seu
arquivo .bash_logout usando um editor de texto como vi e adicione a instrução: echo "Compre $ LOGNAME, pressione uma
tecla. . ." leia Salvar e sair do arquivo. Então, para testar
esse
logout do seu sistema pressionando CTRL + D (ou digite exit) imediatamente você verá a mensagem "Compre xxxxx, pressione uma
tecla. . .", após pressionar a tecla você sairá e o prompt de login será mostrado para você . :-)
Para executar a função, primeiro efetue logout digitando exit no prompt $ (ou pressione CTRL + D), depois faça login e digite $ desta
forma SayBuy() está disponível apenas no seu login e não para todos os usuários do sistema, use .bashrc SayBuy, arquivo
em seu
diretório inicial para adicionar apenas aliases e funções específicas do usuário.
se [ -f /etc/bashrc ]; então . /etc/
bashrcfi
# cat .bashrc
# .bashrc #
#
Aliases e funções específicas do usuário #
Definições globais de origem
LSST v1.05r3 > Capítulo 4 > Funções
http://www.cyberciti.biz/pdf/lsst/ch04sec5.html (3 de 4) [29/07/2002 18:52:46]
Machine Translated by Google
• O programa é mais fácil de escrever.
• A manutenção do programa é muito fácil.
• Evita reescrever o mesmo código repetidas vezes
• Economiza muito tempo.
Por que escrever função?
http://www.cyberciti.biz/pdf/lsst/ch04sec5.html (4 de 4) [29/07/2002 18:52:46]
LSST v1.05r3 > Capítulo 4 > Funções
Passando parâmetros para a função de definição do usuário.
Lar
Acima
Redirecionamento de E/S e descritores de arquivo
Anterior Próximo
Interface do usuário e utilitário de diálogo
Machine Translated by Google
$ cat > userinte # # Script para
demonstração echo e leitura do comando para interação do usuário # echo "Seu bom nome, por favor:" read na echo "Sua
idade, por favor:" read age neyr=`expr $age + 1` echo "Olá $na ,
no próximo
ano você terá $ neyr anos.
(2) Use instruções como echo e read para ler a entrada na variável do prompt. Por exemplo, escreva o script como:
Salve-o e execute
como $ chmod 755 userinte
$ ./userinte
Seu bom nome, por favor :
Vivek
Sua idade, por favor:
25
Olá Vivek, no próximo ano você fará 26 anos.
Próximo
Um bom programa/shell script deve interagir com os usuários. Você pode fazer isso da seguinte maneira: (1) Use
argumentos de linha de comando (args) para script quando desejar interação, ou seja, passar argumentos de linha de comando para
script como: $ ./sutil.sh foo 4, onde foo & 4 são argumentos de linha de comando passados para shell script sutil.sh.
Anterior
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
4: Comandos avançados de script de shell
Mesmo você pode criar menus para interagir com o usuário, primeiro mostrar a opção de menu, depois pedir ao usuário para
escolher o item de menu e tomar a ação apropriada de acordo com o item de menu selecionado, esta técnica é mostrada no script
a seguir:
LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte I
http://www.cyberciti.biz/pdf/lsst/ch04sec6.html (1 de 3) [29/07/2002 18:52:47]
Interface do usuário e utilitário de diálogo - Parte I
Machine Translated by Google
"
eco "-------------------------------------"
$ gato > menuui #
echo "[1] Mostrar data/hora de hoje" echo "[2] Mostrar arquivos
no diretório atual" echo "[3] Mostrar calendário" echo "[4] Iniciar o editor para escrever
cartas" echo "[5] Sair/Parar" eco
"======================="
Declaração Explicação
Inicie o loop infinito, este loop só será
interrompido se você selecionar 5 (ou seja,
item de menu Sair/Parar) como sua opção
de menu
eco "-------------------------------------"
feito
claro
Acima de tudo, declaração explicada na tabela a seguir:
eco "Menu principal
echo "Pressione uma tecla..." ; ler ;;
fazer
Limpe a tela sempre
fazer
claro
esac
echo -n "Insira sua opção de menu [1-5]: " leia seu arquivo case $yourch in
1) echo "Hoje é
`data` 2) echo "Arquivos em
`pwd`" ; ls -l ; echo "Pressione uma tecla . . ." ;
read ;; 3) cal ; echo "Pressione uma tecla. . ." ; read ;; 4) vi ;; 5) exit 0 ;; *) echo "Ops!!! Selecione a opção 1,2,3,4
ou 5";
# Script para criar menus simples e agir de acordo com o selecionado
enquanto :
Iniciar ciclo
, pressione uma tecla. . ." ; ler ;;
# item de menu #
enquanto:
LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte I
http://www.cyberciti.biz/pdf/lsst/ch04sec6.html (2 de 3) [29/07/2002 18:52:47]
Machine Translated by Google
número
4) vi;;
esac
echo "[4] Inicie o editor para escrever cartas"
Anterior
de caixas como caixa de informações, caixa de mensagem, caixa de menu, caixa de entrada, etc. A próxima seção mostra como usar a caixa de diálogo
echo "[1] Mostrar data/hora de hoje" echo
"[2] Mostrar arquivos no diretório atual"
Unid
echo "Pressione uma tecla..." ; ler ;;
erro e peça ao usuário para inserir o número
eco "-------------------------------------" eco eco
"---------- ------------------------------"
Mostrar menu na tela com menu
2) echo "Arquivos em `pwd`" ; ls -l;
Menu principal
Tomar as medidas apropriadas de acordo
leia seu caso
$yourch em
A interface do usuário geralmente inclui menus, diferentes tipos de caixas, como caixa de informações, caixa de mensagem, caixa de entrada, etc.
Próximo
5 (ou seja, Sair/Parar)
Lar
eco "======================="
"
*) echo "Ops!!! Selecione a opção 1,2,3,4 ou 5";
5) saída 0;;
echo "[5] Sair/Parar"
echo -n "Insira sua opção de menu [1-5]:
Pare o loop, se o número do item de menu for
Funções
echo "[3] Mostrar calendário"
3) cal; echo "Pressione uma tecla..." ; ler ;;
Peça ao usuário para inserir o item de menu
entre 1-5 novamente
Utilitário.
não está entre 1 e 5, então mostre
um utilitário fornecido com o Red Hat Linux versão 6.0 chamado dialog, que é usado para criar tipos diferentes
1) echo "Hoje é `data` , pressione uma tecla. . ." ; ler ;;
para o item de menu selecionado, se o item de menu
No shell do Linux (ou seja, bash) não há nenhum recurso interno disponível para criar tal interface de usuário, mas há
"
Interface do usuário e utilitário de diálogo - Parte II
Acima
"
Ler o número do item de menu do usuário
echo "Pressione uma tecla..." ; ler ;;
feito
LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte I
http://www.cyberciti.biz/pdf/lsst/ch04sec6.html (3 de 3) [29/07/2002 18:52:47]
Machine Translated by Google
# monte /mnt/cdrom #
cd /mnt/cdrom/RedHat/RPMS # rpm
-ivh dialog-0.6-16.i386.rpm
Para usuários do Red Hat Linux 6.2, instale o utilitário de diálogo como segue (primeiro insira o CD do Red Hat Linux 6.2 na unidade de CDROM)
Para usuários do Red Hat Linux 7.2, instale o utilitário de diálogo como segue (primeiro insira o CD Red Hat Linux 7.2 # 1 na unidade de CDROM)
# monte /mnt/cdrom #
cd /mnt/cdrom/RedHat/RPMS # rpm
-ivh dialog-0.9a-5.i386.rpm
Próximo
Antes de programar usando o utilitário de diálogo, você precisa instalar o utilitário de diálogo, pois o utilitário de diálogo não é instalado por padrão.
Anterior
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 4: Comandos avançados de script de shell
Após a instalação, você pode começar a usar o utilitário de diálogo. Antes de entender a sintaxe do utilitário de diálogo, tente o seguinte script:
Salve o script de shell e execute-o como:
$ chmod +x dia1 $ ./
dia1
$ cat > dia1 dialog --title
"Linux Dialog Utility Infobox" --backtitle "Linux Shell Script Tutorial" --infobox "Esta é uma caixa de diálogo chamada infobox, que é usada  para
mostrar
algumas informações na tela, Obrigado a Savio Lam e Stuart Herbert para nos fornecer esse utilitário. Pressione qualquer tecla. . " 7 50 ; ler
.
http://www.cyberciti.biz/pdf/lsst/ch04sec7.html (1 de 2) [29/07/2002 18:52:49]
LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte II
Interface do usuário e utilitário de diálogo - Parte II
Machine Translated by Google
{texto} {altura} {largura}
{texto} {altura} {largura}
Depois de executar esta instrução de diálogo, você verá uma caixa na tela intitulada "Bem-vindo ao Linux Dialog Utility" e a mensagem "Este é
{texto} {altura} {largura}
Interface do usuário e utilitário de diálogo - Parte I
Lar
Acima
dialog --title {title} --backtitle {backtitle} {Opções de caixa}
--cardápio
Anterior
onde as opções da caixa podem ser qualquer uma das seguintes
{arquivo} {altura} {largura}
tela e abaixo dessa linha é desenhada. Use o utilitário de diálogo para exibir caixas de diálogo de scripts de shell.
Utilitário
Sintaxe:
{texto} {altura} {largura} {menu} {altura} {tag1} item1}...
--yesno --
msgbox --
infobox --inputbox
{texto} {altura} {largura} [{init}]
caixa de diálogo....Pressione qualquer tecla. . ." dentro desta caixa. O título da caixa é especificado pela opção --title e infobox com --infobox "Message" com esta opção.
Próximo
Caixa de mensagem (msgbox) usando diálogo
Aqui 7 e 50 são a altura e a largura da caixa, respectivamente. "Linux Shell Script Tutorial" é o título da caixa de diálogo exibida no canto superior esquerdo do
--caixa de texto
http://www.cyberciti.biz/pdf/lsst/ch04sec7.html (2 de 2) [29/07/2002 18:52:49]
LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte II
Machine Translated by Google
Tutorial" --msgbox "Esta é uma caixa de diálogo chamada msgbox, que é usada
Roteiro
Tutorial de script de shell do Linux (LSST) v1.05r3
para mostrar algumas informações na tela que também possui o botão Ok, graças a
$./dia2
Anterior
Interface do usuário e utilitário de diálogo - Parte II
$ gato > dia2
Salve e execute como
$chmod +xdia2
dialog --title "Msgbox do Utilitário de Diálogo do Linux" --backtitle "Linux Shell
" 9 50
Anterior
Próximo
caixa yesno usando o utilitário de diálogo
Próximo
.
Sávio Lam
Capítulo 4: Comandos avançados de script de shell
Lar
Acima
e Stuart Herbert para nos dar esta utilidade. Pressione qualquer tecla. .
LSST v1.05r3 > Capítulo 4 > Caixa de mensagem (msgbox) usando utilitário de diálogo
http://www.cyberciti.biz/pdf/lsst/ch04sec8.html [29/07/2002 18:52:51]
Caixa de mensagem (msgbox) usando o utilitário de diálogo
Machine Translated by Google
Salve o script e execute-o como: $
chmod +x dia3 $ ./
dia3
esac
O script acima cria uma caixa de diálogo do tipo yesno, que é usada para fazer algumas perguntas ao usuário e responder sim ou não. Depois de fazer a pergunta,
como sabemos se o usuário pressionou o botão sim ou não? A resposta é status de saída, se o usuário pressionar a tecla sim, o status de saída será zero, se
o usuário não pressionar nenhum botão, o status de saída será um e se o usuário pressionar a tecla Escape para cancelar o status de saída da caixa de
diálogo será um 255. Isso é o que testamos em nosso script de shell acima como
Significado
Anterior
$ cat > dia3
dialog --title "Alerta: Excluir arquivo" --backtitle "Linux Shell Script Tutorial" --yesno
"nDeseja excluir o arquivo '/usr/letters/jobapplication'" 7 60 sel=$ ? case $sel em 0) echo
"Usuário
seleciona para
excluir arquivo";; 1) echo "Usuário seleciona
não excluir arquivo";; 255) echo "Cancelado pelo
usuário pressionando a tecla [ESC]";;
Próximo
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
4: Comandos avançados de script de shell
Obtenha o status de saída do utilitário de diálogo
,
sel=$?
Declaração
http://www.cyberciti.biz/pdf/lsst/ch04sec9.html (1 de 2) [29/07/2002 18:52:53]
LSST v1.05r3 > Capítulo 4 > caixa yesno usando utilitário de diálogo
caixa yesno usando o utilitário de diálogo
Machine Translated by Google
, excluir
case $sel in Agora tome medidas de acordo com o status de saída
esac
e se o status de saída for 255, significa Escape
Próximo
Entrada (caixa de entrada) usando utilitário de diálogo
tecla é pressionada.
Lar
arquivo, se o status de saída for 1, não exclua o arquivo
255) echo "Cancelado por você pressionando a tecla [Escape]";;
Acima
Anterior
0) echo "Você seleciona excluir arquivo";; do utilitário de diálogo, se o status de saída
for 0 1) echo "Você optou por não excluir o arquivo";;
Caixa de mensagem (msgbox) usando utilitário de diálogo
http://www.cyberciti.biz/pdf/lsst/ch04sec9.html (2 de 2) [29/07/2002 18:52:53]
LSST v1.05r3 > Capítulo 4 > caixa yesno usando utilitário de diálogo
Machine Translated by Google
na=`cat /tmp/input.$$` case $sel in
sel=$?
0) echo "Olá $na" ;; 1) echo "Cancelar
é pressionar" ;; 255) echo "Tecla [ESCAPE]
pressionada" ;;
esac
Próximo
$ cat > dia4 dialog --
title "Caixa de entrada - Para receber informações suas" --backtitle "Tutorial Linux Shell Script" --inputbox "Digite seu
nome, por
favor" 8 60 2>/tmp/input.$$
Anterior
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 4: Comandos avançados de script de shell
rm -f /tmp/entrada.$$
A caixa de entrada é usada para receber a entrada do usuário. Neste exemplo, estamos usando o nome do usuário como entrada. Mas onde vamos armazenar
Execute-o da seguinte
maneira: $ chmod +x
dia4 $ ./dia4
http://www.cyberciti.biz/pdf/lsst/ch04sec10.html (1 de 2) [29/07/2002 18:52:55]
LSST v1.05r3 > Capítulo 4 > Caixa de entrada (caixa de entrada) usando utilitário de diálogo
Caixa de entrada (inputbox) usando o utilitário de diálogo
Machine Translated by Google
0 O comando foi bem-sucedido
nome inserido, a resposta é redirecionar o nome inserido para o arquivo por meio da instrução 2>/ tmp/ input.$$ no final do comando de diálogo, que
1
Lar
Acima
Próximo
caixa
Caixa de confirmação (caixa sim não) usando diálogo
Utilitário
Significado
A tecla Escape é pressionada pelo usuário
Para o status de saída da caixa de entrada, consulte a tabela a seguir:
Status de saída para entrada
Anterior
255
significa enviar a saída da tela para um arquivo chamado /tmp/ input.$$, letra que podemos recuperar este nome inserido e armazenar na variável da seguinte forma
Interface do usuário usando o utilitário de diálogo -
Juntando tudo
na=`cat / tmp/ input.$$`.
O botão Cancelar é pressionado pelo usuário
http://www.cyberciti.biz/pdf/lsst/ch04sec10.html (2 de 2) [29/07/2002 18:52:55]
LSST v1.05r3 > Capítulo 4 > Caixa de entrada (caixa de entrada) usando utilitário de diálogo
Machine Translated by Google
ITEM DO MENU
O editor
e a ação para cada item de menu são os seguintes:
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 4: Comandos avançados de script de shell
Data hora
$ cat > smenu # #Como
criar um pequeno menu usando o diálogo # dialog --backtitle "Tutorial
do Linux Shell Script " --title "Menu Principal" --menu "Mover usando [UP] [DOWN],[Enter] para Selecione" 15 50 3
Data/hora "Mostra data e hora" Calendário "Para ver o calendário " Editor "Para iniciar o
editor vi " 2>/tmp/menuitem.$
$
menuitem=`cat /tmp/menuitem.$$`
optar=$?
Data hora
Mostrar calendário
esac
Inicie o editor vi
Calendário
Salve-o e execute
como: $ rm -f /tmp/menuitem.$$
$ chmod +x smenu $ ./
smenu
AÇÃO
Calendário) cal;;
Editor)vi;;
É hora de escrever um script para criar menus usando o utilitário de diálogo. A seguir estão os itens de menu
Mostrar data/
hora atual
Calendário
Anterior
caso $ menuitem em
Data/hora) data;;
editor
Próximo
http://www.cyberciti.biz/pdf/lsst/ch04sec11.html (1 de 2) [29/07/2002 18:53:01]
LSST v1.05r3 > Capítulo 4 > Interface do usuário usando o utilitário de diálogo - Juntando tudo
Interface do usuário usando o utilitário de diálogo -
Juntando tudo
Machine Translated by Google
Primeiro item de menu chamado tag1 (ou seja, Data/hora) e
Envie o item de menu selecionado (tag) para este arquivo temporário
de acordo com o item de menu selecionado. Como você pode ver, o utilitário de diálogo permite uma interação do usuário mais poderosa do que o antigo read and echo
--opções do menu
comando de armadilha
Significado
Largura da caixa
descrição para o item de menu chamado item3 (ou seja"Para começar
Após criar os menus, o usuário seleciona o item do menu pressionando a tecla ENTER, a escolha selecionada é redirecionada para o arquivo temporário, Próximo
A opção --menu é usada no utilitário de diálogo para criar menus, a opção de menu é usada
Altura da caixa
Primeiro item de menu chamado tag3 (ou seja, Editor) e
50
editor
descrição para o item de menu chamado item2 (ou seja, "Para ver
Lar
Anterior
Selecione"
Data e hora")
Calendário "Para ver o calendário
Data/hora "Mostra data e hora"
"Mova usando [UP] [DOWN],[Enter] para
descrição para o item de menu chamado item1 (ou seja, "Mostra
declaração. O único problema com o utilitário de diálogo é que ele funciona lentamente.
Altura do cardápio
vi editor")
Este é o texto mostrado antes do menu
este item de menu é recuperado do arquivo temporário e a seguir a instrução case compara o item de menu e executa as etapas apropriadas
2>/tmp/menuitem.$$
Próximo
calendário")
"Para iniciar o editor vi"
Acima
3
15
Primeiro item de menu chamado tag2 (ou seja, Calendário) e
"
Entrada (caixa de entrada) usando utilitário de diálogo
http://www.cyberciti.biz/pdf/lsst/ch04sec11.html (2 de 2) [29/07/2002 18:53:01]
LSST v1.05r3 > Capítulo 4 > Interface do usuário usando o utilitário de diálogo - Juntando tudo
Machine Translated by Google
ao executar este script, o script é encerrado. O ctrl + c aqui funciona como
Agora, se você pressionar o
sinal ctrl + c, quando esse sinal ocorrer, ele será enviado para todos os processos atualmente em execução no seu sistema. Agora
considere o seguinte script de shell:
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 4: Comandos avançados de script de shell
,
fazer
echo -n "Título do compromisso:" lido na
echo -n "hora:" leia ti
$ cat > testsign ls -R /
echo "Aplicativo protetor de notas de compromisso para Linux" echo -n "Digite o nome do arquivo do seu
banco de dados: leia o nome do arquivo if [! -f $filename]; then echo "Desculpe,
$filename não sai, Criando
banco de dados $filename" echo "Nota de compromisso
keeper Arquivo de banco de dados do aplicativo" > $filename fi echo "Dados iniciais de entrada de dados: `date`" >/tmp/input0.$$ # # Defina
um loop infinito # while :
"
Salve e execute-o
como $ chmod +x
testsign $ ./testsign
Take_input1()
{reconhecimento=0
Próximo
Considere o seguinte exemplo de script:
claro
$ gato > testsign1 #
echo -n "Qualquer observação:" leia a
observação
echo -n "Os dados estão corretos (s/n)?"
Anterior
# Por que capturar sinal, versão 1 #
LSST v1.05r3 > Capítulo 4 > Comando trap
http://www.cyberciti.biz/pdf/lsst/ch04sec12.html (1 de 4) [29/07/2002 18:53:03]
comando de armadilha
Machine Translated by Google
Take_input1
# Chame nossa função de definição de usuário: Take_input1 #
leia a resposta
Salve-o e execute
como $ chmod +x testsign1
$ ./testsign1
Número do sinal Quando ocorre
saída do shell
feito
,
,
}
##
se ele/ela deseja adicionar o próximo
fi
echo -n "Adicionar próximo compromisso (s/n)?" leia é o próximo se [ $isnext
= n -o $isnext = N ];
então cat /tmp/input0.$$ >> $filename rm -f /tmp/input0.$$ return # termina o loop
2
interrupção
de desligamento (CTRL+C)
fi
caso contrário, todos os registros serão copiados de temporários
Ele primeiro pergunta ao arquivo de banco de dados principal onde todos os compromissos do dia estão armazenados, se
nenhum arquivo de banco de dados for encontrado, o arquivo é criado, depois abre um arquivo temporário no diretório /tmp e coloca
a data de hoje nesse arquivo. Em seguida, um loop infinito começa, que pergunta o título do compromisso, horário e observação,
se esta informação estiver correta, ela é gravada no arquivo temporário. Depois
disso, o script pergunta ao registro do compromisso do usuário,
se sim, o próximo registro é adicionado ao arquivo de banco de dados e então o loop irá ser encerrado. Você pode visualizar
seu arquivo de banco de dados usando o comando cat. Agora, o problema é que, ao executar este script, se você pressionar CTRL
+ C, seu script de shell será encerrado e o arquivo temporário será deixado no diretório /tmp . Por
exemplo, tente
da seguinte maneira: $./testsign1 Depois de fornecer o nome do arquivo do banco de dados e depois de adicionar pelo menos um
registro de compromisso ao arquivo temporário, pressione CTRL + C, nosso script foi encerrado e deixou o arquivo temporário no
diretório /tmp, você pode verificar
isto dando o comando
a seguir $ ls /tmp/input* Nosso script precisa detectar tal sinal (evento) quando ocorre; Para conseguir isso, temos que primeiro
detectar o sinal usando o comando trap.
se [$ans = y -o $ans = Y]; então
0
1
Sintaxe:
trap {comandos} {lista de números de sinais}
recno=`expr $recno + 1` echo "$recno.
$na $ti $remark" >> /tmp/input0.$$
http://www.cyberciti.biz/pdf/lsst/ch04sec12.html (2 de 4) [29/07/2002 18:53:03]
LSST v1.05r3 > Capítulo 4 > Comando trap
Machine Translated by Google
echo "* * * CTRL + C Trap ocorre (removendo arquivo temporário)* * *" rm -f /tmp/input0.$$ exit 1
,
3
}
echo -n "Título do compromisso:" lido na
echo -n "hora:" leia ti
echo -n "Qualquer observação:" leia a
observação
$ vi testsign1 # # sinal
está preso para excluir arquivo temporário # del_file() {
! -f $nome do arquivo]; então
fazer
versão 2
echo "Aplicativo Guardião de Notas de Compromisso para Linux" echo -n "Digite o nome do arquivo do seu
banco de dados: leia o nome do arquivo if [ echo "Desculpe, $filename não sai,
Criando banco de dados
$filename" echo "Arquivo de banco de dados do aplicativo Guardião de Notas de Compromisso"> $filename fi echo "Dados iniciais de entrada
de dados: `date`" >/tmp/input0.$$ # # Defina um loop infinito # while :
Para capturar o sinal no script acima, coloque a instrução trap antes de chamar a função Take_input1 como trap
del_file 2 Aqui o comando trap é chamado del_file() quando ocorre uma interrupção de 2 números (ou seja,
CTRL+C). Abra o script acima no editor e modifique-o para que no final fique assim:
.,
"
Take_input1()
{reconhecimento=0
9
echo -n "Os dados estão corretos (s/n)?" leia a resposta
se [$ans = y -o $ans = Y]; então recno=`expr $recno + 1`
sair
de matar (não pode ser pego)
claro
http://www.cyberciti.biz/pdf/lsst/ch04sec12.html (3 de 4) [29/07/2002 18:53:03]
LSST v1.05r3 > Capítulo 4 > Comando trap
Machine Translated by Google
Acima
Anterior Lar Próximo
Depois de dar o nome do arquivo do banco de dados e depois de dar o título do compromisso pressione CTRL+C, Aqui já capturamos esse
sinal CTRL + C (interrupção), então primeiro é chamada nossa função del_file(), na qual dá "* * * CTRL + C Trap ocorre (removendo
arquivo temporário)* * * " e então remove nossa mensagem como arquivo temporário e então sai com status de
saída 1. Agora
verifique o diretório /tmp como segue $ ls /tmp/input* Agora o Shell não reportará tal arquivo temporário saída.
Interface do usuário usando o utilitário de diálogo -
Juntando tudo
Execute o script
como: $ ./testsign1
echo "$recno. $na $ti $remark" >> /tmp/input0.$$ fi echo -n "Adicionar próximo compromisso (s/n)?"
leia
é o próximo se [ $isnext = n -o $isnext = N ]; then cat /tmp/input0.$$ >>
$filename rm -f /tmp/
input0.$$ return # terminar loop fi done # end_while } # # Definir trap para
interrupção CTRL+C, ou seja, instalar nosso manipulador de
erros # Quando ocorre ele primeiro chama
del_file() e depois sai # trap del_file 2 # # Chame
nossa função de definição do
usuário: Take_input1 # Take_input1
O comando de mudança
http://www.cyberciti.biz/pdf/lsst/ch04sec12.html (4 de 4) [29/07/2002 18:53:03]
LSST v1.05r3 > Capítulo 4 > Comando trap
Machine Translated by Google
$1 = foo $2 = barra
Próximo
Por exemplo, escreva o seguinte script de shell para esclarecer sua ideia:
$ vi shiftdemo.sh echo "Os
argumentos atuais da linha de comando são: $1=$1, $2=$2, $3=$3" shift echo "Após o comando shift os argumentos são:
$1=$1, 
$2=$2, $3 =$3"
$1 = -f $2 = foo $3 = bar e você
executou o comando shift, os parâmetros posicionais resultantes seriam os seguintes:
Anterior
O comando shift move os valores atuais armazenados nos parâmetros posicionais (argumentos da linha de comando) para uma
posição à esquerda. Por exemplo, se os valores dos parâmetros posicionais atuais forem:
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
4: Comandos avançados de script de shell
Execute o script acima como segue: $
chmod +x shiftdemo.sh $ ./
shiftdemo -f foo bar Os
argumentos atuais da linha de comando são: $1=-f, $2=foo, $3=bar
Após o comando shift, os argumentos são: $1=foo, $2=barra, $3=
Você também pode mover os parâmetros posicionais em mais de um local especificando um número com o comando shift. O
comando a seguir mudaria os parâmetros posicionais em dois lugares:
turno 2
Você pode usar o comando shift para analisar a opção de linha de comando (args). Por exemplo, considere o seguinte script de shell
simples:
http://www.cyberciti.biz/pdf/lsst/ch04sec14.html (1 de 4) [29/07/2002 18:53:05]
LSST v1.05r3 > Capítulo 4 > O comando shift
Mas onde usar o comando shift?
O comando de mudança
Machine Translated by Google
outro
turno 2
num="$2" turno
2
echo "O programa $0 não reconhece a opção $1" exit 1
esac
elif ["$1" = "-n"] então
se ["$1" = "-b"]; então ob="$2" case $ob em 16)
basesystem="Hex";;
8) basesystem="Outubro";; 2)
sistemabase="bin";; *)
basesystem="Desconhecido";;
$ vi converter enquanto
["$1"] faça
feito
saída=`echo "obase=$ob;ibase=10; $num;" | bc` echo "$num Número decimal = $saída em
$basesystem number system(base=$ob)"
Salve e execute o script de shell acima da seguinte
maneira: $ chmod +x
convert $ ./convert -b 16 -n
500 500 Número decimal = 1F4 no sistema de números hexadecimais
(base = 16) $ ./convert -b
8 -n 500 500 Número decimal = 764 no sistema numérico de outubro
(base = 8) $ ./convert -b 2
-n 500 500 Número decimal = 111110100 no sistema numérico bin (base = 2)
$ ./convert -b 2 -v 500
Programa ./ convert não reconhece a opção -v $ ./
convert -t 2 -v 500 O
programa ./convert não reconhece a opção -t $ ./convert
-b 4 -n 500 500 Número
decimal = 13310 no sistema numérico desconhecido (base = 4 ) $ ./convert -n
500 -b 16 500 Número
decimal = 1F4 no sistema numérico hexadecimal (base = 16)
fi
O script acima é executado de várias maneiras. As três primeiras amostras executadas convertem o número 500 ( -n
500 ) em respectivamente 1F4 (número hexadecimal, ou seja, -b 16), 764 (número octal, ou seja, -b 16), 111110100
(número binário, ou seja, -b 16). Ele usa -n e -b como opção de linha de comando, o que
significa: -b {sistema base, ou seja, 16,8,2 para o qual -n número a ser convertido}
http://www.cyberciti.biz/pdf/lsst/ch04sec14.html (2 de 4) [29/07/2002 18:53:05]
LSST v1.05r3 > Capítulo 4 > O comando shift
Machine Translated by Google
Para facilitar a compreensão da
conversão, armazenamos os
respectivos sistemas de base numérica que
correspondem à string da
variável do sistema de base. Se o
sistema base for 16, armazene o Hex no
sistema base e assim por diante. Isso é
feito usando a instrução case.
Explicação Inicia
o loop while; continue o loop while enquanto
o script ler todas as opções de linha de
comando. Agora comece a analisar a opção de
linha de comando (args) usando o comando
if, nosso script entende as opções
-b e -n, apenas todas as outras opções são
inválidas. Se a opção for -b então
armazena o valor do segundo argumento da
linha de comando na variável ob (ou
seja, se arg for -b 16 então armazene
o 16 em ob)
-n {Número a ser convertido para -b sistema base}
Depois que as duas primeiras opções
de linha de comando (args) forem lidas,
precisaremos das próximas duas opções
de linha de comando (args). shift 2
moverá os valores atuais armazenados
nos parâmetros posicionais (argumentos da
linha de comando) para as duas posições à esquerd
Todo o comando shell script pode ser explicado da seguinte forma:
turno 2
Comando(s)/Declarações
case $ob em
16) basesystem="Hex";; 8)
basesystem="Outubro";; 2)
sistemabase="bin";; *)
basesystem="Desconhecido";;
Porque o sistema base 4 é desconhecido em nosso script.
A última execução de amostra mostra que as opções de linha de comando podem ser fornecidas de diferentes maneiras, ou seja, você pode usá-
las da seguinte maneira: $ ./
convert -n
500 -b 16 Em vez de $ ./convert -b 16 -n 500
esac
enquanto ["$1"]
faça
A quarta e a quinta execução de amostra produzem o erro "O programa ./ convert não reconhece a opção -v". Isso ocorre porque esses dois (-v
e -t) não são a opção de linha de comando válida.
A sexta execução de amostra produziu a saída "500 Número decimal = 13310 no sistema numérico desconhecido (base = 4)".
se ["$1" = "-b"]; então ob="$2"
LSST v1.05r3 > Capítulo 4 > O comando shift
http://www.cyberciti.biz/pdf/lsst/ch04sec14.html (3 de 4) [29/07/2002 18:53:05]
Machine Translated by Google
feito
Agora converta o número fornecido para o
sistema numérico fornecido usando BC.
Mostre o número convertido em
else
echo "O programa $0 não reconhece a opção $1" exit 1 fi
saída=`echo "obase=$ob;ibase=10; $num;" | BC` echo "$num
Número decimal = $saída em $basesystem number system(base=$ob)"
Fim do loop enquanto lemos todas as
opções/argumentos de linha de comando válidos.
elif ["$1" = "-n"] então
num="$2"
mudança 2
Se a opção da linha de comando não for
-n ou -b, imprima o erro
"Programa ./ convert não reconhece
a opção xx" na tela e finalize o script de
shell usando a instrução exit 1 .
Agora verifique a próxima opção de
linha de comando e se sua opção -n
armazena o valor do segundo argumento
da linha de comando na variável num
(ou seja, se arg for -n 500 então
armazene 500 em num) e o shift 2 moverá
os valores atuais armazenados em os
parâmetros posicionais
(argumentos de linha de comando) para
as duas posições à esquerda.
tela.
Como você pode ver, o comando shift pode ser usado para analisar a opção de linha de comando (args). Isso é útil se você tiver
um número limitado de opções de linha de comando. Se as opções de linha de comando forem muitas, essa abordagem funcionará
lentamente e será complexa para escrever e manter. Você precisa usar outro comando embutido no shell - getopts. A
próxima seção mostra o uso do comando getopts. Você ainda precisa do comando shift em conjunto com getopts para outros trabalhos
de script de shell.
Lar
Acima Próximo comando getopts
Comando trap anterior
LSST v1.05r3 > Capítulo 4 > O comando shift
http://www.cyberciti.biz/pdf/lsst/ch04sec14.html (4 de 4) [29/07/2002 18:53:05]
Machine Translated by Google
Exemplo:
Conforme definido nas
páginas de manual: "optstring contém as letras de opção a serem reconhecidas; se uma letra for seguida por dois
pontos, espera-se que a opção tenha um argumento, que deve ser separado dela por um espaço em branco. Cada vez que
for invocada, getopts coloca a próxima opção na variável shell variável1. Quando uma opção requer um argumento,
getopts coloca esse argumento na variável OPTARG. Em caso de erros, mensagens de diagnóstico de getopts são
impressas quando opções ilegais ou argumentos de opção ausentes são encontrados. Se uma opção ilegal for vista ,
getopts coloca ? na variável1."
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 4: Comandos avançados de script de shell
Temos um script chamado ani que tem sintaxe como
ani -n -a -s -w -d
-n nome do animal" -a idade
do animal" -s sexo do animal
"
eco "
eco "
Sintaxe:
getopts {optstring} {variável1}
# Uso: ani -n -a -s -w -d # # # help_ani() Para
imprimir ajuda # help_ani() {
echo "Uso: $0 -n -a -s -w -d" echo "Opções: estes são argumentos
opcionais" echo "
getopts é usado pelo shell para analisar o argumento da linha de comando.
O script acima é o seguinte:
Este comando é usado para verificar se argumentos de linha de comando válidos foram passados para o script. Geralmente usado em loop
while.
$ vi ani #
Opções: estes são argumentos opcionais
Anterior Próximo
-n nome do animal -a
idade do animal -s
sexo do animal -w
peso do animal -d
valores de demonstração (se alguma das opções acima for usada, seus valores não serão considerados)
LSST v1.05r3 > Capítulo 4 > comando getopts
http://www.cyberciti.biz/pdf/lsst/ch04sec13.html (1 de 3) [29/07/2002 18:53:06]
comando getopts
Machine Translated by Google
esac
}
# #Iniciar procedimento principal # # #Definir
valor padrão para a variável # isdef=0 na=Moti age="2 Meses" #
pode ser 60
dias, como
você quiser! sexo=Masculino
case "$opt" em n)
na="$OPTARG";; a)
idade="$OPTARG";; s)
sexo="$OPTARG";; w)
peso="$OPTARG";; d) isdef=1;; ?)
ajuda_ani;;
feito
eco "
peso=3Kg # #se
nenhum argumento # if [ $# -lt
1 ]; então help_ani fi enquanto getopts
n:a:s:w:d opt do
echo " -d valores de demonstração (se alguma das opções acima for usada " echo "seus valores não serão considerados)" saída
1
-w peso do animal"
echo "Nome do animal: $na, Idade: $idade, Sexo: $sexo, Peso: $peso (usuário
definir modo)" else
na="Cão Plutão"
idade=3
sexo=Masculino
se [$isdef -eq 0] então
peso=20kg echo "Nome
do animal: $na, Idade: $idade, Sexo: $sexo, Peso: $peso (modo de demonstração)" fi
http://www.cyberciti.biz/pdf/lsst/ch04sec13.html (2 de 3) [29/07/2002 18:53:06]
LSST v1.05r3 > Capítulo 4 > comando getopts
Machine Translated by Google
Acima
Anterior Lar Próximo
Veja, por causa do getopts, podemos passar argumentos de linha de comando em estilos diferentes. A seguir estão as opções inválidas
para o script ani $ ani
-nLassie -a4 -sFemal -w20Kg Sem espaço entre
a opção e seu valor.
O comando de mudança
$ ani -nLassie-a4-sFemal-w20Kg $ ani -n
Lassie -a 4 -s Feminino -w 20Kg -c Mamífero -c não é uma das opções
válidas.
Salve-o e execute da seguinte
maneira $ chmod +x
ani $ ani -n Lassie -a 4 -s Feminino -w 20Kg $ ani -a
4 -s Feminino -n Lassie -w 20Kg $ ani -n Lassie -s
Feminino -w 20Kg -a 4 $ ani -w 20Kg -s Feminino -n
Lassie -a 4 $ ani -w 20Kg -s Feminino $ ani -n Lassie
-a 4 $ ani -n Lassie $ ani -a 2
Utilitários essenciais para usuários avançados
http://www.cyberciti.biz/pdf/lsst/ch04sec13.html (3 de 3) [29/07/2002 18:53:06]
LSST v1.05r3 > Capítulo 4 > comando getopts
Machine Translated by Google
• Para organizar seus dados
• Para melhor gerenciamento de arquivos
Tutorial de script de shell do Linux (LSST) v1.05r3
• Administração do sistema, etc.
Serviços de utilidade pública
Anterior
comando getopts
O Linux contém programas utilitários poderosos. Você pode usar esses utilitários para
Próximo
Preparando-se para um tour rápido do essencial
• Localize informações do sistema
requer compreensão da expressão. Após a rápida introdução aos utilitários, você aprenderá o
Próximo
expressão.
A seção a seguir apresenta alguns dos utilitários essenciais, bem como a expressão. Enquanto
Capítulo 5: Utilitários essenciais para usuários avançados
Lar
Acima
shell de programação, você precisa usar esses utilitários essenciais. Alguns desses utilitários (especialmente sed e awk)
Anterior
http://www.cyberciti.biz/pdf/lsst/ch05.html [29/07/2002 18:53:07]
LSST v1.05r3 > Capítulo 5 > Introdução
Introdução
Machine Translated by Google
11, pressione a tecla "tab" e escreva Vivek (conforme mostrado nos arquivos a seguir):
Próximo
Utilitários essenciais para usuários avançados
Nota Cada bloco de dados é separado do outro pelo caractere TAB, ou seja, durante a criação do arquivo, se você digitar
nome
Tutorial de script de shell do Linux (LSST) v1.05r3
15
marcar
Sr. Sem Marca
Lar
13
Cinza
15 67
Selecionando parte de um arquivo usando o utilitário cut
14Rani
Para esta parte do tutorial, crie arquivos de dados sname e smark como segue (usando o editor de texto de sua escolha)
Anterior
11
Renuka
Próximo
13 96
14 36
12
Prakash
Sr.Sem Nome
Capítulo 5: Utilitários essenciais para usuários avançados
11 67
Acima
12 55
Anterior
Vivek
http://www.cyberciti.biz/pdf/lsst/ch05sec01.html [29/07/2002 18:53:08]
LSST v1.05r3 > Capítulo 5 > Preparando-se para um tour rápido de utilitários essenciais
Preparando-se para um tour rápido do essencial
Serviços de utilidade pública
Machine Translated by Google
Comando
O utilitário cut corta os dados selecionados do arquivo sname . Para selecionar Sr.no. campo de sname dê o comando da seguinte
forma:
$cut -f1 sname 11
12
13
14
15
corte
-f1
Próximo
Suponha que a partir do arquivo sname você deseja imprimir o nome do aluno na tela e, a partir do shell (seu prompt de comando, ou
seja, $), emita o comando da seguinte forma: $cut -f2
sname Vivek Renuka
Prakash
Ashish
Rani
Anterior
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 5: Utilitários essenciais para usuários avançados
Explicação
Arquivo que é usado pelo utilitário cut e que é usado como entrada para o utilitário cut.
Nome do utilitário cut
Usando a opção (-f), você está especificando o número do campo de extração. (Neste exemplo é 1,
ou seja, primeiro campo)
nome
Você pode redirecionar a saída do utilitário cut da seguinte
maneira $cut -f2 sname > /tmp/sn.tmp.$$
$cut -f2 smark > /tmp/sm.tmp.$$ $cat /tmp/
sn.tmp.$$ Vivek Renuka
Prakash
Ashish
Rani $cat /
tmp/
sm.tmp.$$ 67 55 96 36 67
LSST v1.05r3 > Capítulo 5 > Selecionando parte de um arquivo usando o utilitário cut
http://www.cyberciti.biz/pdf/lsst/ch05sec02.html (1 de 2) [29/07/2002 18:53:11]
Selecionando parte de um arquivo usando o utilitário
Machine Translated by Google
Preparando-se para um tour rápido do essencial
Uso do utilitário Cut:
Anterior
Serviços de utilidade pública
cut -f{número do campo} {nome do arquivo}
Selecionando parte de um arquivo.
Sintaxe:
Sintaxe geral do utilitário cut:
Acima
Próximo
Juntando linhas usando o utilitário paste
Lar
http://www.cyberciti.biz/pdf/lsst/ch05sec02.html (2 de 2) [29/07/2002 18:53:11]
LSST v1.05r3 > Capítulo 5 > Selecionando parte de um arquivo usando o utilitário cut
Machine Translated by Google
14 Ashish 14 36
13 Prakash 13 96
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 5: Utilitários essenciais para usuários avançados
15Rani 15 67
Você pode anotar a diferença básica entre o utilitário recortar e colar?
Anterior
Selecionando parte de um arquivo usando o utilitário cut
11 Vivek 11 67
Sintaxe:
colar {arquivo1} {arquivo2}
Uso do utilitário paste:
Juntando linhas.
12 Renuka 12 55
O utilitário Colar é útil para reunir informações textuais localizadas em vários arquivos.
Próximo
Próximo
O utilitário de junção
Agora digite o seguinte comando no prompt do shell $
paste sname smark
Sintaxe geral do utilitário colar:
O utilitário Colar junta informações textuais. Para limpar sua ideia, tente seguir o comando no prompt do shell:
Lar
Acima
Anterior
$ paste /tmp/sn.tmp.$$ /tmp/sm.tmp.$$ Vivek 67
Renuka 55
Prakash 96
Ashish 36 Rani
67
http://www.cyberciti.biz/pdf/lsst/ch05sec03.html [29/07/2002 18:53:12]
LSST v1.05r3 > Capítulo 5 > Juntando linhas usando o utilitário paste
Juntando linhas usando o utilitário paste
Machine Translated by Google
12Renuka 55
Próximo
11Vivek 67
Tutorial de script de shell do Linux (LSST) v1.05r3
13Prakash 96
junte-se a {arquivo1} {arquivo2}
Uso do utilitário join:
O utilitário join une linhas de arquivos separados.
Traduzindo intervalo de caracteres usando tr
Agora digite o seguinte comando no prompt do shell:
Sintaxe geral do utilitário join:
Lar
Sintaxe:
$join sname smark
Acima
Aqui os nomes dos alunos são combinados com suas notas apropriadas. Como ? O utilitário join usa o Sr.No. campo para
Anterior
Anterior
Juntando linhas usando o utilitário paste
Próximo
junte-se aos arquivos. Observe que Sr.No. é o primeiro campo no arquivo sname e smark.
14 Cinzas 36
Capítulo 5: Utilitários essenciais para usuários avançados
Observe que a junção só funcionará se houver um campo comum em ambos os arquivos e se os valores forem idênticos a cada um
Utilitário
outro.
15Rani 67
http://www.cyberciti.biz/pdf/lsst/ch05sec04.html [29/07/2002 18:53:14]
LSST v1.05r3 > Capítulo 5 > O utilitário join
O utilitário de junção
Machine Translated by Google
quinzeRani
14As3is3
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
5: Utilitários essenciais para usuários avançados
Você pode ver claramente que cada ocorrência do caractere 'h' é substituída por '3' e '2' por 'x'. O utilitário tr traduz caracteres
específicos em outros caracteres específicos ou intervalo de caracteres em outros intervalos. h -> 3 2 -> x
Sintaxe:
tr {padrão-1} {padrão-2}
Uso do utilitário tr:
para traduzir um intervalo de caracteres em outro intervalo de caracteres.
Depois de digitar o parágrafo seguinte, descobri meu erro de que o parágrafo inteiro deve estar em caracteres minúsculos, como
corrigir esse erro? (Dica - Use o utilitário tr)
onzeVivek
1x Renuka
Aqui, tr traduz o intervalo de caracteres (ou seja, de a a z pequeno) em outros intervalos (ou seja, de A a Z maiúsculo).
Sintaxe geral e uso do utilitário tr:
13 Prakas3
QUE MÁGICA
Digite o seguinte comando no prompt do shell: $ tr "h2"
"3x" <sname
{Pressione CTRL + C para encerrar.}
Considere o seguinte exemplo: (depois de executar o comando digite texto em letras minúsculas) $ tr
"[az]" "[AZ]" oi, sou Vivek
Anterior
$ cat > lcommunity.txt ESTE É
UM PARÁGRAFO DE EXEMPLO ESCRITO PARA A
COMUNIDADE LINUX, POR VIVEK G GITE (QUEM MAIS?)
OK, ISSO É HISTÓRIA ANTIGA.
Próximo
OI SOU VIVEK que
magia
http://www.cyberciti.biz/pdf/lsst/ch05sec05.html (1 de 2) [29/07/2002 18:53:15]
LSST v1.05r3 > Capítulo 5 > Traduzindo intervalo de caracteres usando o utilitário tr
Traduzindo intervalo de caracteres usando o
utilitário tr
Machine Translated by Google
Lar Próximo
O utilitário de junção
Anterior
Acima Manipulação de dados usando o utilitário awk
http://www.cyberciti.biz/pdf/lsst/ch05sec05.html (2 de 2) [29/07/2002 18:53:15]
LSST v1.05r3 > Capítulo 5 > Traduzindo intervalo de caracteres usando o utilitário tr
Machine Translated by Google
Utilitário awk, selecione cada registro do arquivo contendo a palavra “bom” e execute a ação de imprimir o terceiro campo
(Quantidade de bens disponíveis.). Agora tente o seguinte e anote sua saída. $ awk '/good/ { imprimir $1 " "
$3 }' inventário
Depois de criar o comando de emissão do
arquivo $ awk '/good/ { print $3 }' inventário 10
12
5
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 5: Utilitários essenciais para usuários avançados
Sintaxe geral do utilitário awk:
Lar
Acima
Próximo utilitário sed - Editando arquivo sem
usar o edito
inventário
Anterior
Traduzindo intervalo de caracteres usando o
utilitário tr
peça 4
ovo
cacke bom 10 queijo
ok 4 caneta bom 12
disquete bom 5
É o padrão usado para selecionar linhas do arquivo. /
bom/
Esta é a ação; se o padrão for encontrado, imprima essa ação. Aqui $3 significa terceiro registro em {imprimir
registro
selecionado. (O que $1 e $2 significam?) $3} Arquivo
de
inventário que é usado pelo utilitário awk que é usado como entrada para o utilitário awk.
Próximo
Antes de aprender mais sobre o awk, crie um arquivo de dados usando qualquer editor de texto ou simplesmente vi:
Uso do utilitário awk:
Para manipular dados.
Sintaxe:
awk 'ação padrão' {nome do arquivo}
Anterior
Para o exemplo de inventário $ awk '/good/ { print $3 }' ,
http://www.cyberciti.biz/pdf/lsst/ch05sec06.html [29/07/2002 18:53:17]
LSST v1.05r3 > Capítulo 5 > Manipulação de dados usando o utilitário awk
Manipulação de dados usando o utilitário awk
Machine Translated by Google
$ sed '/tea/s//milk/g' cháormilk > /tmp/result.tmp.$$
palavra chá
Uso do utilitário sed: sed é usado para editar (transformação de texto) em um determinado fluxo, ou seja, um arquivo ou pode ser inserido de
Próximo
Removendo linhas duplicadas usando uniq
Capítulo 5: Utilitários essenciais para usuários avançados
Sintaxe:
o chá é melhor que o café.
editor para editar qualquer coisa!!!)
Tutorial de script de shell do Linux (LSST) v1.05r3
chá Red-Lable é bom.
que usa o comando de editores 'ex' para editar arquivos de texto sem iniciar o ex. (Legal! não é? sem uso de texto
chá ou leite
chá.
leite é melhor que café.
Lar
Anterior
O leite da Índia é bom.
Substitua (substitua) a palavra leite pela
/chá/
um gasoduto.
$ gato /tmp/resultado.tmp.$$
Depois de criar o arquivo, dê o comando
sed {expressão} {arquivo}
Encontre a palavra chá ou selecione todas as linhas com o
Anterior
Utilitário
g
Próximo
O utilitário sed é usado para encontrar todas as ocorrências de chá e substituí-las pela palavra leite. sed - editor de linha Steam
Faça as mudanças globalmente.
Acima
O leite da Índia é bom.
Para esta parte do tutorial, crie um arquivo de dados como segue
leite Red-Lable é bom.
s//leite/
Manipulação de dados usando o utilitário awk
LSST v1.05r3 > Capítulo 5 > utilitário sed - Editando arquivo sem usar o editor
http://www.cyberciti.biz/pdf/lsst/ch05sec07.html [29/07/2002 18:53:18]
editor
utilitário sed - Editando arquivo sem usar
Machine Translated by Google
sai academia de informática, a'ruim. o que
ainda me lembro desse nome. carvalho!
como você está, Luser? o que
ainda me lembro desse nome.
para
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 5:
Utilitários essenciais para usuários avançados
Após criar o arquivo, emita o seguinte comando no prompt do shell $ uniq personame
personagem
Sintaxe geral do utilitário uniq:
Sintaxe:
uniq {nome do arquivo}
Olá, sou vivek 12333
12333,
bem-
vindo
sai academia de informática, a'ruim. o que
ainda me lembro desse nome. carvalho!
como você está, Luser? o que
ainda me lembro desse nome.
Crie um arquivo de texto pessoal da seguinte maneira:
O comando acima imprime as linhas que são exclusivas. Por exemplo, nosso arquivo original contém 12333 duas vezes, portanto cópias adicionais
de 12333 são excluídas. Mas se você examinar a saída do uniq, notará que 12333 desapareceu (Duplicado) e "o que ainda me lembro desse nome"
permanece como está. Como o utilitário uniq compara apenas linhas adjacentes, as linhas duplicadas devem estar próximas umas das outras no
arquivo. Para resolver este problema você pode usar o comando a seguir $ sort personame | único
Olá, sou vivek 12333,
bem-
vindo
Anterior Próximo
para
http://www.cyberciti.biz/pdf/lsst/ch05sec08.html (1 de 2) [29/07/2002 18:53:19]
LSST v1.05r3 > Capítulo 5 > Removendo linhas duplicadas usando o utilitário uniq
Removendo linhas duplicadas usando o
utilitário uniq
Machine Translated by Google
Utilitário sed anterior - Editando arquivo sem usar
Próximo
Acima
Lar
Utilitário
editor
Encontrando padrão correspondente usando grep
LSST v1.05r3 > Capítulo 5 > Removendo linhas duplicadas usando o utilitário uniq
http://www.cyberciti.biz/pdf/lsst/ch05sec08.html (2 de 2) [29/07/2002 18:53:19]
Machine Translated by Google
eu também
Depois de salvar o arquivo, emita o seguinte comando, $ grep "too"
demofile cartoons são bons,
especialmente desenhos
como tom (cat)
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 5: Utilitários
essenciais para usuários avançados
grep localizará todas as linhas do padrão "too" e imprimirá todas as linhas (correspondentes) na tela. impressões grep também, bem como desenhos animados e desenhos
animados; porque grep trata "também" como expressão. A expressão por grep é lida como a letra t seguida de o e assim por diante. Portanto, se esta expressão for
encontrada em qualquer lugar on-line, ela será impressa. grep não entende palavras.
Aprendendo expressões com ex
arquivo de demonstração
Acima
Próximo
Olá Mundo!
desenhos animados são
bons, especialmente desenhos como
Tom
(gato), qual é a música
número
um 12221, eles
nos amam, eu também
Removendo linhas duplicadas do arquivo de banco de
dados de texto usando o utilitário uniq
Crie um arquivo de texto da seguinte maneira:
Lar
Sintaxe:
grep "palavra para encontrar" {nome do arquivo}
Anterior Próximo
Anterior
http://www.cyberciti.biz/pdf/lsst/ch05sec09.html [29/07/2002 18:53:20]
LSST v1.05r3 > Capítulo 5 > Encontrando padrão correspondente usando o utilitário grep
Encontrando padrão correspondente usando o
utilitário grep
Machine Translated by Google
Introdução
Padrão definido como:
“Conjunto de caracteres (podem ser palavras ou não) é chamado de padrão”.
Uma é a palavra gato (o segundo gato é um animal! Eu conheço 'tom' cat). Se a mesma pergunta for feita ao computador (não ao computador,
mas ao utilitário grep), o grep tentará encontrar todas as ocorrências da palavra "gato" ( lembre-se de que grep leia a palavra "cat" como a letra
c seguida por a e seguida por t), incluindo cat, copycat, catalog etc.
Para esta parte do capítulo/tutorial crie 'demofile' - arquivo de texto usando qualquer editor de texto.
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6:
Aprendendo expressões com ex
Por exemplo, "cachorro", "celeron", "mouse", "navio" etc. são todos exemplos de padrão. O padrão pode ser alterado de um para outro, por
exemplo, "navio" como "ovelha".
Anterior
Encontrando padrão correspondente usando o utilitário grep
• sed
O que “gato” significa para você?
Então você deve saber como construir expressões regulares. Na próxima parte do LSST você aprenderá como construir expressões regulares
usando o editor ex.
Expressões regulares são usadas por diferentes utilitários Linux como
Próximo
Começando com ex
No capítulo 5, "Tour rápido pelos utilitários essenciais", você viu os utilitários básicos. Se você usá-los com outras ferramentas, esses utilitários
são muito úteis para processamento de dados ou para outros trabalhos. Na parte restante do tutorial, aprenderemos mais sobre padrões, filtros,
expressões e, claro, sed e awk em profundidade.
Anterior
Metacaracteres definidos como: "Se
os padrões forem identificados usando caracteres especiais, esses caracteres especiais serão conhecidos como metacaracteres".
• grep •
awk
Lar
expressões definidas como: "A
combinação de padrão e metacaracteres é conhecida como expressões (expressões regulares)."
Próximo
Acima
http://www.cyberciti.biz/pdf/lsst/ch06.html [29/07/2002 18:53:23]
LSST v1.05 > Capítulo 6 > Introdução
Aprendendo expressões com ex
Machine Translated by Google
Exemplo:
Próximo
ex {nome do arquivo}
Tutorial de script de shell do Linux (LSST) v1.05r3
$ ex demofile
Como você pode ver, você obterá : prompt, aqui você pode digitar ex comando, digitar q e pressionar a tecla ENTER para
saia de ex conforme mostrado a seguir: (lembre-se de que os comandos diferenciam maiúsculas de minúsculas)
:q
Imprimindo texto na tela
Você pode iniciar o editor ex digitando ex no prompt do shell:
Entrando no modo Ex. Digite “visual” para ir para o modo Normal.
Lar
:
Sintaxe:
Acima
$ ex demofile
Anterior
Anterior
Aprendendo expressões com ex
Próximo
"demofile" [noeol] 20L, 387C
O : (dois pontos) é um prompt ex onde você pode digitar o comando ex do editor de texto ou uma expressão regular. É hora de
Capítulo 6: Aprendendo expressões com ex
vivek@ls vivek]$
Depois de digitar o comando q , você sai para o prompt do shell.
abra nosso demofile, use ex da seguinte forma:
LSST v1.05 > Capítulo 6 > Introdução ao ex
http://www.cyberciti.biz/pdf/lsst/ch06sec01.html [29/07/2002 18:53:24]
Começando com ex
Machine Translated by Google
Imprimindo texto na tela
NOTA Por padrão, o comando p imprimirá a linha atual, no nosso caso é a última linha do arquivo de texto acima.
:
Para imprimir a segunda linha do nosso arquivo, dê o
comando : 2 p Este é vivek de Poona.
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6:
Aprendendo expressões com ex
Dê o comando :
1,$ p
Olá mundo.
Agora digite 'p' na frente de: como segue e pressione enter
NOTA Aqui 1,5 é o endereço. se for usado um único número (por exemplo, 5 p), indica o número da linha e se dois
números forem separados por vírgula, o intervalo da linha.
:p
Ok! Eu irei parar.
Eu amo Linux.
É diferente de todos os outros sistemas operacionais
Próximo
Primeiro abra nosso demofile da seguinte
maneira: $ ex
demofile "demofile" [noeol] 20L,
387C Entrando no modo Ex. Digite “visual” para ir para o modo Normal.
É diferente de todos os outros sistemas operacionais
Agora, se você deseja imprimir a primeira linha nas próximas 5 linhas (ou seja, 1 a 5 linhas), dê o
comando : 1,5 p Hello World.
Este é vivek de Poona.
Anterior
Este é vivek de Poona.
Eu amo Linux.
LSST v1.05 > Capítulo 6 > Impressão de texto na tela
http://www.cyberciti.biz/pdf/lsst/ch06sec02.html (1 de 2) [29/07/2002 18:53:25]
Imprimindo uma linha específica
Imprimindo linhas usando intervalo
Imprimindo arquivo inteiro na tela
Machine Translated by Google
2 Este é vivek de Poona. 3
1 Olá, mundo.
.....
NOTA Este comando imprime um número próximo a cada linha. Se você não quiser o número, você pode desativar os
números emitindo o seguinte comando : set
nonumber: 1,3 p
Próximo
Excluindo linhas
Lar
Acima
Dê o comando :
definir número:
1,3 p
Anterior
OK! Eu irei parar.
NOTA Aqui 1 é a primeira linha e $ é o caractere especial de ex, que significa caractere da última linha. Então 1,$ significa imprimir da
primeira linha até o caractere da última linha (ou seja, final do arquivo). Aqui p significa impressão.
Começando com ex
Olá Mundo.
...
.....
Este é vivek de Poona.
http://www.cyberciti.biz/pdf/lsst/ch06sec02.html (2 de 2) [29/07/2002 18:53:25]
LSST v1.05 > Capítulo 6 > Impressão de texto na tela
Imprimindo o número da linha com nosso texto
Machine Translated by Google
OBSERVAÇÃO
Eu amo Linux.
Tutorial de script de shell do Linux (LSST) v1.05r3
Aqui 1 é a 1ª linha e o comando d indica exclusões (que exclui a 1ª linha).
Próximo
Copiando linhas
Dê o comando
Lar
Acima
:1, d
Anterior
Anterior Próximo
Imprimindo texto na tela
Você pode até excluir o intervalo da linha dando o comando como
Capítulo 6: Aprendendo expressões com ex
:1,5d
http://www.cyberciti.biz/pdf/lsst/ch06sec03.html [29/07/2002 18:53:26]
LSST v1.05 > Capítulo 6 > Excluindo linhas
Excluindo linhas
Machine Translated by Google
. (DOT) é um comando especial do Linux.
.....
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6:
Aprendendo expressões com ex
OK! Eu irei parar.
Meu irmão Vikrant também adora Linux.
Atualmente ele aprende Linux.
Linux é legal.
É diferente de todos os outros sistemas operacionais
Eu amo Linux.
Você sabe?
É diferente de todos os outros sistemas operacionais
....
. (DOT) é um comando especial do Linux.
Meu irmão Vikrant também adora Linux.
Próximo
Rani minha irmã nunca usa Linux
Ela só adora jogar e nada mais.
Dê o comando da seguinte
forma : 1,4
co $:
1,$ p Eu amo Linux.
NOTA Aqui 1,4 significa copiar de 1 a 4 linhas; comando co significa cópia; $ é o fim do arquivo. Então, isso significa copiar as
primeiras quatro linhas até o final do arquivo. Você pode excluir esta linha da
seguinte
maneira : 18,21 d Ok!
Eu irei parar. :1,$p
Eu amo Linux.
O Linux agora tem 10 anos.
No próximo ano o Linux completará 11 anos.
É diferente de todos os outros sistemas operacionais
Anterior
http://www.cyberciti.biz/pdf/lsst/ch06sec04.html (1 de 2) [29/07/2002 18:53:28]
LSST v1.05 > Capítulo 6 > Copiando linhas
Copiando linhas
Machine Translated by Google
Anterior
Acima
Excluindo linhas
OK! Eu irei parar.
Procurando as palavras
Lar Próximo
http://www.cyberciti.biz/pdf/lsst/ch06sec04.html (2 de 2) [29/07/2002 18:53:28]
LSST v1.05 > Capítulo 6 > Copiando linhas
Machine Translated by Google
Procurando as palavras
(b) Dê o seguinte comando : g/
linux/ p
:/Linux/
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6:
Aprendendo expressões com ex
Eu amo Linux.
:c
Dê o comando
Nota Por exemplo, você pode especificar o endereço (linha) usando um número para várias operações. Isso é útil se você souber o
número da linha com antecedência, mas se não souber o número da linha, poderá usar o endereço contextual para imprimir a
linha na tela. No exemplo acima, /linux/ é um endereço contextual que é construído cercando uma expressão regular com duas
barras. E p é o comando de impressão de ex.
No exemplo anterior (:/linux/ p) apenas uma linha é impressa. Se você quiser imprimir todas as ocorrências da palavra "linux",
então você deve usar g, que significa endereço de linha global. Isso instrui ex a encontrar todas as ocorrências do padrão. Tente
seguir :1,$ /Linux/ p
:q
O que dá o mesmo resultado. Isso significa que g significa 1,$.
Tente seguir e anote a diferença (Dica - falta o relógio p)
No próximo ano o Linux completará 11 anos.
Próximo
Dê o comando
(a) Dê o seguinte comando :/linux/
p Eu amo
Linux.
. (DOT) é um comando especial do Linux.
Meu irmão Vikrant também adora Linux.
"demofile" 20L, 386C escrito
O comando w salvará o arquivo.
Atualmente ele aprende Linux.
Anterior
LSST v1.05 > Capítulo 6 > Pesquisando as palavras
http://www.cyberciti.biz/pdf/lsst/ch06sec05.html (1 de 2) [29/07/2002 18:53:29]
Salvando o arquivo em ex
Desistir do ex
Machine Translated by Google
Próximo
Linhas de enfrentamento Acima
Localizar e substituir (substituindo regular
Anterior Lar
Observe que use o comando wq para salvar e sair do ex.
O comando q sai do ex e você retorna ao prompt do shell.
expressão)
http://www.cyberciti.biz/pdf/lsst/ch06sec05.html (2 de 2) [29/07/2002 18:53:29]
LSST v1.05 > Capítulo 6 > Pesquisando as palavras
Machine Translated by Google
Nota Usando o comando acima, você está substituindo a palavra "aprender" pela palavra "lerarns".
Considerado o seguinte comando:
....
Próximo
Explicação
Comando
Capítulo 6: Aprendendo expressões com ex
Olá Mundo.
:p
Padrão alvo Se o
padrão alvo for encontrado, substitua a expressão (ou seja
:8 s/aprende/aprende/
Tutorial de script de shell do Linux (LSST) v1.05r3
Substituto
:8h
Explicação
é
OK! Eu irei parar.
.....
Substituto
Comando
Rani minha irmã nunca usa Unix
:1,$s/Linux/Unix/
..
O comando acima pode ser explicado da seguinte forma:
Substitua todas as linhas
Anterior
Este é vivek de Poona.
Atualmente ele aprende Linux.
aprender/ )
:1,$
aprender/
o padrão "Linux" e se o padrão "Linux" for encontrado, substitua o padrão "Unix".
Vá para a linha 8, endereço da linha.
/aprende/
Usando o comando acima, você está substituindo todas as linhas, ou seja, o comando encontrará toda a linha de endereço para
Atualmente ele aprende Linux.
é
Dê o comando da seguinte forma
8
:1,$p
. (DOT) é um comando especial do Linux.
http://www.cyberciti.biz/pdf/lsst/ch06sec06.html (1 de 3) [29/07/2002 18:53:31]
LSST v1.05 > Capítulo 6 > Localizar e substituir (substituindo expressão regular)
Localizar e substituir (substituindo regular
expressão)
Machine Translated by Google
O comando acima encontra todas as linhas que contêm a expressão regular "Unix" e, em seguida, substitui "Linux" por todas as
ocorrências de "Unix". Observe que o comando acima também pode ser escrito da seguinte forma :
g /Unix/ s//Linux
Tente o seguinte e observe o resultado com muito cuidado. :g /Unix/
s/Unix/Linux 3 substituições
em 3 linhas
Por padrão, o comando substituto substitui apenas a primeira ocorrência de um padrão em uma linha. Vamos dar outro exemplo,
dê o comando :/brother/p Meu
irmão Vikrant
também adora Linux, que também adora Unix.
/Linux/
Aqui // é substituído pelo último padrão/expressão regular, ou seja, Unix. Seu atalho. Agora tente o seguinte :g /Linux/ s//
UNIX/ 3 substituições em
3 linhas :g/ Linux/p Linux é
legal.
Agora na linha acima "também" a palavra ocorre duas vezes, dê o seguinte comando substituto : g/brother/ s/
also/XYZ/ :/brother/p Meu
irmão Vikrant
XYZ adora Linux, que também adora Unix.
Rani minha irmã sempre usa Unix
UNIX agora tem 10 anos.
O comando acima primeiro encontrará a linha contendo o padrão "irmã", se encontrado, então substituirá o padrão "sempre"
pelo padrão "nunca" (significa encontrar a linha que contém a palavra irmã, nessa linha encontre a palavra nunca e substitua-a com
palavra sempre.)
Rani minha irmã sempre usa UNIX
:g /Linux/ s//UNIX/ 3
substituições em 3 linhas :g/
UNIX/p
Mesmo você também pode usar o endereço contextual da seguinte
forma :/sister/ p
Rani, minha irmã nunca usa Unix :g /
sister/ s/never/always/ :p
Unix/
O Linux agora tem 10 anos.
UNIX é legal.
Padrão de destino
Se o padrão de destino for encontrado, substitua a expressão
(ou seja, Unix/ )
Rani minha irmã sempre usa Linux
http://www.cyberciti.biz/pdf/lsst/ch06sec06.html (2 de 3) [29/07/2002 18:53:31]
LSST v1.05 > Capítulo 6 > Localizar e substituir (substituindo expressão regular)
Machine Translated by Google
Anterior
A opção g no final instrui o comando para realizar a substituição em todas as ocorrências do padrão de destino dentro de
uma linha de endereço.
Substituindo a palavra pela confirmação de
do utilizador
:g/brother/ s/XYZ/also/g :p
Meu irmão Vikrant também adora Linux, que também adora Unix.
Próximo
Observe que "também" é substituído apenas uma vez. Se você quiser que o comando funcione com todas as ocorrências de
padrão dentro de uma linha de endereço, dê o comando da seguinte
forma: :g/brother/ s/also/XYZ/
g :p Meu irmão Vikrant XYZ adora Linux, que XYZ adora unix.
Certifique-se de que da próxima vez
funcione :g/brother/ s/XYZ/also/
Lar
Procurando as palavras Acima
http://www.cyberciti.biz/pdf/lsst/ch06sec06.html (3 de 3) [29/07/2002 18:53:31]
LSST v1.05 > Capítulo 6 > Localizar e substituir (substituindo expressão regular)
Machine Translated by Google
Depois de dar este comando, ex fará perguntas como - substituir por UNIX (y/ n/ a/ q/ ^E/ ^Y)?
:g/Linux/s//UNIX/gc
Encontrando palavras
Tutorial de script de shell do Linux (LSST) v1.05r3
Digite y para substituir a palavra ou n para não substituir ou a para substituir todas as ocorrências da palavra.
Acima
Dê o comando da seguinte forma
Próximo
expressão)
Anterior Próximo
Capítulo 6: Aprendendo expressões com ex
Anterior Lar
Localizar e substituir (substituindo regular
http://www.cyberciti.biz/pdf/lsst/ch06sec07.html [29/07/2002 18:53:32]
LSST v1.05 > Capítulo 6 > Substituindo palavra pela confirmação do usuário
do utilizador
Substituindo a palavra pela confirmação de
Machine Translated by Google
Os símbolos < e > correspondem respectivamente à string vazia no início e no final da palavra. Para encontrar a linha que
contém o padrão Linux no início, dê o comando :/^Linux Linux é legal.
Rani minha irmã nunca usa Linux
Para visualizar o arquivo inteiro sem linha em branco, você pode usar o comando a
seguir: :g/[^/^$]
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6:
Aprendendo expressões com ex
Como você sabe, $ é um caractere de fim de linha, o ^ (caret) corresponde ao início da linha. Para encontrar todas as ocorrências
do padrão "Linux" no início da linha, dê o comando :g/^Linux Linux é
legal.
Olá Mundo.
Este é vivek de Poona.
Encontrará palavras como teatro, o, irmão, outro etc. E se você quiser apenas encontrar palavras como "o" ? Para encontrar a
palavra (digamos Linux), você pode dar um comando como :/<Linux>
Linux é
legal. :g/ <Linux>/
p Linux é legal.
O seguinte comando encontrará uma linha vazia:: /
^$
O Linux agora tem 10 anos.
Para encontrar todas as linhas em branco, dê o
comando: :g/^$
:/Linux$
Próximo
Comandos como :g/
the/p É
diferente de todos os outros Os. Meu irmão
Vikrant também adora Linux, que também adora Unix.
Rani minha irmã nunca usa Linux
O Linux agora tem 10 anos.
Eu amo Linux.
E se você quiser encontrar "Linux" no final da linha, dê o comando
Anterior
É diferente de todos os outros sistemas operacionais
LSST v1.05 > Capítulo 6 > Encontrando palavras
http://www.cyberciti.biz/pdf/lsst/ch06sec08.html (1 de 3) [29/07/2002 18:53:33]
Encontrando palavras
Machine Translated by Google
g /[^
O Linux agora tem 10 anos.
Este é vivek de Poona.
O Linux agora tem 10 anos.
Atualmente ele aprende Linux.
Explicação
Atualmente ele aprende Linux.
:você
Meu irmão Vikrant também adora Linux, que também adora Unix.
Comando
É diferente de todos os outros Os. Meu
irmão Vikrant também adora Linux, que também adora Unix.
. (DOT) é um comando especial do Linux.
Este é vivek de Poona.
. (DOT) é um comando especial do Linux.
OK! Eu irei parar.
...
Rani, minha irmã nunca usa Linux. Ela
só adora jogar e nada mais.
/^$
Rani, minha irmã nunca usa Linux. Ela
só adora jogar e nada mais.
No próximo ano o Linux completará 11 anos.
No próximo ano o Linux completará 11 anos.
[^] Isso significa não
linha vazia, combinação de ^ e $.
....
Linux é legal.
Todas as ocorrências
Linux é legal.
:1,$p
Olá, mundo.
Experimente o comando para desfazer, para desfazer o que você fez, dê o seguinte:
Eu amo Linux.
OK! Eu irei parar.
OK! Eu irei parar.
Você sabe?
Para deletar todas as linhas em branco você pode dar o seguinte
comando :
g/^$/d Ok! Eu irei
parar.
:1,$p Olá, mundo.
Você sabe?
....
http://www.cyberciti.biz/pdf/lsst/ch06sec08.html (2 de 3) [29/07/2002 18:53:33]
LSST v1.05 > Capítulo 6 > Encontrando palavras
Machine Translated by Google
expressões
Acima
Usando intervalo de caracteres regularmente
do utilizador
Lar Próximo
Substituindo a palavra pela confirmação de
Anterior
http://www.cyberciti.biz/pdf/lsst/ch06sec08.html (3 de 3) [29/07/2002 18:53:33]
LSST v1.05 > Capítulo 6 > Encontrando palavras
Machine Translated by Google
Meu irmão Vikrant também adora Linux, que também adora Unix.
Isto irá encontrar apenas "Linux" e não o "linux", para superar este problema tente o seguinte :g/[Ll]inux/p Eu amo
linux.
O Linux agora tem 10 anos.
Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6:
Aprendendo expressões com ex
Atualmente ele aprende Linux.
No próximo ano o Linux completará 11 anos.
Aqui, o intervalo de dígitos é especificado fornecendo o primeiro dígito (0-zero) e o último dígito (1), separados por hífen. Você pode tentar
[az] para caracteres minúsculos, [AZ] para caracteres maiúsculos. Não apenas isso, existem certas classes nomeadas de caracteres que são
predefinidas. Eles são os seguintes:
O Linux agora tem 10 anos.
Aqui está uma lista de caracteres entre [e], que corresponde a qualquer caractere único nesse intervalo. se o primeiro caractere da lista for
^, ele corresponderá a qualquer caractere que não esteja na lista. No exemplo acima [Ll], tentaremos combinar L ou l com o resto do padrão.
Vejamos outro exemplo. Suponha que você queira corresponder um caractere de um dígito no intervalo, você pode dar o comando da
seguinte forma :/[0123456789]
Significado
Rani minha irmã nunca usa Linux
Até você pode tentar da seguinte
maneira : g/[0-9]
No próximo ano o Linux completará 11 anos.
Letras de A a Z ou de a a z
Excluir caractere ou caractere de controle comum (0x7F ou 0x00 a 0x1F)
[:alnum:]
[:alfa:]
[:cntrl:]
Tente o seguinte comando : g/Linux/
p Linux é legal.
Anterior
Linux é legal.
Rani, minha irmã nunca usa Linux. (DOT)
é um comando especial do Linux.
Classes
predefinidas
de personagens
Próximo
O Linux agora tem 10 anos.
Letras e dígitos (A a Z ou a a z ou 0 a 9)
http://www.cyberciti.biz/pdf/lsst/ch06sec09.html (1 de 3) [29/07/2002 18:53:35]
LSST v1.05 > Capítulo 6 > Usando intervalo de caracteres em expressões regulares
Usando intervalo de caracteres em
expressões regulares
Machine Translated by Google
[:digit:]
[:graph:]
[:lower:]
[:print:]
[:punct:]
Dígito hexadecimal (0 a 9, A a F, a a f)
Isso incluirá lo(ves), Do, no(thing) etc.
Aqui, o primeiro caractere c é correspondido, depois qualquer caractere único (.) seguido por um número n de caractere único
(1 ou 100 vezes par) e finalmente termina com e. Isso pode encontrar palavras diferentes como segue comando ou catand
etc.
Dígito (0 a 9)
[:espaço:]
* Corresponde a zero ou mais vezes. Por
exemplo, digite o seguinte comando : g/L*
Hello
World.
Este é vivek de Poona.
Nos metacaracteres de expressão regular, como . (DOT) ou * perdem seu significado especial se usarmos como . ou *. A barra
invertida remove o significado especial de tais caracteres de carne e você pode usá-los como caracteres comuns. Por
exemplo, se você quiser pesquisar. (DOT) no início da linha, então você não pode
Espaço, tabulação, retorno de carro, nova linha, tabulação vertical ou avanço de formulário
(0x09 a 0x0D, 0x20)
Por exemplo, digite o seguinte comando : g/
<.o> Ela
só adora jogar e nada mais.
Rani minha irmã nunca usa Linux
Letra maiúscula (A a Z)
Você sabe?
Em vez de escrever esse comando, você pode facilmente usar classes ou intervalos predefinidos da seguinte forma :/
[[:alnum:]]
:g/Li*
Linux é legal.
:g/c.*e .
(DOT) é um comando especial do Linux.
Caractere de impressão (0x20 a 0x7E)
O Linux agora tem 10 anos.
Caractere de pontuação (ctrl ou espaço)
Caractere de impressão, como impressão, exceto que um caractere de espaço é excluído
[:superior:]
[:xdígito:]
O . (ponto) corresponde a qualquer caractere único.
....
Letra minúscula (a a z)
Por exemplo, para encontrar dígitos ou alfabeto (superior e inferior), você escreverá :/[0-9A-
Za-Z]
....
http://www.cyberciti.biz/pdf/lsst/ch06sec09.html (2 de 3) [29/07/2002 18:53:35]
LSST v1.05 > Capítulo 6 > Usando intervalo de caracteres em expressões regulares
Machine Translated by Google
Em vez disso, use :g/
^.
OK! Eu irei parar.
use o comando da seguinte
forma : g/^.
. (DOT) é um comando especial do Linux.
...
Próximo
. (DOT) é um comando especial do Linux.
Usando & como caractere de substituição especial
Lar
....
..
Olá Mundo.
Anterior
Acima
Encontrando palavras
Este é vivek de Poona.
http://www.cyberciti.biz/pdf/lsst/ch06sec09.html (3 de 3) [29/07/2002 18:53:35]
LSST v1.05 > Capítulo 6 > Usando intervalo de caracteres em expressões regulares
Machine Translated by Google
3 substituições em 3 linhas
:1,$ s/Linux/&-Unix/p
padrão (finalmente construindo o substituto "Linux-Unix" para "Linux").
Convertendo caracteres minúsculos em
Rani minha irmã nunca usa Linux-Unix
Tutorial de script de shell do Linux (LSST) v1.05r3
Você consegue adivinhar a saída deste comando?
:1,$ s/Linux-Unix/&Linux/p
maiúsculas
Este comando substituirá o padrão de destino "Linux" por "Linux-Unix". & antes - Unix significa usar "último
Acima
Experimente o seguinte comando:
padrão encontrado" com determinado padrão, então aqui o último padrão encontrado é "Linux", que é usado com determinado -Unix
Linux-Unix já completou 10 anos.
expressões
Próximo
Próximo
Lar
Rani minha irmã nunca usa Linux-Unix
Capítulo 6: Aprendendo expressões com ex
:g/Linux-Unix/p
Anterior
Anterior
Linux-Unix é legal.
Usando intervalo de caracteres regularmente
http://www.cyberciti.biz/pdf/lsst/ch06sec10.html [29/07/2002 18:53:35]
LSST v1.05 > Capítulo 6 > Usando & como caractere de substituição especial
personagem
Usando & como substituto especial
Machine Translated by Google
A localização do endereço da linha é tudo, ou seja, encontre todas as linhas para seguir o padrão
g
Anterior
Próximo
Capítulo 6: Aprendendo expressões com ex
:1,$ s/^ *$//
1,$
/[az]/
Comando
Tutorial de script de shell do Linux (LSST) v1.05r3
é
:1,$ s/[az]/u &/g
Substituição de MAIÚSCULAS (u) Nota: Use l (L pequeno) para caracteres minúsculos.
Espero que você tenha aprendido muito com isso. Para dominar a expressão você precisa praticar bastante. Esse
Próximo
Lar
Encontre todas as letras minúsculas - Destino
:1,$ s/[AZ]/l&/g
Você consegue adivinhar a saída do seguinte comando?
Usando & como caractere de substituição especial
Comando substituto
Anterior
Nota: indica dois espaços pretos.
Explicação
você&/
seus amigos com tais expressões. Você consegue adivinhar o que a última expressão faz?
Substituição global
tutorial é muito importante para continuar com o restante do tutorial e se tornar um usuário avançado do Linux. Impressionar
awk - revisitado
O comando acima pode ser explicado da seguinte forma:
Tente o seguinte comando
Substitua por maiúsculas. u& significa substituir o último padrão (&) correspondente ao seu
Parabéns pela conclusão bem-sucedida deste tutorial de expressões regulares.
Acima
http://www.cyberciti.biz/pdf/lsst/ch06sec11.html [29/07/2002 18:53:37]
LSST v1.05 > Capítulo 6 > Convertendo caracteres minúsculos em maiúsculos
maiúsculas
Convertendo caracteres minúsculos em
Machine Translated by Google
Padrão {
Corresponder a zero ou mais caracteres
^
Anterior
?
Escolhas separadas para combinar
Próximo
Capítulo 7: awk revisitado
Personagem de escape seguindo
awk -f {arquivo de programa awk} nome do arquivo
Significado
Tutorial de script de shell do Linux (LSST) v1.05r3
Sintaxe:
expressões. A seguir está o resumo dos metacaracteres comuns do awk:
criação etc
awk lê a entrada de determinado arquivo (ou também de stdin) uma linha por vez, então cada linha é comparada
*
Intervalo de correspondência da instância
maiúsculas

Anterior
O utilitário awk é uma linguagem de programação de script/manipulação de dados poderosa (na verdade, baseada no C
ação 2
Metacaractere
}
Próximo
ação 1
$
|
Começando com o awk
O programa awk contém algo como segue:
Combine qualquer personagem
Lista
+
Fim da linha da correspondência
Combine zero ou um anterior
Acima
com padrão. Se o padrão corresponder a cada linha, uma determinada ação será executada. O padrão pode ser regular
Corresponder ao início da linha
Combine mais um anterior
Sintaxe geral do awk:
Lar
Convertendo caracteres minúsculos em
linguagem de programação). Use o awk para lidar com tarefas complexas, como cálculo, manipulação de banco de dados, relatório
ação N
. (Ponto)
[ ]
{ }
LSST v1.05 > Capítulo 7 > awk - Revisitado
http://www.cyberciti.biz/pdf/lsst/ch07.html [29/07/2002 18:53:38]
Introdução: awk - revisitado
Machine Translated by Google
4
1. Caneta 5 20,00 ----> É um recorde.
1. Caneta -> Rs.100
Anterior
'{imprime $1 $2 "--> Rs." $ 3 * $ 4
O comando print é usado para imprimir conteúdo de variáveis ou texto incluído em
Digite o seguinte programa awk no prompt do shell,
Capítulo 7: awk revisitado
programa/comando no prompt do shell:
2
campos tem seus próprios atributos. Por exemplo, pegue a quantidade. campo. Quantidade. O atributo de campos é seu numérico (pode conter
Tutorial de script de shell do Linux (LSST) v1.05r3
1
Nos campos do arquivo acima estão Sr.No,Product,Qty,Unit Price. Campo é o menor elemento de qualquer registro. Cada
Preço
Lápis 3 3,50
$ 3, $ 4 representam respectivamente os campos Sr.No, Produto, Quantidade e Preço Unitário. (Não confunda $1,$2 etc com
O programa/comando awk acima pode ser explicado da seguinte forma:
base de dados. Observe que "--> Rs." é uma string que é impressa como sua.
3. Borracha -> Rs.10,5
} '
Considere o seguinte arquivo de banco de dados de texto
5 20h00
espaço (ou caractere de tabulação) e o registro é separado usando um caractere de nova linha (ou seja, cada registro termina em
A coleção de registros é conhecida como arquivo de banco de dados. No arquivo de banco de dados de texto acima, cada campo é separado usando
Próximo
Caneta
2. Lápis -> Rs.20
da variável contém o valor do campo. Finalmente podemos fazer diretamente o
3
apenas dados numéricos). A coleção de campos é conhecida como registro. Então
$ awk '{ imprimir $1 $2 "--> Rs." $3 * $4 }'invenção
text ". Aqui $1, $2, $3,$4 são todas variáveis especiais. $1, $2, etc.
Para esta parte do tutorial, crie um arquivo de dados de texto inventado (mostrado como acima). Agora digite o seguinte awk simples
Explicação
Nota $1,$2 etc (no awk) também é conhecido como variável predefinida e pode atribuir qualquer valor encontrado no campo.
Galo 2 45,50
argumentos de linha de comando do shell script)
declaração do programa awk
Sr. Sem quantidade de produto
"
cálculo usando $3 * $4, ou seja, multiplicação do terceiro e quarto campo em
Unidade
Borracha 10 2,00
o fim da linha). No awk, os campos são acessados usando variáveis especiais. Por exemplo, no banco de dados acima $1, $2,
4. Galo -> Rs.91
http://www.cyberciti.biz/pdf/lsst/ch07sec01.html (1 de 3) [29/07/2002 18:53:39]
LSST v1.05 > Capítulo 7 >
Começando com o awk
Machine Translated by Google
, que imprime o registro inteiro, você pode verificar isso emitindo o seguinte awk
Aqui o terceiro campo do banco de dados é comparado com 5, este é o padrão. Se esse padrão for encontrado em qualquer banco
de dados de linha, o registro inteiro será impresso.
$ awk '{print $2}' invenção
Você também pode criar um arquivo de comando (programa) awk da seguinte maneira:
-f opção instrui o awk, para ler seu
,
awk imprime o segundo campo do arquivo. Da mesma forma, se você deseja imprimir o segundo e o quarto campo do arquivo, dê o
seguinte comando: $awk '{print
$2 $4}' inven Pen20.00 Pencil2.00
Rubber3.50
Cock45.50
Agora crie o seguinte programa awk da seguinte maneira:
$cat > comp_inv 3 > 5 { print
$0 }
$0 é uma variável especial do
comando
awk: $ awk '{print $0}' inven 1.
Caneta 5 20,00 2.
Lápis 10 2,00 3.
Borracha 3 3,50 4.
Galo 2 45,50
Execute-o da seguinte
maneira: $ awk -f comp_inv
inven 2. Lápis 10 2,00
E então você pode executar ou executar o arquivo de comando awk "prn_pen" acima como segue $ awk
-f prn_pen inven 5 10
Borracha
Galo
Caneta
$ gato > prn_pen
No programa awk acima /Pen/ é o padrão de pesquisa, se esse padrão for encontrado na linha (ou registro), imprima o terceiro campo
do registro. {print $3} é
chamado de Ação. No prompt do shell, $ awk -f prn_pen comando inven de determinado
arquivo, inven é o nome do arquivo de banco de dados que é tomado como entrada para o awk.
Lápis
/Caneta/ {imprimir $3}
http://www.cyberciti.biz/pdf/lsst/ch07sec01.html (2 de 3) [29/07/2002 18:53:39]
LSST v1.05 > Capítulo 7 >
Machine Translated by Google
Acima Variável predefinida do awk
Lar
Anterior awk revisitado
Próximo
LSST v1.05 > Capítulo 7 >
http://www.cyberciti.biz/pdf/lsst/ch07sec01.html (3 de 3) [29/07/2002 18:53:39]
Machine Translated by Google
Execute-o da seguinte maneira.
Significado
Número do registro de entrada
Anterior
NR
ORS
Próximo
Capítulo 7: awk revisitado
String separadora de registros de saída (o padrão é
NF
registro de entrada respectivamente. No exemplo acima, NR é alterado conforme nosso registro de entrada muda, e NF é
Tutorial de script de shell do Linux (LSST) v1.05r3
"
NR e NF são variáveis predefinidas do awk, o que significa Número de registros de entrada, Número de campos em
{
Impressão Rec. # 3 (3. Borracha 3 3,50), e o número de campos para este registro é 4
nova linha)
padrão)
Começando com o awk
Formato de saída do número
FS
Nosso próximo exemplo fala mais sobre a variável predefinida do awk. Crie o arquivo awk da seguinte maneira:
Impressão Rec. # 1 (1. Pen 5 20,00), E o número do campo para este registro é 4
variável awk
FILENAME Nome do arquivo de entrada atual
Próximo
$awk -f def_var invenção
Número de campos no registro de entrada
OFMT
Fazendo aritmética com awk
}
constante, pois há apenas 4 campos por registro. A tabela a seguir mostra uma lista dessas variáveis integradas do awk.
nova linha)
NF
padrão)
OFS
Acima
Impressão Rec. # 4 (4. Cock 2 45,50), e o número de campos para este registro é 4
String separadora de campo de saída (em branco é
RS
print "Imprimindo Rec. #" NR "(" $0 "),E o número do campo para este registro é
Lar
Anterior
$ gato > def_var
Impressão Rec. # 2 (2. Lápis 10 2,00), e o número do campo para este registro é 4
Caractere separador de registro de entrada (o padrão é
Caractere separador de campo (em branco e tabulação é
LSST v1.05 > Capítulo 7 > Variável predefinida do awk
http://www.cyberciti.biz/pdf/lsst/ch07sec02.html [29/07/2002 18:53:40]
Variável predefinida do awk
Machine Translated by Google
"$ 1 * $ 2
=
20 módulo 3 = 2
Anterior
Variáveis predefinidas do awk
=
Capítulo 7: awk revisitado
20/3 = 6,66667
"US$ 1 - US$ 2
x
Tutorial de script de shell do Linux (LSST) v1.05r3
"$ 1 + $ 2
=
{
=
20 3
(Divisão),% (uso modular para encontrar o restante da operação de divisão).
Variáveis definidas pelo usuário no awk
"$2"
Acima
Você pode facilmente fazer a aritmética com o awk da seguinte maneira
+
Execute o programa awk da seguinte maneira:
}
Próximo
"$1 % $2
(Pressione CTRL + D para encerrar)
Lar
"$1/$2
=
20 x 3 = 60
Anterior
20 - 3 = 17
+
-
20 + 3 = 23
"$1 + $2, a instrução é usada para fins de adição. Aqui $1 + $2,
imprimir $ 1 " " $ 2 " imprimir $ 1 "
" $ 2 " imprimir $ 1 " / " $ 2 "
imprimir $ 1 " " $ 2 " imprimir $ 1 "
mod " $ 2 "
Próximo
$ gato > matemática
=
$ awk -f matemática
No programa acima, print $1
"significa adicionar (+) o primeiro campo ao segundo campo. Da mesma forma que você pode fazer - (subtração), * (multiplicação), /
http://www.cyberciti.biz/pdf/lsst/ch07sec03.html [29/07/2002 18:53:41]
LSST v1.05 > Capítulo 7 > Fazendo aritmética com awk
Fazendo aritmética com awk
Machine Translated by Google
"não2"
No programa acima, no1, no2 e todos são variáveis definidas pelo usuário. Os valores do primeiro e do segundo campo são
=
Anterior
}
suporte.
artigo = $2
Aqui estamos imprimindo o preço total de cada produto (multiplicando o terceiro campo pelo quarto campo).
Capítulo 7: awk revisitado
"
resposta = $ 1 + $ 2
1 5
Tutorial de script de shell do Linux (LSST) v1.05r3
não2 = $2
$ awk -f matemática1
{
=
resposta. Observe que a instrução print imprime qualquer coisa
{
2.Lápis Rs.20
Agora tente o seguinte programa awk e anote sua saída.
$ awk -f fatura inventada
Você também pode definir sua própria variável no programa awk, da seguinte maneira:
"
impresso usando a instrução print as, print no1 no2 entre aspas
duplas ("texto") como está. Se a string não estiver entre aspas duplas, ela será tratada como
atribuído à variável no1, no2 respectivamente e a adição à variável ans. O valor da variável pode ser
Próximo
+
+
Execute-o como
O programa a seguir imprime o preço total de cada produto, bem como o total geral de todos os produtos no
imprimir nº1 "}
1 + 5 = 6
"
imprimir item de reconhecimento "Rs." total
"
reconhecimento = $ 1
4. Galo Rs.91
Execute o programa da seguinte maneira
"
total = $ 3 * $ 4
não1 = $1
3.Borracha Rs.10,5
1.Caneta Rs.100
$ gato > matemática1
resposta
variável. Além disso, os dois programas acima recebem entrada de stdin (teclado) em vez de arquivo.
$ gato > conta
http://www.cyberciti.biz/pdf/lsst/ch07sec04.html (1 de 3) [29/07/2002 18:53:42]
LSST v1.05 > Capítulo 7 > Variáveis definidas pelo usuário no awk
Variáveis definidas pelo usuário no awk
Machine Translated by Google
BEGIN
{ print "--------------------------" print "Projeto de lei de 4 de março
de 2001. " print "Por Vivek G Gite . " imprimir "---------------------------"
$ gato > conta2
---------------------------
}
Projeto de lei de 4 de março de 2001.
4. Galo Rs.91 [Total Rs.221,5]
}
Neste programa, a variável gtotal contém o total geral. Soma o total de cada produto como gtotal = gtotal + total. Finalmente este
total é impresso com cada registro entre colchetes. Mas há um problema com nosso roteiro, o total geral é impresso principalmente
no final de todos os registros. Para resolver este problema, temos que usar padrões BEGIN e END especiais do awk. Primeiro
tome o exemplo,
Execute-o
como $awk -f bill2 inven
}
2. Lápis Rs.20 [Total Rs.120]
3.Borracha Rs.10,5 [Total Rs.130,5]
{ total = $3 * $4 recno = $1
item = $2 gtotal =
gtotal + total
imprimir item recno "Rs." total " [Total de
R$." gtotal "] " }
{
END
{ imprimir "--------------------------" imprimir "Total Rs." impressão
gtotal "==========================="
Execute o programa awk acima da seguinte
maneira: $ awk -f bill1
inven 1.Pen Rs.100 [Total Rs.100]
total = $3 * $4 recno = $1
item = $2 gtotal
+= total de
impressão do item recno
"Rs." total
$ gato > conta1
LSST v1.05 > Capítulo 7 > Variáveis definidas pelo usuário no awk
http://www.cyberciti.biz/pdf/lsst/ch07sec04.html (2 de 3) [29/07/2002 18:53:42]
Machine Translated by Google
}
Use o padrão BEGIN para definir o valor das variáveis, para imprimir o cabeçalho do relatório, etc. A sintaxe geral de BEGIN é
a seguinte
Sintaxe:
BEGIN
{ ação 1 ação
2 ação N
Fazendo aritmética com awk
Por Vivek G Gite.
Instrução END awk, que executa ações END após ler todas as linhas (RECORD) do arquivo de banco de dados.
Lar
Acima
===============
Em nosso exemplo, BEGIN é usado para imprimir o cabeçalho e END é usado para imprimir o total geral.
Agora o total geral é impresso no final. No programa acima, os padrões BEGIN e END são usados. BEGIN instrui o awk, que
executa ações BEGIN antes que a primeira linha (Record) seja lida do arquivo de banco de dados.
Anterior
ação 1
ação 2
ação N
---------------------------
Total de Rs 221,5
---------------------------
A sintaxe geral do END é a seguinte:
}
Próximo
1.Caneta Rs.100
2.Lápis Rs.20
3.Borracha Rs.10,5
4.Galo Rs.91
FIM {
Uso da instrução printf
http://www.cyberciti.biz/pdf/lsst/ch07sec04.html (3 de 3) [29/07/2002 18:53:42]
LSST v1.05 > Capítulo 7 > Variáveis definidas pelo usuário no awk
Machine Translated by Google
{
}
1 Caneta Rs.100,000000
2 Lápis Rs.20,000000 3
Borracha Rs.10,500000 4
Galo Rs.91,000000
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
7: awk revisitado
total = $3 * $4 recno = $1
item = $2 gtotal
+= total printf
"%d %s Rs.%fn", recno,
item, total #printf "%2d %-10s Rs.%7.2fn" , reconhecimento, item, total
---------------------------
Total de Rs. 221.500000
$ gato > conta3
Por Vivek G Gite.
BEGIN
{ printf "Projeto de lei de 4 de março de 2001.n" printf "Por Vivek G
Gite.n" printf "---------------------- -----n"
---------------------------
}
Próximo
O próximo exemplo mostra o uso da instrução especial printf
Execute-o da seguinte
maneira: $ awk -f bill3
inven Bill de 4 de março de 2001.
}
===============
Anterior
END
{ printf "---------------------------n" printf "Total de R$ %fn" ,gtotal #printf "
tTotal Rs. %7,2fn" ,gtotal printf
"===========================n"
No exemplo acima, a instrução printf é usada para imprimir a saída formatada das variáveis ou texto. Sintaxe geral de printf
da seguinte forma:
http://www.cyberciti.biz/pdf/lsst/ch07sec05.html (1 de 3) [29/07/2002 18:53:43]
LSST v1.05 > Capítulo 7 > Uso da instrução printf
Uso da instrução printf
Machine Translated by Google
Código de especificação de formato
Ele imprimirá o valor de no1. A tabela a seguir mostra esse código de especificação de formato comum:
Número decimal como 10, -5 etc.
Sintaxe:
printf "formato", var1, var2, var N
Significado
Número hexadecimal, como 0xA, 0xffff
etc.
%x
nº1
,
BEGIN { n =
10 printf
"%d", n printf "nUma maçã
por dia, mantém longetttMédiconaa" }
,
%d
Personagem
Para executar o exemplo acima, basta criar qualquer arquivo de programa awk como segue
Por exemplo, printf "nUma maçã por dia, mantém longetttDoctornaa"
$ gato > p_demo
Ele imprimirá o texto na nova linha
como: Uma maçã por dia, afasta Doutor.
Observe que duas vezes o som do sino é produzido por aa. Para imprimir o valor do número decimal, use %d como
código de especificação de formato seguido do nome da variável. Por exemplo, printf "%d"
Se você quiser apenas imprimir qualquer texto usando printf da
seguinte maneira
printf "Hello" printf "Hello Worldn"
Exemplo
%c
String como "vivek", "Boa compra"
{ isminor = "y"
printf "%c" isminor } { n =
10 printf
"%d",n } { n = 10
printf
"%x",n } { str1 =
"Bem-vindo ao Linux!" printf "%s",
str1 printf "%s",
"Pode imprimir?" }
No último exemplo, n é usado para imprimir uma nova linha. Sua parte da sequência de escape a seguir também pode ser
usada: t
para guia a Alerta
ou campainha " Imprimir aspas duplas etc.
%s
http://www.cyberciti.biz/pdf/lsst/ch07sec05.html (2 de 3) [29/07/2002 18:53:43]
LSST v1.05 > Capítulo 7 > Uso da instrução printf
Machine Translated by Google
Variáveis definidas pelo usuário no awk
Uma maçã por dia, afasta Doutor
Anterior
$ awk -f p_demo
Escreva o programa awk para testar o código de especificação de formato. De acordo com sua escolha.
10
Execute-o como
Uso do código de especificação de formato
Próximo
Acima
Lar
LSST v1.05 > Capítulo 7 > Uso da instrução printf
http://www.cyberciti.biz/pdf/lsst/ch07sec05.html (3 de 3) [29/07/2002 18:53:43]
Machine Translated by Google
total = $3 * $4 recno = $1
item = $2 gtotal
+= total printf
"%2d %-10s Rs.%7.2fn",
recno, item, total
{
---------------------------
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
7: awk revisitado
}
Total de Rs. 221,50
===============
BEGIN
{ printf "Projeto de lei de 4 de março de 2001.n" printf "Por Vivek G
Gite.n" printf "---------------------- -----n"
---------------------------
}
1 caneta Rs. 100,00 2
lápis Rs. 20,00 3
borracha Rs. 10,50 4
galos Rs. 91,00
Execute-o
como $ awk -f bill4 inven
Bill de 4 de março de 2001.
Próximo
$ gato > conta4
Por Vivek G Gite.
END
{ printf "---------------------------n" printf "tTotal Rs. %6,2fn" ,gtotal printf "
===========================n"
Na saída acima você pode ver claramente que printf pode formatar a saída. Vamos tentar entender a formatação da instrução
printf. Por exemplo,% 2d, número entre% e d, informa ao printf que atribui 2 espaços para valor. Da mesma forma se você
escrever seguindo o programa awk,
Anterior
}
http://www.cyberciti.biz/pdf/lsst/ch07sec06.html (1 de 2) [29/07/2002 18:53:44]
LSST v1.05 > Capítulo 7 > Uso do código de especificação de formato
Uso do código de especificação de formato
Machine Translated by Google
d*=
$ awk -f prf_demo
Lar
-=
operador
*=
printf "|%10s|",
uma = uma - c
se condição em awk
* 10
Atribuir o resultado de
A mesma técnica é usada em nosso programa bill4 awk para imprimir a saída formatada. Também a declaração como gtotal
printf "|%10s|", na
Atribuir o resultado do módulo
uma% = 10
uma -= 10
Equivalente a
| Deus |
c
uma + = 10
Imprima a Palavra de Deus como justificada corretamente.
Deus
%=
subtração
printf "|%-10s|", na
+= total, que é equivalente a gtotal = gtotal + total. Aqui += é chamado de operador de atribuição. Você pode usar
uma = uma + 10
|Deus |
*
c
justificado)
{
d % = c
d -= c
d + = c
n / D
uma = uma
Anterior
Atribuir o resultado de
seguinte operador de atribuição:
}
uma = uma% 10
a
uma = uma + c
(pressione CTRL + D para encerrar)
*= 10
Usar para
printf "|%-10s|",
na = $ 1
Atribuir o resultado da adição
Acima
Uso da instrução printf
Atribuição
Execute-o da seguinte maneira (e digite Deus)
$ gato > prf_demo
Imprima a Palavra de Deus justificada à esquerda. (- significa esquerda
multiplicação
uma = uma
uma = uma - 10
printf "|%s|", na Imprime Deus como seu
+=
n / D
printf "|%s|", na
uma = uma% c
|Deus|
Exemplo
Próximo
http://www.cyberciti.biz/pdf/lsst/ch07sec06.html (2 de 2) [29/07/2002 18:53:44]
LSST v1.05 > Capítulo 7 > Uso do código de especificação de formato
Machine Translated by Google
Instrução N se
a condição for VERDADEIRA
Declaração 2
$ awk > matemática2
Tutorial de script de shell do Linux (LSST) v1.05r3
Capítulo 7: awk revisitado
}
outro
{
BEGIN
{ myprompt = "(Para parar pressione CTRL+D) > printf "Bem-vindo
ao programa awk de cálculo MyAddtion v0.1n" printf "%s" ,myprompt
"
Sintaxe:
if (condição) {
}
}
Declaração 1
Acima, se a sintaxe for autoexplontária, agora vamos passar para o próximo programa awk
Declaração N
if (op == "+" ) {
ans = $1 + $3 printf
"%d %c %d = %dn" ,no1,op,no2,ans printf "%s" ,meuprompt
A sintaxe geral da condição if é a seguinte:
Anterior
Declaração 1
se a condição for FALSA
}
Próximo
Declaração 2
{ no1 = $1 op =
$2 no2 = $3
ans = 0
http://www.cyberciti.biz/pdf/lsst/ch07sec07.html (1 de 3) [29/07/2002 18:53:45]
LSST v1.05 > Capítulo 7 > se condição em awk
se condição em awk
Machine Translated by Google
}
,
Definir variável
definida pelo usuário
Atribua o
primeiro,
segundo, terceiro
valor das variáveis
às variáveis
no1, op, no2 respectivam
outro
Execute-o da seguinte maneira (forneça a entrada 5 + 2 e 3 - 1 , que é mostrada em negrito) $awk -f
math2 Bem-vindo
ao programa awk de cálculo MyAddtion v0.1 (para parar, pressione
CTRL + D) > 5 + 2 5 + 2 = 7 (Para parar
pressione
CTRL+D) > 3 - 1 Ops!Erro só sei somar.
"
Imprima a
mensagem de
boas-
vindas e o
valor da variável myprom
no1 = $1
op = $2
no2 = $3
ans = 0
END
{ printf "nBoa compra %sn"
Início do COMEÇO
{
AMBIENTE["USUÁRIO"]
Padrão
COMEÇAR {
Padrão
Agora comece a
processar a entrada
}
}
}
{
Sintaxe: número1 + número2 (para
parar pressione CTRL+D) >
Goodbuy vivek
myprompt = "(Para parar pressione CTRL+D) >
printf "Bem-vindo ao programa awk de cálculo MyAddtion v0.1n" printf "%s" ,myprompt
printf "Ops! Erro, só sei adicionar.nSintaxe: número1 + número2n" printf "%s" ,myprompt
No programa acima, vários novos conceitos são introduzidos, então vamos tentar entendê-los passo a passo
Fim do COMEÇO
LSST v1.05 > Capítulo 7 > se condição em awk
http://www.cyberciti.biz/pdf/lsst/ch07sec07.html (2 de 3) [29/07/2002 18:53:45]
Machine Translated by Google
END
{ printf "nBoa compra %sn"
ENVIRON é uma das variáveis de sistema predefinidas que é array. A matriz é composta por elementos diferentes. A matriz ENVIRON
também é feita de elementos. Ele permite que você acesse variáveis do sistema (ou variáveis em seu ambiente). Dê o comando set no prompt do
shell para ver a lista de sua variável de ambiente. Você pode usar o nome da variável para fazer referência a qualquer elemento desta matriz.
Por exemplo, se você deseja imprimir seu diretório inicial, você pode escrever printf da seguinte forma: printf "%s is my sweet home",
ENVIRON["HOME"]
Se o comando for
usado para tomada de
decisão no programa
awk. Aqui, se o valor da
variável op for "+", a
adição será feita e
o resultado será
impresso na tela,
caso contrário,
uma mensagem de erro
será mostrada
na tela.
, AMBIENTE["USUÁRIO"] }
Os padrões END
começam aqui.
Próximo
O que diz que
atualmente faça logon
no usuário Goodbuy.
Loops no awk
Lar
}
processo.
if ( op == "+" )
{ ans = no1 + no2
printf "%d %c %d = %dn" ,no1,op,no2,ans printf
"%s" ,meuprompt } else
{ printf "Ops !Erro, só sei adicionar.nSintaxe:número1+ número2n" printf "%s" ,myprompt }
Acima
Anterior
Parar todas as linhas
inseridas são
Uso do código de especificação de formato
LSST v1.05 > Capítulo 7 > se condição em awk
http://www.cyberciti.biz/pdf/lsst/ch07sec07.html (3 de 3) [29/07/2002 18:53:45]
Machine Translated by Google
Declaração N
Declaração 2
}
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
7: awk revisitado
}
Execute-o da seguinte
maneira: $ awk -f while01.awk
Pressione ENTER para continuar com o exemplo de loop for do LSST v1.05r3 Soma
para 1 a 10 números = 55 Goodbuy
Os loops for acima imprimem a soma de todos os números entre 1 e 10. Ele usa um loop for muito simples para conseguir isso.
Pegue um número de 1 a 10 usando a variável i e adicione-o à variável de soma como soma = soma anterior + número atual (ou seja,
i).
Sintaxe do loop for
Sintaxe:
for (expr1; condição; expr2) {
soma += eu; # soma = soma + eu
Declaração 1
} printf "Soma de 1 a 10 números = %d nBoacompra!nn", soma saída 1
$ gato > while01.awk
Próximo
For loop e while loop são usados para fins de loop no awk.
BEGIN{ printf
"Pressione ENTER para continuar com o exemplo de loop for do LSST v1.05r3n" } { sum = 0 i = 1 for (i=1; i<=10; i++) {
As instruções são executadas repetidamente ATÉ que a condição seja verdadeira. ANTES da primeira iteração, expr1 é avaliado. Isso
geralmente é usado para inicializar variáveis para o loop. APÓS cada iteração do loop, expr2 é avaliado. Isso geralmente é usado
para incrementar um contador de loop.
Exemplo:
Anterior
http://www.cyberciti.biz/pdf/lsst/ch07sec08.html (1 de 3) [29/07/2002 18:53:46]
LSST v1.05 > Capítulo 7 > Loops no awk
Loops no awk
Machine Translated by Google
Bem vindo vivek, 0 vezes.
Execute-o como (e forneça a entrada como Bem-vindo ao
Linux!) $ awk -f
for_loop Para
testar o loop Pressione CTRL +
C para parar Bem-vindo ao Linux!
,AMBIENTE["USUÁRIO"], eu
Considere mais um exemplo de loop for:
Bem-vindo vivek, 1 vezes.
Aqui i++, é equivalente à instrução i = i + 1. ++ é o operador de incremento que aumenta o valor da variável em um e - é o
operador de decremento que diminui o valor da variável em um. Não tente i+++, para aumentar o valor de i em 2 (já que +++ não é um
operador válido), em vez disso tente i+= 2.
Você pode usar o loop while da seguinte maneira:
}
para(i=0;i<NF;i++)
O loop while continuará enquanto a condição for TRUE. Para entender o loop while vamos escrever
}
printf "Bem-vindo %s, %d vezes.n"
Defina o valor de i como 0 (Zero); Continue enquanto o valor de
i for menor que NF (Lembre-se de que NF é uma variável
incorporada, o que significa Número de Campos no registro);
incrementar i em 1 (i++)
Continue enquanto a condição dada for VERDADEIRA
} { para(i=0;i<NF;i++) {
}
printf "Bem-vindo %s, %d vezes.n" ,ENVIRON["USER"], i
Imprima a mensagem "Bem-vindo....", com o nome do usuário
que está conectado no momento e o valor de i.
Bem vindo vivek, 2 vezes.
Sintaxe:
while (condição) {
BEGIN
{ printf "Para testar o loopn" printf "Pressione CTRL
+ C para pararn"
O programa usa o loop for da seguinte maneira:
declaração1
declaração2
declaraçãoN
$ gato > for_loop
LSST v1.05 > Capítulo 7 > Loops no awk
http://www.cyberciti.biz/pdf/lsst/ch07sec08.html (2 de 3) [29/07/2002 18:53:46]
Machine Translated by Google
um
}
explicado da seguinte forma:
não = $ 1
Fim do loop while, já que a condição (no>1) não é verdadeira, ou seja
Exemplo da vida real no awk
Divida o não por 10 e armazene o resultado em nenhuma variável.
{
}
Próximo número, por favor (CTRL+D para parar):
Acima
mais um script awk:
printf "%d",remn
785
Continue o loop enquanto o valor de no for maior que
restante = não% 10
456
não /= 10
Solicitar o próximo número
variável restante.
enquanto (não > 1)
$awk -f while_loop
Defina a variável remn como zero
Defina o valor dos primeiros campos ($1) como não.
remanescente = 0
Execute-o como
Encontre o resto de nenhuma variável e atribua o resultado a
condição falsa..
printf "nPróximo número por favor (CTRL+D para
Próximo
Aqui o usuário insere o número 654 que é impresso na ordem inversa, ou seja, 456. O programa acima pode ser
{
printf "nPróximo número por favor (CTRL+D para parar):";
enquanto (não > 1)
Imprima o valor das variáveis remn (restantes).
Lar
remanescente = 0
}
imprima "%d", restante
Próximo número por favor (CTRL+D para parar):587
não /= 10
não = $ 1
Anterior se condição no awk
parar):";
654
{
Inicie o loop while
restante = não% 10
$ gato > while_loop
LSST v1.05 > Capítulo 7 > Loops no awk
http://www.cyberciti.biz/pdf/lsst/ch07sec08.html (3 de 3) [29/07/2002 18:53:46]
Machine Translated by Google
Gostaria de ler o nome de todos os arquivos do arquivo e copiá-los para um determinado diretório de destino. Por exemplo
Nosso primeiro exemplo
O arquivo filelist.conf; parece algo assim: /home/ vivek/ awks/
temp/ file1 / home/ vivek/ final / home/ vivek/ awks/ temp/ file2 /
home/ vivek/ final / home/ vivek/ awks/ temp/ file3 / home/ vivek/
final / home/ vivek/ awks/ temp/ file4 / home/ vivek/ final
No arquivo acima, o primeiro campo ($1) é o nome do arquivo que eu gostaria de copiar para o diretório de destino fornecido ($2 -
segundo campo), ou seja, copie o arquivo /home/vivek/awks/temp/file1 para /home/vivek/final diretório. Para este propósito,
escreva o programa awk da seguinte forma:
Anterior
Antes de aprender mais recursos do awk, é hora de ver alguns exemplos da vida real no awk.
Próximo
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
7: awk revisitado
$ cat > temp2final.awk # #temp2final.awk
#Linux Shell Scripting
Tutorial v1.05, março de 2001 #Autor: Vivek G Gite #
# # lógica principal está aqui # {
sfile = $1 dfile =
$2 cpcmd = "cp "
$1 " " $2 printf "Lidando %s para
%sn",sfile,dsistema de arquivos(cpcmd)
}
COMEÇAR{ }
# # Finalizar ação, se houver, por exemplo, limpezas # END{
http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (1 de 5) [29/07/2002 18:53:48]
LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk
Exemplo da vida real no awk
Machine Translated by Google
Agora imprima a mensagem
printf "Lidando %s para
%sn",sfile,dfile
system(cpcmd)
printf "O comando rm foi bem-sucedido e o arquivo %s foi removido n",
}
Emita o comando cp real usando a função system() .
$
1}
Execute-o como (suponha que o arquivo foo exista e bar não exista) $ awk
-f tryrmsys foo rm o
comando foi bem-sucedido e o arquivo foo foi removido o
comando bar rm não foi bem-sucedido
Aqui cpcmd, a variável é usada para construir o comando cp .
dcmd = "rm " $1 if
( system(dcmd) != 0 ) printf "comando rm
sem sucesson"
cpcmd = "cp "$1" "$2
outro
A saída do comando não está disponível para programar; mas system() retorna o código de saída (código de erro) com o qual você
pode determinar se o comando foi bem-sucedido ou não. Por exemplo, queremos ver se o comando rm foi bem-sucedido ou não,
você pode escrever o código da seguinte forma:
Enquanto escrevo o guia de instalação visual, costumo capturar muitas imagens para o meu trabalho, enquanto capturo imagens que
arquivo =
$1 arquivo = $2
Defina o caminho do arquivo de origem, ou seja, o primeiro campo ($1) do arquivo
filelist.conf Defina o caminho do arquivo de origem, ou seja, o segundo campo ($2) do
arquivo filelist.conf Use seu comando cp normal para copiar o arquivo da origem para o destino.
Execute-o da seguinte
maneira: $ awk -f temp2final.awk filelist.conf
A função system() executa determinado comando do sistema. Por exemplo, se você deseja remover o arquivo usando o comando rm
do Linux, você pode escrever o sistema da seguinte
forma: system("rm foo")
$ gato > tryrmsys {
(Pressione CTRL + D para encerrar)
O programa awk acima pode ser explicado da seguinte forma:
OU
dcmd = "rm " $1
sistema(dcmd)
Nosso segundo exemplo:
http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (2 de 5) [29/07/2002 18:53:48]
LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk
Machine Translated by Google
Agora converta todos os nomes de arquivo em
maiúsculas para minúsculas e armazene-os no arquivo /
tmp/file2.$$.
Liste todos os arquivos no diretório de trabalho atual linha
por linha e envie a saída para o arquivo /tmp/file1.$$.
rm -f /tmp/tmpdb.$$
salvou todas as imagens (ou seja, nomes de arquivos) em MAIÚSCULAS, por exemplo
AWK_SCRIPT="renomear.awk"
awkspath=$HOME/bin/$AWK_SCRIPT
rename.awk pode ser explicado da seguinte forma:
Declarações/Comando
Declarações/Comando
rm -f /tmp/arquivo1.$$
rm -f /tmp/arquivo2.$$
if [ -f $awkspath ]; então awk
-f $awkspath /tmp/tmpdb.$$ else echo -e
"n$0: Erro fatal - $awkspath não encontrado" echo -e "nCertifique-
se de que $awkspath esteja definido corretamente no script $0n" fi
Explicação
Nome dos scripts awk que renomeiam o arquivo
Onde nosso script awk está instalado, geralmente ele
deve ser instalado em seu
diretório inicial/bin (algo como /home/vivek/bin)
Veja se o script rename.awk está instalado, se não
estiver instalado, dá uma mensagem de erro na tela.
Se instalado, chame o script rename.awk e forneça o
caminho /tep/tepdb.$$ para ler todos os nomes de
arquivos deste arquivo.
cole /tmp/arquivo1.$$ /tmp/arquivo2.$$ > /tmp/tmpdb.$$
up2low e renomear.awk
up2low pode ser explicado da seguinte forma:
RH7x01.JPG,RH7x02.JPG,...RH7x138.JPG.
ls -1 > /tmp/arquivo1.$$
Agora cole o nome do arquivo em maiúsculas e o
nome do arquivo em minúsculas no terceiro
arquivo chamado /tmp/
tmpdb.$$ arquivo Remova os arquivos file1.$$ e file2.$$
Remova o arquivo temporário.
Agora gostaria de renomear todos os arquivos para letras minúsculas e tentei com os dois scripts a seguir:
tr "[AZ]" "[az]" < /tmp/file1.$$ > /tmp/file2.$$
Explicação
http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (3 de 5) [29/07/2002 18:53:48]
LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk
Machine Translated by Google
como
isdir2 = "[ -d " $2 " ] "
Certifique-se de não renomear acidentalmente
nossos próprios scripts, se os scripts estiverem
no diretório de trabalho
atual. Certifique-se de que a origem ou o destino
sejam arquivos e não o diretório. Verificamos
isso usando o comando [expr] do bash. A partir
do script awk você pode chamar ou invocar
(como o chamamos oficialmente) o [ expr ] se
o diretório existir, ele retornará verdadeiro
(indicado por zero) e se não, retornará um
valor diferente de zero.
isdir1 = "[ -d " $1 " ] "
isdir2 = [ -d $2 ] ou
seja, se o segundo campo é diretório ou
próximo
else if( ( system(isdir1) ) == 0 || system((isdir2)) == 0 ) { printf "%s ou
%s é diretório não pode renomeá-lo para minúsculasn",sfile,dfile
next # continue com
a próxima gravação }
O que significa $ 1? Se você se lembra, no awk
$1 é o primeiro campo.
Arquivo fonte
Como acima, exceto que testa o segundo campo
Arquivo de destino
dfile = $2 if
(sfile == scriptname || sfile == awkscriptname )
próximo
Então, estamos testando se o diretório existe
}
ou não.
Esta expressão é bastante complicada. É
algo assim: isdir1 = [ -d $1 ]
não.
Nosso nome do script shell (up2low) e nome do
script awk (rename.awk).
else if ( sfile == dfile ) { printf
"Pulando, "%s" já está em minúsculasn",sfile
O que significa ver se o diretório existe
usando [ expr ]. Como você sabe, [expr] é usado
para testar se expr é verdadeiro ou não.
scriptname = "up2low"
awkscriptname = "renomear.awk" sfile
= $1
Se o arquivo de origem e de destino forem iguais,
significa que o arquivo já está em letras minúsculas, não
há necessidade de renomeá-lo para letras minúsculas.
http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (4 de 5) [29/07/2002 18:53:48]
LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk
Machine Translated by Google
O comando de exemplo acima cria arquivos como arquivos TEMP1.TXT,TEMP2.TXT,....TEMP10.TXT.
$ para j em 1 2 3 4 5 6 7 8 9 10; toque em TEMP$j.TXT; feito
Loops no awk
else # tudo bem, renomeie para minúsculas { mvcmd = "mv
" $1 " " $2 printf "Renomeando
%s para %sn",sfile,dfile system(mvcmd) }
Execute-o da seguinte
maneira: $
up2low Letras ou letras é o diretório não pode renomeá-lo para minúsculas
RH6_FILES ou rh6_files é o diretório não pode renomeá-lo para minúsculas
Renomeando RH7x01.JPG para rh7x01.jpg
Renomeando RH7x02.JPG para rh7x02.jpg
Renomeando RH7x03.JPG para rh7x03.jpg
Renomeando RH7x04.JPG para rh7x04.jpg
Renomeando RH7x05.JPG para rh7x05.jpg
Renomeando RH7x06.JPG para rh7x06.jpg
Lar
Acima
Em seguida, renomeie-o para minúsculas emitindo
o comando mv command.
Na minha estação de trabalho a saída acima é mostrada.
Observe que se você não tiver o nome dos arquivos em MAIÚSCULAS para fins de teste, poderá criar o nome dos arquivos da seguinte maneira:
Anterior
....
• Diretórios
• Nome dos nossos scripts • E o
arquivo está em MAIÚSCULAS
Agora, se os arquivos de origem e destino forem
....
Renomeando RH7x138.JPG para rh7x138.jpg
Próximo awk diversos
..
não
LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk
http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (5 de 5) [29/07/2002 18:53:48]
Machine Translated by Google
idade + 1
na, ", ano que vem você será"
| 2
Exemplo:
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
7: awk revisitado
}
| 3
1 -> getline é o nome da função 2 ->
nome da variável é usado para atribuir o valor lido da entrada
$ gato > testusrip
Aqui, a função getline é usada para ler a entrada do teclado e, em seguida, atribuir os dados (inseridos pelo teclado) à
variável.
Para ler a entrada do tubo, use o seguinte
BEGIN
{ printf "Seu nome, por favor:" getline na < "-" printf
"%s sua idade, por favor:",na
getline idade < "-" print "Olá "
Sintaxe:
getline nome-da-variável < "-" | 1
Vivek, sua idade, por favor: 26
Sintaxe:
getline < "nome do arquivo"
Sintaxe:
"comando" | Obter linha
Exemplo:
getline < "amigos.db"
Você pode até receber informações do teclado enquanto executa o script awk, tente o seguinte script awk:
Anterior
Olá Vivek, no próximo ano você fará 27 anos
Salve-o e execute
como $ awk -f testusrip
3 -> Significa ler do stdin (teclado)
Próximo
Seu nome por favor: Vivek
Para ler a entrada do arquivo, use o seguinte
http://www.cyberciti.biz/pdf/lsst/ch07sec10.html (1 de 2) [29/07/2002 18:53:49]
LSST v1.05 > Capítulo 7 > awk diversos
ah, diversos
Machine Translated by Google
COMEÇAR
{ "data" | getline hoje imprimir hoje
$ gato > awkread_file1
Próximo sed - Introdução rápida
$ gato > awkread_file
}
O comando date é executado e canalizado para getline que atribui a saída do comando date à variável $0.
Lar
Se você quiser sua própria variável, substitua o programa acima da seguinte maneira
Acima
Anterior
Execute-o
como $ awk -f awkread_file
Sexta-feira, 12 de abril 00:05:45 IST 2002
COMEÇAR
{ "data" | getline imprimir $ 0
Execute-o da seguinte
maneira: $ awk -f awkread_file1
Exemplos da vida real no awk
}
Tente entender o seguinte script awk e anote sua saída. temp2final1.awk
http://www.cyberciti.biz/pdf/lsst/ch07sec10.html (2 de 2) [29/07/2002 18:53:49]
LSST v1.05 > Capítulo 7 > awk diversos
Machine Translated by Google
-e
linux é linux
's/Linux/UNIX(sistema v)/'
demofile1
Próximo
$ sed -e 'sed-commands' nome do arquivo de dados
$ sed -e 's/Linux/UNIX(system v)/' demofile1
...
A sintaxe geral do substituto é s/pattern/pattern-to-substitute/'
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
7: awk revisitado
.....
Use o comando substituto para substituir Linux por UNIX (sistema v).
Opção
Este é vivek de Poona.
Inicie o comando sed
-f
Antes de começar com o tutorial, você deve conhecer as expressões básicas que são abordadas em nosso Aprendendo
expressões com ex- tutorial. Para esta parte do tutorial crie demofile1. Depois de criar o tipo de arquivo seguindo o
comando sed no prompt do shell:
Comandos
Sintaxe:
sed -option 'expressão geral' [arquivo de dados] sed
-option sed-script-file [arquivo de dados]
Sintaxe geral do sed
SED é um editor de fluxo. Um editor de fluxo é usado para realizar transformações básicas de texto em um fluxo de entrada (um
arquivo ou entrada de um pipeline). O SED funciona fazendo apenas uma passagem sobre a(s) entrada(s), sendo
consequentemente mais eficiente. Mas é a capacidade do SED de filtrar texto em um pipeline que o distingue
particularmente de outros tipos de editores.
O comando sed acima pode ser explicado da seguinte forma:
Leia o comando sed do
arquivo de script sed.
Leia os dados do demofile1
Anterior
.....
$sed -f sed-script-file nome do arquivo de dados $
sed -f chgdb.sed friends.tdb
Exemplo
sed
Eu amo Linux.
Significado
Leia o comando sed
diferente da linha de comando.
Significado
$ sed 's/Linux/UNIX(sistema v)/' demofile1 Olá mundo.
A opção pode ser:
http://www.cyberciti.biz/pdf/lsst/ch07sec11.html (1 de 2) [29/07/2002 18:53:50]
LSST v1.05 > Capítulo 7 > sed - Introdução rápida
sed - Introdução rápida
Machine Translated by Google
Anterior awk diversos
da bandeira de impressão.
-n
Lar
você deve usar o comando p
$ sed -n '/^*..$/p' arquivo demo2
comando. Quando -n é usado
Suprimir a saída do sed
Acima
Próximo
Redirecionando a saída do comando sed
http://www.cyberciti.biz/pdf/lsst/ch07sec11.html (2 de 2) [29/07/2002 18:53:50]
LSST v1.05 > Capítulo 7 > sed - Introdução rápida
Machine Translated by Google
Redirecionando a saída do comando sed
$ arquivo cat.out
E pode ver a saída usando o comando cat da seguinte maneira
Tutorial de script de shell do Linux (LSST) v1.05r3
Aqui -n opção para o comando sed, suprime a saída do comando sed; e /vivek/ é o padrão que nós
Anterior sed - Introdução rápida
estamos procurando, finalmente, se o padrão foi impresso usando o comando p do sed.
Você pode redirecionar a saída do comando sed para o arquivo da seguinte maneira
está registrado ou não.
$ quem | sed -n '/vivek/p'
$ sed 's/Linux/UNIX(sistema v)/' demofile1 > arquivo.out
Como você conhece o padrão /^$/, combine a linha em branco ed, o comando exclui a linha em branco.
Anterior
Próximo
Como escrever scripts sed?
Próximo
O comando sed seguinte recebe informações do comando who e sed é usado para verificar se o usuário específico
Usando sed você pode excluir todas as linhas em branco do arquivo como segue
Capítulo 7: awk revisitado
Lar
Acima
$ sed '/^$/d' arquivo demo1
LSST v1.05 > Capítulo 7 > Redirecionando a saída do comando sed
http://www.cyberciti.biz/pdf/lsst/ch07sec12.html [29/07/2002 18:53:51]
Excluindo linhas em branco
Machine Translated by Google
Como escrever scripts sed?
http://www.cyberciti.biz/pdf/lsst/ch07sec13.html (1 de 2) [29/07/2002 18:53:53]
LSST v1.05 > Capítulo 7 > Como escrever scripts sed?
No script sed acima, 1i é o comando (i) insert. A sintaxe geral é a seguinte: Sintaxe: [endereço-linha]i
Execute o script sed acima da seguinte
maneira: $ sed -f chg1.sed
inven1 O preço de todos os itens muda desde 1º de abril de
2001 1. Caneta
5 19,5 2. Lápis 10
2,60 3. Borracha 3
4,25 4. Galo 2 51,00
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
7: awk revisitado
texto
Próximo
texto
$ cat > chg1.sed 1i O preço
de
todos os itens muda de 1º de abril de 2001 /Pen/s/20.00/19.5/ /Pencil/s/2.00/2.60/ /
Rubber/s/3.50/4.25/ /Cock/s /
45,50/51,00/
Exemplo: /
INDIA/ a E-
mail: vg@indiamail.co.in
Sintaxe geral de anexar
Dica: Dê a extensão .sed ao script sed, .sh ao script Shell e .awk ao(s) arquivo(s) de script awk, isso ajudará você a identificar os
arquivos rapidamente.
Anterior
Sintaxe:
[endereço-linha]a
Portanto, 1i Preço de todos os itens alterados a partir de 1º
de abril de 2001 significa inserir o texto "Preço de todos os itens alterados a partir de 1º de abril de 2001" na linha número 1.
O comando Sed pode ser agrupado em um arquivo de texto, conhecido como script sed. Para o próximo exemplo de script sed, crie
o arquivo de dados inven1 e crie "chg1.sed", arquivo de script como segue
Da mesma forma que você pode usar o comando anexar (a) ou alterar (c) em seu script sed,
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/ch07sec13.html (2 de 2) [29/07/2002 18:53:53]
LSST v1.05 > Capítulo 7 > Como escrever scripts sed?
Encontre a palavra ÍNDIA e altere o ID do e-mail para "vg@indiamail.co.in"
E-mail: vg@indiamail.co.in
Encontre a palavra ÍNDIA e acrescente (a) o texto "E-mail: vg@indiamail.co.in" .
O resto das declarações (como /Pen/ s/ 20.00/19.5/) são declarações substitutas gerais.
Exemplo:
Próximo
/ÍNDIA/ c
Mais exemplos de sed
Lar
[endereço-linha]c
texto
Sintaxe geral de mudança da seguinte forma:
Anterior
Acima
Redirecionando a saída do comando sed
Sintaxe:
Machine Translated by Google
Até você pode usar a seguinte expressão para o mesmo propósito $ sed -n
'/^*{2,3}$/p' demofile2
Pelo menos enésimas ocorrências serão correspondidas. Então /10{2} irá procurar por 1 seguido por 0 (zero) e {2}, diz ao sed para
procurar 0 (zero) duas vezes.
Sintaxe:
{n,m}
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
7: awk revisitado
Explicação
Início da linha
Encontre o asterisco ou estrela ( remova o significado especial do metacaractere '*')
Seguido por quaisquer dois caracteres (você também pode usar ** ou seja, $ sed -n '/^***$/p' demofile2 )
Agora, o comando a seguir descobrirá as linhas entre *** e *** e, em seguida, excluirá todas essas linhas $sed -e '/
^*{2,3}$/,/^*{2,3 }$/d' demofile2 > /tmp/fi.$$ $cat /tmp/fi.$$
Digite o seguinte comando sed no shell promote: $ sed -n '/
10{2}1/p' demofile2 1001 O comando
acima
imprimirá 1001, aqui no padrão de pesquisa usamos {2}.
A expressão sed acima pode ser explicada da seguinte forma:
..
Comando
Sintaxe:
{n,}
$/p
***
Próximo
^
*
Primeiro crie o arquivo de texto demofile2 que é usado para demonstrar os próximos exemplos de script sed.
***
Corresponde a qualquer número de ocorrências entre n e m.
Fim da linha (para que apenas três estrelas ou asterisco sejam correspondidos)
Imprima o padrão.
Anterior
Exemplo: $
sed -n '/10{2,4}1/p' demofile2 1001 10001
100001
Corresponderá a "1001", "10001", "100001", mas não a "101" ou "10000000". Suponha que você queira imprimir todas as linhas que começam
com *** (três estrelas ou asteriscos), então você pode digitar o comando $ sed -n '/^*..$/p'
demofile2
Mais exemplos de sed
http://www.cyberciti.biz/pdf/lsst/ch07sec14.html (1 de 4) [29/07/2002 18:53:54]
LSST v1.05 > Capítulo 7 > Mais exemplos de sed
Correspondendo a qualquer número de ocorrências
Machine Translated by Google
$ gato > rmblksp
O mesmo que acima
}<
^
O script acima pode ser explicado da seguinte forma:
Rani sabe o que é sed
{2,3}
$
Expressão
/^$/d
Nosso próximo exemplo remove todas as linhas em branco e converte vários espaços em um único espaço, para isso você
A expressão acima pode ser explicada da seguinte forma
*
/^*{2,3}$/,/^*{2,3}$/{
Os scripts sed acima encontram todas as linhas entre *** e *** e o desempenho após as operações
Encontre os próximos dois asteriscos
Você pode agrupar os comandos em scripts sed conforme mostrado no exemplo a seguir
$ sed -f rmblksp arquivo demo3
Encontre dois ou mais espaços em branco e substitua-os por um único
s/ */ /g<
Encontre o asterisco ou estrela ( remova o significado especial de '*'
^*{2,3}$d
$ sed -f dem_gsed demofile2 > /tmp/fi.$$
Agora salve o script sed acima e execute-o da seguinte maneira:
Início da linha
,
/^$/d
Expressão /
^$/d
Significado
s/Linux/Linux-Unix/
Significado
Próximo intervalo ou padrão de pesquisa
precisa do arquivo demofile3 . Escreva o script sed da seguinte maneira:
--------------------------------------------------
s/ */ /g
2) Substitua "Linux-Unix" pela palavra "Linux" usando a expressão s/Linux/Linux-Unix/.
Eu não sei o que é sed, mas acho
Bem-vindo ao mundo do sed, o que é sed?
$ gato > dem_gsed
Fim da linha
1) Exclua a linha em branco, se houver, usando a expressão /^$/d.
espaço em branco
Encontre todas as linhas em branco e exclua usando o comando d .
Agora exclua todas as linhas entre o intervalo *** e ***
metacaractere)
$ gato /tmp/fi.$$
Execute o script acima da seguinte maneira:
http://www.cyberciti.biz/pdf/lsst/ch07sec14.html (2 de 4) [29/07/2002 18:53:54]
LSST v1.05 > Capítulo 7 > Mais exemplos de sed
Machine Translated by Google
/MILÍMETROS /{
a
email:vk@fackmail.co.in }
N
Observe que isso indica dois espaços em branco e indica um espaço em branco.
N
e-
mail:nk@fackmail.co.in
N
N
a
email:ag@fackmail.co.in }
N
/NK/{N
N
a
email:rk@fackmail.co.in }
Para realizar todas as tarefas acima, escreva o script sed da seguinte forma:
$ cat > mkchgfrddb s/A.bad/Aurangabad/
gs/MH/Maharastra/gs/^$/
============================
=======================================/g /VK /{
Para nosso próximo e último exemplo, crie o arquivo de banco de dados
amigos Nossa tarefa é a seguinte para o arquivo de banco de
dados de amigos: 1) Encontre todas as ocorrências da palavra "A'bad", substitua-a pela palavra
"Aurangabad" 2) Expanda o valor do estado MH para
Maharastra 3) Encontre todas as linhas em branco e substitua pela linha real (ou seja, ========)
N
a
email:mm@fackmail.co.in }
/AG / { N
4)Insira o endereço de e-mail de cada pessoa no final do endereço postal da pessoa. Para cada pessoa, o ID de e-mail é diferente
/RK/{N
http://www.cyberciti.biz/pdf/lsst/ch07sec14.html (3 de 4) [29/07/2002 18:53:54]
LSST v1.05 > Capítulo 7 > Mais exemplos de sed
Machine Translated by Google
Substitua a linha em branco pela linha real
Substituir Maharastra por MH
}
Combine o padrão e siga o comando entre { e }, se o padrão for encontrado.
Aqui estamos encontrando o nome inicial de cada amigo, se corresponder, então
iremos ao final do endereço dele (dando o comando N duas vezes) e anexando
(um comando) o endereço de e-mail do amigo no final.
s/A.bad/Aurangabad/g
Próximo
s/MH/Maharastra/gs/^$/
==========/g /VK /{ NN
a
email:vk@fackmail.co.in }
Exemplos de scripts de shell
Lar
Expressão Significado
Substitua Aurangabad por A'bad. Observe que aqui o segundo caractere em A'bad
é ' (aspas simples), para corresponder a essas aspas simples, temos que usar .
(DOT - Special Metacharcter) que corresponde a qualquer caractere único.
Execute-o da seguinte
maneira: $ sed -f mkchgfrddb amigos > atualizado_friendsdb $
cat atualizado_friendsdb
Nossos últimos exemplos mostram como podemos manipular arquivos de dados de texto usando sed. Aqui termina nosso tutorial sobre
sed/awk, mas a próxima versão (LSST versão 2.0) cobrirá mais exemplos da vida real, estudos de caso usando todas essas
ferramentas, além de integração com scripts shell, etc.
Acima
O script acima pode ser explicado da seguinte forma:
Anterior Como escrever scripts sed?
http://www.cyberciti.biz/pdf/lsst/ch07sec14.html (4 de 4) [29/07/2002 18:53:54]
LSST v1.05 > Capítulo 7 > Mais exemplos de sed
Machine Translated by Google
Q.3.Escreva um script para imprimir nos como 5,4,3,2,1 usando o loop while.
Resposta: Consulte o script de shell do segundo trimestre.
Q.8.Como realizar cálculo de número real (número com ponto decimal) no Linux Resposta: Use o comando bc do Linux
Q.11.Escreva o script para determinar se determinado arquivo existe ou não, o nome do arquivo é fornecido como argumento de linha de comando, verifique também se há um
número suficiente de argumentos de linha de comando. Resposta:
Consulte Q11 Shell Script.
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 8:
Exemplos de scripts de shell
Resposta: Consulte o script do shell do terceiro trimestre.
Q.9.Como calcular o cálculo do número real 5,12 + 2,5 no prompt $ no Shell?
Resposta: Use o comando como $ echo 5.12 + 2.5 | a.C.
Q.12.Escreva um script para determinar se determinado argumento de linha de comando ($1) contém o símbolo "*" ou não, se $1 não contém o símbolo "*" adicione-o a $1, caso contrário,
mostre a mensagem "O símbolo não é obrigatório". Por exemplo, se chamamos este script de Q12, depois de fornecer, $ Q12 /bin Aqui $1 é /bin, ele deve verificar se o símbolo "*"
está presente
ou não, caso contrário, deve imprimir Obrigatório, ou seja, /bin/*, e se o símbolo estiver presente então o símbolo não é obrigatório deve ser impresso. Teste seu script como $ Q12 /bin
Q.1. Como escrever um script de shell que adicionará dois números, que são fornecidos como argumento de linha de comando, e se esses dois números não forem fornecidos, mostre o erro
e seu uso. Resposta: Consulte Q1
Shell Script.
Q.7.Escreva um script para imprimir a soma dos números fornecidos de todos os dígitos, por exemplo. Se não for 123, a soma de todos os dígitos será 1+2+3 = 6.
,
Q.2.Escreva um script para descobrir o maior número de três números dados. Nos são fornecidos como argumento de linha de comando. Erro de impressão se argumentos suficientes não
forem fornecidos.
Resposta: Consulte o script de shell Q7.
Q.6.Escreva um script para imprimir o número fornecido na ordem inversa, por exemplo. Se não for 123, deverá ser impresso como 321.
,
Resposta: Consulte o script de shell Q10.
Próximo
,
Esses exercícios são para testar sua compreensão geral do script de shell. Meu conselho é primeiro tentar escrever esse script de shell você mesmo para entender como colocar os conceitos
para funcionar em scripts da vida real. Para obter um exemplo de resposta ao exercício, você pode consultar o arquivo de script de shell fornecido com este tutorial. Se você quer se tornar
um bom programador, então seu primeiro hábito deve ser ver bons códigos/amostras de linguagem de programação, depois praticar muito e finalmente implementar seu próprio código (e se
tornar um bom programador!!!).
Resposta: Consulte o script de shell Q6.
Q.4. Escreva o script, usando a instrução case para realizar operações matemáticas básicas
como
segue +
adição -
subtração x
multiplicação /
divisão O nome do script deve ser 'q4', que funciona da seguinte
maneira $ ./q4 20/3, verifique também se há argumentos de linha de comando
suficientes Resposta : Consulte o script de shell do quarto trimestre.
Q.10.Como realizar cálculos de números reais em shell script e armazenar o resultado na
terceira variável, digamos a = 5,66, b = 8,67, c = a + b?
Anterior
Q.5.Escreva um script para ver a data, hora, nome de usuário e diretório atual atuais. Resposta: Consulte
o script de shell Q5.
aqui estamos fornecendo a saída dos comandos echo para bc para calcular 5,12 + 2,5
http://www.cyberciti.biz/pdf/lsst/ch08.html (1 de 3) [29/07/2002 18:53:58]
LSST v1.05 > Capítulo 8 > Exemplos de Shell Scripts
Mais exemplos de Shell Script (Exercício para você :-)
Machine Translated by Google
Excluir
Q14 -c -d -m -e
versão do kernel
o arquivo,reporte erros, se houver, ao excluir o arquivo para o usuário.
em efeito Negrito e Blink, e em cores diferentes como vermelho, marrom etc.
Nota: Crie uma função para todas as ações, por exemplo, para mostrar data/hora na tela, crie a função show_datetime().
Q.15. Escreva um script chamado sayHello, coloque este script em seu arquivo de inicialização chamado .bash_profile, o script deve ser executado assim que você fizer logon
Data hora
Para excluir o arquivo selecionado
do diretório fornecido assume o diretório atual e mostra todos os arquivos apenas de
Q.16. Como escrever um script que irá imprimir a mensagem "Hello World" usando o
comando echo.
$ Q13 5 5 myf , Aqui print contém o arquivo 'myf' da linha número 5 até a próxima 5 linha desse arquivo.
5) Sua configuração de caminho atual
1) Usuário atualmente logado e seu nome de log
Para ver a data e hora atual
,
-d mostra a lista de arquivos no diretório de trabalho atual
Resposta: Consulte o script de shell Q18.
Calendário
para o sistema e imprime qualquer uma das seguintes mensagens na infobox usando o utilitário de diálogo, se instalado em seu sistema, Se o utilitário de diálogo estiver
Onde as opções funcionam como
6) Seu diretório de trabalho atual
nesse diretório, os arquivos devem ser mostrados na tela usando menus de diálogo
Resposta: Consulte o script de shell Q13
Resposta: Consulte o script de shell Q16
Q.18. Escreva um script de shell para implementar menus usando o utilitário de diálogo. Os itens de menu e as ações de acordo com o item de menu selecionado são os seguintes:
-m start mc (shell de comandante da meia-noite), se instalado
Saída
Boa tarde
Resposta: Consulte o script de shell do Q12
2) Seu shell atual
A data e a hora devem ser mostradas usando a infobox do utilitário de diálogo
Propósito
não instalado, use a instrução echo para imprimir a mensagem: -
Q.19. Escreva um script shell para mostrar várias configurações do sistema, como
7) Mostrar o número de usuários atualmente logados
utilitário, deixe o usuário selecionar o arquivo e peça a confirmação ao usuário
Q.17. Escreva um script para implementar o processo em segundo plano que imprimirá continuamente a hora atual no canto superior direito da tela. O usuário pode fazer
seu trabalho normal no prompt $.
Q.14. Escreva o script para implementar a instrução getopts, seu script deve entender o seguinte argumento de linha de comando chamado este script
3) Seu diretório inicial
Para sair deste script de shell
Ação para item de menu
-e {editor} inicie este {editor} se instalado
Para ver o calendário atual
,
Boa noite, conforme horário do sistema.
Q.13. Escreva o script para imprimir o conteúdo do arquivo de um determinado número de linha até o próximo número de linhas. Por exemplo, se chamássemos este script como
O calendário deve ser mostrado usando a infobox do utilitário de diálogo
,
8) Sobre seu sistema operacional e versão, número de lançamento
9) Mostrar todos os shells disponíveis
Resposta: Consulte o script de shell Q17.
Q14,
$ Q12 /bin/*
Bom dia
se ele deseja excluir o arquivo selecionado, se a resposta for sim, exclua
Sai/interrompe o programa orientado por menu, ou seja, este script
Item do menu
Resposta: Consulte o script de shell do Q14
Primeiro pergunte o nome do usuário do diretório onde todos os arquivos estão presentes, se não houver nome
Resposta: Consulte o script de shell Q15
Q13 e execute como
4) Seu tipo de sistema operacional
-c limpar a tela
enquanto
http://www.cyberciti.biz/pdf/lsst/ch08.html (2 de 3) [29/07/2002 18:53:58]
LSST v1.05 > Capítulo 8 > Exemplos de Shell Scripts
Machine Translated by Google
para 3
para 2
Resposta: Clique nos links acima para ver os scripts.
10) Mostrar configurações do mouse
para 4
Q.21.Escreva um script shell para converter nomes de arquivos de MAIÚSCULAS para nomes de arquivos em minúsculas ou vice-versa.
Resposta: Veja o script rename.awk - awk e o script shell up2sh .
Resposta: Consulte o script de shell Q19.
por 8
Próximo
Q.20.Escreva um script de shell usando o loop for para imprimir os seguintes padrões na tela
para 9
por7
Anterior
Outros recursos
13) Mostrar informações do disco rígido, como tamanho do disco rígido, memória cache, modelo, etc.
Mais exemplos de sed
14) Sistema de arquivos (montado)
11) Mostrar informações da CPU do computador, como tipo de processador, velocidade, etc.
por 5
por 8
Lar
12) Mostrar informações de memória
por 6
Acima
http://www.cyberciti.biz/pdf/lsst/ch08.html (3 de 3) [29/07/2002 18:53:58]
LSST v1.05 > Capítulo 8 > Exemplos de Shell Scripts
Machine Translated by Google
Esta referência de comando foi escrita especialmente para o
LSST. Ele contém o nome do comando, sintaxe geral seguida
de um exemplo. Isso é útil durante a programação do
shell e você pode usar como guia de referência rápida de
comandos do Linux.
Este tutorial/documento é útil para iniciantes que desejam aprender o
sistema de arquivos Linux, pois cobre o conceito básico de sistema de
arquivos, comandos ou utilitários relacionados ao sistema de arquivos.
Ele explicará conceitos básicos de arquivos, como o que são
arquivos e diretórios, quais são os pontos de montagem, como usar o
cdrom ou a unidade de disquete no Linux.
Acima
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo
9: Outros recursos
Próximo
Sobre o autor
Apêndice - A
Exemplos de scripts de shell
Informação
Lar
Mais informações sobre a próxima edição deste tutorial.
Este é um novo capítulo adicionado ao LSST v1.05r3, que fornece mais referências a outros materiais disponíveis sobre scripts de
shell na Internet ou em softwares. Também indica alguns outros recursos que podem ser úteis durante a programação
do shell.
Anterior
Apêndice B
Anterior
Referência de comandos do Linux (LCR)
Próximo
Apêndice - A
Tutorial do servidor de arquivos Linux (LFST) versão b0.1 Rev.
LSST v1.05 > Capítulo 9 > Introdução
http://www.cyberciti.biz/pdf/lsst/ch09.html [29/07/2002 18:53:59]
Introdução
Machine Translated by Google
escreve um artigo sobre Linux/Unix, LSST é um desses artigos/documentos. Seu plano futuro inclui mais
iniciantes. Ele também está trabalhando com várias empresas de informática como consultor de tecnologia. Atualmente ele
Outra informação
Próximo
Tutorial de script de shell do Linux (LSST) v1.05r3
artigo/documentos sobre Linux especialmente para iniciantes. Se você tiver alguma sugestão ou nova ideia ou problema
Este tutorial foi preparado com a ajuda de todo o material valioso da web, bem como da ajuda on-line de
Linux (páginas de manual e informações), instruções sobre Linux, etc. Também agradecimentos especiais a Ashish por seu valioso
Sobre este documento
Vivek G. Gite dirige uma pequena empresa chamada "Cyberciti Computers" e *nix Solution empresa nixCraft. Ele é
Por favor visite http://www.cyberciti.biz/nixcraft/linux/docs/ para a versão mais recente deste Tutorial/Documento como
Lar
desenvolvedor de software freelance e também ensina hardware de computador, redes e Linux/Unix para
bem como para outros tutoriais/documentos.
Posso ser contatado pelo e-mail: vivek@nixcraft.com.
Anterior
Acima
Anterior
Outros recursos
Próximo
Capítulo 9: Outros Recursos
com este tutorial, sinta-se à vontade para entrar em contato com o autor usando o seguinte ID de e-mail.
Onde encontro a versão mais recente?
sugestão para este tutorial/documento.
Como entro em contato com o autor?
Todas as marcas registradas são reconhecidas e usadas apenas para fins de identificação.
LSST v1.05 > Sobre o autor
http://www.cyberciti.biz/pdf/lsst/aboutauth.html [29/07/2002 18:54:01]
sobre o autor
Machine Translated by Google
Embora o autor acredite que o conteúdo seja exato no momento da publicação, nenhuma responsabilidade será assumida por ele, sua
aplicação ou quaisquer consequências daí decorrentes. caso seja constatada qualquer deturpação, erro ou outra necessidade de
esclarecimento, entre em contato imediatamente com o autor.
Todas as marcas registradas são propriedade de seus respectivos detentores.
A cópia mais recente deste documento pode sempre ser obtida em: http://
www.cyberciti.biz/nixcraft/linux/docs/
Tutorial de script de shell do Linux atualizado pela última vez v1.05r3 (LSST) - na quinta-feira, 04 de julho de 2002.
Este documento tem Copyright (C) 1999, 2000, 2001,2002 de Vivek G. Gite <vivek@nixcraft.com>. Pode ser distribuído
gratuitamente em qualquer meio, desde que o texto (incluindo este aviso) seja mantido intacto e o conteúdo não seja
modificado, editado, adicionado ou alterado de outra forma. A formatação e a apresentação podem ser modificadas.
Pequenos trechos podem ser feitos desde que o documento completo seja referenciado de forma adequada e visível.
Se você fizer o espelho deste documento, envie um e-mail para o endereço acima, para que possa ser informado sobre
atualizações.
Anterior
Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 9:
Outros recursos
Anterior
Sobre o autor
Lar
Acima
Recursos do UniqLinux
LSST v1.05 > Sobre este documento
http://www.cyberciti.biz/pdf/lsst/aboutthisdoc.html [29/07/2002 18:54:03]
Sobre este documento
Machine Translated by Google
echo "A soma de $1 e $2 é `expr $1 + $2`"
Onde x e y são dois números para os quais imprimirei a soma"
fi
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/
uniqlinuxfeatures/tools/ #
você"
x
if [$# -ne 2] então echo "Uso
- $0
echo" saída 1
#!/bin/bash # #
Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite
<vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://
www.nixcraft.com / # # Q1.Script para somar nos #
http://www.cyberciti.biz/pdf/lsst/scripts/q1 [29/07/2002 18:54:23]
http://www.cyberciti.biz/pdf/lsst/scripts/q1
Machine Translated by Google
# 2) N1 é maior que n2 e n3, se sim # # # # # # #
então
echo "$n1 é o maior número"
#
fi
echo "Todos os três números são iguais" else
#
# Algo:
5) FIM
se [$n1 -gt $n2] && [$n1 -gt $n3]
#!/bin/bash
#
print n3 é o maior, não vá para a etapa 5, caso contrário, vá para a próxima etapa
#
print n2 é o maior, não vá para a etapa 5, caso contrário, vá para a próxima etapa
n1=$1
echo "$n3 é o maior número"
#
echo "$n2 é o maior número"
# ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta
#
print n1 é o maior, não vá para a etapa 5, caso contrário, vá para a próxima etapa
saída 1
echo "$0: número1 número2 número3 não são fornecidos" >&2
# Escrito por Vivek G. Gitevivek@nixcraft.com>
#
elif [$n2 -gt $n1] && [$n2 -gt $n3] então
#
# Tutorial de script de shell do Linux 1.05r3, verão de 2002
# 1) INÍCIO: Considere três números como n1,n2,n3.
se [ $# -ne 3 ]
então
echo "Não consigo descobrir qual número é maior"
n3=$3
então
4) N3 é maior que n1 e n2, se sim
n2=$2
elif [$1 -eq $2] && [$1 -eq $3] && [$2 -eq $3]
#Q2. Script para descobrir o maior número
# Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/
# A versão mais recente pode ser encontrada em http://www.nixcraft.com/
3) N2 é maior que n1 e n3, se sim
fi
elif [$n3 -gt $n1] && [$n3 -gt $n2] então
http://www.cyberciti.biz/pdf/lsst/scripts/q2
http://www.cyberciti.biz/pdf/lsst/scripts/q2 [29/07/2002 18:54:27]
Machine Translated by Google
"
2) Iniciar While Loop 3) Verifique, o
valor de i é zero, se sim, vá para a etapa 5, caso contrário, continue com a próxima etapa 4) imprima i, diminua i
por 1 (ou seja, i = i-1 para ir para zero) e vá
para a etapa 3 5) FIM
i=`expr $i - 1`
feito #
# ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
quero começar de outro valor coloque esse valor)
eco "$i
1) START: defina o valor de i como 5 (já que queremos começar em 5, se você
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão
mais recente pode ser encontrada em http://www.nixcraft.com / # # Q3 # Algo: # # # # # # # # # i=5
enquanto test $i != 0 do
http://www.cyberciti.biz/pdf/lsst/scripts/q3 [29/07/2002 18:54:33]
http://www.cyberciti.biz/pdf/lsst/scripts/q3
Machine Translated by Google
outro
saída;;
eco A resposta é $z
echo "Uso - $0 valor1 operador valor2" echo "echo"
se teste $# = 3 então
esac
caso $2 em +)
seja z=$1+$3;; -) seja z=$1-
$3;; /) seja z=$1/$3;; x|X) seja
z=$1*$3;; *) echo Aviso -
operador $2 inválido, somente
operador +,-,x,/ permitido
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com>
# # A versão mais recente pode ser encontrada em http://www.nixcraft.com /##Q4#
operador pode ser +,-,/,x (para multiplicação)"
fi
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/
uniqlinuxfeatures/tools/ #
Onde valor1 e valor2 são valores numéricos"
http://www.cyberciti.biz/pdf/lsst/scripts/q4
http://www.cyberciti.biz/pdf/lsst/scripts/q4 [29/07/2002 18:54:42]
Machine Translated by Google
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/
uniqlinuxfeatures/tools/ #
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q5 # echo "Olá,
$LOGNAME" echo "A data atual é `date`" echo "O usuário é `quem eu sou`" echo "Diretório atual `pwd`"
http://www.cyberciti.biz/pdf/lsst/scripts/q5 [29/07/2002 18:54:47]
http://www.cyberciti.biz/pdf/lsst/scripts/q5
Machine Translated by Google
6) N é maior que zero, se sim, vá para a etapa 3, caso contrário, próxima etapa
5) Diminuir n por 1
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão
mais recente pode ser encontrada em http://www.nixcraft.com / # # Script para reverter dado não #
#
Algo: # # # # # # # # if [ $# -ne 1 ] então echo "Uso: $0 número" echo "
7) Imprimir rotação
3) Encontre um único dígito em sd como n% 10 que dará (dígito mais à esquerda)
sd=`expr $n % 10` rev=`expr $rev
* 10 + $sd` n=`expr $n / 10` pronto echo "O número
reverso é $rev"
4) Construa revrse no como rev
#
# ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/
#
n=$1
rev=0
sd=0
1) Insira o número n
2) Defina rev=0, sd=0
Vou encontrar o reverso do determinado número" echo "
enquanto [$n -gt 0] faça
* 10 + dp
Por exemplo. $0 123, imprimirei 321" saída 1
fi
http://www.cyberciti.biz/pdf/lsst/scripts/q6 [29/07/2002 18:54:50]
http://www.cyberciti.biz/pdf/lsst/scripts/q6
Machine Translated by Google
4) Construa a soma não como soma = soma + sd
1) Insira o número n
3) Encontre um único dígito em sd como n% 10 que dará (dígito mais à esquerda)
5) Diminuir n por 1
Por exemplo. $0 123, imprimirei 6 como soma de todos os dígitos (1+2+3)" saída 1
2) Defina soma = 0, sd = 0
Encontrarei a soma de todos os dígitos para determinado número" echo "
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão
mais recente pode ser encontrada em http://www.nixcraft.com / # # Algo: # # # # # # # # if [ $# -ne
1 ] então echo "Uso: $0 número" echo "
6) N é maior que zero, se sim, vá para a etapa 3, caso contrário, próxima etapa
7) Imprimir soma
fi
n=$1
soma=0
sd=0
enquanto [ $n -gt 0 ] faça
sd=`expr $n % 10` sum=`expr $sum
+ $sd` n=`expr $n / 10` done echo "A soma
do dígito para numner é $sum"
#
# ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/
#
http://www.cyberciti.biz/pdf/lsst/scripts/q7 [29/07/2002 18:54:54]
http://www.cyberciti.biz/pdf/lsst/scripts/q7
Machine Translated by Google
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q10 # a=5,66 b=8,67
c=`echo $a + $b | bc` echo "$a + $b = $c"
#
# ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
http://www.cyberciti.biz/pdf/lsst/scripts/q10 [29/07/2002 18:54:57]
http://www.cyberciti.biz/pdf/lsst/scripts/q10
Machine Translated by Google
if [ $# -ne 1 ] then echo "Uso -
$0
nome do arquivo" saída 1
fi
fi
#!/bin/bash # #
Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite
<vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://
www.nixcraft.com /##Q11
if [ -f $1 ] then echo "$1
arquivo
existe" else echo "Desculpe, $1 arquivo
não
existe"
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://
www.nixcraft.com/uniqlinuxfeatures/tools/ #
http://www.cyberciti.biz/pdf/lsst/scripts/q11 [29/07/2002 18:55:04]
http://www.cyberciti.biz/pdf/lsst/scripts/q11
Machine Translated by Google
fi
grep
se [$? -eq 1] then echo
"Obrigatório, ou seja, $1/*" else echo "O símbolo não é
obrigatório"
rm -f /tmp/file.$$ rm -f /tmp/file0.$
$ # # ./ch.sh: referência de vivek-
tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http:/ /www.nixcraft.com/uniqlinuxfeatures/tools/ #
"*" /tmp/arquivo.$$ >/tmp/arquivo0.$$
gato "$1" > /tmp/arquivo.$$ 2>/tmp/arquivo0.$$
#!/bin/bash # #
Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite
<vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://
www.nixcraft.com / # # Q12 # Script para verificar se "/*" está incluído, em $1 ou não #
http://www.cyberciti.biz/pdf/lsst/scripts/q12 [29/07/2002 18:55:29]
http://www.cyberciti.biz/pdf/lsst/scripts/q12
Machine Translated by Google
se [ -e $3 ]; então cauda +$1 $3 | head
-n$2 else echo "$0: Erro ao abrir arquivo $3" exit
2
#
se [ $# -eq 3 ]; então
fi
else
echo "Argumentos faltando!"
fi
# Procure argumentos suficientes #
#
# Imprime erro/diagnóstico para o usuário se nenhum argumento for fornecido # if [ $# -eq 0 ] então echo
"$0:Argumentos de comando
de erro
faltando!" echo "Uso: $0 start_line uptoline filename" echo "Onde start_line é o número da
linha a partir da qual você gostaria de imprimir o arquivo" echo "uptoline é o número da linha até a qual
gostaria de imprimir" echo "Por exemplo, $0 5 5 myfile" echo " Aqui, do meu arquivo, são impressas 5 linhas, começando da linha nº 5 até a linha "echo" nº 10. saída 1
#!/bin/bash # #
Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite
<vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://
www.nixcraft.com / # # Q13 # # Shell script para imprimir contém o arquivo de determinada linha não
para a
próxima # linhas numéricas fornecidas #
#
# ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/
#
fi
http://www.cyberciti.biz/pdf/lsst/scripts/q13
http://www.cyberciti.biz/pdf/lsst/scripts/q13 [29/07/2002 18:55:33]
Machine Translated by Google
# Função para mostrar arquivos no diretório atual # show_ls() {
#
MC
ced=$1 se
qual $ced > /dev/null ; então $ced
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q14 # -c clear # -d
dir # -m mc # -e vi { editor } #
ls
echo "lista os arquivos, pressione uma tecla. leia
. ."
echo "Comandante da meia-noite, pressione uma tecla. leia mais echo "Erro:
Comandante da meia-noite não instalado, pressione uma tecla. ler
retornar
# Função para iniciar mc # start_mc() {
#
}
se qual mc > /dev/null ; então
}
retornar
# Função para iniciar o editor # start_ed() {
limpar
echo "Limpar tela, pressione uma tecla. leia
}
. ."
#
#
. ."
. ."
# Função para limpar a tela # cls() {
retornar
fi
http://www.cyberciti.biz/pdf/lsst/scripts/q14 (1 de 2) [29/07/2002 18:55:36]
http://www.cyberciti.biz/pdf/lsst/scripts/q14
Machine Translated by Google
{
#
#
echo "Erro: $ced não está instalado ou esse editor não existe, pressione uma tecla. leia
esac
e) thised="$OPTARG"; start_ed $thised ;;
echo "$ced, pressione uma tecla. leia
#
#
#
. ."
#Função para imprimir ajuda
}
}
echo " -e {editor}, inicie o {editor} de sua escolha";
print_help_uu
c)cls;;
# Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/
fazer
#
fi
echo "-d mostrar diretório";
#
# Verifica se há argumentos suficientes
. ."
echo "Uso: $0 -c -d -m -v {nome do editor}"; echo "Onde -c limpa a tela";
enquanto getopts cdme: opt
feito
print_help_uu()
outro
# O procedimento principal começa aqui
#Agora analise os argumentos da linha de comando
?) print_help_uu; saída 1;;
fi
m) start_mc;;
retornar
saída 1
d) mostrar_ls;;
#
#
# ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta
retornar
echo " -m iniciar shell do comandante da meia-noite";
se [$# -eq 0]; então
caso "$ opt" em
http://www.cyberciti.biz/pdf/lsst/scripts/q14 (2 de 2) [29/07/2002 18:55:36]
http://www.cyberciti.biz/pdf/lsst/scripts/q14
Machine Translated by Google
if which dialog > /dev/null then dialog --backtitle "Linux
Shell
Script Tutorial" --title "(-: Bem-vindo ao Linux :-)" --infobox "n$messnEste é $dat" 6 60 echo -n Pressione
uma tecla para continuar. .
fi
#!/bin/bash # #
Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite
<vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://
www.nixcraft.com /##Q15#
"
fi
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://
www.nixcraft.com/uniqlinuxfeatures/tools/ #
if [ $temph -gt 16 -a $temph -le 18 ] then mess="Boa noite $LOGNAME"
leia
claro
senão
echo -e "$messnEste é $dat"
fi
if [ $temph -gt 12 -a $temph -le 16 ] then mess="Boa tarde $LOGNAME"
temph=`data | cut -c12-13` dat=`data
+"%A %d em %B de %Y (%r)"`
.
fi
if [ $temph -lt 12 ] then mess="Bom dia
$LOGNAME, tenha um bom dia!"
"
http://www.cyberciti.biz/pdf/lsst/scripts/q15
http://www.cyberciti.biz/pdf/lsst/scripts/q15 [29/07/2002 18:55:41]
Machine Translated by Google
# Cor vermelha
clear
echo -e "033[1m Olá Mundo" # efeito negrito echo -e
"033[5m Piscar" # efeito
de piscar echo -e "033[0m Olá Mundo"
echo -e "033[31m Olá Mundo"
echo -e "033[32m Olá Mundo"
# Por exemplo. echo -e "033[1m Olá Mundo" # | | # | | # #
#de volta ao normal
Mensagem de código de escape
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q16 # comando echo
com sequência de escape para fornecer efeitos diferentes # # Sintaxe: echo -e "escape-code sua mensagem, var1,
var2 etc"
# Veja o restante na tela echo -e "033[34m
Hello World" echo -e "033[35m Hello World" echo -e
"033[36m Hello World"
echo -e -n "033[0m " # volta ao noraml
echo -e "033[41m Olá Mundo" echo -e "033[42m Olá Mundo"
echo -e "033[43m Olá Mundo" echo -e "033[44m Olá Mundo"
echo -e "033 [45m Olá Mundo" echo -e "033[46m Olá Mundo"
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
# Cor verde echo -e
"033[33m Olá Mundo"
echo -e "033[0m Olá Mundo" # volta ao noraml
http://www.cyberciti.biz/pdf/lsst/scripts/q16 [29/07/2002 18:55:44]
http://www.cyberciti.biz/pdf/lsst/scripts/q16
Machine Translated by Google
coloque o copo 0 69
ti=`data +"%r"` echo -e -n
"033[7s" # #save posição e atributos atuais da tela
eco -n $ti
enquanto:
fazer
#Mostre o relógio#
echo
echo "Relógio Digital para Linux" echo "Para parar este
relógio use o comando kill pid, veja acima para pid" echo "Pressione uma tecla para continuar. . ."
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q17 # Para executar
digite em $ promo como # $ q17 & #
# linha 0 e coluna 69 são usadas para mostrar o relógio
#coloca o relógio na tela
#Atraso de 1 segundo # sono 1
concluído
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
echo -e -n "033[8u" #restaura a posição e os atributos atuais da tela #
http://www.cyberciti.biz/pdf/lsst/scripts/q17 [29/07/2002 18:55:52]
http://www.cyberciti.biz/pdf/lsst/scripts/q17
Machine Translated by Google
menuchoice.temp.$$`" 9 25 leia rm -f menuchoice.temp.
$$ retorne
cal > menuchoice.temp.$$ dialog --backtitle "Tutorial
do Linux Shell" --title "Calendário" --infobox "`cat
grep se
[ $? -eq 1] então mfile=$mfile/*
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão
mais recente pode ser encontrada em http://www.nixcraft.com / #
}
fi
fi
}
if [ -z $mfile ] then mfile=`pwd`/*
else
mostrar_cal() {
"*" /tmp/dirip.$$
esac
pronto
"A data é `data`" 3 40 lida
retornar
mostrar_datahora() {
delete_file() { dialog --
backtitle "Tutorial do Linux Shell" --title "Excluir arquivo" --inputbox "Insira o caminho do diretório (Insira para o diretório atual)" 10 40 2>/
tmp/dirip.$$ rtval=$ ?
mfile=`cat /tmp/dirip.$$`
para eu em $mfile faça
dialog --backtitle "Tutorial do Linux Shell" --title "Data e hora do sistema" --infobox
caso $rtval em 1) rm -f /tmp/
dirip.$$ ; retornar ;; 255) rm -f /tmp/dirip.$$ ; retornar ;;
se [ -f $i ] então echo "$i
Excluir?"
>> /tmp/listafinal.$$
http://www.cyberciti.biz/pdf/lsst/scripts/q18
http://www.cyberciti.biz/pdf/lsst/scripts/q18 (1 de 3) [29/07/2002 18:55:59]
Machine Translated by Google
Pressione uma tecla" 5 60 read fi
else
dialog --
backtitle "Linux Shell Tutorial" --title "Informações: Comando de exclusão" --infobox
"Arquivo: $file2erase não é
leia
mais
diálogo --backtitle "Tutorial do Linux Shell" --title "Erro: Comando de exclusão" --infobox
"Erro ao excluir arquivo: $file2erase,
}
escolha=`cat menuchoice.temp.$$`
dialog --backtitle "Tutorial do Linux Shell" --title "Selecionar arquivo para excluir" --menu "Use [Para cima][Para baixo] para mover, [Enter] para selecionar
o arquivo" 20 60 12 `cat /tmp/finallist .$$` 2>/tmp/file2delete.tmp.$$
excluída, a ação é cancelada, pressione uma tecla" 5 60 read fi
while true do dialog
--
clear --title "Menu principal"  --menu "Para mover as teclas de seta [PARA
CIMA/PARA BAIXO] n
[Enter] para selecionarn
rm -f menuchoice.temp.$$
dialog --backtitle "Tutorial do Linux Shell" --title "Informações: Comando de exclusão"
--infobox "Arquivo: $file2erase é
rm -f /tmp/dirip.$$ rm -f /tmp/finallist.$$
rm -f /tmp/file2delete.tmp.$$
"Para sair deste programa" 2> menuchoice.temp.$$
Excluído com sucesso, pressione uma tecla" 5 60
retornar
rm -f /tmp/file2delete.tmp.$$; retornar;;
"Para remover arquivo" "Excluir"
retotar=$?
case $rtval em 0) dialog --
backtitle "Tutorial do Linux Shell" --title "Você está certo" --yesno "nnDeseja excluir: $file2erase " 10 60
"Saída"
se [$? -eq 0 ] ; então rm -f $file2erase se [ $?
-eq 0 ] ; então
rtval=$?
esac
1) rm -f /tmp/dirip.$$ ; rm -f /tmp/finallist.$$ ; rm -f /tmp/file2delete.tmp.$$; retornar;; 255) rm -f /tmp/dirip.$
$ ; rm -f /tmp/finallist.$$ ;
Escolha o Serviço que você gosta:" 20 51 4  "Data/hora"
arquivo2erase=`cat /tmp/file2delete.tmp.$$`
;;
"Para ver a data e hora do sistema"  "Para ver o
Calaender" "Calendário"
http://www.cyberciti.biz/pdf/lsst/scripts/q18
http://www.cyberciti.biz/pdf/lsst/scripts/q18 (2 de 3) [29/07/2002 18:55:59]
Machine Translated by Google
esac
Calendário) show_cal ;;
Sair) sair 0;;
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://
www.nixcraft.com/uniqlinuxfeatures/tools/ #
Data/hora) show_datetime ;;
Excluir) delete_file ;;
caso $ escolha em
caso $retopt em 0)
esac
;;
1) saída;; 255) saída ;;
feito
claro
http://www.cyberciti.biz/pdf/lsst/scripts/q18 (3 de 3) [29/07/2002 18:55:59]
http://www.cyberciti.biz/pdf/lsst/scripts/q18
Machine Translated by Google
echo -e "Shell atual: $SHELL" >> /tmp/info.tmp.01.$$$
fi
/tmp/info.tmp.01.$$$ echo -e "Informações
do mouse do computador:" echo -e
#
"------------------------------------------------- -------------------" >>
/tmp/info.tmp.01.$$$
/tmp/info.tmp.01.$$$ cat /proc/
cpuinfo >> /tmp/info.tmp.01.$$$
"------------------------------------------------- -------------------" >>
#
nouser=`quem | wc -l`
então
então
#!/bin/bash
#
if [ -f /etc/redhat-release ]
#
echo -e "Diretório atual: `pwd`" >> /tmp/info.tmp.01.$$$
echo -e "Conchas disponíveis:" echo -e "`cat /etc/shells`"
>> /tmp/info.tmp.01.$$$
"------------------------------------------------- -------------------" >>
então
"------------------------------------------------- -------------------" >>
"------------------------------------------------- -------------------" >>
#
echo -e "Seu tipo de sistema operacional: $OSTYPE" >> /tmp/info.tmp.01.$$$
então
se [ -f /etc/shells ]
# Escrito por Vivek G. Gitevivek@nixcraft.com>
echo -e "Diretório inicial: $HOME" >> /tmp/info.tmp.01.$$$
>> /tmp/info.tmp.01.$$$
"------------------------------------------------- -------------------" >>
"------------------------------------------------- -------------------" >>
# Tutorial de script de shell do Linux 1.05r3, verão de 2002
echo -e "Nome de usuário: $USER (Nome de login: $LOGNAME)" >> /tmp/info.tmp.01.$$$
echo -e "SO: `cat /etc/redhat-release`" >> /tmp/info.tmp.01.$$$
eco -e
echo -e /tmp/
info.tmp.01.$$$ echo -e "Informações
sobre a memória do computador:" >> /tmp/info.tmp.01.$$$ echo -e /tmp/info.tmp.01. $$$ cat /proc/meminfo >> /tmp/info.tmp.01.$$$
se [ -f /etc/sysconfig/mouse ]
echo -e /tmp/
info.tmp.01.$$$ echo -e "Informações da CPU
do computador:" >> /tmp/info.tmp.01.$$$ echo -e "-------- -------------------------------------------------- ----------" >>
/tmp/info.tmp.01.$$$ echo -e "Informações
do disco rígido:" >> /tmp/info.tmp.01.$$$ echo -e
echo -e "Atualmente conectado: $nouser usuário(s)" >> /tmp/info.tmp.01.$$$
fi
fi
#Q19
eco -e
se [ -d /proc/ide/hda ]
# A versão mais recente pode ser encontrada em http://www.nixcraft.com/
echo -e "PATH: $PATH" >> /tmp/info.tmp.01.$$$
>> /tmp/info.tmp.01.$$$
/tmp/info.tmp.01.$$$ echo -e
"`cat /etc/sysconfig/mouse`" >> /tmp/info.tmp.01.$$$
http://www.cyberciti.biz/pdf/lsst/scripts/q19 (1 de 2) [29/07/2002 18:56:10]
http://www.cyberciti.biz/pdf/lsst/scripts/q19
Machine Translated by Google
dialog --backtitle "Linux Software Diagnostics (LSD) Shell Script Ver.1.0" --title
então
# ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta
echo -e "Modelo: `cat /proc/ide/hda/model` " >> /tmp/info.tmp.01.$$$ echo -e "Driver: `cat /proc/ide/hda/driver` "
echo -e "Tamanho do cache: `cat /proc/ide/hda/cache` "
"Pressione as teclas para cima/para baixo para mover" --textbox /tmp/info.tmp.01.$$$ 21 70
# Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/
#
/tmp/info.tmp.01.$$$ cat /proc/
mounts >> /tmp/info.tmp.01.$$$
rm -f /tmp/info.tmp.01.$$$
se qual caixa de diálogo > /dev/null
#
"------------------------------------------------- -------------------" >>
fi
echo -e /tmp/
info.tmp.01.$$$ echo -e "Sistema de arquivos
(montagem):" >> /tmp/info.tmp.01.$$$ echo -e "------ -------------------------------------------------- ------------" >>
>> /tmp/info.tmp.01.$$$
outro
fi
>> /tmp/info.tmp.01.$$$
gato /tmp/info.tmp.01.$$$ |mais
http://www.cyberciti.biz/pdf/lsst/scripts/q19 (2 de 2) [29/07/2002 18:56:10]
http://www.cyberciti.biz/pdf/lsst/scripts/q19
Machine Translated by Google
echo "Você consegue ver o seguinte:"
#
# ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
para (( i=1; i<=5; i++ )) fazer
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão
mais recente pode ser encontrada em http://www.nixcraft.com / #
for (( j=1; j<=i; j++ )) do echo -n "$i" concluído echo
""
concluído
http://www.cyberciti.biz/pdf/lsst/scripts/for2 [29/07/2002 18:56:20]
http://www.cyberciti.biz/pdf/lsst/scripts/for2
Machine Translated by Google
para (( i=1; i<=5; i++ )) fazer
#
# ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
echo "Você consegue ver o seguinte:"
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão
mais recente pode ser encontrada em http://www.nixcraft.com / #
for (( j=1; j<=i; j++ )) do echo -n "$j" concluído echo
""
concluído
http://www.cyberciti.biz/pdf/lsst/scripts/for3
http://www.cyberciti.biz/pdf/lsst/scripts/for3 [29/07/2002 18:56:25]
Machine Translated by Google
para (( i=1; i<=5; i++ )) fazer
" |"
echo "Suba os degraus do sucesso"
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / #
for (( j=1; j<=i; j++ )) do echo -n concluído echo
"_
" concluído
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/
uniqlinuxfeatures/tools/ #
http://www.cyberciti.biz/pdf/lsst/scripts/for4 [29/07/2002 18:56:28]
http://www.cyberciti.biz/pdf/lsst/scripts/for4
Machine Translated by Google
para (( i=1; i<=5; i++ )) fazer
"*"
ecoar "Estrelas"
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / #
for (( j=1; j<=i; j++ )) do echo -n feito echo "" feito
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/
uniqlinuxfeatures/tools/ #
http://www.cyberciti.biz/pdf/lsst/scripts/for5
http://www.cyberciti.biz/pdf/lsst/scripts/for5 [29/07/2002 18:56:31]
Machine Translated by Google
for (( j=1; j<=i; j++ )) do echo -n feito echo "" feito
for (( j=1; j<=i; j++ )) do echo -n feito echo "" feito
para (( i=5; i>=1; i-- )) fazer
"*"
ecoar "Estrelas"
"*"
para (( i=1; i<=5; i++ )) fazer
#!/bin/bash # #
Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite
<vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://
www.nixcraft.com / #
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/
uniqlinuxfeatures/tools/ #
http://www.cyberciti.biz/pdf/lsst/scripts/for6 [29/07/2002 18:56:36]
http://www.cyberciti.biz/pdf/lsst/scripts/for6
Machine Translated by Google
se [$i -eq 3]; então echo -n "______" echo
-n -e ">> Servidor Powerd.n"
else echo "~~~~~"
for (( j=1; j<=i; j++ )) do echo -n "|Linux" concluído
echo "______" concluído
for (( j=1; j<=i; j++ )) do echo -n "|Linux" concluído
pronto
claro
para (( i=3; i>=1; i-- )) fazer
para (( i=1; i<=3; i++ )) fazer
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / #
#
# ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
http://www.cyberciti.biz/pdf/lsst/scripts/for7 [29/07/2002 18:56:40]
http://www.cyberciti.biz/pdf/lsst/scripts/for7
Machine Translated by Google
for (( i=1; i<=MAX_NO; i++ )) faça
claro
echo -n
concluído para (( j=1; j<=i; j++ )) do echo -n
concluído echo
""
concluído
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / #
para (( s=MAX_NO; s>=i; s-- )) faça
" ."
echo -e "nntttEspero que goste, minha estupidez (?)"
[$MAX_NO -ge 5 -a $MAX_NO -le 9]; então echo "Peço para inserir um número
entre 5 e 9, ok" saída 1
para (( s=MAX_NO; s>=i; s-- )) faça
fi
" "
"$eu"
"
se !
MAX_NO=0
" "
for (( i=1; i<=MAX_NO; i++ )) faça
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
echo -n "Insira o número entre (5 a 9): leia MAX_NO
echo -n
concluído para (( j=1; j<=i; j++ )) do echo -n
concluído echo
""
concluído
http://www.cyberciti.biz/pdf/lsst/scripts/for8
http://www.cyberciti.biz/pdf/lsst/scripts/for8 [29/07/2002 18:56:43]
Machine Translated by Google
for (( i=1; i<=MAX_NO; i++ )) faça
claro
echo -n
concluído para (( j=1; j<=i; j++ )) do echo -n
concluído echo
""
concluído
#!/bin/bash # # Linux
Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A
versão mais recente pode ser encontrada em http://www.nixcraft.com / #
para (( s=MAX_NO; s>=i; s-- )) faça
" ."
echo -e "nntttEspero que goste, minha estupidez (?)"
[$MAX_NO -ge 5 -a $MAX_NO -le 9]; então echo "Peço para inserir um número
entre 5 e 9, ok" saída 1
for (( s=i; s<=MAX_NO; s++ )) faça
fi
" "
###### Segundo estágio ###################### ## ## para (( i=MAX_NO; i>=1;
i-- ) ) fazer
"
se !
MAX_NO=0
" "
" ."
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
echo -n
concluído para (( j=1; j<=i; j++ )) do echo -n
concluído echo
""
concluído
echo -n "Insira o número entre (5 a 9): leia MAX_NO
http://www.cyberciti.biz/pdf/lsst/scripts/for9
http://www.cyberciti.biz/pdf/lsst/scripts/for9 [29/07/2002 18:56:51]
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/images/forloop/for7.jpg [29/07/2002 18:57:09]
http://www.cyberciti.biz/pdf/lsst/images/forloop/for7.jpg
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/images/forloop/for8.jpg [29/07/2002 18:57:13]
http://www.cyberciti.biz/pdf/lsst/images/forloop/for8.jpg
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/images/forloop/for8-b.jpg [29/07/2002 18:57:17]
http://www.cyberciti.biz/pdf/lsst/images/forloop/for8-b.jpg
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/images/forloop/for9.jpg [29/07/2002 18:57:20]
http://www.cyberciti.biz/pdf/lsst/images/forloop/for9.jpg
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/scripts/rename.awk [29/07/2002 18:57:29]
http://www.cyberciti.biz/pdf/lsst/scripts/rename.awk
printf "%s ou %s o diretório não pode renomeá-lo para minúsculasn",sfile,dfile next # continua com a próxima gravação
senão if( ( sistema(isdir1) ) == 0 || sistema((isdir2)) == 0 ) {
# Linux Shell Scripting Tutorial v1.05r3, Summer-2002 # rename.awk: script awk para renomear arquivo
com alguma inteligência integrada # Autor: Vivek G. Gite <vivek@nixcraft.com> # BEGIN{ }
} else if (sfile == dfile) {
# # certifique-se de que estamos renomeando nosso self se estiver no mesmo diretório # if ( sfile ==
scriptname || sfile == awkscriptname )
# # Finalizar ação, se houver, por exemplo, limpezas # END{ }
próximo
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/
uniqlinuxfeatures/tools/ #
} else # tudo bem, renomeie para minúsculas { mvcmd = "mv " sfile " " dfile printf "Renomeando
%s para %sn",sfile,dfile system(mvcmd) }
nome do script = "up2low" awkscriptname
= "renomear.awk"
sfile = $1 dfile = $2
# # não devemos
renomear diretórios na origem ou destino #
# # lógica principal está aqui # {
printf "Pulando, "%s" já está em letras minúsculasn",sfile
}
isdir1 = "[ -d " $1 " ] " isdir2 = "[ -d " $2 " ] "
próximo
Machine Translated by Google
http://www.cyberciti.biz/pdf/lsst/scripts/up2low
http://www.cyberciti.biz/pdf/lsst/scripts/up2low [29/07/2002 18:57:32]
rm -f /tmp/arquivo1.$$ rm -f /tmp/
arquivo2.$$
ls -1 > /tmp/arquivo1.$$
cole /tmp/arquivo1.$$ /tmp/arquivo2.$$ > /tmp/tmpdb.$$
#
# # mude sua localização aqui # awkspath=$HOME/
bin/$AWK_SCRIPT
tr "[AZ]" "[az]" < /tmp/file1.$$ > /tmp/file2.$$
AWK_SCRIPT="renomear.awk"
#!/bin/bash # #
up2low: script para converter o nome do arquivo maiúsculo para minúsculo no atual # diretório de trabalho # Autor: Vivek G. Gite
<vivek@nixcraft.com>
# #Copie este arquivo para o seu diretório bin, ou seja, $HOME/bin como cp
rename.awk $HOME/bin #
# Certifique-se de que o script awk exista #
se [ -f $awkspath ]; then awk -f $awkspath /tmp/
tmpdb.$$ else echo -e "n$0: Erro fatal - $awkspath não
encontrado" echo -e "nCertifique-se de que $awkspath esteja definido corretamente no script $0n"
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/
uniqlinuxfeatures/tools/ #
fi
rm -f /tmp/tmpdb.$$
Machine Translated by Google
Em 1964, o sistema operacional chamado MULTICS (Multiplexed Information and Computing System) foi desenvolvido pela Bell
adicionado ao Unix. Então o governo dos EUA. e os militares usaram o Unix para sua inter-rede (agora é conhecido como
ÿ Processador Intel x86 (Celeron/PII/PIII/PIV/Old-Pentiums/80386/80486)
Linux é grátis.
conceitos diversos e respostas para a seção de exercícios de muitos scripts de shell.
Ao mesmo tempo, o Unix começou a ser distribuído para universidades. Ali alunos e professor começaram
Assim como o Unix, o Linux roda em diferentes plataformas de hardware; por exemplo
Nota: Este arquivo faz parte do Linux Shell Scripting Tutorial e contém muitas definições de Linux/Unix,
do Programa/Software/SO estão sob Licença Pública Geral GNU (GPL).
executado na verdadeira plataforma de hardware (1970-71).
para que você possa modificar o sistema operacional (sim, sistema operacional! sistema operacional Linux!!) de acordo com seu gosto.
PDP - 7 Computador, montador e poucos utilitários, conhecido como Unix (1969). Mas esta versão do Unix é
• Assim como o Unix, o Linux também é escrito em C.
A versão comercial do Unix pode custar-lhe dinheiro)
Então Ken Thompson (programador de sistemas do Bell Labs) pensa que poderia fazer melhor (Em 1991, Linus
Portanto, Unix é um sistema operacional de rede multiusuário, multitarefa e com reconhecimento de Internet. Linux quase teve o mesmo Unix Like
INTERNET).
Primeiro, está disponível gratuitamente (você não precisa pagar para usar este sistema operacional, outros sistemas operacionais como MS-Windows ou
Laboratórios, MIT e General Electric. Mas este sistema operacional não foi o de sucesso.
ÿ PCs Macintosh
Unix é um sistema operacional de quase 35 anos.
mais experimentos em Unix. Devido a isso o Unix ganhar mais popularidade, vários novos recursos também são
• Assim como o Unix, o Linux é rico em ambiente de desenvolvimento/programação.
não portátil. Então o Unix foi reescrito em C. Como o Unix é escrito em 'C', ele é portátil. Isso significa que o Unix pode
• Assim como o Unix, o Linux também é um sistema operacional de rede multiusuário/multitarefa/32 ou 64 bits.
Também oferece muitos aplicativos de Software Livre, linguagens de programação e ferramentas de desenvolvimento, etc.
Segundo grátis significa liberdade para usar Linux, ou seja, quando você adquirir o Linux você também obterá o código fonte do Linux,
Torvalds sentiu que poderia fazer melhor que o Minix - a história se repete). Então Ken Thompson escreveu o sistema operacional em
recurso por exemplo
Unix como
Livre
http://www.cyberciti.biz/pdf/lsst/misc.htm (1 de 12) [29/07/2002 18:58:21]
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
•
Machine Translated by Google
Lista de comandos comuns do editor vi
Código aberto
Para inserir novo texto
esc + : + wq
Para continuar com a pesquisa
Linux é desenvolvido sob a Licença Pública GNU. Isso às vezes é chamado de "copyleft", para
Para encontrar todas as ocorrências de determinada palavra e substituir
esc + dw
esc + : + q
Para salvar e sair do editor vi
esc + : + w "nome do arquivo"
programas, você deve disponibilizar essas alterações para todos. Isso basicamente significa que você não pode aceitar
esc + : + w (Pressione a tecla 'escape', depois 'dois pontos' e
Para salvar o arquivo com o nome do arquivo (salvar como)
Para colar o texto que acabou de deletar ou copiar no cursor esc + p
Para pesquisar uma palavra especificada na direção inversa esc + ?word (pressione a tecla 'escape', digite word-to-find)
Para. por exemplo:$s/mumbai/pune/g
Sob a GPL o código-fonte está disponível para quem quiser e pode ser livremente modificado, desenvolvido,
Use esta sintaxe de comando vi
por exemplo, para encontrar a palavra 'shri', digite como
esc + /word (pressione a tecla 'escape', digite /word-to-find,
n
distingui-lo de um copyright.
Para salvar arquivo
então globalmente sem confirmação
Para este propósito
esc + : + q!
Para procurar uma palavra especificada na direção direta
esc + :$s/palavra a ser encontrada/palavra a ser substituída/g
Para sair sem salvar
Para excluir uma palavra da posição do cursor
finalmente 'w')
Para sair do editor vi
Para excluir a linha inteira onde o cursor está localizado esc + dd
o código-fonte do Linux, faça algumas alterações e venda sua versão modificada sem fazer o
Aqui a palavra "mumbai" é substituída por "pune"
e assim por diante. Existem apenas algumas restrições ao uso do código. Se você fizer alterações no
esc + i (você deve pressionar a tecla 'escape' e depois 'i')
/shri)
Para copiar a linha onde o cursor está localizado esc + yy
ÿ Processador Alfa (Compaq)
ÿ Processador Cyrix
ÿ Processador AMD
ÿ Processador Sun Microsystems Sparc
código-fonte disponível. Para obter mais detalhes, visite a página inicial de código aberto.
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
http://www.cyberciti.biz/pdf/lsst/misc.htm (2 de 12) [29/07/2002 18:58:21]
Machine Translated by Google
Para executar o script, você precisa estar no mesmo diretório onde criou seu script, se estiver em um diretório diferente, seu script não
será executado (por causa das configurações do caminho), por exemplo. Seu diretório inicial é (use $ pwd para ver o diretório de trabalho
atual) /home/vivek. Então você criou um script chamado 'first', após a criação deste script você mudou para algum outro diretório, digamos /home/
vivek/Letters/Personal, agora se você tentar executar seu script ele não será executado, pois o script 'first' está no diretório /home/vivek, para
superar esse problema há duas maneiras primeiro, especifique o caminho completo do seu script sempre que quiser executá-lo em outros
diretórios, como dar o seguinte comando $ /bin/sh /home/vivek/first
esc + :!comando shell
Agora, toda vez que você precisa fornecer tudo isso detalhado enquanto trabalha em outro diretório, isso leva tempo e você precisa lembrar o
caminho completo.
esc + :$s/palavra-para-encontrar/palavra-para-substituir/cg
Por exemplo: !pwd
Para executar comandos shell como ls, cp ou date etc dentro do vi
Para encontrar todas as ocorrências de determinada palavra e
substituí-las globalmente pela confirmação
Existe outra maneira, se você notar que todos os nossos programas (na forma de arquivos executáveis) estão marcados como executáveis e
podem ser executados diretamente a partir do prompt de qualquer diretório. (Para ver os executáveis do nosso programa normal, dê o
comando $ ls -l /bin ) Digitando comandos como $ bc $ cc myprg.c $ cal etc, como é possível?
Todos
os nossos arquivos
executáveis são instalados no diretório chamado /bin e o diretório /bin está definido em sua configuração PATH. Agora, quando você digita o
nome de qualquer comando no prompt $, o que o shell faz é primeiro procurar esse comando em sua parte interna (chamada como comando
interno, que faz parte do próprio Shell, e está sempre disponível para execução), se encontrado como comando interno, o shell irá executá-
lo, se não for encontrado, ele irá procurar o diretório atual, se for encontrado, o shell executará o comando do diretório atual, se não for
encontrado , então o Shell irá procurar a configuração PATH e tentar encontrar nosso arquivo executável de comandos solicitados em todos os
diretórios mencionados nas configurações PATH, se encontrado ele irá executá-lo, caso contrário ele dará a mensagem "bash: xxxx: comando
não encontrado", ainda assim ainda resta uma dúvida: posso executar meu script de shell igual a esses executáveis? Sim, você pode,
para esse fim, criar o diretório bin em seu diretório inicial e depois copiar
http://www.cyberciti.biz/pdf/lsst/misc.htm (3 de 12) [29/07/2002 18:58:21]
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
Como o Shell localiza o arquivo
Machine Translated by Google
$cd
Teste se o script está em execução ou não (ele será executado)
sua versão testada do shell script para este diretório bin. Depois disso, você pode executar seu script como arquivo executável sem
usar comandos como $ /bin/sh /
home/vivek/first Comando para
criar seu próprio diretório bin.
$ mkdir bin
para encontrar o resto 20% 3 = 2, (lembre-se de seu número inteiro
,
Vá para o seu diretório inicial
Q.3.Como imprimir a soma de dois números, digamos 6 e 3 $ echo 6
+ 3 Isso
imprimirá 6 + 3, não a soma 9. Para fazer operações de soma ou matemática no shell, use expr, a sintaxe é a seguinte Sintaxe : expr
operador op1 op2 Onde, op1 e op2 são
qualquer número inteiro (número sem ponto decimal) e o operador pode ser + Adição - Subtração / Divisão % Modular, para
encontrar o
resto Por
exemplo,
cálculo 20/3 = 6)
* Multiplicação $
expr 6 + 3
Agora criado o diretório bin, para instalar seu próprio script de
shell, para que o script possa ser executado como um
programa independente ou possa ser acessado de qualquer
diretório, copie seu script 'primeiro' para seu diretório bin
Q.1.Como definir a variável x com valor 10 e imprimi-la na tela. $ x = 10 $ eco $ x
Cada um dos comandos acima Explicação
Q.2.Como definir a variável xn com valor Rani e imprimi-la na tela For Ans. Clique aqui
$xn=Rani $echo $xn
$ cp primeiro ~/bin $
primeiro
$ cd
$ mkdir bin $
cp primeiro ~/bin
$ primeiro
Cada um dos comandos acima pode ser explicado da seguinte forma:
http://www.cyberciti.biz/pdf/lsst/misc.htm (4 de 12) [29/07/2002 18:58:21]
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
Resposta ao exercício de seções variáveis
Machine Translated by Google
Q.6.Aponte o erro, se houver, no script a seguir
Q.4.Como definir duas variáveis x=20, y=5 e depois imprimir a divisão de xey (ou seja, x/y)
Q.5.Modifique acima e armazene a divisão de xey na variável chamada z For Ans.
Clique aqui $ x=20 $ y=5
$ z=`expr
x / y` $
echo $z
$ vi variscript # # #
Script para testar MEU conhecimento sobre variáveis! #
meunome=Vivek
myos = TroubleOS -----> ERRO 1 myno=5 echo
"Meu
nome é $meunome" echo "Meu
sistema operacional é
$myos" echo "Meu número é myno, você pode ver este número" --- -> ERRO 2
Mas
Para Resp. Clique aqui
$x=20
$ y=5
$ expr x / y
,
Agora ele imprimirá soma como
9 $ expr 6+3
não funcionará porque é necessário espaço entre o número e o operador (consulte Aritmética do Shell)
ERRO 1 Leia isto
ERRO 2 Leia isto
O script a seguir deve funcionar agora, após a correção do bug!
$ vi variscript # # #
Script para testar MEU conhecimento sobre variáveis! #
meunome=Vivek
myos=TroubleOS
myno=5
echo "Meu nome é $meunome" echo
"Meu sistema operacional é
$myos" echo "Meu número é $myno, você pode ver este número"
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
http://www.cyberciti.biz/pdf/lsst/misc.htm (5 de 12) [29/07/2002 18:58:21]
Machine Translated by Google
Substituição de parâmetros.
http://www.cyberciti.biz/pdf/lsst/misc.htm (6 de 12) [29/07/2002 18:58:21]
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
Em vez de dar o comando acima, posso dar o comando da seguinte maneira
$cp /mnt/cdrom/lsoft/samba*.rmp /home/vivek/soft/artical/linux/lsst
$cp /mnt/cdrom/lsoft/samba*.rmp `pwd`
Aqui o arquivo é copiado para o seu diretório de trabalho. Veja a última substituição de parâmetro do
comando `pwd`, expanda-o para /home/vivek/soft/artical/linux/lsst. Isso
economizará meu tempo. $cp /mnt/cdrom/lsoft/samba*.rmp `pwd`
$pwd
$cp /mnt/cdrom/lsoft/samba*.rmp `pwd`
Agora suponha que estamos trabalhando em um diretório chamado "/home/vivek/soft/artical/linux/lsst" e eu quero
copiar alguns arquivos samba de "/mnt/cdrom/lsoft" para meu diretório de trabalho atual, então meu comando
será algo como
O comando ($ echo 'expr 6 + 3') é conhecido como Substituição de parâmetro. Quando um comando é
colocado entre aspas, o comando é executado e obteremos a saída. Principalmente, isso é usado em conjunto
com outros comandos. Por exemplo
Agora considere seguir o comando
$($ echo 'expr 6 + 3')
Ponto Futuro: Qual é a diferença entre seguir dois comandos? $cp /
mnt/cdrom/lsoft/samba*.rmp `pwd`
Tente anotar a saída da seguinte substituição de parâmetro.
$echo "A data de hoje é
`data`" $cal >
menuchoice.temp.$$ $dialog --backtitle "Tutorial do Linux Shell" --title
"Calendário" --infobox "`cat menuchoice.temp.$$`" 9 25; ler
E
$cp /mnt/cdrom/lsoft/samba*.rmp .
Machine Translated by Google
Resposta às variáveis no Linux.
Responda ao comando if.
Resposta à Seção de Processo.
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
http://www.cyberciti.biz/pdf/lsst/misc.htm (7 de 12) [29/07/2002 18:58:21]
1) Se você deseja imprimir a localização do seu diretório inicial, dê o comando: (a) $ echo $HOME
2) Como você descobrirá o processo de execução (reprodução de MP3 e digitação de letras)?
ou
3) "Atualmente apenas dois processos estão rodando em seu ambiente Linux/PC", É Verdadeiro ou Falso?, E como você irá verificar
isso?
Resp.: Experimente $ ps aux ou $ ps ax | grep processo-que-você-deseja-pesquisar
C) E se você digitar $ ./trmfi, o que será gerado.
1) É um exemplo de multitarefa?
Resp.: Sim, já que você está executando dois processos simultaneamente.
Resp .: A mensagem a seguir será mostrada pelo comando rm, pois rm é chamado a partir do script sem nenhum parâmetro. rm:
poucos
argumentos Tente `rm --help'
para mais informações.
Resp.: (a) o comando está correto, pois temos que imprimir o conteúdo da variável (HOME) e não o HOME. Você deve usar $
seguido do nome da variável para imprimir cotainas de variáveis.
B) Se o arquivo bar não estiver presente em seu disco e você der o comando, $ ./trmfi bar o que será gerado.
4) Se você não quiser ouvir música (arquivos MP3), mas quiser continuar com outro trabalho no PC, execute uma das seguintes ações:
Desligue os alto-falantes1.
Resp.: A mensagem "rm: não é possível remover 'bar': Esse arquivo ou diretório não existe" será impressa porque o arquivo bar não
existe no disco e chamamos o comando rm, então erro de rm commad
(b) $ eco HOME
A) Existe um arquivo chamado foo, em seu disco e você dá o comando $ ./trmfi foo que será gerado.
Resp .: Não, não é verdade, quando você inicia o Linux OS, vários processos são iniciados em segundo plano para finalidades diferentes.
Para verificar isso basta usar o comando top ou ps aux .
Resp .: o arquivo foo será excluído e a mensagem "arquivo foo excluído" na tela será impressa.
Qual dos comandos acima está correto e por quê?
Machine Translated by Google
O que é sequência de caracteres especiais e como gravá-la no console?
Como posso escrever uma mensagem colorida no console Linux? , principalmente esse tipo de pergunta é feita por novatos
(especialmente aqueles que estão aprendendo programação shell!). Como você sabe no Linux tudo é considerado um arquivo, nosso console é
um desses arquivos especiais. Você pode escrever sequências de caracteres especiais no console, que controlam todos os aspectos do console,
como cores na tela, efeitos de texto em negrito ou piscante, limpeza da tela, exibição de caixas de texto, etc. Nosso console Linux é baseado nos
terminais seriais DEC VT100 que suportam código de sequência de escape ANSI.
Desligue o computador / desligue o Linux Os2.
Por padrão, tudo o que você envia para o console é impresso como se fosse. Por exemplo, considere a seguinte instrução echo, $ echo "Hello
World"
Você pode usar a instrução echo para imprimir a mensagem, para usar a sequência de escape ANSI você deve usar a opção -e
Ou você pode tentar o comando killall para encerrar o processo pelo nome da seguinte
maneira: $ killall mp3-process-name
3) Em seguida imprime nossa mensagem normal Olá Mundo Colorido! na cor azul.
Observe que a sequência de escape ANSI começa com 033 (valor octal), que é representado como ^[ em arquivos termcap e terminfo de
terminais e documentação.
A instrução echo acima usa sequência de escape ANSI (033[34m), acima da string inteira (ou seja, "033[34m Hello Colorful World!" ) é o
processo da seguinte forma
Res.: Use a ação nº. 3, ou seja, elimine o processo de MP3.
Dica: Primeiro encontre o PID do processo de reprodução de MP3 emitindo o comando: $ ps ax
| grep mp3-process-name Então na primeira
coluna você obterá o PID do processo. Mate este PID para finalizar o processo como: $ kill PID
1) Primeiro 033, é o caractere de escape, que faz com que alguma ação seja executada 2)
Aqui ele define a cor de primeiro plano da tela para Azul usando [código de escape 34m .
A instrução Hello
World Above echo imprime a sequência de caracteres na tela, mas se houver alguma sequência de escape especial (caractere de controle) em
sequencia, então primeiro alguma ação é executada de acordo com a sequência de escape (ou caractere de controle) e então o caractere normal
é impresso no console . Por exemplo, seguir o comando echo imprime uma mensagem na cor azul no console $ echo -e "033[34m Hello
Colorful World!"
Mate o processo de reprodução de MP33.
Olá mundo colorido!
Nenhuma das opções acima4.
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
http://www.cyberciti.biz/pdf/lsst/misc.htm (8 de 12) [29/07/2002 18:58:21]
Console Linux (tela)
Machine Translated by Google
Parâmetro
(Primeiro plano branco e preto
eco -e "033[2q"
[34
(switch) com instrução echo, a sintaxe geral é a seguinte
Exemplos
Limpa o modo ANSI
são separados por ponto e vírgula (;) . Esses números são lidos até que a letra ou caractere de ação do console não seja encontrado
atributos
entendi os seguintes parâmetros
Personagem de fuga
BOLD e Blink, veja abaixo para
0
atributos
eu
Na sintaxe acima, você deve usar033[ pois possui código de escape diferente para operações diferentes. Tão logo
Restaura a posição do cursor e
Defina o modo ANSI
modo. No modo CSI, o console lê uma série de números decimais codificados em ASCII (conhecidos como parâmetro) que
eu
Personagem ou carta
$ echo -e "Eu sou 033[1m BOLD 033[0m Pessoa"
eco -e "033[h"
echo -e "033[código de escape sua mensagem"
posição (col , posição da linha) e
você
cores ou efeitos diferentes , como
Significado
Define o esquema de cores padrão
bloquear, LED scroll lock ligado ou desligado, consulte
m é letra (especifica ação)
Sequência remove efeito de negrito (033[0m)
1
é
para o modo de escape, então ele lê o caractere "[" e passa para Introdução à Sequência de Comando (CSI)
Uso em CSI
033
sem piscar etc.
echo -e "033[35m Olá Mundo"
A tabela a seguir mostra uma lista importante de tais letras ou caracteres de código de escape/ ação
Imprime a palavra BOLD em negrito e o próximo ANSI
Armazena o cursor atual x,y
h
Sintaxe
Ativa teclado num lock, maiúsculas
34 é parâmetro
Exemplo
fundo), intensidade normal,
eu
abaixo.
eco -e "033[8u"
Útil para mostrar personagens em
(que determina que ação tomar). No exemplo acima
parâmetro tomado por m.
Início do CSI
Eu sou uma pessoa OUSADA
q
echo -e "033[7s"
eco -e "033[l"
conforme o console recebe a mensagem ele começa a processá-la/lê-la, e se encontrar o caractere de escape (033) ele se move
Definir intensidade BOLD
http://www.cyberciti.biz/pdf/lsst/misc.htm (9 de 12) [29/07/2002 18:58:21]
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
Machine Translated by Google
25
40 - 47
2
Efeito de piscar
5
Remove/desativa o efeito de piscar
30 - 37
0
2
(Ei, você deve conhecer caracteres
ASCII estendidos para isso!!!)
Defina a cor de fundo xx -
Tente descobrir isso como um
exercício para você :-)
$ echo -e "033[7m SO Linux! Melhor SO!! 033[0m"
Significado
31 - VERMELHO
LED Num Lock ligado e outros desligados
Efeito de vídeo reverso, ou seja, primeiro
plano preto e fundo branco
no esquema de cores padrão
Remove/desativa o efeito reverso
q entenda os seguintes parâmetros
$ echo -e "033[44m Uau!!!"
$ echo -e "033[1m BOLD 033[2m DIM 033[0m" $ echo -e "033[5m
Flash! 033[0m"
27
3
Definir intensidade fraca
$ echo -e "033[31m estou de vermelho"
11
1 LED de scroll lock ligado e outros desligados
Clique aqui para ver um exemplo do comando s e u.
32 - Verde xx
- Tente encontrar esta sobra como
exercício para você :-)
Desliga todos os LEDs do teclado
Clique aqui para ver um exemplo do comando m.
Mostra caracteres de
controle especiais como
caracteres gráficos. Por exemplo,
antes de emitir este comando, pressione alt $ pressione a tecla
alt + 178 (mantenha pressionada) de $ echo -e "033[11m" teclado
numérico pressione 178 $ pressione alt + 178 e deixe ambas
as teclas; nada $ echo -e "033[0m" será impresso. Agora dê --> $
pressione alt + 178 comando mostrado no exemplo e tente o
acima, funciona.
7
Definir cor de primeiro plano
Parâmetros
LED de Caps Lock ligado e outros desligados
Clique aqui para ver um exemplo do comando q.
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
http://www.cyberciti.biz/pdf/lsst/misc.htm (10 de 12) [29/07/2002 18:58:21]
Machine Translated by Google
2) Use o seguinte para a linha de movimento do
cursor; col H
Por exemplo, caixa (20,5,7,40)
1) Uso de 11 parâmetros para m
ou
1) Escreva a função box(), que irá desenhar uma caixa na tela (em shell Script) (esquerda,
superior, altura, largura)
Dica: use a sequência de escape ANSI
A tabela acima não contém sequências CSI inteiras. Minha próxima série de tutoriais sobre linguagem de programação C
certamente terá uma história inteira com S-Lang e maldições (?). Qualquer conhecimento que você adquirir aqui será
desafiadoramente o primeiro passo em direção à programação séria usando c. Todo esse conhecimento é suficiente para Programação
Shell, agora tente o seguinte exercício :-) Estou com fome, dê-me mais exercícios e desafios de programação! :-)
Esta é apenas uma introdução rápida sobre o console Linux e o que você pode fazer usando esta sequência Escape.
Por
exemplo, $ echo -e "033[5;10H Olá" $
echo -e "033[6;10f Olá"
No exemplo acima imprime a mensagem Hello na linha 5 e coluna 6 e Hi na 6ª linha e 10ª coluna.
rowl;col f
http://www.cyberciti.biz/pdf/lsst/misc.htm (11 de 12) [29/07/2002 18:58:21]
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
Machine Translated by Google
Variáveis incorporadas do shell
http://www.cyberciti.biz/pdf/lsst/misc.htm (12 de 12) [29/07/2002 18:58:21]
Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix
Todos os argumentos para shell
$*
O mesmo que acima
Veja exemplo de variável $@ e $* .
argumentos de linha em shell script.
$! PID do último processo em segundo plano iniciado (iniciado com &)
$#
$@
$-
Significado
Número de argumentos de linha de comando. Útil para testar não. de comando
$$
Opção fornecida ao shell
Concha embutida
PID do shell
Variáveis
Machine Translated by Google
# Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/
Stuart Herbert para nos dar esta utilidade. Pressione qualquer tecla. . " 7 50 ; leia
# ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta
para mostrar algumas informações na tela, Obrigado a Savio Lam e
#
Tutorial" --infobox "Esta é uma caixa de diálogo chamada infobox, que é usada 
dialog --title "Caixa de informações do utilitário de diálogo do Linux" --backtitle "Linux Shell Script
.
#
http://www.cyberciti.biz/pdf/lsst/scripts/dial [29/07/2002 19:02:05]
http://www.cyberciti.biz/pdf/lsst/scripts/dial
Machine Translated by Google
# Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/
e Stuart Herbert para nos dar esta utilidade. Pressione qualquer tecla. .
# ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta
#
para mostrar algumas informações na tela que também possui o botão Ok, obrigado a Savio Lam
#
Tutorial" --msgbox "Esta é uma caixa de diálogo chamada msgbox, que é usada 
dialog --title "Msgbox do Utilitário de Diálogo do Linux" --backtitle "Linux Shell Script
" 9 50
.
http://www.cyberciti.biz/pdf/lsst/scripts/dia2
http://www.cyberciti.biz/pdf/lsst/scripts/dia2 [29/07/2002 19:02:19]
Machine Translated by Google
0) echo "Usuário seleciona para excluir arquivo";; 1) echo "Usuário seleciona
não excluir arquivo";; 255) echo "Cancelado pelo usuário pressionando a tecla [ESC]";;
esac
dialog --title "Alerta: Excluir arquivo" --backtitle "Linux Shell Script Tutorial" --yesno "nDeseja excluir o arquivo '/usr/letters/jobapplication'" 7
60 sel=$? caso $sel em
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/
tools/ #
http://www.cyberciti.biz/pdf/lsst/scripts/dia3 [29/07/2002 19:02:37]
http://www.cyberciti.biz/pdf/lsst/scripts/dia3
Machine Translated by Google
sel=$?
rm -f /tmp/entrada.$$
na=`cat /tmp/input.$$` case $sel em
0) echo "Olá $na" ;;
1) echo "Cancelar é pressionar" ;;
255) echo "Tecla [ESCAPE] pressionada" ;;
dialog --title "Caixa de entrada - Para receber informações suas" --backtitle "Linux Shell Script Tutorial" --inputbox "Digite seu nome,
por favor" 8 60 2>/tmp/input.$$
esac
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://
www.nixcraft.com/uniqlinuxfeatures/tools/ #
http://www.cyberciti.biz/pdf/lsst/scripts/dia4 [29/07/2002 19:02:44]
http://www.cyberciti.biz/pdf/lsst/scripts/dia4
Machine Translated by Google
"Para ver o calendário" 
"Mostra data e hora" 
#
"Para iniciar o editor vi" 2>/tmp/menuitem.$$
esac
# # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://
www.nixcraft.com/uniqlinuxfeatures/tools/ #
Calendário
Calendário) cal;;
Editor)vi;;
editor
caso $ menuitem em
Selecione " 15 50 3
Data hora
Data/hora) data;;
menuitem=`cat /tmp/menuitem.$$`
#Como criar um pequeno menu usando a caixa de diálogo # dialog
--
backtitle "Tutorial do Linux Shell Script " --title "Main 
Menu" --menu "Mova usando [UP] [DOWN],[Enter] para 
optar=$?
http://www.cyberciti.biz/pdf/lsst/scripts/smenu [29/07/2002 19:02:50]
http://www.cyberciti.biz/pdf/lsst/scripts/smenu
Machine Translated by Google
Renuka
Ashish
Vivek
11
12
13
14
15
Prakash
Rani
http://www.cyberciti.biz/pdf/lsst/datafiles/sname [29/07/2002 19:03:02]
http://www.cyberciti.biz/pdf/lsst/datafiles/sname
Machine Translated by Google
67
36
55
11
12
13
14
15
96
67
http://www.cyberciti.biz/pdf/lsst/datafiles/smark [29/07/2002 19:03:06]
http://www.cyberciti.biz/pdf/lsst/datafiles/smark
Machine Translated by Google
bom 12
Disquete bom 5
queijo ok 4
peça 4 ovos
cacke
bom 10
caneta
http://www.cyberciti.biz/pdf/lsst/datafiles/inventory [29/07/2002 19:03:20]
http://www.cyberciti.biz/pdf/lsst/datafiles/inventory
Machine Translated by Google
O leite da Índia é bom. chá Red-Lable é bom. o
chá é melhor que o café.
http://www.cyberciti.biz/pdf/lsst/datafiles/teaormilk [29/07/2002 19:03:31]
http://www.cyberciti.biz/pdf/lsst/datafiles/teaormilk
Machine Translated by Google
para
Olá, sou vivek 12333 12333,
bem-
vindo
sai academia de informática, a'ruim. o que ainda me
lembro desse nome. carvalho! como você está, Luser? o
que ainda me lembro desse nome.
http://www.cyberciti.biz/pdf/lsst/datafiles/personame
http://www.cyberciti.biz/pdf/lsst/datafiles/personame [29/07/2002 19:03:41]
Machine Translated by Google
Olá Mundo! desenhos
animados são bons, especialmente
desenhos como Tom (gato), qual é a música número um 12221,
eles nos
amam, eu também
http://www.cyberciti.biz/pdf/lsst/datafiles/demo-file [29/07/2002 19:03:53]
http://www.cyberciti.biz/pdf/lsst/datafiles/demo-file
Machine Translated by Google
Linux é legal.
É diferente de todos os outros sistemas operacionais
Atualmente ele aprende Linux.
O Linux agora tem 10 anos.
Eu amo Linux.
Meu irmão Vikrant também adora Linux, que também adora Unix.
Este é vivek de Poona.
Olá Mundo.
Rani, minha irmã nunca usa Linux. Ela só adora jogar e nada
mais.
Você sabe?
. (DOT) é um comando especial do Linux.
No próximo ano o Linux completará 11 anos.
OK! Eu irei parar.
http://www.cyberciti.biz/pdf/lsst/datafiles/demofile
http://www.cyberciti.biz/pdf/lsst/datafiles/demofile [29/07/2002 19:04:03]
Machine Translated by Google
3. Borracha 3 3,50
2. Lápis 10 2,00
1. Caneta 5 20,00
4. Galo 2 45,50
http://www.cyberciti.biz/pdf/lsst/datafiles/inven
http://www.cyberciti.biz/pdf/lsst/datafiles/inven [29/07/2002 19:04:29]
Machine Translated by Google
=
+
{
-
"$ 1 * $ 2
=
}
"$1 % $2
x
"US$ 1 - US$ 2
"$1/$2
=
=
imprimir $ 1 " " $ 2 " imprimir $ 1 " " $
2 " imprimir $ 1 " / " $ 2 " imprimir $ 1 "
" $ 2 " imprimir $ 1 " mod " $ 2 "
"$ 1 + $ 2
=
http://www.cyberciti.biz/pdf/lsst/datafiles/math [29/07/2002 19:04:49]
http://www.cyberciti.biz/pdf/lsst/datafiles/math
Machine Translated by Google
"
resposta = $1 + $2
imprimir no1 " +
não2 = $2
"não2"
não1 = $1
{
= resposta
}
http://www.cyberciti.biz/pdf/lsst/datafiles/math1
http://www.cyberciti.biz/pdf/lsst/datafiles/math1 [29/07/2002 19:04:59]
Machine Translated by Google
total = $3 * $4 recno = $1
item = $2 imprimir
recno item
"Rs." total
{
}
http://www.cyberciti.biz/pdf/lsst/datafiles/bill [29/07/2002 19:05:03]
http://www.cyberciti.biz/pdf/lsst/datafiles/bill
Machine Translated by Google
"
}
total = $3 * $4 recno = $1
item = $2 gtotal
+= total de
impressão do item recno
"Rs." total
BEGIN
{ print "--------------------------" print "Projeto de lei de 4 de março de
2001. " print "Por Vivek G Gite . imprimir "---------------------------" }
}
{
END
{ imprimir "--------------------------" imprimir "Total Rs." impressão
gtotal "==========================="
http://www.cyberciti.biz/pdf/lsst/datafiles/bill2
http://www.cyberciti.biz/pdf/lsst/datafiles/bill2 [29/07/2002 19:05:11]
Machine Translated by Google
total = $3 * $4 recno = $1
item = $2 gtotal
+= total printf
"%d %s Rs.%fn", recno,
item, total #printf "%2d %-10s Rs.%7.2fn" , reconhecimento, item, total
END
{ printf "---------------------------n" printf "Total de R$ %fn" ,gtotal #printf "
tTotal Rs. %7,2fn" ,gtotal printf
"===========================n"
{
BEGIN
{ printf "Projeto de lei de 4 de março de 2001.n" printf "Por Vivek G Gite.
n" printf "---------------------- -----n" }
}
}
http://www.cyberciti.biz/pdf/lsst/datafiles/bill3 [29/07/2002 19:05:22]
http://www.cyberciti.biz/pdf/lsst/datafiles/bill3
Machine Translated by Google
{
END
{ printf "---------------------------n" printf "tTotal Rs. %6,2fn" ,gtotal printf
" ===========================n"
total = $3 * $4 recno = $1
item = $2 gtotal
+= total printf
"%2d %-10s Rs.%7.2fn",
recno, item, total
BEGIN
{ printf "Projeto de lei de 4 de março de 2001.n" printf "Por Vivek G
Gite.n" printf "---------------------- -----n" }
}
}
http://www.cyberciti.biz/pdf/lsst/datafiles/bill4 [29/07/2002 19:05:32]
http://www.cyberciti.biz/pdf/lsst/datafiles/bill4
Machine Translated by Google
não2 = $3
}
operação = $2
COMEÇAR {
resposta = 0
{
printf "Ops!Erro só sei somar.nSintaxe: número1 + número2n"
printf "%s", meu prompt
{
printf "%s", meu prompt
AMBIENTE["USUÁRIO"]
} outro
não1 = $1
,
resposta = $ 1 + $ 3
"
FIM {
printf "nBoa compra %sn"
}
printf "%d %c %d = %dn" ,no1,op,no2,ans
se (op == "+" )
myprompt = "(Para parar pressione CTRL+D) > printf "Bem-vindo ao
programa awk de cálculo MyAddtion v0.1n"
}
}
printf "%s", meu prompt
{
http://www.cyberciti.biz/pdf/lsst/datafiles/math2 [29/07/2002 19:05:56]
http://www.cyberciti.biz/pdf/lsst/datafiles/math2
Machine Translated by Google
} {
}
soma = 0 i =
1 para
(i=1; i<=10; i++) {
BEGIN{ printf
"Pressione ENTER para continuar com o exemplo de loop for do LSST v1.05r3n"
}
soma += eu; # soma = soma + eu
printf "Soma de 1 a 10 números = %d nBoacompra!nn", soma saída 1
http://www.cyberciti.biz/pdf/lsst/datafiles/while01.awk [29/07/2002 19:06:15]
http://www.cyberciti.biz/pdf/lsst/datafiles/while01.awk
Machine Translated by Google
/home/vivek/final
/home/vivek/final
/home/vivek/final
/home/vivek/awks/temp/file1 /home/
vivek/awks/temp/file2 /home/vivek/
awks/temp/file3 /home/vivek/awks/
temp/file4
/home/vivek/final
http://www.cyberciti.biz/pdf/lsst/datafiles/filelist.conf
http://www.cyberciti.biz/pdf/lsst/datafiles/filelist.conf [29/07/2002 19:06:30]
Machine Translated by Google
}
{dcmd = "rm " $1 if
( sistema(dcmd) != 0 )
printf "comando rm não foi bem sucedidon" else printf "comando rm foi
bem
sucedido e %s arquivo foi removido n", $1
http://www.cyberciti.biz/pdf/lsst/datafiles/tryrmsys [29/07/2002 19:06:39]
http://www.cyberciti.biz/pdf/lsst/datafiles/tryrmsys
Machine Translated by Google
idade + 1
na, ", ano que vem você será"
BEGIN { printf
"Seu nome, por favor:" getline na < "-" printf
"%s sua idade, por
favor:",na getline idade < "-" print "Olá "
}
http://www.cyberciti.biz/pdf/lsst/datafiles/testusrip [29/07/2002 19:06:53]
http://www.cyberciti.biz/pdf/lsst/datafiles/testusrip
Machine Translated by Google
COMEÇO{ "data" | getline
imprimir $0}
http://www.cyberciti.biz/pdf/lsst/datafiles/awkread_file [29/07/2002 19:07:03]
http://www.cyberciti.biz/pdf/lsst/datafiles/awkread_file
Machine Translated by Google
COMEÇO{ "data" | getline hoje imprimir
hoje }
http://www.cyberciti.biz/pdf/lsst/datafiles/awkread_file1 [29/07/2002 19:07:06]
http://www.cyberciti.biz/pdf/lsst/datafiles/awkread_file1
Machine Translated by Google
se ( {
sfile = $1 dfile = $2
issexist = "[ -e " $1
" ]" isdexist = "[ -e " $2 " ]" cpcmd = "cp " $1 " " $2
printf "Lidando %s para %sn",sfile ,dfile
if( ( sistema(issexist) ) != 0 ) {
}
} else
sistema(cpcmd)
# # lógica principal está aqui # {
printf "Ignorando "%s", não existen",sfile next # lê o próximo registro
COMEÇAR{ }
# #temp2final1.awk: Versão 2 #Linux Shell Scripting
Tutorial v1.05, março de 2001 # #Autor: Vivek G Gite # # #Esta versão verifica primeiro o arquivo
de origem e destino #depois copia o
arquivo. Se o arquivo já existir, ele solicitará confirmação. # # #
printf ""%s", existe overwrite(y/N)?", sfile getline ans < "-" if( ans == "y" || ans == "Y")
}
# # Finalizar ação, se houver, por exemplo, limpezas # END{ } # # ./
ch.sh:
referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft. com/uniqlinuxfeatures/tools/
#
(sistema(isdexist)) == 0)
sistema (cpcmd)
http://www.cyberciti.biz/pdf/lsst/scripts/temp2final1.awk [29/07/2002 19:07:15]
http://www.cyberciti.biz/pdf/lsst/scripts/temp2final1.awk
Machine Translated by Google
Linux é legal.
É diferente de todos os outros sistemas operacionais
Atualmente ele aprende Linux.
. (DOT) é um comando especial do Linux.
Eu amo Linux.
Meu irmão Vikrant também adora Linux, que também adora Unix.
Este é vivek de Poona.
Olá Mundo.
Você sabe?
Rani, minha irmã nunca usa Linux. Ela só adora jogar e nada
mais.
Eu me importo com você e Vivek se
importa. 1224 bem vindo 6888 linux liux
linux é
linux
OK! Eu irei parar.
No próximo ano o Linux completará 11 anos.
O Linux agora tem 10 anos.
http://www.cyberciti.biz/pdf/lsst/datafiles/demofile1
http://www.cyberciti.biz/pdf/lsst/datafiles/demofile1 [29/07/2002 19:07:28]
Machine Translated by Google
1i
O preço de todos os itens muda de 1º de abril de 2001 /Pen/s/20.00/19.5/ /
Pencil/s/2.00/2.60/ /Rubber/s/
3.50/4.25/ /Cock/s/45.50/51.00/
http://www.cyberciti.biz/pdf/lsst/datafiles/chg1.sed [29/07/2002 19:07:44]
http://www.cyberciti.biz/pdf/lsst/datafiles/chg1.sed
Machine Translated by Google
1001
100001
10001
1000000001
10101010
10101010
************************
A data de hoje é 12/05/01, ou seja, 5 de dezembro de 2001
***
Renu minha irmã nasceu em 01/06/74
***
Números divertidos Números binários
Quando eu era criança, adorava ver
estrelas, minha mãe diz que as estrelas são um presente de Deus para nós!
Minha data de nascimento: 5 de abril de 00
*****
Existe alguma relação entre star e Linux
Ok, o Linux é como uma estrela.
********
Meu irmão Vivkran nasceu em 5 de dezembro de 70
Star dá vida a coisas boas
http://www.cyberciti.biz/pdf/lsst/datafiles/demofile2 [29/07/2002 19:07:53]
http://www.cyberciti.biz/pdf/lsst/datafiles/demofile2
Machine Translated by Google
}
/^*{2,3}$/,/^*{2,3}$/{ /^$/ds/Linux/Linux-Unix/
http://www.cyberciti.biz/pdf/lsst/datafiles/dem_gsed [29/07/2002 19:08:01]
http://www.cyberciti.biz/pdf/lsst/datafiles/dem_gsed
Machine Translated by Google
sed é
Não sei
Rani sabe o que
-------------------------------------------------- -
sed
o que é sed, mas eu acho
o que é sed?
Bem-vindo ao mundo do
http://www.cyberciti.biz/pdf/lsst/datafiles/demofile3 [29/07/2002 19:08:06]
http://www.cyberciti.biz/pdf/lsst/datafiles/demofile3
Machine Translated by Google
A'bad, MH, ÍNDIA.
-------------------------------------------------- -----------------------
VK Rajopadhey 22/05, Rua 4,
-------------------------------------------------- ---------------------
AG Turismo 22,
MIDC,
Pune, MH, ÍNDIA.
Comida, Música 98220-5678
-------------------------------------------------- ---------------------
Pune, MH, ÍNDIA.
Jogos de computador
02/01/74
NK Kulkarni Setor 20,
Padmavti,
12/05/73
98220-9888
A'bad, MH, ÍNDIA.
Passatempo
Alimentos, Bebidas, Estilo de Vida 98220-6823
Coleção de moedas antigas 98220-6877
Telefone #
10/09/70 RK
Joshi Flat No.9,
Torres Pushpa,
Mumbai, MH, ÍNDIA.
Nome do amigo
15/6/72 Informática, Leitura de Livros 98220-3333
Data de nascimento
01/02/71
MM Couve 6/21,
Silver Estate,
http://www.cyberciti.biz/pdf/lsst/datafiles/friends
http://www.cyberciti.biz/pdf/lsst/datafiles/friends [29/07/2002 19:08:18]
Machine Translated by Google

Mais conteúdo relacionado

PDF
Tutorial Shell Script
PDF
Apostila introducao-shell
PDF
12 aula - shell script-2015
PDF
01 apostila-introducao-shell
PDF
Apostila introducao-shell
PDF
Curso de shell
PDF
Curso de shell
PDF
Curso De Shell Aula 1
Tutorial Shell Script
Apostila introducao-shell
12 aula - shell script-2015
01 apostila-introducao-shell
Apostila introducao-shell
Curso de shell
Curso de shell
Curso De Shell Aula 1

Semelhante a Curso de shell-tutorial avançadoIII .pdf (20)

PPS
Shell script
PDF
Curso Gratuito de Shell Script
PDF
Shell Script
PDF
Unidade 3.6 Introdução ao Shell
PDF
Trabalhando na Linha de comando
ODP
Bash, o poder da linha de comando! - Tchelinux.org 2017
PPTX
Shell script
PDF
Linux shell
PDF
Curso shell
PDF
Shell script
PDF
Introdução ao shell script no linux
PDF
Apostila(1)
PDF
Introdução ao Sistema Operacional Linux (Ubuntu).pdf
PDF
Introdução à Shell Script - Vinícius Alves Hax
PDF
Introdução à Shellscript
PDF
Curso de ShellScript - Lm01 shellscript
PDF
Shell script do zero aula 1 - basico do basico e primeiros comandos
PDF
Shell Script v0
PDF
Shell Script - Aula 01
PDF
Oficina shell
Shell script
Curso Gratuito de Shell Script
Shell Script
Unidade 3.6 Introdução ao Shell
Trabalhando na Linha de comando
Bash, o poder da linha de comando! - Tchelinux.org 2017
Shell script
Linux shell
Curso shell
Shell script
Introdução ao shell script no linux
Apostila(1)
Introdução ao Sistema Operacional Linux (Ubuntu).pdf
Introdução à Shell Script - Vinícius Alves Hax
Introdução à Shellscript
Curso de ShellScript - Lm01 shellscript
Shell script do zero aula 1 - basico do basico e primeiros comandos
Shell Script v0
Shell Script - Aula 01
Oficina shell
Anúncio

Último (20)

PPTX
Apresentação PF MACAVE no curso de mestrado em Ciencias florestais
PPT
O gênero resumo O gênero resumo O gênero
PDF
Aula_1-ConceitosBasicos de circuito eletricos.pdf
PDF
DETECCAO DE ALARME DE INCENSDIO E PANICO
PPTX
Aula 6_Delineamento em Blocos Casualizados_28.09.2020_Mestrado.pptx
PDF
Material referente a introdução a instr.
PDF
APRESENTACAO_ NR10 Ferramentas isoladas.pdf
PPTX
Treinamento NR-18 - Canteiro de obras.pptx
PDF
Beige Dark Grey Vintage Victorian Project History Presentation_20250221_19084...
PPTX
Aula_Teorica_Estados limites de serviço no concreto armado.pptx
PPTX
Apresentação de brainstorm geométrica colorida.pptx
PPTX
Portfólio Dexo Recursos Humanos docosia
PPT
Diagrama de fases de los aceros como material
PDF
Material referente ao método kanban f2ms
PPTX
Aula_Osciloscópio_Exercícios_Simulações_
PPT
1 - Introdução a disciplina ciencia o solo.ppt
PPT
Aula_2_Atomo distribuiçao eletronica.ppt
PDF
eletronica-basica_capitulo_01_2017_1s.pdf
PDF
Aula 2 Normas Regulamentadoras (PARTE I).pdf
PDF
PROJETO DE PESQUISA PRONTO BIOMEDICINA 2025 ABNT.pdf
Apresentação PF MACAVE no curso de mestrado em Ciencias florestais
O gênero resumo O gênero resumo O gênero
Aula_1-ConceitosBasicos de circuito eletricos.pdf
DETECCAO DE ALARME DE INCENSDIO E PANICO
Aula 6_Delineamento em Blocos Casualizados_28.09.2020_Mestrado.pptx
Material referente a introdução a instr.
APRESENTACAO_ NR10 Ferramentas isoladas.pdf
Treinamento NR-18 - Canteiro de obras.pptx
Beige Dark Grey Vintage Victorian Project History Presentation_20250221_19084...
Aula_Teorica_Estados limites de serviço no concreto armado.pptx
Apresentação de brainstorm geométrica colorida.pptx
Portfólio Dexo Recursos Humanos docosia
Diagrama de fases de los aceros como material
Material referente ao método kanban f2ms
Aula_Osciloscópio_Exercícios_Simulações_
1 - Introdução a disciplina ciencia o solo.ppt
Aula_2_Atomo distribuiçao eletronica.ppt
eletronica-basica_capitulo_01_2017_1s.pdf
Aula 2 Normas Regulamentadoras (PARTE I).pdf
PROJETO DE PESQUISA PRONTO BIOMEDICINA 2025 ABNT.pdf
Anúncio

Curso de shell-tutorial avançadoIII .pdf

  • 1. Escrito por Vivek G. Gite. Cyberciti Computers & nixCraft, Pune, ÍNDIA. Machine Translated by Google
  • 2. Como instalar o Linux Onde posso usar o Linux? Como obter o Linux? O que é kernel? Variáveis no shell Regras para nomear nomes de variáveis (UDV e variáveis de sistema) Como definir variáveis definidas pelo usuário (UDV) O que é Linux? Capítulo 2: Introdução à programação Shell Como escrever script de shell Quem desenvolveu o Linux? Por que escrever Shell Script? Capítulo 1: Introdução rápida ao Linux Mais sobre a Shell... O que é Linux Shell? Copyright © 1999-2002 por Vivek G. Gite <vivek@nixcraft.com> Como imprimir ou acessar o valor do comando echo UDV (variáveis definidas pelo usuário) Como usar o Shell O que é Shell Script? (Formalmente conhecido como www.vivek-tech.com) Tutorial de script de shell do Linux v1.05r3 Um manual para iniciantes http://www.cyberciti.biz/pdf/lsst/index.html (1 de 5) [29/07/2002 18:50:01] Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes Índice Machine Translated by Google
  • 3. http://www.cyberciti.biz/pdf/lsst/index.html (2 de 5) [29/07/2002 18:50:01] Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes Capítulo 4: Comandos avançados de script de shell Tomada de decisão em shell script (ou seja, comando if) comando de teste ou [expr] if...else...fi Loops if-then-else multiníveis em scripts de shell for loop Loop for aninhado loop while A instrução case Como depurar o script de shell? /dev/null - para enviar saída indesejada da variável local e global do programa Shell (comando de exportação) Mais comandos em uma linha de comando Processamento de linha de comando Por que argumentos de linha de comando são necessários Redirecionamento de saída/entrada padrão, ou seja, redirecionamento de entrada - saída Filtro de tubos O que é processos Por que processo é necessário Comando(s) Linux Relacionado(s) ao processo Ifs aninhados Capítulo 3: Construções de linguagem estruturada de shells (bash) Aritmética do Shell Mais sobre cotações Status de saída Os curingas da instrução de leitura (abreviação do nome do arquivo ou metacaracteres) Execução condicional, ou seja, && e || Redirecionamento de E/S e descritores de arquivo Funções Interface do usuário e utilitário de diálogo - Parte I Interface do usuário e utilitário de diálogo - Parte II Caixa de mensagens (msgbox) usando o utilitário de diálogo Caixa de confirmação (caixa yesno) usando o utilitário de diálogo Entrada (inputbox) usando o utilitário de diálogo Interface do usuário usando o utilitário de diálogo - Juntando tudo comando trap O comando shift Machine Translated by Google
  • 4. Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes http://www.cyberciti.biz/pdf/lsst/index.html (3 de 5) [29/07/2002 18:50:01] Removendo linhas duplicadas do arquivo de banco de dados de texto usando o utilitário uniq Manipulação de dados usando o utilitário awk utilitário sed - Editando arquivo sem usar o editor comando getopts Encontrando padrão correspondente usando o utilitário grep Localizar e substituir (substituindo expressão regular) Substituindo palavra pela confirmação do usuário Encontrando palavras O utilitário de junção Copiando linhas Mais exemplos de sed Procurando as palavras Traduzindo intervalo de caracteres usando o utilitário tr Capítulo 8: Exemplos de Shell Scripts Imprimindo texto na tela Selecionando parte de um arquivo usando o utilitário cut Convertendo caracteres minúsculos em maiúsculos Capítulo 7: awk revisitado Introdução ao awk Variáveis predefinidas do awk Fazendo aritmética com awk Variáveis definidas pelo usuário no awk Uso da instrução printf Uso da especificação de formato Código if condição no awk Loops no awk Exemplos da vida real no awk awk diversos sed - Introdução rápida Redirecionamento a saída do comando sed Como escrever scripts sed? Juntando linhas usando o utilitário paste Excluindo linhas Capítulo 6: Aprendendo expressões com ex Capítulo 5: Utilitários essenciais para usuários avançados Usando intervalo de caracteres em expressões regulares Usando & como caractere de substituição especial Preparando-se para um tour rápido de utilitários essenciais Começando com ex Machine Translated by Google
  • 5. http://www.cyberciti.biz/pdf/lsst/index.html (4 de 5) [29/07/2002 18:50:01] Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes Implementação do processo em segundo plano: Relógio digital usando shell script Interface de usuário e funções em shell script: Shell script para implementar sistema baseado em menu. Loops usando loop while e for: Imprime nos. como 5,4,3,2,1 usando loop while Imprimindo os padrões usando loop for. Comando de manuseio/eco de tela com código de sequência de escape: Shell script para imprimir a mensagem "Hello World", em negrito, efeito Blink e em cores diferentes como vermelho, marrom etc. Capítulo 9: Outros Recursos Manipulação de linha de comando (args): Adicionando 2 números. fornecido como argumentos de linha de comando Calculando a média de números fornecidos em argumentos de linha de comando Descobrindo o maior número de três números fornecidos como argumentos de linha de comando Script de shell para implementar a instrução getopts. Aritmética em shell script: Executando cálculo de número real em shell script Convertendo número decimal em número hexadecimal Calculando fatorial de determinado número Manipulação de arquivos: Shell script para determinar se determinado arquivo existe ou não. Calculadora matemática básica (declaração de caso) Desenvolvimento de lógica: Shell script para imprimir determinados números, soma de todos os dígitos Shell script para imprimir contém o arquivo de um determinado número de linha até o próximo número de linhas Shell script para dizer Bom dia/Tarde/Noite ao fazer login no sistema Shell script para encontrar se o ano inserido é bissexto ou não Classifique os cinco números fornecidos em ordem crescente (uso de matriz) etc. Apêndice - A : Tutorial do servidor de arquivos Linux (LFST) versão b0.1 Rev. 2 Apêndice - B : Referência de comandos do Linux (LCR) Sobre o autor Sobre este documento Administração do sistema: Obtendo mais informações sobre seu ambiente de trabalho por meio de script de shell Script de shell para coletar informações úteis do sistema, como CPU, discos, RAM e seu ambiente Script de shell para adicionar DNS Entery ao banco de dados BIND com servidores de nomes, servidores de correio (MX) e host padrão Integrando script awk com shell script: Script para converter nomes de arquivos de MAIÚSCULAS para nomes de arquivos em minúsculas ou vice-versa. Machine Translated by Google
  • 6. (Cyeberciti Computers & nixCraft tem anos de experiência em Linux/Unix/FreeBSD. Se você precisar de algum assistência, educação, suporte para Linux/Unix, escreva para sales@cyberciti.biz ) http://www.cyberciti.biz/pdf/lsst/index.html (5 de 5) [29/07/2002 18:50:01] Tutorial de Linux Shell Scripting v1.05r3 - Um manual para iniciantes Lar Próximo Acima Introdução rápida ao Linux Machine Translated by Google
  • 7. O que há de diferente neste tutorial Organização do Capítulo Público deste tutorial Introdução http://www.cyberciti.biz/pdf/lsst/ch01.html (1 de 2) [29/07/2002 18:50:59] LSST v1.05r3 > Capítulo 1 > Introdução rápida ao Linux Presumo que você tenha pelo menos conhecimento prático de Linux, ou seja, comandos básicos como criar, copiar, remover arquivos/diretórios etc. ou como usar editores como vi ou mcedit e fazer login em seu sistema. Mas não espera nenhuma experiência em linguagem de programação. Se você tiver acesso ao Linux, este tutorial fornecerá uma introdução fácil de seguir ao script de shell. Muitos outros tutoriais e livros sobre scripts de shell do Linux são muito básicos ou ignoram etapas intermediárias importantes. Mas este tutorial manteve o equilíbrio entre os dois. Ele cobre muitos exemplos modernos de scripts de shell da vida real que quase são perdidos por muitos outros tutoriais/documentos/livros. Usei uma abordagem prática neste tutorial. A ideia é muito clara "faça você mesmo ou aprenda fazendo", ou seja, tentar as coisas sozinho é a melhor maneira de aprender, então os exemplos são apresentados como scripts de shell completos e funcionais, que podem ser digitados e executados Os capítulos 1 a 4 mostram a maioria dos conceitos úteis e importantes de shell scripting. Capítulo 5, introdução às ferramentas e utilitários que podem ser usados durante a programação inteligente do shell do Linux. Os capítulos 6 e 7 são sobre expressões e expressões usadas principalmente por ferramentas como sed e awk. O Capítulo 8 está repleto de exemplos de scripts de shell divididos em diferentes categorias. O Capítulo 9 fornece mais informações sobre recursos que podem ser usados ao aprender o script de shell, como informações sobre o sistema de arquivos Linux, referência de comandos comuns do Linux e outros recursos. O Capítulo 1 apresenta conceitos básicos como o que é Linux, onde o Linux pode ser usado e continua explicando o shell, shell script e kernel, etc. Próximo Este tutorial foi desenvolvido para iniciantes que desejam aprender o básico de script/programação de shell, além de introdução a ferramentas poderosas como awk, sed, etc. ao ler este tutorial, você pode achar o manual bastante útil (digite man bash no prompt $ para ver as páginas do manual). O manual contém todas as informações necessárias, mas não terá muitos exemplos, o que deixa a ideia mais clara. Por esse motivo, este tutorial contém exemplos em vez de todos os recursos do shell. Anterior Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 1: Introdução: Introdução rápida ao Linux O Capítulo 2 mostra como escrever o shell script e executá-lo. Ele explica muitos conceitos básicos necessários para escrever scripts de shell. Machine Translated by Google
  • 8. http://www.cyberciti.biz/pdf/lsst/ch01.html (2 de 2) [29/07/2002 18:50:59] LSST v1.05r3 > Capítulo 1 > Introdução rápida ao Linux Espero que você tenha tanto prazer lendo este tutorial quanto eu tive ao escrevê-lo. Depois de ler este tutorial, se você for capaz de escrever seus próprios scripts de shell poderosos, então acho que o propósito de escrever este tutorial foi atendido e, finalmente, se você tiver tempo depois de ler este tutorial, envie-me uma mensagem de e-mail sobre seu comentário/sugestão /questions e bugs (erros) fora do curso que você encontrar neste tutorial. Os capítulos 6 e 7 fornecem mais informações sobre padrões, filtros, expressões e, claro, sed e awk são abordados em profundidade. Observe que isso indica conceitos avançados de script de shell. Você pode pular isso se for realmente novo em Linux ou programação, embora isso não seja RECOMENDADO por mim. Anterior O Capítulo 5 apresenta programas utilitários poderosos que podem ser usados para diversos fins durante a programação do shell. O Capítulo 8 contém muitos exemplos de scripts de shell divididos em várias categorias, como desenvolvimento lógico, administração de sistema, etc. O Capítulo 4 apresenta muitos conceitos avançados de script de shell, como função, interface de usuário, descritores de arquivo, manipulação de sinal, vários argumentos de linha de comando, etc. O Capítulo 3 é sobre como tomar decisões em scripts de shell, bem como em loops em shell. Explica o que são expressões, como o Shell entende as condições/decisões. Ele também mostra o conceito de aninhamento para instruções de loop if e for e depuração de script de shell. Lar Acima Próximo O que é Linux? Machine Translated by Google
  • 9. O que é Linux? http://www.cyberciti.biz/pdf/lsst/ch01sec01.html [29/07/2002 18:51:07] LSST v1.05r3 > Capítulo 1 > O que é Linux? • Semelhante ao Unix • Gratuito • Código aberto Acima Anterior Próximo Capítulo 1: Introdução: Introdução rápida ao Linux Tutorial de script de shell do Linux (LSST) v1.05r3 Lar Anterior Quem desenvolveu o Linux? Próximo • Sistema operacional de rede Machine Translated by Google
  • 10. Quem desenvolveu o Linux? mais informações sobre Linus Torvalds, visite sua página inicial. LSST v1.05r3 > Capítulo 1 > Quem desenvolveu o Linux? http://www.cyberciti.biz/pdf/lsst/ch01sec02.html [29/07/2002 18:51:08] sistema operacional de propósito específico chamado Minix (versão pequena do Unix e usada em ambiente acadêmico). Mas Em 1991, Linus Torvalds estudou Unix na Universidade, onde utilizou experimentos educacionais especiais O Minix tinha suas próprias limitações. Linus sentiu que poderia fazer melhor que o Minix. Então ele desenvolveu seu próprio Lar Anterior Próximo Capítulo 1: Introdução: Introdução rápida ao Linux Tutorial de script de shell do Linux (LSST) v1.05r3 Anterior O que é Linux? Como obter o Linux? Próximo versão do Minix, que agora é conhecido como Linux. Linux é código aberto desde o início do dia. Para Acima Machine Translated by Google
  • 11. Site/Logotipo Distribuições Linux. SuSE Linux: http://www.suse.com/ Mandrake Linux: http://www.mandrakesoft.com/ Próximo Linux disponível para download pela rede, isso é útil se sua conexão com a internet for rápida. Outra forma é encomendar os CD-ROMs o que economiza tempo, e a instalação a partir do CD-ROM é rápida/automática. Várias distribuições Linux disponíveis. A seguir estão distribuições importantes do Linux. Anterior Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 1: Introdução: Introdução rápida ao Linux Debian GNU/Linux: http:// www.debian.org/ Slackware Linux: http://www.slackware.com/ Nota: Se você estiver na Índia, poderá obter a distribuição Linux da revista Leading Computer, como PC Quest (Até o PCQuest tem seu próprio sabor Linux) ou se você estiver em Pune, Índia, visite nosso site para obter o Red Hat Linux ou qualquer outra distribuição oficial do Linux. Observe que você também pode obter sua distribuição Linux com livros sobre Linux que você compra na livraria local. Caldera Linux: http://www.calderasystems.com/ Red Hat Linux: http:// www.redhat.com/ LSST v1.05 > Capítulo 1 > Como obter o Linux? http://www.cyberciti.biz/pdf/lsst/ch01sec03.html (1 de 2) [29/07/2002 18:51:11] Como obter o Linux? Machine Translated by Google
  • 12. Acima Como instalar o Linux Lar Anterior Quem desenvolveu o Linux? Próximo LSST v1.05 > Capítulo 1 > Como obter o Linux? http://www.cyberciti.biz/pdf/lsst/ch01sec03.html (2 de 2) [29/07/2002 18:51:11] Machine Translated by Google
  • 13. Lar Anterior Como obter o Linux? Acima Próximo Capítulo 1: Introdução: Introdução rápida ao Linux versão 6.2 e 7.2. Por favor visite o LESSBS Página inicial do projeto para Guia de instalação visual rápida para Red Hat Linux Tutorial de script de shell do Linux (LSST) v1.05r3 Onde posso usar o Linux? Anterior Próximo LSST v1.05 > Capítulo 1 > Como instalar o Linux? http://www.cyberciti.biz/pdf/lsst/ch01sec04.html [29/07/2002 18:51:22] Como instalar o Linux? Machine Translated by Google
  • 14. Onde posso usar o Linux? Servidor Linux com diferentes sistemas operacionais clientes • Robusto • Estável • Seguro • Alto desempenho Anterior Próximo Você pode usar o Linux como sistema operacional de servidor ou como sistema operacional independente em seu PC. (Mas é mais adequado para servidor.) Como um sistema operacional de servidor, ele fornece diferentes serviços/recursos de rede para o cliente. O sistema operacional do servidor deve ser: Tutorial de script do Linux Shell (LSST) v1.05r3 Capítulo 1: Introdução: Noções básicas do Linux Shell O Linux oferece todas as características acima, além de seu sistema operacional de código aberto e gratuito. Portanto, o Linux pode ser usado como: (1) Em estação de trabalho/ PC independente para processamento de texto, gráficos, desenvolvimento de software, internet, e-mail, bate- papo, pequeno sistema de gerenciamento de banco de dados pessoal, etc. (2) Em ambiente de rede como: (A) Arquivo e impressão ou servidor de aplicativos Compartilhar os dados, conectar o dispositivo caro como impressora e compartilhá-lo, e-mail dentro da LAN/intranet etc. são algumas das aplicações. (B) O servidor Linux pode ser conectado à Internet, para que os PCs na intranet possam compartilhar a internet/e-mail, etc. Você pode colocar seu servidor web que administra seu site ou transmitir as informações pela internet. LSST v1.05 > Capítulo 1 > Onde posso usar Linux? http://www.cyberciti.biz/pdf/lsst/ch01sec05.html (1 de 2) [29/07/2002 18:51:26] Machine Translated by Google
  • 15. Veja o MENOSBS projeto para obter mais informações sobre Linux Essential Services (conforme mencionado acima) e Dispositivo de cache etc. como implementá-los de maneira fácil para você ou sua organização. • Servidor de grupo de trabalho Próximo No Data Center para diversas atividades de servidor como FTP, Telnet, SSH, Web, Mail, Proxy, Proxy O que é kernel? Lar • Servidor Web • Estação de trabalho de desenvolvimento de software Portanto, você pode usar o Linux para: Anterior Acima Como instalar o Linux • Trabalho Pessoal O servidor Linux pode atuar como servidor proxy/correio/WWW/roteador, etc. http://www.cyberciti.biz/pdf/lsst/ch01sec05.html (2 de 2) [29/07/2002 18:51:26] LSST v1.05 > Capítulo 1 > Onde posso usar Linux? • Machine Translated by Google
  • 16. O Kernel decide quem utilizará esse recurso, por quanto tempo e quando. Ele executa seus programas (ou configura para dados, dados de impressão na impressora, memória, gerenciamento de arquivos etc. • Gerenciamento de arquivos Tutorial de script de shell do Linux (LSST) v1.05r3 executar arquivos binários). • Gerenciamento de memória Anterior Onde posso usar o Linux? Kernel é o coração do Linux OS. • Gestão de processos Ele gerencia recursos do Linux Os. Recursos significa recursos disponíveis no Linux. Por exemplo, facilidade para armazenar • Gerenciamento de dispositivos É a parte residente na memória do Linux. Ele executa a seguinte tarefa: - Próximo Anterior O que é Linux Shell? Próximo Capítulo 1: Introdução: Noções básicas do Linux Shell O kernel atua como um intermediário entre o hardware do computador e vários • Gerenciamento de E/S Lar programas/aplicativo/shell. Acima http://www.cyberciti.biz/pdf/lsst/ch01sec06.html [29/07/2002 18:51:28] LSST v1.05 > Capítulo 1 > LSST v1.05 > Capítulo 1 > O que é kernel? Machine Translated by Google
  • 17. Vários shell disponíveis com Linux, incluindo: Software grátis a programação C Anterior Veja a página de manual. $ gato /etc/conchas Laboratórios AT&T Bell -- Capítulo 1: Introdução: Noções básicas do Linux Shell A sintaxe do shell C e interpretador que executa comandos lidos do dispositivo de entrada padrão (teclado) ou de um arquivo. BASH (Bourne-de novo $ prompt. Este prompt depende do seu shell e ambiente que você definiu ou do seu sistema Tutorial de script de shell do Linux (LSST) v1.05r3 Shell é um programa de usuário ou um ambiente fornecido para interação do usuário. Shell é uma linguagem de comando Observação tão poderosos quanto nossos Linux Shells são! nós, para ler e escrever. Portanto, no Os existe um programa especial chamado Shell. A Shell aceita suas instruções ou Ramey Shell mais comum em KSH (Korn Shell) versão compatível de CSH (C SHell) TCSH é um aprimoramento diferentes funções integradas. O computador entende a linguagem de 0 e 1 chamada linguagem binária. Desenvolvido por Universidade da Califórnia Fundação Próximo Nome do Concha linguagem. Digite $ man tcsh Dica: Para encontrar todos os shells disponíveis em seu sistema, digite o seguinte comando: Shell não faz parte do kernel do sistema, mas usa o kernel do sistema para executar programas, criar arquivos, etc. Concha ) o uso é muito semelhante ao -- Observe que cada shell faz o mesmo trabalho, mas cada um entende uma sintaxe de comando diferente e fornece Administrador, portanto você pode receber um prompt diferente). concha. David Korn shell (CSH). querer. Se estivermos dando comandos do teclado, isso é chamado de interface de linha de comando (geralmente na frente do Onde Linux. É gratuito TCSH comandos em inglês (principalmente) e se for um comando válido, ele é passado para o kernel. o Berkeley UNIX C Qualquer um dos shells acima lê o comando do usuário (via teclado ou mouse) e informa ao Linux OS quais usuários mas completamente No MS-DOS, o nome do Shell é COMMAND.COM, que também é usado para a mesma finalidade, mas não é tão Nos primórdios da computação, as instruções eram fornecidas em linguagem binária, o que era difícil para todos Brian Fox e Chet (Para BSD) Bill Alegria http://www.cyberciti.biz/pdf/lsst/ch01sec07.html (1 de 2) [29/07/2002 18:51:30] LSST v1.05 > Capítulo 1 > O que é Linux Shell? O que é Linux Shell? Machine Translated by Google
  • 18. Anterior O que é Kernel? Acima $ eco $SHELL Dica: Para encontrar seu shell atual, digite o seguinte comando Como usar o Shell Lar Próximo http://www.cyberciti.biz/pdf/lsst/ch01sec07.html (2 de 2) [29/07/2002 18:51:30] LSST v1.05 > Capítulo 1 > O que é Linux Shell? Machine Translated by Google
  • 19. programando o shell. Veja o comando comum do Linux para sintaxe e exemplo, isso pode ser usado como referência rápida enquanto Anterior O que é Linux Shell? O que é ShellScript? Para usar o shell (você começa a usar o shell assim que faz login no sistema), basta digitar comandos. Capítulo 1: Introdução: Noções básicas do Linux Shell Tutorial de script de shell do Linux (LSST) v1.05r3 Acima Próximo Próximo Lar Anterior http://www.cyberciti.biz/pdf/lsst/ch01sec08.html [29/07/2002 18:51:31] LSST v1.05 > Capítulo 1 > Como usar o Shell Como usar o Shell Machine Translated by Google
  • 20. comandos. Isso é conhecido como shell script. sequência de comando para arquivo de texto e diga ao shell para executar este arquivo de texto em vez de inserir o Próximo Tutorial de script de shell do Linux (LSST) v1.05r3 Script de shell definido como: Por que escrever Shell Script? Normalmente os shells são interativos. Significa que o shell aceita o comando seu (via teclado) e executa Lar eles. Mas se você usar o comando um por um (sequência de 'n' número de comandos), você poderá armazenar isso Acima Anterior Anterior Próximo Capítulo 1: Introdução: Noções básicas do Linux Shell "Shell Script é uma série de comandos escritos em arquivo de texto simples. Shell script é exatamente como o arquivo em lote é MS-DOS Como usar o Shell mas tem mais poder que o arquivo em lote do MS-DOS." http://www.cyberciti.biz/pdf/lsst/ch01sec09.html [29/07/2002 18:51:33] LSST v1.05 > Capítulo 1 > O que é Shell Script? O que é ShellScript? Machine Translated by Google
  • 21. Próximo Anterior • Economize muito tempo. • Para automatizar alguma tarefa do dia a dia. Capítulo 1: Introdução: Noções básicas do Linux Shell • Útil para criar nossos próprios comandos. • O shell script pode receber entradas do usuário, arquivá-las e exibi-las na tela. Tutorial de script de shell do Linux (LSST) v1.05r3 • A parte de Administração do Sistema também pode ser automatizada. Acima Próximo Lar Mais sobre a Shell... Anterior O que é Shell Script? http://www.cyberciti.biz/pdf/lsst/ch01sec10.html [29/07/2002 18:51:34] LSST v1.05 > Capítulo 1 > Por que escrever Shell Script? Por que escrever Shell Script? Machine Translated by Google
  • 22. Tente entender o sistema operacional Linux Distribuição Red Hat Linux). Todos os scripts também são testados no Red Hat Linux versão 7.2. Tente entender o básico do shell do Linux Tutorial de script de shell do Linux (LSST) v1.05r3 Anterior Por que escrever Shell Script? Lar Navegue na Web para ler o tutorial. (IE ou Netscape) Para a versão PDF você precisa de um leitor de PDF. Neste tutorial estamos usando o shell bash. Linux - shell bash. (Disponível em quase todas as distribuições Linux. Por padrão, bash é o shell padrão para Introdução à programação Shell Próximo SO Linux (usei a distribuição Red Hat Linux versão 6.x+) Capítulo 1: Introdução: Noções básicas do Linux Shell Tente aprender a programação do shell do Linux Acima Anterior Próximo LSST v1.05 > Capítulo 1 > Noções básicas do Linux Shell http://www.cyberciti.biz/pdf/lsst/ch01sec11.html [29/07/2002 18:51:36] Objetivo deste tutorial (LSST v.1.5) O que eu preciso para aprender este tutorial (LSST Roteiro ? Qual Shell estamos usando para escrever Shell v.1.5) Machine Translated by Google
  • 23. Começaremos a escrever um pequeno script de shell, que imprimirá "Conhecimento é poder" na tela. Nesta parte do tutorial você será apresentado à programação shell, como escrever scripts, executá-los, etc. Antes de começar com isso você deve saber • Como usar um editor de texto como o vi, consulte o comando vi comum para obter mais informações. Capítulo 2: Introdução à programação Shell Próximo Anterior Tutorial de script de shell do Linux (LSST) v1.05r3 • Navegação básica de comandos Acima Próximo Lar Como escrever script de shell Anterior Mais sobre Shell... http://www.cyberciti.biz/pdf/lsst/ch02.html [29/07/2002 18:51:37] LSST v1.05r3 > Capítulo 2 > Introdução à programação Shell Introdução à programação Shell Machine Translated by Google
  • 24. (2) Depois de escrever o shell script, defina a permissão de execução para o seu script conforme a seguinte sintaxe: chmod permission your-script-name (1) Use qualquer editor como vi ou mcedit para escrever scripts de shell. Exemplos: $ chmod +x nome do seu script $ chmod 755 nome do seu script se você é novo no vi. $ vi primeiro # , Próximo Exemplo: $. foo Agora você está pronto para escrever o primeiro script de shell que imprimirá "Conhecimento é poder" na tela. Veja a lista de comandos comuns do vi As etapas a seguir são necessárias para escrever o script Shell: Exemplos: $ bash bar $ sh bar $ ./bar echo "Conhecimento é Poder" Depois de salvar o script acima, você pode executá-lo da seguinte maneira: $ ./first Anterior NOTA Na última sintaxe ./ significa diretório atual, mas apenas . (ponto) significa executar determinado arquivo de comando no shell atual sem iniciar a nova cópia do shell. A sintaxe para. O comando (ponto) é o seguinte Sintaxe: . nome do comando Nota: Isso definirá a permissão de leitura, gravação e execução (7) para o proprietário, para o grupo e outras permissões são somente leitura e execução (5). #Meu primeiro script de shell# claro Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução à programação Shell (3) Execute seu script como sintaxe: bash nome-seu-script sh nome-seu-script ./nome- seu-script [Anúncio] [Obtenha o domínio Cyberciti por apenas Rs.445 com 2 e-mails grátis] LSST v1.05r3 > Capítulo 2 > Como escrever script de shell http://www.cyberciti.biz/pdf/lsst/ch02sec01.html (1 de 2) [29/07/2002 18:51:39] Como escrever script de shell Machine Translated by Google
  • 25. Como o Shell localiza o arquivo (meu próprio diretório bin para executar o script) cal Significado A primeira tela ficará clara e, em seguida, Conhecimento é Poder será impresso na tela. claro claro Próximo Isso não executará o script, pois não definimos primeiro a permissão de execução para nosso script; para fazer isso digite o comando $ chmod 755 first $ ./first #Meu primeiro script de shell# # Sintaxe: # comment-text limpa a tela Para imprimir mensagem ou valor de variáveis na tela, usamos o comando echo, a forma geral do comando echo é a seguinte sintaxe: echo "Mensagem" Introdução à programação Shell # Script para imprimir informações do usuário que está atualmente logado e horário Inicie o editor vi Exercício: 1) Escreva o seguinte script de shell, salve-o, execute-o e anote sua saída. Ponto Futuro: No final, por que a instrução exit 0 é usada? Consulte o status de saída para obter mais informações. saída 0 $ vi primeiro Dica: Para arquivos de script de shell, tente fornecer uma extensão de arquivo como .sh, que pode ser facilmente identificada por você como script de shell. Comando(s) de script echo "Olá $USER" echo "Hoje é c ";date echo "Número de login do usuário: c" ; quem | wc -l echo "Calendário" echo "Conhecimento é Poder" Variáveis no Shell Acima data atual Lar # # seguido de qualquer texto é considerado comentário. O comentário fornece mais informações sobre o script, explicação lógica sobre o shell script. $viginfo## Anterior [Obtenha o domínio Cyberciti por apenas Rs.445 com 2 e-mails grátis] LSST v1.05r3 > Capítulo 2 > Como escrever script de shell http://www.cyberciti.biz/pdf/lsst/ch02sec01.html (2 de 2) [29/07/2002 18:51:39] [Anúncio] Machine Translated by Google
  • 26. LETRAS MAIÚSCULAS. Nº de colunas para nossa tela Nº de colunas para nossa tela Próximo SHELL=/bin/bash a) $echo $HOME PS1=[u@hW]$ Exercício: Capítulo 2: Introdução à programação Shell PATH=/usr/bin:/sbin:/bin:/usr/sbin No Linux (Shell), existem dois tipos de variáveis: Nosso nome de concha Tutorial de script de shell do Linux (LSST) v1.05r3 um por vez). BASH=/bin/bash que é usado para armazenar nossos dados. O programador pode dar um nome exclusivo a este local/endereço de memória LINHAS=25 Variável de sistema Nossas configurações imediatas das variáveis acima contém o seguinte: Nosso tipo de sistema operacional Nome de usuário que está atualmente conectado a este PC Para processar nossos dados/informações, os dados devem ser mantidos na memória RAM do computador. A memória RAM é letras mais baixas. COLUNAS=80 BASH_VERSION=1.14.7(1) (2) Variáveis definidas pelo usuário (UDV) - Criadas e mantidas pelo usuário. Este tipo de variável definida em alunos Nosso nome de registro NOME DE USUÁRIO=vivek 1) Se você deseja imprimir a localização do seu diretório inicial, dê o comando: OU (1) Variáveis de sistema - Criadas e mantidas pelo próprio Linux. Este tipo de variável definida em Nosso nome de versão do shell Anterior Nosso diretório inicial PWD=/home/alunos/Comum OSTYPE=Linux Nosso nome de concha $echo $HOME Significado LOGNAME=alunos Nosso diretório de trabalho atual chamada variável de memória ou variável (é um local de armazenamento nomeado que pode assumir valores diferentes, mas apenas $ echo $ NOME DE USUÁRIO NOTA que algumas das configurações acima podem ser diferentes em seu ambiente PC/Linux. Você pode imprimir qualquer dividido em pequenos locais, e cada local tinha um número único chamado local/endereço de memória, Você pode ver as variáveis do sistema fornecendo comandos como $ set. Algumas das variáveis importantes do sistema são: CASA=/casa/vivek Nossas configurações de caminho http://www.cyberciti.biz/pdf/lsst/ch02sec02.html (1 de 2) [29/07/2002 18:51:42] LSST v1.05r3 > Capítulo 2 > Variáveis no Shell Variáveis no Shell Machine Translated by Google
  • 27. Acima Anterior Lar Próximo Cuidado: Não modifique a variável do sistema, pois isso pode criar problemas em algum momento. Como escrever script de shell Qual dos comandos acima está correto e por quê? Clique aqui para responder. (b) $ eco HOME (UDV) Como definir variáveis definidas pelo usuário LSST v1.05r3 > Capítulo 2 > Variáveis no Shell http://www.cyberciti.biz/pdf/lsst/ch02sec02.html (2 de 2) [29/07/2002 18:51:42] Machine Translated by Google
  • 28. nome da variável = valor Sintaxe: 'valor' é atribuído a um determinado 'nome de variável' e o valor deve estar no lado direito = sinal. Tutorial de script de shell do Linux (LSST) v1.05r3 $n=10 Anterior Variáveis no shell $vech=Ônibus UDV e variável de sistema) Para definir uma variável chamada n com valor 10 Para definir UDV use a seguinte sintaxe $ 10=não # Erro, NÃO Ok, o valor deve estar no lado direito do sinal =. Próximo Próximo Regras para nomear nomes de variáveis (ambos Para definir a variável chamada 'vech' com valor Bus Exemplo: Capítulo 2: Introdução à programação Shell Lar Acima Anterior $ não = 10 # tudo bem LSST v1.05r3 > Capítulo 2 > Como definir variáveis definidas pelo usuário (UDV) http://www.cyberciti.biz/pdf/lsst/ch02sec03.html [29/07/2002 18:51:44] (UDV) Como definir variáveis definidas pelo usuário Machine Translated by Google
  • 29. (2) Não coloque espaços em ambos os lados do sinal de igual ao atribuir valor à variável. Por exemplo, na seguinte declaração de variável não haverá erro $ no=10 Mas haverá problema para qualquer uma das seguintes declarações de variável: $ no =10 $ no= 10 $ no = 10 (1) O nome da variável deve começar com caractere alfanumérico ou sublinhado (_), seguido de um ou mais caracteres alfanuméricos. Por exemplo, as variáveis de shell válidas são as seguintes HOME SYSTEM_VERSION vech (3) As variáveis diferenciam maiúsculas de minúsculas, assim como o nome do arquivo no Linux. Por exemplo, $ no=10 $ No=11 $ NO=20 $ nO=2 Acima de tudo estão nomes de variáveis diferentes, então para imprimir o valor 20 temos que usar $ echo $NO e nenhum dos seguintes $ echo $no # irá imprima 10, mas não 20 $ echo $No # imprimirá 11, mas não 20 $ echo $nO # imprimirá 2, mas não 20 (5) Não use ?,* etc, para nomear seus nomes de variáveis. Próximo não Anterior Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução à programação Shell Tente imprimir seu valor emitindo o seguinte comando $ echo $vech Nada será mostrado porque a variável não tem valor, ou seja, variável NULL. (4) Você pode definir a variável NULL da seguinte forma (variável NULL é uma variável que não tem valor no momento da definição) Por exemplo, $ vech= $ vech="" Próximo Lar Anterior LSST v1.05r3 > Capítulo 2 > Regras para nomear nomes de variáveis (UDV e variáveis de sistema) http://www.cyberciti.biz/pdf/lsst/ch02sec04.html (1 de 2) [29/07/2002 18:51:46] Regras para nomear nomes de variáveis (ambos UDV e variável de sistema) Machine Translated by Google
  • 30. (UDV) Acima Como imprimir ou acessar o valor do UDV Como definir variáveis definidas pelo usuário (Variáveis definidas pelo usuário) http://www.cyberciti.biz/pdf/lsst/ch02sec04.html (2 de 2) [29/07/2002 18:51:46] LSST v1.05r3 > Capítulo 2 > Regras para nomear nomes de variáveis (UDV e variáveis de sistema) Machine Translated by Google
  • 31. Para imprimir contém a variável 'vech' digite $ echo $vech Defina a variável vech en da seguinte forma: $ vech=Bus $ n=10 Ele irá imprimir 'Bus', para imprimir contém a variável 'n' digite o comando da seguinte forma $ echo $n Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução à programação Shell Para respostas clique aqui Anterior Lar Para imprimir ou acessar a UDV use a seguinte sintaxe Q.5.Modifique acima e armazene a divisão de xey na variável chamada z Q.6.Aponte o erro, se houver, no script a seguir $ vi variscript # # # Script para testar MEU conhecimento sobre variáveis! # meunome=Vivek myos = TroubleOS myno=5 echo "Meu nome é $meunome" echo "Meu sistema operacional é $myos" echo "Meu número é myno, você pode ver este número" Sintaxe: $nomedavariável Q.2.Como definir a variável xn com valor Rani e imprimi-la na tela Q.3.Como imprimir a soma de dois números, digamos 6 e 3? Q.4.Como definir duas variáveis x=20, y=5 e depois imprimir a divisão de xey (ou seja, x/y) Cuidado: Não tente $ echo vech, pois ele imprimirá vech em vez do valor 'Bus' e $ echo n, pois imprimirá n em vez do valor '10'. Você deve usar $ seguido do nome da variável. Anterior Próximo Próximo Exercício Q.1.Como definir a variável x com valor 10 e imprimi-la na tela. http://www.cyberciti.biz/pdf/lsst/ch02sec05.html (1 de 2) [29/07/2002 18:51:48] LSST v1.05r3 > Capítulo 2 > Como imprimir ou acessar o valor de UDV (variáveis definidas pelo usuário) (Variáveis definidas pelo usuário) Como imprimir ou acessar o valor do UDV Machine Translated by Google
  • 32. Acima UDV e variável de sistema) Regras para nomear nomes de variáveis (ambos Comando de eco LSST v1.05r3 > Capítulo 2 > Como imprimir ou acessar o valor de UDV (variáveis definidas pelo usuário) http://www.cyberciti.biz/pdf/lsst/ch02sec05.html (2 de 2) [29/07/2002 18:51:48] Machine Translated by Google
  • 33. Opções Acima Exibe texto ou valor de variáveis na tela. Tutorial de script de shell do Linux (LSST) v1.05r3 -n Não gera a nova linha final. t guia horizontal barra invertida Por exemplo, $ echo -e "Uma maçã por dia mantém longe attdoctorn" Próximo Use o comando echo para exibir texto ou valor da variável. n nova linha variáveis definidas) r retorno de carro echo [opções] [string, variáveis...] Lar b retrocesso Anterior Anterior Como imprimir ou acessar o valor do UDV (User Próximo c suprimir a nova linha final -e Habilite a interpretação dos seguintes caracteres de escape de barra invertida nas strings: Capítulo 2: Introdução à programação Shell Como exibir texto colorido na tela com efeitos de negrito ou piscar, como imprimir texto em qualquer linha ou coluna Aritmética de casca na tela, clique aqui para mais! um alerta (sino) http://www.cyberciti.biz/pdf/lsst/ch02sec06.html [29/07/2002 18:51:50] LSST v1.05r3 > Capítulo 2 > Comando echo Comando de eco Machine Translated by Google
  • 34. Para a última afirmação, não os seguintes pontos Nota: expr 20 %3 - Resto lido como 20 mod 3 e resto é 2. expr 10 * 3 - Multiplicação use * e não * desde seu curinga. Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução à programação Shell (1) Primeiro, antes da palavra-chave expr, usamos o sinal ` (aspas crases) e não o sinal (aspas simples, ou seja, '). Aspas atrás geralmente são encontradas na tecla abaixo do til (~) no teclado do PC OU acima da tecla TAB. Acima Próximo Mais sobre citações Sintaxe: expr op1 operador matemático op2 Comando de eco anterior Lar Exemplos: $ expr 1 + 3 $ expr 2 - 1 $ expr 10/2 $ expr 20% 3 $ expr 10 * 3 $ echo `expr 6 + 3` (4) Aqui, se você usar aspas duplas ou simples, NÃO funcionará. Por exemplo, $ echo "expr 6 + 3" # Irá imprimir expr 6 + 3 $ echo 'expr 6 + 3' # Irá imprimir expr 6 + 3 Próximo Use para realizar operações aritméticas. Consulte Substituição de parâmetros - Para economizar seu tempo. (2) Em segundo lugar, expr também termina com `, ou seja, aspas anteriores. Anterior (3) Aqui expr 6 + 3 é avaliado como 9, então o comando echo imprime 9 como soma http://www.cyberciti.biz/pdf/lsst/ch02sec07.html [29/07/2002 18:51:52] LSST v1.05r3 > Capítulo 2 > Aritmética de Shell Aritmética de casca Machine Translated by Google
  • 35. "Aspas Duplas" - Qualquer coisa colocada entre aspas duplas removeu o significado disso Próximo Significado Tutorial de script de shell do Linux (LSST) v1.05r3 Caracteres de aspas duplas (exceto e $). Exemplo: $ echo "Hoje é data" Não é possível imprimir a mensagem com a data de hoje. Status de saída Existem três tipos de citações ` Lar `Citação anterior` - Para executar o comando Nome das citações Acima Citação anterior Próximo Anterior Aritmética de casca ' " Capítulo 2: Introdução à programação Shell $ echo "Hoje é `data`". Ele imprimirá a data de hoje como Hoje é terça-feira, janeiro ..... Você pode ver que a instrução `date` usa aspas invertidas? Anterior Aspas simples 'Aspas simples' - Entre aspas simples permanece inalterado. http://www.cyberciti.biz/pdf/lsst/ch02sec08.html [29/07/2002 18:51:53] LSST v1.05r3 > Capítulo 2 > Mais sobre cotações Mais sobre citações Machine Translated by Google
  • 36. Mas como descobrir o status de saída do comando ou script de shell? Este valor é conhecido como Status de Saída. Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução à programação Shell Simples, para determinar esse status de saída você pode usar $? variável especial do shell. $echon$? $ eco $? $? variável útil, quer saber mais sobre essas variáveis do Linux, clique aqui para explorá-las! (1) Se o valor de retorno for zero (0), o comando foi bem-sucedido. $ oeste selvagem pode funcionar? $ eco $? $ data $ eco $? (2) Se o valor de retorno for diferente de zero, o comando não foi bem-sucedido ou algum tipo de erro ao executar o comando/shell script. Exercício Tente os seguintes comandos e não desça o status de saída: $ expr 1 + 3 $ echo $? Anterior Próximo $ echo Bem-vindo $ echo $? Por exemplo (este exemplo assume que unknow1file não existe em seu disco rígido) $ rm unknow1file Ele mostrará o erro da seguinte forma rm: não é possível remover `unkowm1file': Esse arquivo ou diretório não existe e depois disso se você der o comando $ echo $? ele imprimirá um valor diferente de zero para indicar erro. Agora dê o comando $ ls $ echo $? Ele imprimirá 0 para indicar que o comando foi bem-sucedido. Por padrão no Linux, se um determinado comando/shell script for executado, ele retornará dois tipos de valores que são usados para ver se o comando ou shell script executado foi bem-sucedido ou não. http://www.cyberciti.biz/pdf/lsst/ch02sec09.html (1 de 2) [29/07/2002 18:51:55] LSST v1.05r3 > Capítulo 2 > Status de saída Status de saída Machine Translated by Google
  • 37. Lar Próximo Mais sobre citações Anterior Acima A declaração lida http://www.cyberciti.biz/pdf/lsst/ch02sec09.html (2 de 2) [29/07/2002 18:51:55] LSST v1.05r3 > Capítulo 2 > Status de saída Machine Translated by Google
  • 38. # Seu primeiro nome, por favor: vivek Anterior Capítulo 2: Introdução à programação Shell o teclado é armazenado (atribuído) à variável fname. $ chmod 755 digaH Curingas (abreviação de nome de arquivo ou meta Tutorial de script de shell do Linux (LSST) v1.05r3 insere o nome no teclado (depois de fornecer o nome você deve pressionar a tecla ENTER) e insere o nome através Execute-o da seguinte maneira: leia variável1, variável2,...variávelN Lar leia nome Use para obter entrada (dados do usuário) do teclado e armazenar (dados) na variável. # Anterior Olá vivek, vamos ser amigos! Próximo #Script para ler seu nome no teclado $ vi dizerH $ ./digaH Personagens) Próximo echo "Olá $fname, vamos ser amigos!" Acima O script a seguir primeiro pergunta ao usuário o nome e depois espera para inserir o nome do usuário por meio do teclado. Então usuário Sintaxe: echo "Seu primeiro nome, por favor:" Status de saída http://www.cyberciti.biz/pdf/lsst/ch02sec10.html [29/07/2002 18:51:56] LSST v1.05r3 > Capítulo 2 > A instrução read A declaração lida Machine Translated by Google
  • 39. $l é um* extensão .c, mas o nome do arquivo deve $ls ? Próximo $ ls /bin/[ac]* $ls /bin/[!ao] [..-..] Um par de caracteres separados por um sinal de menos indica um intervalo. /bin/chgrp /bin/consolechars /bin/csh Capítulo 2: Introdução à programação Shell letras a,b,c mostrará todos os arquivos * Exemplos Tutorial de script de shell do Linux (LSST) v1.05r3 $ ls *.c caracteres. /Forma abreviada têm 3 caracteres e nome de arquivo extensão .c Corresponde a qualquer um dos /bin/arch /bin/awk /bin/bsh /bin/chmod /bin/ash /bin/nomebase /bin/cat / bin/chown /bin/ash.static /bin/bash Corresponde a qualquer caractere único. $ls[abc]* Se o primeiro caractere após [ for um ! ou um ^, então qualquer caractere não incluído será correspondido, ou seja, não o nome começa com a letra 'a' mostrará todos os arquivos cujos nomes comece com 'ut'. ? mostrará todos os arquivos cujo primeiro [...] $ ls /bin/[^ao] Mas Anterior $ lsut*.c mostrará todos os arquivos com $ls* Exemplo: mostrará todos os arquivos começando com Observação: /bin/cpio Corresponde a qualquer string ou grupo de comece com fo caracteres fechados Significado /bin/cp Mostrará todos os nomes de arquivos começando com a letra a, b ou c como mostre-nos o nome do arquivo que começa com a,b,c,e...o, como Curinga mostrará todos os arquivos com têm 1 caractere mostrará todos os arquivos cujos nomes $ ls fo? http://www.cyberciti.biz/pdf/lsst/ch02sec11.html (1 de 2) [29/07/2002 18:51:58] LSST v1.05r3 > Capítulo 2 > Curingas (abreviação de nome de arquivo ou metacaracteres) Curingas (abreviação de nome de arquivo ou meta Personagens) Machine Translated by Google
  • 40. /bin/sh /bin/tcsh /bin/vi /bin/sfxload /bin/tar /bin/usleep /bin/ps / bin/pwd / bin/red / bin/remadmin /bin/sed /bin/ rm /bin/ rmdir /bin/ rpm Anterior /bin/su /bin/uname /bin/ypdomainname Mais comandos em uma linha de comando /bin/setserial /bin/sync /bin/userconf /bin/zcat Acima /bin/classificar /bin/true /bin/wcomp /bin/digaOlá /bin/stty /bin/umount /bin/xconf Próximo A declaração lida /bin/rvi / bin/rview /bin/dormir /bin/tocar /bin/visualizar Lar http://www.cyberciti.biz/pdf/lsst/ch02sec11.html (2 de 2) [29/07/2002 18:51:58] LSST v1.05r3 > Capítulo 2 > Curingas (abreviação de nome de arquivo ou metacaracteres) Machine Translated by Google
  • 41. Exemplos: Para executar dois comandos com uma linha de comando. Tutorial de script de shell do Linux (LSST) v1.05r3 $ data;quem Lar Acima Próximo Sintaxe: Curingas (abreviação de nome de arquivo ou meta Personagens) comando1;comando2 para o mesmo propósito, você deve colocar ponto e vírgula entre a data e o comando who. Próximo Anterior Irá imprimir a data de hoje seguida pelos usuários que estão logados no momento. Observe que você não pode usar Capítulo 2: Introdução à programação Shell Processamento de linha de comando Anterior $ data quem http://www.cyberciti.biz/pdf/lsst/ch02sec12.html [29/07/2002 18:52:00] LSST v1.05r3 > Capítulo 2 > Mais comandos em uma linha de comando Mais comandos em uma linha de comando Machine Translated by Google
  • 42. Todo o resto na linha de comando é considerado argumento para este comando. Por exemplo $ correio raj eu Anterior 3 correspondência 2 -r, -n e meuf Capítulo 2: Introdução à programação Shell grate_stories_of ? $ mv y.bak y.ok Comando Tutorial de script de shell do Linux (LSST) v1.05r3 incitar. Agora surge mais uma pergunta : O que são comandos? O que aconteceu quando você digitou $ ls $ cp e y.bak OBSERVAÇÃO: Ele imprimirá uma mensagem semelhante a - grate_stories_of: Esse arquivo ou diretório não existe. Responder: Tente determinar o comando e os argumentos dos seguintes comandos 1 y.bak e y.ok mv 0 data Tente o seguinte comando (supõe que o arquivo "grate_stories_of" não existe em seu sistema) O nome do comando é tail e os argumentos são +10 e myf. $ data $ sort -r -n meuf Próximo $ cauda +10 myf CP 0 cauda A primeira palavra na linha de comando é ls - é o nome do comando a ser executado. $ cauda -10 myf Argumento real 1 organizar (ou seja, $#) 2 Raj $ ls foo Nº de argumentos para este comando 2 ls é o nome de um comando real e o shell executou esse comando quando você digitou o comando no shell -10 e meu Deus $# contém o número de argumentos especificados na linha de comando. E $* ou $@ referem-se a todos os argumentos passados para você e você.bak claro $ ls grate_stories_of Exercício $ claro foo http://www.cyberciti.biz/pdf/lsst/ch02sec13.html (1 de 2) [29/07/2002 18:52:02] LSST v1.05r3 > Capítulo 2 > Processamento de linha de comando Processamento de linha de comando Machine Translated by Google
  • 43. Mais comandos em uma linha de comando Acima Anterior roteiro. Por que os argumentos da linha de comando são necessários Lar Próximo http://www.cyberciti.biz/pdf/lsst/ch02sec13.html (2 de 2) [29/07/2002 18:52:02] LSST v1.05r3 > Capítulo 2 > Processamento de linha de comando Machine Translated by Google
  • 44. Vamos usar o comando ls $ Ls -a /* Este comando tem 2 argumentos de linha de comando -a e /* é outro. Para script de shell, $ myshell foo bar Aqui rm é o comando e filename é o arquivo que você deseja remover. Dessa forma, você segue o comando rm qual arquivo deseja remover. Portanto, estamos fazendo comunicação unilateral com nosso comando, especificando o nome do arquivo. Além disso, você pode passar argumentos de linha de comando para o seu script para torná-lo mais amigável. Mas como acessamos o argumento da linha de comando em nosso script. Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução à programação Shell Nome do Shell Script, ou seja, myshell Próximo cara, é $ 1 barra custa $ 2 Vamos pegar o comando rm, que é usado para remover o arquivo, mas qual arquivo você deseja remover e como você dirá isso ao comando rm (mesmo o comando rm não pergunta o nome do arquivo que você gostaria de remover). Então o que fazemos é escrever o comando da seguinte forma: $ rm {nome do arquivo} No shell, se quisermos nos referir a este argumento de linha de comando, nos referimos acima como segue 2. Informar ao utilitário/comando qual arquivo ou grupo de arquivos processar (leitura/gravação de arquivos). Anterior meu shell é $ 0 Primeiro argumento de linha de comando passado para myshell, ou seja, foo 1. Informar ao comando/utilitário qual opção usar. Segundo argumento da linha de comando passado para myshell, ou seja, bar http://www.cyberciti.biz/pdf/lsst/ch02sec14.html (1 de 3) [29/07/2002 18:52:05] LSST v1.05r3 > Capítulo 2 > Por que argumentos de linha de comando são necessários Por que os argumentos da linha de comando são necessário Machine Translated by Google
  • 45. O script a seguir é usado para imprimir o argumento ling do comando e mostrará como acessá-los: # matemática $ cal Aqui $# (variável embutida no shell) será 2 (já que foo e bar apenas dois argumentos), observe de cada vez Nº de argumentos para o script $# 1 Nº de argumentos (ou seja, $#), 4 GRANDE $ matemática 4 - 7 11 echo "Todos eles são: - $* ou $@" -5 2 parâmetros". encontrarBS 3 Nome do script de shell ($0), - Nome do script de shell $0 echo "O número total de argumentos da linha de comando é $#" $ 1 $ 2 $ 3 $ 4 $ 5 `$1,$2...$9`). Observe que $1..$9, ou seja, argumentos de linha de comando para shell script, são conhecidos como "posicionais meu +20 24 4 #!/bin/sh soma $Ls* echo "$2 é o segundo argumento" cal Tente escrever o seguinte para comandos 0 $ soma 11 20 # 7 Responder echo "$1 é o primeiro argumento" Ls Argumento real ($1,..$9) esses 9 argumentos podem ser usados de $1..$9. Você também pode referir todos eles usando $* (que se expande para 20 $ bp -5 myf +20 $ vi demonstração # Script que demonstra, argumentos de linha de comando $ encontrarBS 4 8 24 GRANDE d 8 0 E argumento real (ou seja, $ 1, $ 2 etc.) 4 $ d echo "$0 é o nome do script" bp * 3 Exercício Execute-o da seguinte maneira http://www.cyberciti.biz/pdf/lsst/ch02sec14.html (2 de 3) [29/07/2002 18:52:05] LSST v1.05r3 > Capítulo 2 > Por que argumentos de linha de comando são necessários Machine Translated by Google
  • 46. Portanto, todas as instruções no shell script são inválidas: $1 = 5 $2 = "My Name" Verifique se está funcionando ou não (?) $ demo $ demo Olá Mundo Observe também que você não pode atribuir o novo valor aos argumentos da linha de comando, ou seja, parâmetros posicionais. Lar Se o teste for bem-sucedido, copie o script para seu próprio diretório bin (instale o script para uso privado) $ cp demo ~/bin NOTA: Depois disso, para qualquer script você terá que usar o comando acima, em sequência, não vou mostrar todos os comandos acima para o restante do Tutorial. Execute-o e teste-o da seguinte maneira: $ ./demo Hello World Defina a permissão de execução da seguinte forma: $ chmod 755 demo Anterior Acima Próximo Redirecionamento de saída/entrada padrão ieInput - Redirecionamento de sa Processamento de linha de comando http://www.cyberciti.biz/pdf/lsst/ch02sec14.html (3 de 3) [29/07/2002 18:52:05] LSST v1.05r3 > Capítulo 2 > Por que argumentos de linha de comando são necessários Machine Translated by Google
  • 47. Existem três símbolos principais de redirecionamento >,>>,< $ ls > nome do arquivo Significa colocar a saída do comando ls no nome do arquivo. Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução à programação Shell (1) > Sintaxe do símbolo do redirecionador: comando Linux > nome do arquivo Para gerar o resultado dos comandos Linux (saída do comando ou script shell) para o arquivo. Observe que se o arquivo já existir, ele será sobrescrito, caso contrário, um novo arquivo será criado. Por exemplo, para enviar a saída do comando ls, dê $ ls > myfiles Agora, se o arquivo 'myfiles' existir em seu diretório atual, ele será sobrescrito sem qualquer tipo de aviso. Crie um nome de arquivo de texto da seguinte maneira Quase todos os comandos fornecem saída na tela ou recebem entrada do teclado, mas no Linux (e também em outros sistemas operacionais) é possível enviar a saída para um arquivo ou ler a entrada do arquivo. Clique aqui para saber mais sobre Redirecionamento de E/S Você também pode usar os redirecionadores acima simultaneamente da seguinte maneira Por exemplo, o comando $ ls fornece saída para a tela; para enviar a saída para o arquivo do comando ls dê o comando ele será aberto e novas informações/dados serão gravados no FIM do arquivo, sem perder os anteriores , (2) >> Sintaxe do símbolo do redirecionador: comando Linux >> nome do arquivo Para gerar o resultado dos comandos Linux (saída do comando ou script shell) para o FIM do arquivo. Observe que se o arquivo existir informações/dados, e se o arquivo não existir, um novo arquivo será criado. Por exemplo, para enviar a saída do comando date para um arquivo já existente, dê o comando $ date >> meus arquivos Anterior (3) < Sintaxe do símbolo do redirecionador: comando Linux <nome do arquivo Para obter entrada para o comando Linux do arquivo em vez do teclado. Por exemplo, para obter entrada para o comando cat, dê $ cat <myfiles Próximo LSST v1.05r3 > Capítulo 2 > Redirecionamento de saída/entrada padrão, ou seja, redirecionamento de entrada - saída http://www.cyberciti.biz/pdf/lsst/ch02sec15.html (1 de 2) [29/07/2002 18:52:06] Entrada - Redirecionamento de saída Redirecionamento de saída/entrada padrão, ou seja Machine Translated by Google
  • 48. O comando tr é usado para traduzir todos os caracteres minúsculos em letras maiúsculas. Ele recebe a entrada do arquivo sname e a saída do tr é redirecionada para o arquivo cap_names. BABU $cat > sname vivek ashish zebra babu Pressione CTRL + D para salvar. Ponto Futuro: Tente seguir o comando e descubra o ponto mais importante: $ sort > new_sorted_names <sname $ cat new_sorted_names CINZA Próximo Cano ZEBRA Lar Experimente mais um exemplo para esclarecer sua ideia: $ tr "[az]" "[AZ]" < sname > cap_names $ cat cap_names VIVEK Acima Anterior Agora emita o seguinte comando. $ sort <sname> nomes_classificados $ cat nomes_classificados ashish babu vivek zebra No exemplo acima, o comando sort ($ sort <sname> sorted_names) recebe a entrada do arquivo sname e a saída do comando sort (ou seja, nomes classificados) é redirecionada para o arquivo sorted_names. Por que os argumentos da linha de comando são necessários http://www.cyberciti.biz/pdf/lsst/ch02sec15.html (2 de 2) [29/07/2002 18:52:06] LSST v1.05r3 > Capítulo 2 > Redirecionamento de saída/entrada padrão, ou seja, redirecionamento de entrada - saída Machine Translated by Google
  • 49. Comando usando Pipes Exemplos: Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 2: Introdução à programação Shell Significado ou uso de tubos A saída do comando ls é fornecida como entrada para o comando more, para que a saída seja impressa em uma página inteira de tela por vez. Pipe Definido como: "Um pipe nada mais é do que um local de armazenamento temporário onde a saída de um comando é armazenada e depois passada como entrada para o segundo comando. Pipes são usados para executar mais de dois comandos (vários comandos) na mesma linha de comando. " $ quem | wc-l $ ls -l | wc-l Sintaxe: comando1 | comando2 $ quem | organizar Um pipe é uma forma de conectar a saída de um programa à entrada de outro programa sem nenhum arquivo temporário. $ quem | classificar> lista_usuários A saída do comando who é fornecida como entrada para o comando sort Para que ele imprima a lista classificada de usuários O mesmo que acima, exceto que a saída do sort é enviada para (redirecionado) o arquivo user_list A saída do comando who é fornecida como entrada para o comando wc Para que ele imprimir o número do usuário que faz logon no sistema A saída do comando ls é fornecida como entrada para o comando wc Para que ele imprima o número de arquivos no diretório atual. Anterior $ ls | mais Próximo LSST v1.05r3 > Capítulo 2 > Tubulações http://www.cyberciti.biz/pdf/lsst/ch02sec16.html (1 de 2) [29/07/2002 18:52:08] Tubos Machine Translated by Google
  • 50. ieInput - Redirecionamento de saída determinado usuário está logado ou não) Anterior Redirecionamento de saída/entrada padrão Lar nome se ele está logado ou nada está impresso (Ver $ quem | grep raju comando Para que ele imprima se um usuário específico A saída do comando who é fornecida como entrada para grep Acima Próximo Filtro http://www.cyberciti.biz/pdf/lsst/ch02sec16.html (2 de 2) [29/07/2002 18:52:08] LSST v1.05r3 > Capítulo 2 > Tubulações Machine Translated by Google
  • 51. contém da linha número 20 à linha número 30 e armazene esse resultado em um arquivo chamado 'hlist' e depois forneça Suponha que você tenha um arquivo chamado 'hotel.txt' com dados de 100 linhas e de 'hotel.txt' você gostaria de imprimir Tutorial de script de shell do Linux (LSST) v1.05r3 comando: Aqui uniq é o filtro que recebe sua entrada do comando sort e passa essas linhas como entrada para uniq; Então A saída do uniqs é redirecionada para o arquivo "u_sname". Anterior Se um comando do Linux aceitar sua entrada da entrada padrão e produzir sua saída na saída padrão Considere mais um exemplo a seguir O que são processos $ sort < nome | uniq > seu_nome é conhecido como filtro. Um filtro executa algum tipo de processo na entrada e fornece saída. Por exemplo. linha número 20 de determinado arquivo, ou seja, hotel.txt) e passa essas linhas como entrada para head, cuja saída é Próximo Acima Próximo redirecionado para o arquivo 'hlist'. $ tail +20 < hotel.txt | head -n30 >hlista Capítulo 2: Introdução à programação Shell Tubos Lar Aqui o comando head é o filtro que recebe sua entrada do comando tail (o comando tail começa a selecionar em Anterior http://www.cyberciti.biz/pdf/lsst/ch02sec17.html [29/07/2002 18:52:09] LSST v1.05r3 > Capítulo 2 > Filtro Filtro Machine Translated by Google
  • 52. processo. Comando ls ou uma solicitação para listar arquivos em um diretório e todos os subdiretórios em seu diretório atual - é um Tutorial de script de shell do Linux (LSST) v1.05r3 Processo definido como: Próximo Por que o processo é necessário Processo é um tipo de programa ou tarefa realizada pelo seu PC. Por exemplo Lar Acima $ ls -lR Anterior Próximo Filtro "Um processo é um programa (comando dado pelo usuário) para realizar um trabalho específico. No Linux, quando você inicia Capítulo 2: Introdução à programação Shell processo, fornece um número para processar (chamado PID ou process-id), o PID começa de 0 a 65535." Anterior http://www.cyberciti.biz/pdf/lsst/ch02sec18.html [29/07/2002 18:52:11] LSST v1.05r3 > Capítulo 2 > O que são processos O que são processos Machine Translated by Google
  • 53. $ls/-R | wc-l comando como: Tutorial de script de shell do Linux (LSST) v1.05r3 Este comando levará muito tempo para pesquisar todos os arquivos do seu sistema. Então você pode executar esse comando em (PID), este PID pode ser usado para se referir a um processo específico em execução." Anterior O que são processos Como você sabe, o Linux é um sistema operacional multiusuário e multitarefa. Isso significa que você pode executar mais de dois processos Processo e PID definidos como: "Uma instância do comando em execução é chamada de processo e o número impresso pelo shell é chamado de process-id simultaneamente, se desejar. Por exemplo, para descobrir quantos arquivos você tem em seu sistema, você pode fornecer O e comercial (&) no final do comando informa aos shells para iniciar o processo (ls / -R | wc -l) e executá-lo em Anterior Próximo Comando(s) do Linux relacionados ao processo Próximo background executa o próximo comando imediatamente. Em segundo plano ou simultaneamente, dando um comando como Capítulo 2: Introdução à programação Shell Lar Acima $ls/-R | wc -l& http://www.cyberciti.biz/pdf/lsst/ch02sec19.html [29/07/2002 18:52:12] LSST v1.05r3 > Capítulo 2 > Por que o processo é necessário Por que o processo é necessário Machine Translated by Google
  • 54. Comando Linux relacionado ao processo Em relação a esta situação, responda à seguinte questão: process Para interromper todos os processos, exceto seu shell kill 0 Para processamento em segundo plano (com &, $ killall httpd se o servidor web Apache Próximo e outras informações como memória combinação com o comando grep Você está trabalhando em sua estação de trabalho Linux (pode estar aprendendo LSST ou algum outro trabalho como enviar Capítulo 2: Introdução à programação Shell ps aux kill process Para parar processos por nome, ou seja, para matar obs: Tutorial de script de shell do Linux (LSST) v1.05r3 Para ver o processo atualmente em execução Para parar qualquer processo por PID, ou seja, para $ matar 1012 NOTA que você só pode encerrar processos criados por você. Um administrador quase pode matar Use este comando comando linux & processos junto com os processos Para ver se um determinado processo é $ ps machado | grep httpd machado ps | grep process-U-quer-ver atualizações. pstree As tabelas a seguir são os comandos mais comumente usados com o processo: programa em segundo plano) $ matar 0 $ ps -ag use para colocar um comando específico e o processo está em execução ou não e uso da CPU em tempo real $pstree e-mails, digitando carta), enquanto fazia esse trabalho você começou a reproduzir arquivos MP3 em sua estação de trabalho. killall {Nome do processo} processo Para obter informações sobre todos os processos em execução matar {PID} Anterior Por exemplo, você quer ver Para ver os processos atualmente em execução $ps aux tem que usar o comando ps em principal Exercício: $ps $ls/-R | wc -l& correndo ou não. Para este propósito você Exemplos* $ superior Processo de 95-98%. Mas alguns processos não podem ser eliminados, como o processo VDU. Para exibir uma árvore de processos * Para executar parte deste comando você precisa ser usuário root ou equivalente. Para este propósito Para exibir o proprietário do ps-ag então dê o comando http://www.cyberciti.biz/pdf/lsst/ch02sec20.html (1 de 2) [29/07/2002 18:52:14] LSST v1.05r3 > Capítulo 3 > Comando Linux relacionado ao processo Veja a saída do comando superior. comando pressione q. Observe que para sair do topo Machine Translated by Google
  • 55. Por que o processo é necessário 4) Você não deseja ouvir música (arquivos MP3), mas deseja continuar com outro trabalho no PC, você executará uma das seguintes ações: 1. Desligue os alto-falantes 2. Desligue o computador / desligue o sistema operacional Linux 3. Mate o processo de reprodução de MP3 4. Nenhuma das opções acima Anterior Lar 2) Como você descobrirá o processo de execução (reprodução de MP3 e digitação de letras)? Clique aqui para obter respostas. 3) "Atualmente apenas dois processos estão rodando em seu ambiente Linux/PC", É Verdadeiro ou Falso?, E como você irá verificar isso? 1) É um exemplo de multitarefa? Acima Próximo Construções Linguagem estruturada Shells (bash) LSST v1.05r3 > Capítulo 3 > Comando Linux relacionado ao processo http://www.cyberciti.biz/pdf/lsst/ch02sec20.html (2 de 2) [29/07/2002 18:52:14] Machine Translated by Google
  • 56. decisões. O que o computador sabe é 0 (zero) e 1 que é Sim ou Não. Para deixar essa ideia clara, vamos jogar 5/2 mostrando 0 (Zero). Lembre-se de que em bc, a expressão relacional sempre retorna verdadeiro (1) ou falso (0 - zero). Anterior 5 é igual a 10 5 == 10 Significado para nós Resposta do BC Capítulo 3: Construções de linguagem estruturada de shells (bash) Existe alguma diferença na tomada de decisões na vida real e nos computadores? Bem, as decisões da vida real são bastante 7 é a resposta de bc, ou seja, adição de 5 + 2, você pode até tentar 0 Tutorial de script de shell do Linux (LSST) v1.05r3 • Ciclos 7 construções de linguagem como: 1 (Um?) é a resposta de bc, Como? bc compare 5 com 2, pois 5 é maior que 2, (se eu fizer a mesma pergunta para digite 5 + 2 como: 5! = 2 NÃO 5 > 12 Expressão 5 > 12 0 Tomar decisões é uma parte importante na vida do ONCE, bem como no programa orientado pela lógica dos computadores. Na verdade $bc 5 > 2 Veja o que aconteceu se você digitar 5 > 2 da seguinte maneira Próximo algum jogo (UAU!) com bc - programa de calculadora Linux. Tente seguir o bc para esclarecer sua ideia e não anular a resposta do bc 5 NÃO é igual a 2 0 complicado para todos nós e os computadores ainda não têm tanto poder para entender nossa vida real 5 - 2 0 (Zero) indica falso, ou seja, 5 é menor que 2?, Sua resposta será não, o que é indicado por bc por 5 é maior que 12 5! = 2 5 <2 12 <2 SIM 5 + 2 você, sua resposta será SIM), bc dá esta resposta 'SIM' mostrando 1 valor. Agora tente 5 == 5 • Tomada de decisão NÃO sua Resposta 1 a lógica não é LÓGICA até que você use a tomada de decisão. Este capítulo apresenta a estrutura estruturada do bash Depois que este comando bc for iniciado e aguardando seus comandos, ou seja, faça alguns cálculos como segue 1 5 == 10 LSST v1.05r3 > Capítulo 3 > Introdução http://www.cyberciti.biz/pdf/lsst/ch03.html (1 de 2) [29/07/2002 18:52:15] Introdução Machine Translated by Google
  • 57. Significado Valor Anterior 1 é menor que 2 1 < 2 No valor do shell do Linux não zero 0 5 == 5 1 Não/Falso Sim Falso/Não -1, 32, 55 tudo menos Próximo Lar e NÃO é outro. Exemplo Mostrado no Linux Shell como Mostrado em bc como Significa que sempre que houver algum tipo de comparação no Linux Shell dá apenas duas respostas, uma é SIM Sim, verdade Comando(s) do Linux relacionados ao processo 5 é igual a 5 Lembre-se de que tanto o bc quanto o Linux Shell usam maneiras diferentes de mostrar valores Verdadeiro/ Falso Valor Zero (0) Valor diferente de zero 0 Valor diferente de zero 1 se condição 1 SIM 0 Verdadeiro/Sim Acima http://www.cyberciti.biz/pdf/lsst/ch03.html (2 de 2) [29/07/2002 18:52:15] LSST v1.05r3 > Capítulo 3 > Introdução Machine Translated by Google
  • 58. comando1 se a condição for verdadeira ou se o status de saída da condição for 0 (zero) então Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3: Construções de linguagem estruturada de shells (bash) ... Digite os seguintes comandos (supõe que você tenha um arquivo chamado foo) $ cat foo $ echo $? O comando cat retorna zero (0), ou seja, status de saída, em caso de sucesso, isso pode ser usado, na condição if a seguir, Escreva o script shell como Sintaxe: Expressão é definida como: "Uma expressão nada mais é do que uma combinação de valores, operadores relacionais (como >,<, <> etc) e operadores matemáticos (como +, -, / etc)." A seguir estão todos os exemplos de expressão: 5 > 2 3 + 6 3 * 65 a < bc > 5 c > 5 + 30 -1 se condição Condição é definida como: "Condição nada mais é do que comparação entre dois valores." se a condição usada para tomada de decisão no shell script, se a condição fornecida for verdadeira, o comando1 será executado. Para compactação, você pode usar instruções test ou [expr] ou até mesmo o status existente também pode ser usado. ... Anterior Próximo fi http://www.cyberciti.biz/pdf/lsst/ch03sec01.html (1 de 3) [29/07/2002 18:52:16] LSST v1.05r3 > Capítulo 3 > se condição se condição Machine Translated by Google
  • 59. # Script para testar o comando rm e status existente # if rm $1 gato > trmif # $ cat > showfile #!/bin/sh # #Script para imprimir o arquivo # if cat $1 então Anterior Lar Próximo Exercício (C) E se você digitar $ ./trmfi Qual será a saída? Para resposta clique aqui. Escreva o script shell da seguinte maneira: Responda à seguinte pergunta com referência ao script acima: (A) o arquivo foo existe em seu disco e você dá o comando, $ ./trmfi foo qual será a saída? Execute o script acima como: $ chmod 755 showfile $./showfile foo O nome do script do shell é showfile ($0) e foo é o argumento (que é $1). Em seguida, compare-o como segue: if cat $1 que é expandido para if cat foo. Explicação detalhada se o comando cat encontrar o arquivo foo e se for mostrado com sucesso na tela, significa que nosso comando cat foi bem-sucedido e seu status de existência é 0 (indica sucesso). Portanto, nossa condição if também é verdadeira e, portanto, a instrução echo -e "n nArquivo $1, encontrado e ecoado com sucesso" é processado pelo shell. Agora, se o comando cat não for bem-sucedido, ele retornará um valor diferente de zero (indica algum tipo de falha) e esta instrução echo -e "nnArquivo $1, encontrado e ecoado com sucesso" será ignorada pelo nosso shell. (B) Se o arquivo bar não estiver presente em seu disco e você der o comando $ ./trmfi bar , o que será gerado? echo "$1 arquivo excluído" fi então echo -e "nnArquivo $1, encontrado e ecoado com sucesso" fi Pressione Ctrl + d para salvar $ chmod 755 trmif http://www.cyberciti.biz/pdf/lsst/ch03sec01.html (2 de 3) [29/07/2002 18:52:16] LSST v1.05r3 > Capítulo 3 > se condição Machine Translated by Google
  • 60. Acima Construções Linguagem estruturada Shells (bash) comando de teste ou [expr] http://www.cyberciti.biz/pdf/lsst/ch03sec01.html (3 de 3) [29/07/2002 18:52:16] LSST v1.05r3 > Capítulo 3 > se condição Machine Translated by Google
  • 61. echo "$1 número é positivo" fi $ cat > ispositivo #!/bin/sh # # Script para ver se o argumento é positivo # if test $1 -gt 0 then Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3: Construções de linguagem estruturada de shells (bash) Execute-o da seguinte maneira: $ chmod 755 ispostive , para evitar tal erro, podemos testar se o argumento da linha de comando , Sintaxe: expressão de teste OU [expressão] Explicação detalhada A linha, if test $1 -gt 0 test para ver se o primeiro argumento da linha de comando ($1) é maior que 0. Se for verdadeiro (0), então o teste retornará 0 e a saída será impressa como 5, o número é positivo, mas para Argumento -45, não há saída porque nossa condição não é verdadeira (0) (nenhum -45 não é maior que 0), portanto, a instrução echo é ignorada. E para a última instrução não fornecemos nenhum argumento, portanto, erro ./ispostive: test: -gt: operador unário esperado, é gerado pelo shell é fornecido ou não. Exemplo: o script a seguir determina se o número do argumento fornecido é positivo. Nada é impresso O comando test ou [expr] é usado para ver se uma expressão é verdadeira e, se for verdadeira, retorna zero (0), caso contrário, retorna diferente de zero para falso. $ispostive ./ ispostive: teste: -gt: operador unário esperado $ ispostive 5 5 número é positivo Anterior test ou [expr] funciona com 1.Integer (Número sem ponto decimal) 2.Tipos de arquivo 3.Sequências de caracteres Próximo $ispositivo -45 http://www.cyberciti.biz/pdf/lsst/ch03sec02.html (1 de 3) [29/07/2002 18:52:17] LSST v1.05r3 > Capítulo 3 > comando de teste ou [expr] comando de teste ou [expr] Machine Translated by Google
  • 62. Shell também testa tipos de arquivos e diretórios declaração com Operadores lógicos são usados para combinar duas ou mais condições ao mesmo tempo string1 string1 NÃO é NULL ou não está definida -n string1 string1 NÃO é NULL e existe -ge -d diretório se [5 -ne 6] ou igual a Lógico NÃO Significado Para comparações de strings, use -ne Aritmética Normal/ É um arquivo gravável -x arquivo se [5 -ge 6] se teste 5 -gt 6 declaração com -w arquivo se [5 -le 6] se [5 -lt 6] se comando É um arquivo somente leitura Significado do Operador Matemático -lt se teste 5 -ge 6 se comando Teste Lógico E é igual a não é igual a 5! = 6 é menor que 5 <6 Matemático Arquivo não vazio 5 <= 6 se [5 -gt6] Significado -r arquivo O arquivo é executável string1 = string2 string1 é igual a string2 -le Declarações O arquivo existe ou é um arquivo normal e não um diretório -s arquivo é menor que ou se teste 5 -eq 6 se teste 5 -ne 6 -z string1 string1 é NULL e existe se teste 5 -lt 6 5 == 6 Operador no Shell 5 >= 6 Operador ! expressão expressão1 -uma expressão2 Operadores lógicos -gt Para teste Para matemática, use o seguinte operador no Shell Script Mas na Shell string1 != string2 string1 NÃO é igual a string2 -f arquivo igual a é maior que 5 > 6 é maior que se [5 -eq 6] NOTA: == é igual, != não é igual. -eq Roteiro O diretório existe e não é um arquivo Para [expr] se teste 5 -le 6 Significado LSST v1.05r3 > Capítulo 3 > comando de teste ou [expr] http://www.cyberciti.biz/pdf/lsst/ch03sec02.html (2 de 3) [29/07/2002 18:52:17] Machine Translated by Google
  • 63. Próximo comando) Acima se...senão...fi Anterior Tomada de decisão em shell script (ou seja, se Lar OU lógico expressão1 -o expressão2 http://www.cyberciti.biz/pdf/lsst/ch03sec02.html (3 de 3) [29/07/2002 18:52:17] LSST v1.05r3 > Capítulo 3 > comando de teste ou [expr] Machine Translated by Google
  • 64. a condição é zero (verdadeiro - 0) execute todos os comandos até a instrução else então Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3: Construções de linguagem estruturada de shells (bash) se a condição não for verdadeira, execute todos os comandos até fi echo "$1 número é positivo" else echo "$1 número é negativo" fi Experimente da seguinte maneira: $ chmod 755 isnump_n Próximo echo "$0: Você deve fornecer/fornecer um número inteiro" exit 1 fi se testar $1 -gt 0 então se condição Por exemplo, escreva o script da seguinte maneira: Sintaxe: Anterior $ vi isnump_n #!/bin/sh # # Script para ver se o argumento é positivo ou negativo # if [ $# -eq 0 ] then outro $ isnump_n 5 5 número é positivo $ isnump_n -45 Se a condição fornecida for verdadeira, o comando1 será executado, caso contrário, o comando2 será executado. fi http://www.cyberciti.biz/pdf/lsst/ch03sec03.html (1 de 4) [29/07/2002 18:52:18] LSST v1.05r3 > Capítulo 3 > if...else...fi se...senão...fi Machine Translated by Google
  • 65. A última amostra executada $ isnump_n 0 fornece a saída como "0 número é negativo", porque o argumento fornecido não é> 0, portanto, a condição é falsa e é considerada um número negativo. Para evitar isso, substitua a segunda instrução if por if test $1 -ge 0. -45 número é negativo Você pode escrever toda a construção if-else no corpo da instrução if ou no corpo de uma instrução else. Isso é chamado de aninhamento de ifs. | | 2 echo "Você escolhe Unix (Sun Os)" else #### aninhado if, ou seja, se dentro de if ###### 1 imprimirá o nome do script 2 imprimirá esta mensagem de erro E, finalmente, a instrução exit 1 causa o encerramento normal do programa com status de saída 1 (diferente de zero significa que o script não foi executado com êxito). se [$osch -eq 1] Explicação detalhada O primeiro script verifica se o argumento da linha de comando é fornecido ou não, se não for fornecido, ele imprime a mensagem de erro como "./ ispos_n: Você deve fornecer/ fornecer um número inteiro". A instrução if verifica se o número de argumentos ($#) passados para o script não é igual (-eq) a 0, se passamos algum argumento para o script, então esta instrução if é falsa e se nenhum argumento de linha de comando for fornecido, então esta instrução if é verdadeiro. O comando echo, ou seja, echo "$0: Você deve fornecer/fornecer um número inteiro" | | 1 ; então $ vi nestedif.sh osch=0 $ isnump_n ./ ispos_n : Você deve fornecer/ fornecer um número inteiro echo "1. Unix (Sun Os)" echo "2. Linux (Red Hat)" echo -n "Selecione sua escolha de sistema operacional [1 ou 2]?" leia osch $ isnump_n 0 0 número é negativo http://www.cyberciti.biz/pdf/lsst/ch03sec03.html (2 de 4) [29/07/2002 18:52:18] LSST v1.05r3 > Capítulo 3 > if...else...fi If-else-fi aninhado Machine Translated by Google
  • 66. $ ./nestedif.sh 1. Unix (Sun Os) então outro echo "O que você não gosta do sistema operacional Unix/Linux." ; então ecoe "Você escolhe Linux (Red Hat)" 2. Linux (Chapéu Vermelho) então fazem isto se [$osch -eq 2] $ ./nestedif.sh 1. Unix (Sun Os) se condição 2. Linux (Chapéu Vermelho) outro Você também pode usar os ifs aninhados da seguinte maneira: fi Selecione sua opção [1 ou 2]? 3 O que você não gosta do sistema operacional Unix/ Linux. .. ..... fi 2. Linux (Chapéu Vermelho) outro se condição Selecione sua opção [1 ou 2]? 2 Você escolhe Linux (Red Hat) fi .. Sintaxe: .... Selecione sua opção [1 ou 2]? 1 Você escolhe Unix (Sun Os) Execute o script de shell acima da seguinte maneira: $ chmod +x nestedif.sh $ ./ nestedif.sh 1. Unix (Sun Os) Observe que a segunda construção if-else está aninhada na primeira instrução else . Se a condição na primeira instrução if for falsa, a condição na segunda instrução if será verificada. Se também for falso, a instrução else final será executada. fazem isto http://www.cyberciti.biz/pdf/lsst/ch03sec03.html (3 de 4) [29/07/2002 18:52:18] LSST v1.05r3 > Capítulo 3 > if...else...fi Machine Translated by Google
  • 67. Acima fi Lar Próximo fazem isto Comando de teste anterior ou [expr] ..... ... Multinível if-then-else http://www.cyberciti.biz/pdf/lsst/ch03sec03.html (4 de 4) [29/07/2002 18:52:18] LSST v1.05r3 > Capítulo 3 > if...else...fi Machine Translated by Google
  • 68. condição de Elif1 a condição é zero (verdadeiro - 0) execute todos os comandos até a instrução elif Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3: Construções de linguagem estruturada de shells (bash) então fi Para instrução if-then-else multinível, tente o seguinte script: $ cat > elf # #!/bin/sh # Script para testar if..elif...else # if [ $1 -gt 0 ]; então se condição outro Nenhuma das condições acima, condição1, condição2 são verdadeiras (ou seja, todas as anteriores diferentes de zero ou falsas) execute todos os comandos até fi então então Próximo Sintaxe: condição2 é zero (verdadeiro - 0) execute todos os comandos até a instrução elif condição1 é zero (verdadeiro - 0) execute todos os comandos até a instrução elif echo "$1 é positivo" elif [ $1 -lt 0 ] então echo "$1 é negativo" elif [ $1 -eq 0 ] então echo "$1 é zero" else echo "Ops! $1 não é número, dê o número" fi Tente o script acima da seguinte maneira: $ chmod 755 elf $ ./elf 1 $ ./elf -2 $ ./elf 0 $ ./elf a Aqui o/p para a última execução de amostra: ./elf: [: -gt: unary operador esperado ./elf: [: -lt: operador unário esperado ./elf: [: -eq: operador unário esperado Ops! a não é número, dê o número condição de Elif2 Anterior http://www.cyberciti.biz/pdf/lsst/ch03sec04.html (1 de 2) [29/07/2002 18:52:19] LSST v1.05r3 > Capítulo 3 > Multinível if-then-else Multinível if-then-else Machine Translated by Google
  • 69. Anterior if...else...fi Acima esperado" ocorre, mas ainda assim nosso programa notifica esse erro ao usuário fornecendo a mensagem "Opps! a não é um número, dê um número". O programa acima apresenta erro na última execução, aqui a comparação de inteiros é esperada, portanto, erros como "./ elf: [: -gt: operador unário Loops em scripts de shell Lar Próximo LSST v1.05r3 > Capítulo 3 > Multinível if-then-else http://www.cyberciti.biz/pdf/lsst/ch03sec04.html (2 de 2) [29/07/2002 18:52:19] Machine Translated by Google
  • 70. Bash suporta: grupo de instruções que é executado repetidamente é chamado de loop." Tutorial de script de shell do Linux (LSST) v1.05r3 • loop for Multinível if-then-else Lar Acima Laço definido como: (c) O corpo do loop termina com uma instrução que modifica o valor da variável de teste (condição). Anterior “O computador pode repetir instruções específicas continuamente, até que uma condição específica seja satisfeita. (a) Primeiro, a variável usada na condição do loop deve ser inicializada e, em seguida, a execução do loop começa. Anterior Próximo (b) Um teste (condição) é feito no início de cada iteração. • ciclo while Capítulo 3: Construções de linguagem estruturada de shells (bash) Próximo para loop Observe que em cada loop, http://www.cyberciti.biz/pdf/lsst/ch03sec05.html [29/07/2002 18:52:23] LSST v1.05r3 > Capítulo 3 > Loops em Shell Scripts Loops em scripts de shell Machine Translated by Google
  • 71. Sintaxe: execute um para cada item da lista até que a lista não termine (e repita todas as instruções entre do e done) feito $ cat > mtable #!/bin/sh # #Script para testar o loop # # if [ $# -eq 0 ] then echo "Erro - Número faltando no argumento da linha de comando do formulário" echo "Sintaxe: $0 número" echo "Use para imprimir tabela de multiplicação para determinado número" exit 1 fi n=$1 for i in 1 2 3 4 5 6 7 8 9 10 do echo "$n * $i = `expr $i * $n`" pronto Próximo para {nome da variável} em {lista} faça Anterior Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3: Construções de linguagem estruturada de shells (bash) $ cat > testfor for i in 1 2 3 4 5 do echo "Bem-vindo $i vezes" concluído Execute o script acima da seguinte maneira: $ chmod +x testfor $ ./ testfor O loop for primeiro cria a variável i e atribui um número a i da lista de números de 1 a 5. O shell executa a instrução echo para cada atribuição de i. (Isso geralmente é conhecido como iteração) Este processo continuará até que todos os itens da lista sejam concluídos, por isso repetirá 5 instruções de eco. Para deixar sua ideia mais clara, tente o seguinte script: Antes de tentar entender a sintaxe acima, tente o seguinte script: Salve o script acima e execute-o como: $ chmod 755 mtable $ ./ mtable 7 $ ./ mtable Para a primeira execução, o script acima imprime a tabela de multiplicação de um determinado número onde i = 1,2 ... 10 é multiplicado por determinado n (aqui LSST v1.05r3 > Capítulo 3 > Loop for http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (1 de 5) [29/07/2002 18:52:26] para Loop Machine Translated by Google
  • 72. para ((expr1; expr2; expr3)) faça Sintaxe: argumento de linha de comando 7) para produzir a tabuada como 7 * 1 = 7 7 * 2 = 14 ..... $ cat > for2 for (( i = 0 ; i <= 5; i++ )) do echo "Bem-vindo $i vezes" concluído Execute o script acima da seguinte maneira: $ chmod +x for2 $ ./ for2 Bem-vindo 0 vezes Bem-vindo 1 vezes Bem-vindo 2 vezes Bem-vindo 3 vezes Bem-vindo 4 vezes Bem-vindo 5 vezes No exemplo acima, a primeira expressão (i = 0) é usada para definir a variável de valor i como zero. Observe que para encerrar nosso script usamos o comando 'exit 1' que leva 1 como argumento (1 indica erro e, portanto, o script foi encerrado) Todas as instruções entre do e done são executadas repetidamente ATÉ que o valor de expr2 seja TRUE. APÓS cada iteração do loop, expr3 é avaliado. Isso geralmente é usado para incrementar um contador de loop. Até você pode usar a seguinte sintaxe: Feito 7 * 10 = 70 E para a segunda execução de teste, ele imprimirá a mensagem - Erro - Número faltando no formulário argumento da linha de comando Sintaxe: ./mtable number Use para imprimir a tabela de multiplicação para um determinado número Isso aconteceu porque não fornecemos o número para o qual desejamos a tabuada. Portanto, o script está mostrando mensagem de erro, sintaxe e uso do nosso script. É uma boa ideia se nosso programa receber algum argumento, informar ao usuário qual é a utilização do script e como usá-lo. Na sintaxe acima ANTES da primeira iteração, expr1 é avaliado. Isso geralmente é usado para inicializar variáveis para o loop. ... ... A segunda expressão é a condição, ou seja, todas as instruções entre do e done executadas desde que a expressão 2 (ou seja, continue enquanto o valor da variável i for menor ou equivalente a 5) for TRUE. A última expressão i++ incrementa o valor de i em 1, ou seja, é equivalente à instrução i = i + 1. .. repita todas as instruções entre do e done até que expr2 seja TRUE http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (2 de 5) [29/07/2002 18:52:26] LSST v1.05r3 > Capítulo 3 > Loop for Machine Translated by Google
  • 73. Aninhamento de for Loop http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (3 de 5) [29/07/2002 18:52:26] LSST v1.05r3 > Capítulo 3 > Loop for feito echo "" #### imprime a nova linha ### Execute o script acima da seguinte forma: $ chmod +x nestedfor.sh $ ./ nestefor.sh 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 fi echo -e -n "033[40m" #### volta a cor de fundo para preto echo "" #### imprime a nova linha ### pronto feito eco -n "$i" tot=`expr $i + $j` tmp=`expr $tot % 2` se [ $tmp -eq 0 ]; então echo -e -n "033[47m " senão echo -e -n "033[40m " feito $ vi tabuleiro de xadrez for (( i = 1; i <= 9; i++ )) ### Outer for loop ### do ### Loop for externo ### for (( j = 1 ; j <= 5; j++ )) ### Loop for interno ### do for (( j = 1 ; j <= 9; j++ )) ### Loop for interno ### do Aqui, para cada valor de i, o loop interno é alternado 5 vezes, com a variável j assumindo valores de 1 a 5. O loop for interno termina quando o valor de j excede 5, e o loop externo termina quando o valor de i excede 5. Como você pode ver, a instrução if pode ser aninhada, da mesma forma, a instrução de loop pode ser aninhada. Você pode aninhar o loop for. Para entender o aninhamento do loop for, consulte o script de shell a seguir. Execute o script acima da seguinte maneira: $ chmod +x tabuleiro de xadrez $ ./chessboard $ vi nestedfor.sh for (( i = 1; i <= 5; i++ )) fazer O script a seguir é bastante interessante, pois imprime o tabuleiro de xadrez na tela. Machine Translated by Google
  • 74. para (( j = 1 ; j <= 9; j++ )) faça para (( i = 1; i <= 9; i++ )) faça No meu terminal acima, o script produz a saída da seguinte forma: tot=`expr $i + $j` tmp=`expr $tot % 2` se [ $tmp -eq 0 ]; então O fim do loop externo e os scripts de shell são encerrados com a impressão do tabuleiro de xadrez. Exercício Tente entender os scripts shell (for loops) mostrados no capítulo do exercício. feito Se a posição do número par imprimir o bloco de cor branca (usando a instrução echo -e -n "033[47m " ); caso contrário, para uma posição ímpar, imprima a caixa de cor preta (usando a instrução echo -e -n "033[40m " ). Estas declarações são responsáveis por imprimir todo o tabuleiro de xadrez na tela com cores alternativas. eco "" Imprima a linha em branco Fim do loop interno Certifique-se de que seu fundo seja preto, como sempre fazemos em nossos terminais. feito Explicação Comece o loop externo que é executado 9 vezes, e o loop externo termina quando o valor de i excede 9 Inicia o loop interno, para cada valor de i o loop interno é alternado 9 vezes, com a variável j assumindo valores de 1 para 9. O loop for interno termina quando o valor de j excede 9. Veja as posições de números pares e ímpares usando essas instruções. eco -e -n "033[40m" echo -e -n "033[47m " senão echo -e -n "033[40m " O script de shell acima pode ser explicado da seguinte forma: Comando(s)/Declarações fi LSST v1.05r3 > Capítulo 3 > Loop for http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (4 de 5) [29/07/2002 18:52:26] Machine Translated by Google
  • 75. Loops em scripts de shell Próximo Lar Anterior Acima enquanto loop http://www.cyberciti.biz/pdf/lsst/ch03sec06.html (5 de 5) [29/07/2002 18:52:26] LSST v1.05r3 > Capítulo 3 > Loop for Machine Translated by Google
  • 76. .... .. Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3: Construções de linguagem estruturada de shells (bash) feito Salve-o e tente como $ chmod 755 nt1 $./ nt1 7 O loop acima pode ser explicado da seguinte forma: enquanto [condição] faça exit 1 fi n=$1 i=1 enquanto [ $i -le 10 ] faça echo "$n * $i = `expr $i * $n`" i=`expr $i + 1` concluído comando1 comando2 comando3 echo "Erro - Número faltando no argumento da linha de comando do formulário" echo "Sintaxe: $0 número" Próximo Sintaxe: Use para imprimir a tabuada de multiplicação para um determinado número" echo " O loop é executado enquanto a condição dada for verdadeira. Por exemplo. O programa for loop acima (mostrado na última seção do loop for) pode ser escrito usando o loop while como: $cat > nt1 #!/bin/sh # #Script para testar a instrução while # # if [ $# -eq 0 ] then Anterior http://www.cyberciti.biz/pdf/lsst/ch03sec07.html (1 de 2) [29/07/2002 18:52:28] LSST v1.05r3 > Capítulo 3 > A declaração do caso enquanto loop Machine Translated by Google
  • 77. enquanto [$i -le 10] o programa só produzirá feito Esta é a nossa condição de loop, aqui se o valor de i for menor variável (Aqui está definido como 7 ) n=$1 Cuidado: Se você ignorar (remover) esta instrução, nosso loop se tornará um loop infinito porque o valor condição do loop não é verdadeira. Por isso Defina o valor do argumento da linha de comando como 7 * 2 = 14 Aumente i em 1 e armazene o resultado em i. (ou seja, eu = eu + 1) Imprimir tabela de multiplicação como ... 7 * 10 = 70, aqui cada valor de tempo da variável n é Próximo Lar fazer e pronto echo "$n * $i = `expr $i * $n`" i=`expr $i + 1` 7 * 1 = 7 maior que 10 então, o shell executa todas as instruções entre fazer Anterior para loop Defina a variável i como 1 da variável i sempre permanece menor que 10 e eu=1 o loop é encerrado. O loop para aqui se i não for menor que 10, ou seja multiplique seja eu. E (vezes infinitas) A declaração do caso 7 * 1 = 7 Iniciar ciclo .... ... Acima http://www.cyberciti.biz/pdf/lsst/ch03sec07.html (2 de 2) [29/07/2002 18:52:28] LSST v1.05r3 > Capítulo 3 > A declaração do caso Machine Translated by Google
  • 78. .. aluguel="*** Veículo desconhecido ***" elif [ -n $1 ] then ... Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3: Construções de linguagem estruturada de shells (bash) comando;; comando padrão2) comando;; comando *) ... # caso contrário, faça o primeiro argumento como aluguel Sintaxe: ... $ cat > car # # se nenhum nome de veículo for fornecido # ou seja, -z $1 é definido e é NULL # # se nenhum argumento de linha de comando .. case $ nome da variável no comando padrão1) se [-z $1] então comando;; Próximo esac O $variable-name é comparado com os padrões até que uma correspondência seja encontrada. O shell então executa todas as instruções até os dois pontos e vírgulas próximos um do outro. O padrão é *) e será executado se nenhuma correspondência for encontrada. Por exemplo, escreva o script da seguinte forma: A instrução case é uma boa alternativa à instrução multinível if-then-else-fi. Ele permite que você combine vários valores com uma variável. É mais fácil ler e escrever. comando padrãoN) ... .. comando;; Anterior .. http://www.cyberciti.biz/pdf/lsst/ch03sec08.html (1 de 2) [29/07/2002 18:52:32] LSST v1.05r3 > Capítulo 3 > A declaração do caso A declaração do caso Machine Translated by Google
  • 79. Para o segundo teste, imprima "Para carro Rs.20 por km/ m". Salve-o pressionando CTRL+D e execute-o da seguinte forma: $ chmod +x car $ car van $ car car $ car Maruti-800 Para o primeiro teste, combine com a van e mostrará a saída "Para van Rs.10 por km/ m." Anterior while loop esac O primeiro script verificará se $1 (primeiro argumento da linha de comando) é fornecido ou não, se NÃO for fornecido, defina o valor da variável de aluguel como "*** Veículo desconhecido ***", se o argumento da linha de comando for fornecido/fornece o valor definido de variável de aluguel para determinado valor (linha de comando arg). O aluguel $ é comparado com os padrões até que uma correspondência seja encontrada. case $aluguel em "carro") echo "Por $aluguel Rs.20 por km/m";; "van") echo "Por $ aluguel Rs.10 por km/m";; "jipe") echo "Por $ aluguel Rs.5 por km/m";; "bicicleta") echo "Por $aluguel 20 paisa por km/m";; *) echo "Desculpe, não consigo alugar $ para você";; aluguel = $ 1 fi Lar Observe que esac é sempre necessário para indicar a declaração de fim de caso. E para a última execução, não há correspondência para Maruti-800, portanto, o padrão, ou seja, *) é executado e imprime: "Desculpe, não consigo obter um Maruti-800 para você". Acima Próximo Como depurar o shell script? Veja mais um exemplo de instrução case no capítulo 4 da seção comando shift. http://www.cyberciti.biz/pdf/lsst/ch03sec08.html (2 de 2) [29/07/2002 18:52:32] LSST v1.05r3 > Capítulo 3 > A declaração do caso Machine Translated by Google
  • 80. A opção pode ser -v Imprimir linhas de entrada do shell à medida que são lidas. -x Depois de expandir cada comando simples, o bash exibe o valor expandido da variável do sistema PS4, seguido pelo comando e seus argumentos expandidos. OU opção bash {shell-script-name} Exemplo: $ cat > dsh1.sh # # Script para mostrar a depuração do shell # tot=`expr $1 + $2` echo $tot Anterior Ao programar o shell, às vezes você precisa encontrar os erros (bugs) no script do shell e corrigi-los (remover erros - depurar). Para este propósito, você pode usar as opções -v e -x com o comando sh ou bash para depurar o script de shell. A sintaxe geral é a seguinte: Sintaxe: sh option {shell-script-name } Próximo Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 3: Construções de linguagem estruturada de shells (bash) Pressione ctrl + d para salvar e execute-o como $ chmod 755 dsh1.sh $ ./dsh1.sh 4 5 9 $ sh -x dsh1.sh 4 5 # # Script para mostrar a depuração do shell # tot=`expr $1 + $2` expr $1 + $2 ++ expr 4 + 5 + tot=9 echo $tot + echo 9 9 Veja a saída acima, -x mostra os valores exatos das variáveis (ou as instruções são mostradas na tela com valores). LSST v1.05r3 > Capítulo 3 > Como depurar o shell script? http://www.cyberciti.biz/pdf/lsst/ch03sec09.html (1 de 2) [29/07/2002 18:52:33] Como depurar o shell script? Machine Translated by Google
  • 81. Próximo A declaração do caso Acima Anterior Lar Use a opção -v para depurar scripts de shell complexos. $ sh -v dsh1.sh 4 5 Script avançado de shell http://www.cyberciti.biz/pdf/lsst/ch03sec09.html (2 de 2) [29/07/2002 18:52:33] LSST v1.05r3 > Capítulo 3 > Como depurar o shell script? Machine Translated by Google
  • 82. • Interface do usuário • Funções Tutorial de script de shell do Linux (LSST) v1.05r3 • Execução condicional Acima Próximo /dev/null - para enviar saída indesejada de Depois de aprender a base do script de shell, é hora de aprender mais recursos avançados de script/comando de shell Como depurar o shell script? Lar como: • Manipulação de vários argumentos de linha de comando, etc. Próximo Anterior • Descritores de arquivos Capítulo 4: Comandos avançados de script de shell programa Anterior • armadilhas http://www.cyberciti.biz/pdf/lsst/ch04.html [29/07/2002 18:52:35] LSST v1.05r3 > Capítulo 4 > Introdução Introdução Machine Translated by Google
  • 83. comando> /dev/null Variável local e global do Shell (exportação Sintaxe: Tutorial de script de shell do Linux (LSST) v1.05r3 Exemplo: Execute os dois comandos a seguir $ ls > /dev/nulo $ rm > /dev/nulo comando) partição e sistema de arquivos. Acima Ponto Futuro: Este é um arquivo especial do Linux que é usado para enviar qualquer saída indesejada do programa/comando. Próximo outros arquivos do dispositivo. Os arquivos neste diretório representam principalmente dispositivos periféricos, como disquetes Próximo Comandos avançados de script de shell Lar disco, placa de som, impressoras de linha etc. Veja o tutorial do sistema de arquivos para obter mais informações sobre o disco Linux, $ ls > /dev/nulo Capítulo 4: Comandos avançados de script de shell 1) Por que a saída do último comando não é redirecionada para o dispositivo /dev/null? Anterior A saída do comando acima não é mostrada na tela e é enviada para este arquivo especial. O diretório /dev contém Anterior LSST v1.05r3 > Capítulo 4 > /dev/null - Use para enviar saída indesejada do programa http://www.cyberciti.biz/pdf/lsst/ch04sec1.html [29/07/2002 18:52:36] do programa /dev/null - Use para enviar saída indesejada Machine Translated by Google
  • 84. Ônibus Carro $ saída $ echo $ vech Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell Comando $ vech=Car $ echo $vech Imprime o conteúdo da variável vech Sair do segundo shell retornar para o primeiro shell $ saída Considere o seguinte exemplo $ vech=Bus $ echo $vech Bus $ / bin/bash $ echo $vech $ /bin/bash Sintaxe: exportar variável1, variável2,.....variávelN Crie uma nova variável local 'vech' com Car como valor no segundo shell NOTA: -Linha vazia impressa $ vech=Car $ echo $vech $ vech=Bus $ echo $vech Imprime o conteúdo da variável vech Shell global definido como: "Você pode copiar a variável do shell antigo para o novo shell (ou seja, a variável do primeiro shell para o shell do segundo), tal variável é conhecida como variável Global Shell." Para definir a variável global você deve usar o comando export. Normalmente todas as nossas variáveis são locais. A variável local pode ser usada no mesmo shell, se você carregar outra cópia do shell (digitando /bin/bash no prompt $), então o novo shell ignorou todas as variáveis do shell antigo. Por exemplo Agora carregue o segundo shell na memória (que ignora todas as variáveis do shell antigo) $ echo $vech Imprima o conteúdo da variável vech Significado Anterior $ echo $vech Imprima o conteúdo da variável vech (agora você pode ver a primeira variável shell e seu valor) Próximo Crie uma nova variável local 'vech' com Bus como valor no primeiro shell http://www.cyberciti.biz/pdf/lsst/ch04sec2.html (1 de 2) [29/07/2002 18:52:41] LSST v1.05r3 > Capítulo 4 > Variável Shell local e global (comando de exportação Variável Shell Local e Global (comando de exportação) Machine Translated by Google
  • 85. Significado $ /bin/bash Ônibus $vech=Ônibus Ônibus se forem exportados ) Próximo Exemplos: $ echo $vech Agora carregue o segundo shell na memória (a variável do shell antigo é acessada a partir do segundo shell, Ônibus programa véspera $ /bin/bash $ echo $vech Imprime o conteúdo da variável vech $ exit $ echo $vech Imprime o conteúdo da variável vech Sair do segundo shell retornar para o primeiro shell $ exportar dia $ vech=Bus Crie uma nova variável local 'vech' com Bus como valor no primeiro shell $ echo $vech $ echo $vech Imprime o conteúdo da variável vech Comando Execução condicional, ou seja, && e || Acima Exporte a primeira variável do shell para o segundo shell, ou seja, a variável global Lar $ saída $ echo $vech $ exportação Anterior /dev/null - para enviar saída indesejada de http://www.cyberciti.biz/pdf/lsst/ch04sec2.html (2 de 2) [29/07/2002 18:52:41] LSST v1.05r3 > Capítulo 4 > Variável Shell local e global (comando de exportação Machine Translated by Google
  • 86. command2 é executado se e somente se command1 retornar um status de saída diferente de zero. a instrução é executada, caso contrário, a instrução "echo File is not removido" é executada (uma vez que o status existente é Anterior Capítulo 4: Comandos avançados de script de shell Sintaxe: $ rm myf && echo "Arquivo removido com sucesso" || echo "Arquivo não foi removido" Próximo Tutorial de script de shell do Linux (LSST) v1.05r3 A sintaxe para a lista OR é a seguinte Exemplo: comando1 && comando2 comando) se o comando1 for executado com sucesso, o shell executará o comando2 e se o comando1 não for bem-sucedido Os operadores de controle são && (lido como AND) e || (leia como OU). A sintaxe para a lista AND é a seguinte Sintaxe: Anterior diferente de zero) Próximo Você pode usar ambos da seguinte maneira comando1 || comando2 Se o arquivo (myf) for removido com sucesso (o status de existência é zero), então "echo O arquivo foi removido com sucesso" Redirecionamento de E/S e descritores de arquivo Acima então o comando3 é executado. Lar command2 é executado se, e somente se, command1 retornar um status de saída zero. Sintaxe: command1 && comamnd2 se o status existir for zero || comando3 se o status de saída for diferente de zero Variável local e global do Shell (exportação LSST v1.05r3 > Capítulo 4 > Execução condicional, ou seja, && e || http://www.cyberciti.biz/pdf/lsst/ch04sec3.html [29/07/2002 18:52:44] Execução condicional, ou seja, && e || Machine Translated by Google
  • 87. O comando acima envia a saída do comando cat para o arquivo myf Considere o seguinte exemplo $ cat > myf Este é meu arquivo ^D (pressione CTRL + D para salvar o arquivo) $ cal O comando acima imprime o calendário na tela, mas se você deseja armazenar este calendário em um arquivo, dê o comando $ cal > mycal O comando cal envia a saída para o arquivo mycal. Isso é chamado de redirecionamento de saída. $ sort 10 -20 11 2 ^D -20 2 10 11 O comando sort recebe a entrada do teclado e, em seguida, classifica o número e imprime (envia) a saída para a própria tela. Se você deseja obter informações do arquivo (para o comando sort), dê o comando da seguinte forma: $ cat > nos 10 -20 11 2 ^D $ sort < nos -20 2 10 11 Primeiro você criou o arquivo nos usando o comando cat, depois nos arquivo fornecido como entrada para o comando sort que imprime números classificados. Isso é chamado de redirecionamento de entrada. No Linux (e na linguagem de programação C), seu teclado, tela, etc. são todos tratados como arquivos. A seguir estão os nomes de tais arquivos Anterior Como você sabe, os redirecionadores de E/S são usados para enviar a saída do comando para o arquivo ou para ler a entrada do arquivo. Próximo Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell http://www.cyberciti.biz/pdf/lsst/ch04sec4.html (1 de 3) [29/07/2002 18:52:45] LSST v1.05r3 > Capítulo 4 > Redirecionamento de E/S e descritores de arquivo Redirecionamento de E/S e descritores de arquivo Machine Translated by Google
  • 88. 1 Sintaxe: Ainda assim, ele imprime a saída em stderr como rm: não é possível remover `bad_file_name111': Nenhum arquivo ou diretório, e se Usar $ gato > demonstração Execute-o da seguinte maneira: exemplo, escrevendo shell script da seguinte maneira: resposta=`expr $1 + $2` número 0 três arquivos são abertos automaticamente pelo seu shell). O uso dos dois primeiros arquivos (ou seja, stdin e stdout), já vistos por nós. O último arquivo stderr (numerado como 2) é usado pelo nosso programa para imprimir o erro na tela. saída de erro para arquivo, não pode ser enviado (redirecionamento) para arquivo, tente o seguinte: Descritores de arquivos stdin Por padrão no Linux, todo programa possui três arquivos associados a ele (quando iniciamos nosso programa, esses Uso: ./ demoscr número1 número2 entrada como padrão $ rm bad_file_name111 Tela $rm bad_file_name111 2>er echo "Uso: $0 número1 número2" copie esta saída de erro para o seu arquivo 'er'. Para superar esse problema, você deve usar o seguinte então $ ./demoscr Teclado stderr são número do descritor de arquivo> nome do arquivo Exemplo Tela você vê o arquivo como $ cat er este arquivo está vazio, pois a saída é enviada para o dispositivo de erro e você não pode redirecionar se [ $# -ne 2 ] echo "A soma é $ans" Arquivo padrão Você pode redirecionar a saída de um descritor de arquivo diretamente para um arquivo com a seguinte sintaxe saída padrão $ rm bad_file_name111 > er , $ chmod 755 demonstração O comando acima dá um erro como saída, já que você não possui o arquivo. Agora, se tentarmos redirecionar isso número é o número padrão (número dos descritores de arquivo) do arquivo stderr. Para esclarecer sua ideia, considere outra fi erro rm: não é possível remover `bad_file_name111': Esse arquivo ou diretório não existe Observe que nenhum espaço é permitido entre 2 e >. O 2>er direciona a saída de erro padrão para o arquivo. 2 saída como padrão saída 1 echo "Erro: Número não fornecido" Erro: O número não foi fornecido como padrão 2 Exemplos: (suponha que o arquivo bad_file_name111 não exista) comando: http://www.cyberciti.biz/pdf/lsst/ch04sec4.html (2 de 3) [29/07/2002 18:52:45] LSST v1.05r3 > Capítulo 4 > Redirecionamento de E/S e descritores de arquivo Machine Translated by Google
  • 89. substitua as instruções de eco acima como segue para o usuário, significa que temos que imprimir nossa mensagem de erro no stderr e não no stdout. Para superar esse problema $ ./demoscr > er1 echo "Erro: Número não fornecido" 1>&2 saída padrão (stdout) para dispositivo de erro padrão (stderr). Sintaxe: de>&destino , Uso: ./ demoscr número1 número2 Funções Ele imprimirá uma mensagem de erro no stderr e não no stdout. O 1>&2 no final da instrução echo direciona o Para a segunda execução de amostra, você redirecionou a saída do script para o arquivo er1, pois é um erro, temos que mostrá-lo $ ./demoscr > er1 Para a primeira execução de amostra Acima Próximo nosso script imprime uma mensagem de erro indicando que você não forneceu dois números. Erro: O número não foi fornecido echo "Uso: $0 número1 número2" 1>&2 $ ./demoscr 5 7 Anterior Execução condicional, ou seja, && e || Lar A soma é 12 Agora, se você executá-lo da seguinte maneira: LSST v1.05r3 > Capítulo 4 > Redirecionamento de E/S e descritores de arquivo http://www.cyberciti.biz/pdf/lsst/ch04sec4.html (3 de 3) [29/07/2002 18:52:45] Machine Translated by Google
  • 90. comando1 nome da função ( ) { Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell comando2 } Para executar esta função SayHello() basta digitar o nome da seguinte forma: $ SayHello Hello vivek, Tenha uma boa computação. Desta forma você pode chamar a função. Observe que após reiniciar o computador você perderá esta função SayHello(), pois ela foi criada apenas para a sessão atual. Para superar esse problema e adicionar sua própria função para automatizar algumas tarefas do dia a dia, adicione sua função ao arquivo /etc/ bashrc . Para adicionar função a este arquivo você deve fazer logon como root. A seguir está o exemplo de arquivo /etc/ bashrc com a função today() que é usada para imprimir a data formatada. Primeiro faça login como root ou se você já fez login com seu A lógica acima também se aplica a programas de computador (shell script). Quando o programa se torna complexo, precisamos usar a técnica de dividir e conquistar. Isso significa que sempre que os programas ficam complicados, nós os dividimos em pequenos pedaços/entidades que são conhecidos como funções. } Onde nome da função é o nome da sua função, que executa uma série de comandos. Uma instrução return encerrará a função. Exemplo: digite SayHello() no $ prompt da seguinte maneira $ SayHello() { echo "Hello $LOGNAME, Tenha uma boa computação" return Função é uma série de instruções/comandos. A função executa uma atividade específica no shell, ou seja, tinha um trabalho específico a fazer ou simplesmente diz tarefa. Para definir a função use a seguinte sintaxe: Sintaxe: comandoN Próximo quando perguntado , Os humanos são animais inteligentes. Eles trabalham juntos para realizar todas as tarefas da vida; na verdade, a maioria de nós depende um do outro. Por exemplo, você depende do leiteiro para fornecer leite ou do professor para aprender novas tecnologias (se for professor de informática). O que tudo isso significa é que você não pode realizar todas as tarefas da vida sozinho. Você precisa de alguém para ajudá-lo a resolver uma tarefa/problema específico. retornar ..... , login não é root) e deseja mover para a conta root, você pode digitar o seguinte comando Anterior ... http://www.cyberciti.biz/pdf/lsst/ch04sec5.html (1 de 4) [29/07/2002 18:52:46] LSST v1.05r3 > Capítulo 4 > Funções Funções Machine Translated by Google
  • 91. # cat /etc/bashrc # / etc/bashrc Salve o arquivo e saia dele, após toda essa modificação seu arquivo poderá ficar assim (digite o comando cat /etc/bashrc) para senha digite root (administradores) senha $ su -l senha: # Funções e aliases de todo o sistema # Adicionado por Vivek para mostrar a função no Linux hoje() { echo Esta é uma `data +"%A %d em %B de %Y (%r)"` retornar } # Adicionado por Vivek para mostrar a função no Linux # today() { echo Este é um retorno `date +"%A %d em %B de %Y (%r)"` # # hoje() para imprimir a data formatada # # Para executar esta função digite hoje no prompt $ } # Colocar o PS1 aqui garante que ele seja carregado sempre. # No final do arquivo adicione o seguinte no arquivo /etc/bashrc # # today() para imprimir a data formatada # # Para executar esta função digite hoje no prompt $ PS1="[u@h W]$ " # O material do ambiente entra em /etc/profile Abra o arquivo /etc/bashrc usando vi e vá para o final do arquivo (pressionando shift+G) e digite a função today(): Para executar a função, primeiro saia completamente digitando exit no prompt $ (ou pressione CTRL + D, observe que você pode ter que digitar exit (CTRL + D) duas vezes se fizer login na conta root usando o comando su), então faça login e digite $ hoje, desta forma hoje() está disponível para todos os usuários do seu sistema, se você quiser adicionar um determinado # vi /etc/bashrc # Por alguma razão desconhecida, o bash se recusa a herdar o # PS1 em algumas circunstâncias que não consigo entender. LSST v1.05r3 > Capítulo 4 > Funções http://www.cyberciti.biz/pdf/lsst/ch04sec5.html (2 de 4) [29/07/2002 18:52:46] Machine Translated by Google
  • 92. Salve o arquivo e saia dele, após toda essa modificação seu arquivo poderá ficar assim (digite o comando cat .bashrc) # mcedit .bashrc No final do arquivo adicione o seguinte arquivo .bashrc SayBuy() { echo "Compre $LOGNAME! A vida nunca mais será a mesma, até você fazer login novamente!" echo "Pressione uma tecla para sair. . ." ler } } OU retornar #vi.bashrc função para um usuário específico e abra o arquivo .bashrc no diretório inicial do usuário da seguinte forma: retornar SayBuy() { echo "Compre $LOGNAME! A vida nunca mais será a mesma, até você fazer login novamente!" echo "Pressione uma tecla para sair. . ." ler Dica: Se você quiser mostrar alguma mensagem ou realizar alguma ação ao sair, abra o arquivo .bash_logout em seu diretório inicial e adicione suas coisas aqui. Por exemplo, sempre que eu sair, quero mostrar a mensagem Comprar! Em seguida, abra seu arquivo .bash_logout usando um editor de texto como vi e adicione a instrução: echo "Compre $ LOGNAME, pressione uma tecla. . ." leia Salvar e sair do arquivo. Então, para testar esse logout do seu sistema pressionando CTRL + D (ou digite exit) imediatamente você verá a mensagem "Compre xxxxx, pressione uma tecla. . .", após pressionar a tecla você sairá e o prompt de login será mostrado para você . :-) Para executar a função, primeiro efetue logout digitando exit no prompt $ (ou pressione CTRL + D), depois faça login e digite $ desta forma SayBuy() está disponível apenas no seu login e não para todos os usuários do sistema, use .bashrc SayBuy, arquivo em seu diretório inicial para adicionar apenas aliases e funções específicas do usuário. se [ -f /etc/bashrc ]; então . /etc/ bashrcfi # cat .bashrc # .bashrc # # Aliases e funções específicas do usuário # Definições globais de origem LSST v1.05r3 > Capítulo 4 > Funções http://www.cyberciti.biz/pdf/lsst/ch04sec5.html (3 de 4) [29/07/2002 18:52:46] Machine Translated by Google
  • 93. • O programa é mais fácil de escrever. • A manutenção do programa é muito fácil. • Evita reescrever o mesmo código repetidas vezes • Economiza muito tempo. Por que escrever função? http://www.cyberciti.biz/pdf/lsst/ch04sec5.html (4 de 4) [29/07/2002 18:52:46] LSST v1.05r3 > Capítulo 4 > Funções Passando parâmetros para a função de definição do usuário. Lar Acima Redirecionamento de E/S e descritores de arquivo Anterior Próximo Interface do usuário e utilitário de diálogo Machine Translated by Google
  • 94. $ cat > userinte # # Script para demonstração echo e leitura do comando para interação do usuário # echo "Seu bom nome, por favor:" read na echo "Sua idade, por favor:" read age neyr=`expr $age + 1` echo "Olá $na , no próximo ano você terá $ neyr anos. (2) Use instruções como echo e read para ler a entrada na variável do prompt. Por exemplo, escreva o script como: Salve-o e execute como $ chmod 755 userinte $ ./userinte Seu bom nome, por favor : Vivek Sua idade, por favor: 25 Olá Vivek, no próximo ano você fará 26 anos. Próximo Um bom programa/shell script deve interagir com os usuários. Você pode fazer isso da seguinte maneira: (1) Use argumentos de linha de comando (args) para script quando desejar interação, ou seja, passar argumentos de linha de comando para script como: $ ./sutil.sh foo 4, onde foo & 4 são argumentos de linha de comando passados para shell script sutil.sh. Anterior Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell Mesmo você pode criar menus para interagir com o usuário, primeiro mostrar a opção de menu, depois pedir ao usuário para escolher o item de menu e tomar a ação apropriada de acordo com o item de menu selecionado, esta técnica é mostrada no script a seguir: LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte I http://www.cyberciti.biz/pdf/lsst/ch04sec6.html (1 de 3) [29/07/2002 18:52:47] Interface do usuário e utilitário de diálogo - Parte I Machine Translated by Google
  • 95. " eco "-------------------------------------" $ gato > menuui # echo "[1] Mostrar data/hora de hoje" echo "[2] Mostrar arquivos no diretório atual" echo "[3] Mostrar calendário" echo "[4] Iniciar o editor para escrever cartas" echo "[5] Sair/Parar" eco "=======================" Declaração Explicação Inicie o loop infinito, este loop só será interrompido se você selecionar 5 (ou seja, item de menu Sair/Parar) como sua opção de menu eco "-------------------------------------" feito claro Acima de tudo, declaração explicada na tabela a seguir: eco "Menu principal echo "Pressione uma tecla..." ; ler ;; fazer Limpe a tela sempre fazer claro esac echo -n "Insira sua opção de menu [1-5]: " leia seu arquivo case $yourch in 1) echo "Hoje é `data` 2) echo "Arquivos em `pwd`" ; ls -l ; echo "Pressione uma tecla . . ." ; read ;; 3) cal ; echo "Pressione uma tecla. . ." ; read ;; 4) vi ;; 5) exit 0 ;; *) echo "Ops!!! Selecione a opção 1,2,3,4 ou 5"; # Script para criar menus simples e agir de acordo com o selecionado enquanto : Iniciar ciclo , pressione uma tecla. . ." ; ler ;; # item de menu # enquanto: LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte I http://www.cyberciti.biz/pdf/lsst/ch04sec6.html (2 de 3) [29/07/2002 18:52:47] Machine Translated by Google
  • 96. número 4) vi;; esac echo "[4] Inicie o editor para escrever cartas" Anterior de caixas como caixa de informações, caixa de mensagem, caixa de menu, caixa de entrada, etc. A próxima seção mostra como usar a caixa de diálogo echo "[1] Mostrar data/hora de hoje" echo "[2] Mostrar arquivos no diretório atual" Unid echo "Pressione uma tecla..." ; ler ;; erro e peça ao usuário para inserir o número eco "-------------------------------------" eco eco "---------- ------------------------------" Mostrar menu na tela com menu 2) echo "Arquivos em `pwd`" ; ls -l; Menu principal Tomar as medidas apropriadas de acordo leia seu caso $yourch em A interface do usuário geralmente inclui menus, diferentes tipos de caixas, como caixa de informações, caixa de mensagem, caixa de entrada, etc. Próximo 5 (ou seja, Sair/Parar) Lar eco "=======================" " *) echo "Ops!!! Selecione a opção 1,2,3,4 ou 5"; 5) saída 0;; echo "[5] Sair/Parar" echo -n "Insira sua opção de menu [1-5]: Pare o loop, se o número do item de menu for Funções echo "[3] Mostrar calendário" 3) cal; echo "Pressione uma tecla..." ; ler ;; Peça ao usuário para inserir o item de menu entre 1-5 novamente Utilitário. não está entre 1 e 5, então mostre um utilitário fornecido com o Red Hat Linux versão 6.0 chamado dialog, que é usado para criar tipos diferentes 1) echo "Hoje é `data` , pressione uma tecla. . ." ; ler ;; para o item de menu selecionado, se o item de menu No shell do Linux (ou seja, bash) não há nenhum recurso interno disponível para criar tal interface de usuário, mas há " Interface do usuário e utilitário de diálogo - Parte II Acima " Ler o número do item de menu do usuário echo "Pressione uma tecla..." ; ler ;; feito LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte I http://www.cyberciti.biz/pdf/lsst/ch04sec6.html (3 de 3) [29/07/2002 18:52:47] Machine Translated by Google
  • 97. # monte /mnt/cdrom # cd /mnt/cdrom/RedHat/RPMS # rpm -ivh dialog-0.6-16.i386.rpm Para usuários do Red Hat Linux 6.2, instale o utilitário de diálogo como segue (primeiro insira o CD do Red Hat Linux 6.2 na unidade de CDROM) Para usuários do Red Hat Linux 7.2, instale o utilitário de diálogo como segue (primeiro insira o CD Red Hat Linux 7.2 # 1 na unidade de CDROM) # monte /mnt/cdrom # cd /mnt/cdrom/RedHat/RPMS # rpm -ivh dialog-0.9a-5.i386.rpm Próximo Antes de programar usando o utilitário de diálogo, você precisa instalar o utilitário de diálogo, pois o utilitário de diálogo não é instalado por padrão. Anterior Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell Após a instalação, você pode começar a usar o utilitário de diálogo. Antes de entender a sintaxe do utilitário de diálogo, tente o seguinte script: Salve o script de shell e execute-o como: $ chmod +x dia1 $ ./ dia1 $ cat > dia1 dialog --title "Linux Dialog Utility Infobox" --backtitle "Linux Shell Script Tutorial" --infobox "Esta é uma caixa de diálogo chamada infobox, que é usada para mostrar algumas informações na tela, Obrigado a Savio Lam e Stuart Herbert para nos fornecer esse utilitário. Pressione qualquer tecla. . " 7 50 ; ler . http://www.cyberciti.biz/pdf/lsst/ch04sec7.html (1 de 2) [29/07/2002 18:52:49] LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte II Interface do usuário e utilitário de diálogo - Parte II Machine Translated by Google
  • 98. {texto} {altura} {largura} {texto} {altura} {largura} Depois de executar esta instrução de diálogo, você verá uma caixa na tela intitulada "Bem-vindo ao Linux Dialog Utility" e a mensagem "Este é {texto} {altura} {largura} Interface do usuário e utilitário de diálogo - Parte I Lar Acima dialog --title {title} --backtitle {backtitle} {Opções de caixa} --cardápio Anterior onde as opções da caixa podem ser qualquer uma das seguintes {arquivo} {altura} {largura} tela e abaixo dessa linha é desenhada. Use o utilitário de diálogo para exibir caixas de diálogo de scripts de shell. Utilitário Sintaxe: {texto} {altura} {largura} {menu} {altura} {tag1} item1}... --yesno -- msgbox -- infobox --inputbox {texto} {altura} {largura} [{init}] caixa de diálogo....Pressione qualquer tecla. . ." dentro desta caixa. O título da caixa é especificado pela opção --title e infobox com --infobox "Message" com esta opção. Próximo Caixa de mensagem (msgbox) usando diálogo Aqui 7 e 50 são a altura e a largura da caixa, respectivamente. "Linux Shell Script Tutorial" é o título da caixa de diálogo exibida no canto superior esquerdo do --caixa de texto http://www.cyberciti.biz/pdf/lsst/ch04sec7.html (2 de 2) [29/07/2002 18:52:49] LSST v1.05r3 > Capítulo 4 > Interface do usuário e utilitário de diálogo - Parte II Machine Translated by Google
  • 99. Tutorial" --msgbox "Esta é uma caixa de diálogo chamada msgbox, que é usada Roteiro Tutorial de script de shell do Linux (LSST) v1.05r3 para mostrar algumas informações na tela que também possui o botão Ok, graças a $./dia2 Anterior Interface do usuário e utilitário de diálogo - Parte II $ gato > dia2 Salve e execute como $chmod +xdia2 dialog --title "Msgbox do Utilitário de Diálogo do Linux" --backtitle "Linux Shell " 9 50 Anterior Próximo caixa yesno usando o utilitário de diálogo Próximo . Sávio Lam Capítulo 4: Comandos avançados de script de shell Lar Acima e Stuart Herbert para nos dar esta utilidade. Pressione qualquer tecla. . LSST v1.05r3 > Capítulo 4 > Caixa de mensagem (msgbox) usando utilitário de diálogo http://www.cyberciti.biz/pdf/lsst/ch04sec8.html [29/07/2002 18:52:51] Caixa de mensagem (msgbox) usando o utilitário de diálogo Machine Translated by Google
  • 100. Salve o script e execute-o como: $ chmod +x dia3 $ ./ dia3 esac O script acima cria uma caixa de diálogo do tipo yesno, que é usada para fazer algumas perguntas ao usuário e responder sim ou não. Depois de fazer a pergunta, como sabemos se o usuário pressionou o botão sim ou não? A resposta é status de saída, se o usuário pressionar a tecla sim, o status de saída será zero, se o usuário não pressionar nenhum botão, o status de saída será um e se o usuário pressionar a tecla Escape para cancelar o status de saída da caixa de diálogo será um 255. Isso é o que testamos em nosso script de shell acima como Significado Anterior $ cat > dia3 dialog --title "Alerta: Excluir arquivo" --backtitle "Linux Shell Script Tutorial" --yesno "nDeseja excluir o arquivo '/usr/letters/jobapplication'" 7 60 sel=$ ? case $sel em 0) echo "Usuário seleciona para excluir arquivo";; 1) echo "Usuário seleciona não excluir arquivo";; 255) echo "Cancelado pelo usuário pressionando a tecla [ESC]";; Próximo Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell Obtenha o status de saída do utilitário de diálogo , sel=$? Declaração http://www.cyberciti.biz/pdf/lsst/ch04sec9.html (1 de 2) [29/07/2002 18:52:53] LSST v1.05r3 > Capítulo 4 > caixa yesno usando utilitário de diálogo caixa yesno usando o utilitário de diálogo Machine Translated by Google
  • 101. , excluir case $sel in Agora tome medidas de acordo com o status de saída esac e se o status de saída for 255, significa Escape Próximo Entrada (caixa de entrada) usando utilitário de diálogo tecla é pressionada. Lar arquivo, se o status de saída for 1, não exclua o arquivo 255) echo "Cancelado por você pressionando a tecla [Escape]";; Acima Anterior 0) echo "Você seleciona excluir arquivo";; do utilitário de diálogo, se o status de saída for 0 1) echo "Você optou por não excluir o arquivo";; Caixa de mensagem (msgbox) usando utilitário de diálogo http://www.cyberciti.biz/pdf/lsst/ch04sec9.html (2 de 2) [29/07/2002 18:52:53] LSST v1.05r3 > Capítulo 4 > caixa yesno usando utilitário de diálogo Machine Translated by Google
  • 102. na=`cat /tmp/input.$$` case $sel in sel=$? 0) echo "Olá $na" ;; 1) echo "Cancelar é pressionar" ;; 255) echo "Tecla [ESCAPE] pressionada" ;; esac Próximo $ cat > dia4 dialog -- title "Caixa de entrada - Para receber informações suas" --backtitle "Tutorial Linux Shell Script" --inputbox "Digite seu nome, por favor" 8 60 2>/tmp/input.$$ Anterior Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell rm -f /tmp/entrada.$$ A caixa de entrada é usada para receber a entrada do usuário. Neste exemplo, estamos usando o nome do usuário como entrada. Mas onde vamos armazenar Execute-o da seguinte maneira: $ chmod +x dia4 $ ./dia4 http://www.cyberciti.biz/pdf/lsst/ch04sec10.html (1 de 2) [29/07/2002 18:52:55] LSST v1.05r3 > Capítulo 4 > Caixa de entrada (caixa de entrada) usando utilitário de diálogo Caixa de entrada (inputbox) usando o utilitário de diálogo Machine Translated by Google
  • 103. 0 O comando foi bem-sucedido nome inserido, a resposta é redirecionar o nome inserido para o arquivo por meio da instrução 2>/ tmp/ input.$$ no final do comando de diálogo, que 1 Lar Acima Próximo caixa Caixa de confirmação (caixa sim não) usando diálogo Utilitário Significado A tecla Escape é pressionada pelo usuário Para o status de saída da caixa de entrada, consulte a tabela a seguir: Status de saída para entrada Anterior 255 significa enviar a saída da tela para um arquivo chamado /tmp/ input.$$, letra que podemos recuperar este nome inserido e armazenar na variável da seguinte forma Interface do usuário usando o utilitário de diálogo - Juntando tudo na=`cat / tmp/ input.$$`. O botão Cancelar é pressionado pelo usuário http://www.cyberciti.biz/pdf/lsst/ch04sec10.html (2 de 2) [29/07/2002 18:52:55] LSST v1.05r3 > Capítulo 4 > Caixa de entrada (caixa de entrada) usando utilitário de diálogo Machine Translated by Google
  • 104. ITEM DO MENU O editor e a ação para cada item de menu são os seguintes: Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell Data hora $ cat > smenu # #Como criar um pequeno menu usando o diálogo # dialog --backtitle "Tutorial do Linux Shell Script " --title "Menu Principal" --menu "Mover usando [UP] [DOWN],[Enter] para Selecione" 15 50 3 Data/hora "Mostra data e hora" Calendário "Para ver o calendário " Editor "Para iniciar o editor vi " 2>/tmp/menuitem.$ $ menuitem=`cat /tmp/menuitem.$$` optar=$? Data hora Mostrar calendário esac Inicie o editor vi Calendário Salve-o e execute como: $ rm -f /tmp/menuitem.$$ $ chmod +x smenu $ ./ smenu AÇÃO Calendário) cal;; Editor)vi;; É hora de escrever um script para criar menus usando o utilitário de diálogo. A seguir estão os itens de menu Mostrar data/ hora atual Calendário Anterior caso $ menuitem em Data/hora) data;; editor Próximo http://www.cyberciti.biz/pdf/lsst/ch04sec11.html (1 de 2) [29/07/2002 18:53:01] LSST v1.05r3 > Capítulo 4 > Interface do usuário usando o utilitário de diálogo - Juntando tudo Interface do usuário usando o utilitário de diálogo - Juntando tudo Machine Translated by Google
  • 105. Primeiro item de menu chamado tag1 (ou seja, Data/hora) e Envie o item de menu selecionado (tag) para este arquivo temporário de acordo com o item de menu selecionado. Como você pode ver, o utilitário de diálogo permite uma interação do usuário mais poderosa do que o antigo read and echo --opções do menu comando de armadilha Significado Largura da caixa descrição para o item de menu chamado item3 (ou seja"Para começar Após criar os menus, o usuário seleciona o item do menu pressionando a tecla ENTER, a escolha selecionada é redirecionada para o arquivo temporário, Próximo A opção --menu é usada no utilitário de diálogo para criar menus, a opção de menu é usada Altura da caixa Primeiro item de menu chamado tag3 (ou seja, Editor) e 50 editor descrição para o item de menu chamado item2 (ou seja, "Para ver Lar Anterior Selecione" Data e hora") Calendário "Para ver o calendário Data/hora "Mostra data e hora" "Mova usando [UP] [DOWN],[Enter] para descrição para o item de menu chamado item1 (ou seja, "Mostra declaração. O único problema com o utilitário de diálogo é que ele funciona lentamente. Altura do cardápio vi editor") Este é o texto mostrado antes do menu este item de menu é recuperado do arquivo temporário e a seguir a instrução case compara o item de menu e executa as etapas apropriadas 2>/tmp/menuitem.$$ Próximo calendário") "Para iniciar o editor vi" Acima 3 15 Primeiro item de menu chamado tag2 (ou seja, Calendário) e " Entrada (caixa de entrada) usando utilitário de diálogo http://www.cyberciti.biz/pdf/lsst/ch04sec11.html (2 de 2) [29/07/2002 18:53:01] LSST v1.05r3 > Capítulo 4 > Interface do usuário usando o utilitário de diálogo - Juntando tudo Machine Translated by Google
  • 106. ao executar este script, o script é encerrado. O ctrl + c aqui funciona como Agora, se você pressionar o sinal ctrl + c, quando esse sinal ocorrer, ele será enviado para todos os processos atualmente em execução no seu sistema. Agora considere o seguinte script de shell: Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell , fazer echo -n "Título do compromisso:" lido na echo -n "hora:" leia ti $ cat > testsign ls -R / echo "Aplicativo protetor de notas de compromisso para Linux" echo -n "Digite o nome do arquivo do seu banco de dados: leia o nome do arquivo if [! -f $filename]; then echo "Desculpe, $filename não sai, Criando banco de dados $filename" echo "Nota de compromisso keeper Arquivo de banco de dados do aplicativo" > $filename fi echo "Dados iniciais de entrada de dados: `date`" >/tmp/input0.$$ # # Defina um loop infinito # while : " Salve e execute-o como $ chmod +x testsign $ ./testsign Take_input1() {reconhecimento=0 Próximo Considere o seguinte exemplo de script: claro $ gato > testsign1 # echo -n "Qualquer observação:" leia a observação echo -n "Os dados estão corretos (s/n)?" Anterior # Por que capturar sinal, versão 1 # LSST v1.05r3 > Capítulo 4 > Comando trap http://www.cyberciti.biz/pdf/lsst/ch04sec12.html (1 de 4) [29/07/2002 18:53:03] comando de armadilha Machine Translated by Google
  • 107. Take_input1 # Chame nossa função de definição de usuário: Take_input1 # leia a resposta Salve-o e execute como $ chmod +x testsign1 $ ./testsign1 Número do sinal Quando ocorre saída do shell feito , , } ## se ele/ela deseja adicionar o próximo fi echo -n "Adicionar próximo compromisso (s/n)?" leia é o próximo se [ $isnext = n -o $isnext = N ]; então cat /tmp/input0.$$ >> $filename rm -f /tmp/input0.$$ return # termina o loop 2 interrupção de desligamento (CTRL+C) fi caso contrário, todos os registros serão copiados de temporários Ele primeiro pergunta ao arquivo de banco de dados principal onde todos os compromissos do dia estão armazenados, se nenhum arquivo de banco de dados for encontrado, o arquivo é criado, depois abre um arquivo temporário no diretório /tmp e coloca a data de hoje nesse arquivo. Em seguida, um loop infinito começa, que pergunta o título do compromisso, horário e observação, se esta informação estiver correta, ela é gravada no arquivo temporário. Depois disso, o script pergunta ao registro do compromisso do usuário, se sim, o próximo registro é adicionado ao arquivo de banco de dados e então o loop irá ser encerrado. Você pode visualizar seu arquivo de banco de dados usando o comando cat. Agora, o problema é que, ao executar este script, se você pressionar CTRL + C, seu script de shell será encerrado e o arquivo temporário será deixado no diretório /tmp . Por exemplo, tente da seguinte maneira: $./testsign1 Depois de fornecer o nome do arquivo do banco de dados e depois de adicionar pelo menos um registro de compromisso ao arquivo temporário, pressione CTRL + C, nosso script foi encerrado e deixou o arquivo temporário no diretório /tmp, você pode verificar isto dando o comando a seguir $ ls /tmp/input* Nosso script precisa detectar tal sinal (evento) quando ocorre; Para conseguir isso, temos que primeiro detectar o sinal usando o comando trap. se [$ans = y -o $ans = Y]; então 0 1 Sintaxe: trap {comandos} {lista de números de sinais} recno=`expr $recno + 1` echo "$recno. $na $ti $remark" >> /tmp/input0.$$ http://www.cyberciti.biz/pdf/lsst/ch04sec12.html (2 de 4) [29/07/2002 18:53:03] LSST v1.05r3 > Capítulo 4 > Comando trap Machine Translated by Google
  • 108. echo "* * * CTRL + C Trap ocorre (removendo arquivo temporário)* * *" rm -f /tmp/input0.$$ exit 1 , 3 } echo -n "Título do compromisso:" lido na echo -n "hora:" leia ti echo -n "Qualquer observação:" leia a observação $ vi testsign1 # # sinal está preso para excluir arquivo temporário # del_file() { ! -f $nome do arquivo]; então fazer versão 2 echo "Aplicativo Guardião de Notas de Compromisso para Linux" echo -n "Digite o nome do arquivo do seu banco de dados: leia o nome do arquivo if [ echo "Desculpe, $filename não sai, Criando banco de dados $filename" echo "Arquivo de banco de dados do aplicativo Guardião de Notas de Compromisso"> $filename fi echo "Dados iniciais de entrada de dados: `date`" >/tmp/input0.$$ # # Defina um loop infinito # while : Para capturar o sinal no script acima, coloque a instrução trap antes de chamar a função Take_input1 como trap del_file 2 Aqui o comando trap é chamado del_file() quando ocorre uma interrupção de 2 números (ou seja, CTRL+C). Abra o script acima no editor e modifique-o para que no final fique assim: ., " Take_input1() {reconhecimento=0 9 echo -n "Os dados estão corretos (s/n)?" leia a resposta se [$ans = y -o $ans = Y]; então recno=`expr $recno + 1` sair de matar (não pode ser pego) claro http://www.cyberciti.biz/pdf/lsst/ch04sec12.html (3 de 4) [29/07/2002 18:53:03] LSST v1.05r3 > Capítulo 4 > Comando trap Machine Translated by Google
  • 109. Acima Anterior Lar Próximo Depois de dar o nome do arquivo do banco de dados e depois de dar o título do compromisso pressione CTRL+C, Aqui já capturamos esse sinal CTRL + C (interrupção), então primeiro é chamada nossa função del_file(), na qual dá "* * * CTRL + C Trap ocorre (removendo arquivo temporário)* * * " e então remove nossa mensagem como arquivo temporário e então sai com status de saída 1. Agora verifique o diretório /tmp como segue $ ls /tmp/input* Agora o Shell não reportará tal arquivo temporário saída. Interface do usuário usando o utilitário de diálogo - Juntando tudo Execute o script como: $ ./testsign1 echo "$recno. $na $ti $remark" >> /tmp/input0.$$ fi echo -n "Adicionar próximo compromisso (s/n)?" leia é o próximo se [ $isnext = n -o $isnext = N ]; then cat /tmp/input0.$$ >> $filename rm -f /tmp/ input0.$$ return # terminar loop fi done # end_while } # # Definir trap para interrupção CTRL+C, ou seja, instalar nosso manipulador de erros # Quando ocorre ele primeiro chama del_file() e depois sai # trap del_file 2 # # Chame nossa função de definição do usuário: Take_input1 # Take_input1 O comando de mudança http://www.cyberciti.biz/pdf/lsst/ch04sec12.html (4 de 4) [29/07/2002 18:53:03] LSST v1.05r3 > Capítulo 4 > Comando trap Machine Translated by Google
  • 110. $1 = foo $2 = barra Próximo Por exemplo, escreva o seguinte script de shell para esclarecer sua ideia: $ vi shiftdemo.sh echo "Os argumentos atuais da linha de comando são: $1=$1, $2=$2, $3=$3" shift echo "Após o comando shift os argumentos são: $1=$1, $2=$2, $3 =$3" $1 = -f $2 = foo $3 = bar e você executou o comando shift, os parâmetros posicionais resultantes seriam os seguintes: Anterior O comando shift move os valores atuais armazenados nos parâmetros posicionais (argumentos da linha de comando) para uma posição à esquerda. Por exemplo, se os valores dos parâmetros posicionais atuais forem: Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell Execute o script acima como segue: $ chmod +x shiftdemo.sh $ ./ shiftdemo -f foo bar Os argumentos atuais da linha de comando são: $1=-f, $2=foo, $3=bar Após o comando shift, os argumentos são: $1=foo, $2=barra, $3= Você também pode mover os parâmetros posicionais em mais de um local especificando um número com o comando shift. O comando a seguir mudaria os parâmetros posicionais em dois lugares: turno 2 Você pode usar o comando shift para analisar a opção de linha de comando (args). Por exemplo, considere o seguinte script de shell simples: http://www.cyberciti.biz/pdf/lsst/ch04sec14.html (1 de 4) [29/07/2002 18:53:05] LSST v1.05r3 > Capítulo 4 > O comando shift Mas onde usar o comando shift? O comando de mudança Machine Translated by Google
  • 111. outro turno 2 num="$2" turno 2 echo "O programa $0 não reconhece a opção $1" exit 1 esac elif ["$1" = "-n"] então se ["$1" = "-b"]; então ob="$2" case $ob em 16) basesystem="Hex";; 8) basesystem="Outubro";; 2) sistemabase="bin";; *) basesystem="Desconhecido";; $ vi converter enquanto ["$1"] faça feito saída=`echo "obase=$ob;ibase=10; $num;" | bc` echo "$num Número decimal = $saída em $basesystem number system(base=$ob)" Salve e execute o script de shell acima da seguinte maneira: $ chmod +x convert $ ./convert -b 16 -n 500 500 Número decimal = 1F4 no sistema de números hexadecimais (base = 16) $ ./convert -b 8 -n 500 500 Número decimal = 764 no sistema numérico de outubro (base = 8) $ ./convert -b 2 -n 500 500 Número decimal = 111110100 no sistema numérico bin (base = 2) $ ./convert -b 2 -v 500 Programa ./ convert não reconhece a opção -v $ ./ convert -t 2 -v 500 O programa ./convert não reconhece a opção -t $ ./convert -b 4 -n 500 500 Número decimal = 13310 no sistema numérico desconhecido (base = 4 ) $ ./convert -n 500 -b 16 500 Número decimal = 1F4 no sistema numérico hexadecimal (base = 16) fi O script acima é executado de várias maneiras. As três primeiras amostras executadas convertem o número 500 ( -n 500 ) em respectivamente 1F4 (número hexadecimal, ou seja, -b 16), 764 (número octal, ou seja, -b 16), 111110100 (número binário, ou seja, -b 16). Ele usa -n e -b como opção de linha de comando, o que significa: -b {sistema base, ou seja, 16,8,2 para o qual -n número a ser convertido} http://www.cyberciti.biz/pdf/lsst/ch04sec14.html (2 de 4) [29/07/2002 18:53:05] LSST v1.05r3 > Capítulo 4 > O comando shift Machine Translated by Google
  • 112. Para facilitar a compreensão da conversão, armazenamos os respectivos sistemas de base numérica que correspondem à string da variável do sistema de base. Se o sistema base for 16, armazene o Hex no sistema base e assim por diante. Isso é feito usando a instrução case. Explicação Inicia o loop while; continue o loop while enquanto o script ler todas as opções de linha de comando. Agora comece a analisar a opção de linha de comando (args) usando o comando if, nosso script entende as opções -b e -n, apenas todas as outras opções são inválidas. Se a opção for -b então armazena o valor do segundo argumento da linha de comando na variável ob (ou seja, se arg for -b 16 então armazene o 16 em ob) -n {Número a ser convertido para -b sistema base} Depois que as duas primeiras opções de linha de comando (args) forem lidas, precisaremos das próximas duas opções de linha de comando (args). shift 2 moverá os valores atuais armazenados nos parâmetros posicionais (argumentos da linha de comando) para as duas posições à esquerd Todo o comando shell script pode ser explicado da seguinte forma: turno 2 Comando(s)/Declarações case $ob em 16) basesystem="Hex";; 8) basesystem="Outubro";; 2) sistemabase="bin";; *) basesystem="Desconhecido";; Porque o sistema base 4 é desconhecido em nosso script. A última execução de amostra mostra que as opções de linha de comando podem ser fornecidas de diferentes maneiras, ou seja, você pode usá- las da seguinte maneira: $ ./ convert -n 500 -b 16 Em vez de $ ./convert -b 16 -n 500 esac enquanto ["$1"] faça A quarta e a quinta execução de amostra produzem o erro "O programa ./ convert não reconhece a opção -v". Isso ocorre porque esses dois (-v e -t) não são a opção de linha de comando válida. A sexta execução de amostra produziu a saída "500 Número decimal = 13310 no sistema numérico desconhecido (base = 4)". se ["$1" = "-b"]; então ob="$2" LSST v1.05r3 > Capítulo 4 > O comando shift http://www.cyberciti.biz/pdf/lsst/ch04sec14.html (3 de 4) [29/07/2002 18:53:05] Machine Translated by Google
  • 113. feito Agora converta o número fornecido para o sistema numérico fornecido usando BC. Mostre o número convertido em else echo "O programa $0 não reconhece a opção $1" exit 1 fi saída=`echo "obase=$ob;ibase=10; $num;" | BC` echo "$num Número decimal = $saída em $basesystem number system(base=$ob)" Fim do loop enquanto lemos todas as opções/argumentos de linha de comando válidos. elif ["$1" = "-n"] então num="$2" mudança 2 Se a opção da linha de comando não for -n ou -b, imprima o erro "Programa ./ convert não reconhece a opção xx" na tela e finalize o script de shell usando a instrução exit 1 . Agora verifique a próxima opção de linha de comando e se sua opção -n armazena o valor do segundo argumento da linha de comando na variável num (ou seja, se arg for -n 500 então armazene 500 em num) e o shift 2 moverá os valores atuais armazenados em os parâmetros posicionais (argumentos de linha de comando) para as duas posições à esquerda. tela. Como você pode ver, o comando shift pode ser usado para analisar a opção de linha de comando (args). Isso é útil se você tiver um número limitado de opções de linha de comando. Se as opções de linha de comando forem muitas, essa abordagem funcionará lentamente e será complexa para escrever e manter. Você precisa usar outro comando embutido no shell - getopts. A próxima seção mostra o uso do comando getopts. Você ainda precisa do comando shift em conjunto com getopts para outros trabalhos de script de shell. Lar Acima Próximo comando getopts Comando trap anterior LSST v1.05r3 > Capítulo 4 > O comando shift http://www.cyberciti.biz/pdf/lsst/ch04sec14.html (4 de 4) [29/07/2002 18:53:05] Machine Translated by Google
  • 114. Exemplo: Conforme definido nas páginas de manual: "optstring contém as letras de opção a serem reconhecidas; se uma letra for seguida por dois pontos, espera-se que a opção tenha um argumento, que deve ser separado dela por um espaço em branco. Cada vez que for invocada, getopts coloca a próxima opção na variável shell variável1. Quando uma opção requer um argumento, getopts coloca esse argumento na variável OPTARG. Em caso de erros, mensagens de diagnóstico de getopts são impressas quando opções ilegais ou argumentos de opção ausentes são encontrados. Se uma opção ilegal for vista , getopts coloca ? na variável1." Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 4: Comandos avançados de script de shell Temos um script chamado ani que tem sintaxe como ani -n -a -s -w -d -n nome do animal" -a idade do animal" -s sexo do animal " eco " eco " Sintaxe: getopts {optstring} {variável1} # Uso: ani -n -a -s -w -d # # # help_ani() Para imprimir ajuda # help_ani() { echo "Uso: $0 -n -a -s -w -d" echo "Opções: estes são argumentos opcionais" echo " getopts é usado pelo shell para analisar o argumento da linha de comando. O script acima é o seguinte: Este comando é usado para verificar se argumentos de linha de comando válidos foram passados para o script. Geralmente usado em loop while. $ vi ani # Opções: estes são argumentos opcionais Anterior Próximo -n nome do animal -a idade do animal -s sexo do animal -w peso do animal -d valores de demonstração (se alguma das opções acima for usada, seus valores não serão considerados) LSST v1.05r3 > Capítulo 4 > comando getopts http://www.cyberciti.biz/pdf/lsst/ch04sec13.html (1 de 3) [29/07/2002 18:53:06] comando getopts Machine Translated by Google
  • 115. esac } # #Iniciar procedimento principal # # #Definir valor padrão para a variável # isdef=0 na=Moti age="2 Meses" # pode ser 60 dias, como você quiser! sexo=Masculino case "$opt" em n) na="$OPTARG";; a) idade="$OPTARG";; s) sexo="$OPTARG";; w) peso="$OPTARG";; d) isdef=1;; ?) ajuda_ani;; feito eco " peso=3Kg # #se nenhum argumento # if [ $# -lt 1 ]; então help_ani fi enquanto getopts n:a:s:w:d opt do echo " -d valores de demonstração (se alguma das opções acima for usada " echo "seus valores não serão considerados)" saída 1 -w peso do animal" echo "Nome do animal: $na, Idade: $idade, Sexo: $sexo, Peso: $peso (usuário definir modo)" else na="Cão Plutão" idade=3 sexo=Masculino se [$isdef -eq 0] então peso=20kg echo "Nome do animal: $na, Idade: $idade, Sexo: $sexo, Peso: $peso (modo de demonstração)" fi http://www.cyberciti.biz/pdf/lsst/ch04sec13.html (2 de 3) [29/07/2002 18:53:06] LSST v1.05r3 > Capítulo 4 > comando getopts Machine Translated by Google
  • 116. Acima Anterior Lar Próximo Veja, por causa do getopts, podemos passar argumentos de linha de comando em estilos diferentes. A seguir estão as opções inválidas para o script ani $ ani -nLassie -a4 -sFemal -w20Kg Sem espaço entre a opção e seu valor. O comando de mudança $ ani -nLassie-a4-sFemal-w20Kg $ ani -n Lassie -a 4 -s Feminino -w 20Kg -c Mamífero -c não é uma das opções válidas. Salve-o e execute da seguinte maneira $ chmod +x ani $ ani -n Lassie -a 4 -s Feminino -w 20Kg $ ani -a 4 -s Feminino -n Lassie -w 20Kg $ ani -n Lassie -s Feminino -w 20Kg -a 4 $ ani -w 20Kg -s Feminino -n Lassie -a 4 $ ani -w 20Kg -s Feminino $ ani -n Lassie -a 4 $ ani -n Lassie $ ani -a 2 Utilitários essenciais para usuários avançados http://www.cyberciti.biz/pdf/lsst/ch04sec13.html (3 de 3) [29/07/2002 18:53:06] LSST v1.05r3 > Capítulo 4 > comando getopts Machine Translated by Google
  • 117. • Para organizar seus dados • Para melhor gerenciamento de arquivos Tutorial de script de shell do Linux (LSST) v1.05r3 • Administração do sistema, etc. Serviços de utilidade pública Anterior comando getopts O Linux contém programas utilitários poderosos. Você pode usar esses utilitários para Próximo Preparando-se para um tour rápido do essencial • Localize informações do sistema requer compreensão da expressão. Após a rápida introdução aos utilitários, você aprenderá o Próximo expressão. A seção a seguir apresenta alguns dos utilitários essenciais, bem como a expressão. Enquanto Capítulo 5: Utilitários essenciais para usuários avançados Lar Acima shell de programação, você precisa usar esses utilitários essenciais. Alguns desses utilitários (especialmente sed e awk) Anterior http://www.cyberciti.biz/pdf/lsst/ch05.html [29/07/2002 18:53:07] LSST v1.05r3 > Capítulo 5 > Introdução Introdução Machine Translated by Google
  • 118. 11, pressione a tecla "tab" e escreva Vivek (conforme mostrado nos arquivos a seguir): Próximo Utilitários essenciais para usuários avançados Nota Cada bloco de dados é separado do outro pelo caractere TAB, ou seja, durante a criação do arquivo, se você digitar nome Tutorial de script de shell do Linux (LSST) v1.05r3 15 marcar Sr. Sem Marca Lar 13 Cinza 15 67 Selecionando parte de um arquivo usando o utilitário cut 14Rani Para esta parte do tutorial, crie arquivos de dados sname e smark como segue (usando o editor de texto de sua escolha) Anterior 11 Renuka Próximo 13 96 14 36 12 Prakash Sr.Sem Nome Capítulo 5: Utilitários essenciais para usuários avançados 11 67 Acima 12 55 Anterior Vivek http://www.cyberciti.biz/pdf/lsst/ch05sec01.html [29/07/2002 18:53:08] LSST v1.05r3 > Capítulo 5 > Preparando-se para um tour rápido de utilitários essenciais Preparando-se para um tour rápido do essencial Serviços de utilidade pública Machine Translated by Google
  • 119. Comando O utilitário cut corta os dados selecionados do arquivo sname . Para selecionar Sr.no. campo de sname dê o comando da seguinte forma: $cut -f1 sname 11 12 13 14 15 corte -f1 Próximo Suponha que a partir do arquivo sname você deseja imprimir o nome do aluno na tela e, a partir do shell (seu prompt de comando, ou seja, $), emita o comando da seguinte forma: $cut -f2 sname Vivek Renuka Prakash Ashish Rani Anterior Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 5: Utilitários essenciais para usuários avançados Explicação Arquivo que é usado pelo utilitário cut e que é usado como entrada para o utilitário cut. Nome do utilitário cut Usando a opção (-f), você está especificando o número do campo de extração. (Neste exemplo é 1, ou seja, primeiro campo) nome Você pode redirecionar a saída do utilitário cut da seguinte maneira $cut -f2 sname > /tmp/sn.tmp.$$ $cut -f2 smark > /tmp/sm.tmp.$$ $cat /tmp/ sn.tmp.$$ Vivek Renuka Prakash Ashish Rani $cat / tmp/ sm.tmp.$$ 67 55 96 36 67 LSST v1.05r3 > Capítulo 5 > Selecionando parte de um arquivo usando o utilitário cut http://www.cyberciti.biz/pdf/lsst/ch05sec02.html (1 de 2) [29/07/2002 18:53:11] Selecionando parte de um arquivo usando o utilitário Machine Translated by Google
  • 120. Preparando-se para um tour rápido do essencial Uso do utilitário Cut: Anterior Serviços de utilidade pública cut -f{número do campo} {nome do arquivo} Selecionando parte de um arquivo. Sintaxe: Sintaxe geral do utilitário cut: Acima Próximo Juntando linhas usando o utilitário paste Lar http://www.cyberciti.biz/pdf/lsst/ch05sec02.html (2 de 2) [29/07/2002 18:53:11] LSST v1.05r3 > Capítulo 5 > Selecionando parte de um arquivo usando o utilitário cut Machine Translated by Google
  • 121. 14 Ashish 14 36 13 Prakash 13 96 Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 5: Utilitários essenciais para usuários avançados 15Rani 15 67 Você pode anotar a diferença básica entre o utilitário recortar e colar? Anterior Selecionando parte de um arquivo usando o utilitário cut 11 Vivek 11 67 Sintaxe: colar {arquivo1} {arquivo2} Uso do utilitário paste: Juntando linhas. 12 Renuka 12 55 O utilitário Colar é útil para reunir informações textuais localizadas em vários arquivos. Próximo Próximo O utilitário de junção Agora digite o seguinte comando no prompt do shell $ paste sname smark Sintaxe geral do utilitário colar: O utilitário Colar junta informações textuais. Para limpar sua ideia, tente seguir o comando no prompt do shell: Lar Acima Anterior $ paste /tmp/sn.tmp.$$ /tmp/sm.tmp.$$ Vivek 67 Renuka 55 Prakash 96 Ashish 36 Rani 67 http://www.cyberciti.biz/pdf/lsst/ch05sec03.html [29/07/2002 18:53:12] LSST v1.05r3 > Capítulo 5 > Juntando linhas usando o utilitário paste Juntando linhas usando o utilitário paste Machine Translated by Google
  • 122. 12Renuka 55 Próximo 11Vivek 67 Tutorial de script de shell do Linux (LSST) v1.05r3 13Prakash 96 junte-se a {arquivo1} {arquivo2} Uso do utilitário join: O utilitário join une linhas de arquivos separados. Traduzindo intervalo de caracteres usando tr Agora digite o seguinte comando no prompt do shell: Sintaxe geral do utilitário join: Lar Sintaxe: $join sname smark Acima Aqui os nomes dos alunos são combinados com suas notas apropriadas. Como ? O utilitário join usa o Sr.No. campo para Anterior Anterior Juntando linhas usando o utilitário paste Próximo junte-se aos arquivos. Observe que Sr.No. é o primeiro campo no arquivo sname e smark. 14 Cinzas 36 Capítulo 5: Utilitários essenciais para usuários avançados Observe que a junção só funcionará se houver um campo comum em ambos os arquivos e se os valores forem idênticos a cada um Utilitário outro. 15Rani 67 http://www.cyberciti.biz/pdf/lsst/ch05sec04.html [29/07/2002 18:53:14] LSST v1.05r3 > Capítulo 5 > O utilitário join O utilitário de junção Machine Translated by Google
  • 123. quinzeRani 14As3is3 Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 5: Utilitários essenciais para usuários avançados Você pode ver claramente que cada ocorrência do caractere 'h' é substituída por '3' e '2' por 'x'. O utilitário tr traduz caracteres específicos em outros caracteres específicos ou intervalo de caracteres em outros intervalos. h -> 3 2 -> x Sintaxe: tr {padrão-1} {padrão-2} Uso do utilitário tr: para traduzir um intervalo de caracteres em outro intervalo de caracteres. Depois de digitar o parágrafo seguinte, descobri meu erro de que o parágrafo inteiro deve estar em caracteres minúsculos, como corrigir esse erro? (Dica - Use o utilitário tr) onzeVivek 1x Renuka Aqui, tr traduz o intervalo de caracteres (ou seja, de a a z pequeno) em outros intervalos (ou seja, de A a Z maiúsculo). Sintaxe geral e uso do utilitário tr: 13 Prakas3 QUE MÁGICA Digite o seguinte comando no prompt do shell: $ tr "h2" "3x" <sname {Pressione CTRL + C para encerrar.} Considere o seguinte exemplo: (depois de executar o comando digite texto em letras minúsculas) $ tr "[az]" "[AZ]" oi, sou Vivek Anterior $ cat > lcommunity.txt ESTE É UM PARÁGRAFO DE EXEMPLO ESCRITO PARA A COMUNIDADE LINUX, POR VIVEK G GITE (QUEM MAIS?) OK, ISSO É HISTÓRIA ANTIGA. Próximo OI SOU VIVEK que magia http://www.cyberciti.biz/pdf/lsst/ch05sec05.html (1 de 2) [29/07/2002 18:53:15] LSST v1.05r3 > Capítulo 5 > Traduzindo intervalo de caracteres usando o utilitário tr Traduzindo intervalo de caracteres usando o utilitário tr Machine Translated by Google
  • 124. Lar Próximo O utilitário de junção Anterior Acima Manipulação de dados usando o utilitário awk http://www.cyberciti.biz/pdf/lsst/ch05sec05.html (2 de 2) [29/07/2002 18:53:15] LSST v1.05r3 > Capítulo 5 > Traduzindo intervalo de caracteres usando o utilitário tr Machine Translated by Google
  • 125. Utilitário awk, selecione cada registro do arquivo contendo a palavra “bom” e execute a ação de imprimir o terceiro campo (Quantidade de bens disponíveis.). Agora tente o seguinte e anote sua saída. $ awk '/good/ { imprimir $1 " " $3 }' inventário Depois de criar o comando de emissão do arquivo $ awk '/good/ { print $3 }' inventário 10 12 5 Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 5: Utilitários essenciais para usuários avançados Sintaxe geral do utilitário awk: Lar Acima Próximo utilitário sed - Editando arquivo sem usar o edito inventário Anterior Traduzindo intervalo de caracteres usando o utilitário tr peça 4 ovo cacke bom 10 queijo ok 4 caneta bom 12 disquete bom 5 É o padrão usado para selecionar linhas do arquivo. / bom/ Esta é a ação; se o padrão for encontrado, imprima essa ação. Aqui $3 significa terceiro registro em {imprimir registro selecionado. (O que $1 e $2 significam?) $3} Arquivo de inventário que é usado pelo utilitário awk que é usado como entrada para o utilitário awk. Próximo Antes de aprender mais sobre o awk, crie um arquivo de dados usando qualquer editor de texto ou simplesmente vi: Uso do utilitário awk: Para manipular dados. Sintaxe: awk 'ação padrão' {nome do arquivo} Anterior Para o exemplo de inventário $ awk '/good/ { print $3 }' , http://www.cyberciti.biz/pdf/lsst/ch05sec06.html [29/07/2002 18:53:17] LSST v1.05r3 > Capítulo 5 > Manipulação de dados usando o utilitário awk Manipulação de dados usando o utilitário awk Machine Translated by Google
  • 126. $ sed '/tea/s//milk/g' cháormilk > /tmp/result.tmp.$$ palavra chá Uso do utilitário sed: sed é usado para editar (transformação de texto) em um determinado fluxo, ou seja, um arquivo ou pode ser inserido de Próximo Removendo linhas duplicadas usando uniq Capítulo 5: Utilitários essenciais para usuários avançados Sintaxe: o chá é melhor que o café. editor para editar qualquer coisa!!!) Tutorial de script de shell do Linux (LSST) v1.05r3 chá Red-Lable é bom. que usa o comando de editores 'ex' para editar arquivos de texto sem iniciar o ex. (Legal! não é? sem uso de texto chá ou leite chá. leite é melhor que café. Lar Anterior O leite da Índia é bom. Substitua (substitua) a palavra leite pela /chá/ um gasoduto. $ gato /tmp/resultado.tmp.$$ Depois de criar o arquivo, dê o comando sed {expressão} {arquivo} Encontre a palavra chá ou selecione todas as linhas com o Anterior Utilitário g Próximo O utilitário sed é usado para encontrar todas as ocorrências de chá e substituí-las pela palavra leite. sed - editor de linha Steam Faça as mudanças globalmente. Acima O leite da Índia é bom. Para esta parte do tutorial, crie um arquivo de dados como segue leite Red-Lable é bom. s//leite/ Manipulação de dados usando o utilitário awk LSST v1.05r3 > Capítulo 5 > utilitário sed - Editando arquivo sem usar o editor http://www.cyberciti.biz/pdf/lsst/ch05sec07.html [29/07/2002 18:53:18] editor utilitário sed - Editando arquivo sem usar Machine Translated by Google
  • 127. sai academia de informática, a'ruim. o que ainda me lembro desse nome. carvalho! como você está, Luser? o que ainda me lembro desse nome. para Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 5: Utilitários essenciais para usuários avançados Após criar o arquivo, emita o seguinte comando no prompt do shell $ uniq personame personagem Sintaxe geral do utilitário uniq: Sintaxe: uniq {nome do arquivo} Olá, sou vivek 12333 12333, bem- vindo sai academia de informática, a'ruim. o que ainda me lembro desse nome. carvalho! como você está, Luser? o que ainda me lembro desse nome. Crie um arquivo de texto pessoal da seguinte maneira: O comando acima imprime as linhas que são exclusivas. Por exemplo, nosso arquivo original contém 12333 duas vezes, portanto cópias adicionais de 12333 são excluídas. Mas se você examinar a saída do uniq, notará que 12333 desapareceu (Duplicado) e "o que ainda me lembro desse nome" permanece como está. Como o utilitário uniq compara apenas linhas adjacentes, as linhas duplicadas devem estar próximas umas das outras no arquivo. Para resolver este problema você pode usar o comando a seguir $ sort personame | único Olá, sou vivek 12333, bem- vindo Anterior Próximo para http://www.cyberciti.biz/pdf/lsst/ch05sec08.html (1 de 2) [29/07/2002 18:53:19] LSST v1.05r3 > Capítulo 5 > Removendo linhas duplicadas usando o utilitário uniq Removendo linhas duplicadas usando o utilitário uniq Machine Translated by Google
  • 128. Utilitário sed anterior - Editando arquivo sem usar Próximo Acima Lar Utilitário editor Encontrando padrão correspondente usando grep LSST v1.05r3 > Capítulo 5 > Removendo linhas duplicadas usando o utilitário uniq http://www.cyberciti.biz/pdf/lsst/ch05sec08.html (2 de 2) [29/07/2002 18:53:19] Machine Translated by Google
  • 129. eu também Depois de salvar o arquivo, emita o seguinte comando, $ grep "too" demofile cartoons são bons, especialmente desenhos como tom (cat) Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 5: Utilitários essenciais para usuários avançados grep localizará todas as linhas do padrão "too" e imprimirá todas as linhas (correspondentes) na tela. impressões grep também, bem como desenhos animados e desenhos animados; porque grep trata "também" como expressão. A expressão por grep é lida como a letra t seguida de o e assim por diante. Portanto, se esta expressão for encontrada em qualquer lugar on-line, ela será impressa. grep não entende palavras. Aprendendo expressões com ex arquivo de demonstração Acima Próximo Olá Mundo! desenhos animados são bons, especialmente desenhos como Tom (gato), qual é a música número um 12221, eles nos amam, eu também Removendo linhas duplicadas do arquivo de banco de dados de texto usando o utilitário uniq Crie um arquivo de texto da seguinte maneira: Lar Sintaxe: grep "palavra para encontrar" {nome do arquivo} Anterior Próximo Anterior http://www.cyberciti.biz/pdf/lsst/ch05sec09.html [29/07/2002 18:53:20] LSST v1.05r3 > Capítulo 5 > Encontrando padrão correspondente usando o utilitário grep Encontrando padrão correspondente usando o utilitário grep Machine Translated by Google
  • 130. Introdução Padrão definido como: “Conjunto de caracteres (podem ser palavras ou não) é chamado de padrão”. Uma é a palavra gato (o segundo gato é um animal! Eu conheço 'tom' cat). Se a mesma pergunta for feita ao computador (não ao computador, mas ao utilitário grep), o grep tentará encontrar todas as ocorrências da palavra "gato" ( lembre-se de que grep leia a palavra "cat" como a letra c seguida por a e seguida por t), incluindo cat, copycat, catalog etc. Para esta parte do capítulo/tutorial crie 'demofile' - arquivo de texto usando qualquer editor de texto. Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6: Aprendendo expressões com ex Por exemplo, "cachorro", "celeron", "mouse", "navio" etc. são todos exemplos de padrão. O padrão pode ser alterado de um para outro, por exemplo, "navio" como "ovelha". Anterior Encontrando padrão correspondente usando o utilitário grep • sed O que “gato” significa para você? Então você deve saber como construir expressões regulares. Na próxima parte do LSST você aprenderá como construir expressões regulares usando o editor ex. Expressões regulares são usadas por diferentes utilitários Linux como Próximo Começando com ex No capítulo 5, "Tour rápido pelos utilitários essenciais", você viu os utilitários básicos. Se você usá-los com outras ferramentas, esses utilitários são muito úteis para processamento de dados ou para outros trabalhos. Na parte restante do tutorial, aprenderemos mais sobre padrões, filtros, expressões e, claro, sed e awk em profundidade. Anterior Metacaracteres definidos como: "Se os padrões forem identificados usando caracteres especiais, esses caracteres especiais serão conhecidos como metacaracteres". • grep • awk Lar expressões definidas como: "A combinação de padrão e metacaracteres é conhecida como expressões (expressões regulares)." Próximo Acima http://www.cyberciti.biz/pdf/lsst/ch06.html [29/07/2002 18:53:23] LSST v1.05 > Capítulo 6 > Introdução Aprendendo expressões com ex Machine Translated by Google
  • 131. Exemplo: Próximo ex {nome do arquivo} Tutorial de script de shell do Linux (LSST) v1.05r3 $ ex demofile Como você pode ver, você obterá : prompt, aqui você pode digitar ex comando, digitar q e pressionar a tecla ENTER para saia de ex conforme mostrado a seguir: (lembre-se de que os comandos diferenciam maiúsculas de minúsculas) :q Imprimindo texto na tela Você pode iniciar o editor ex digitando ex no prompt do shell: Entrando no modo Ex. Digite “visual” para ir para o modo Normal. Lar : Sintaxe: Acima $ ex demofile Anterior Anterior Aprendendo expressões com ex Próximo "demofile" [noeol] 20L, 387C O : (dois pontos) é um prompt ex onde você pode digitar o comando ex do editor de texto ou uma expressão regular. É hora de Capítulo 6: Aprendendo expressões com ex vivek@ls vivek]$ Depois de digitar o comando q , você sai para o prompt do shell. abra nosso demofile, use ex da seguinte forma: LSST v1.05 > Capítulo 6 > Introdução ao ex http://www.cyberciti.biz/pdf/lsst/ch06sec01.html [29/07/2002 18:53:24] Começando com ex Machine Translated by Google
  • 132. Imprimindo texto na tela NOTA Por padrão, o comando p imprimirá a linha atual, no nosso caso é a última linha do arquivo de texto acima. : Para imprimir a segunda linha do nosso arquivo, dê o comando : 2 p Este é vivek de Poona. Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6: Aprendendo expressões com ex Dê o comando : 1,$ p Olá mundo. Agora digite 'p' na frente de: como segue e pressione enter NOTA Aqui 1,5 é o endereço. se for usado um único número (por exemplo, 5 p), indica o número da linha e se dois números forem separados por vírgula, o intervalo da linha. :p Ok! Eu irei parar. Eu amo Linux. É diferente de todos os outros sistemas operacionais Próximo Primeiro abra nosso demofile da seguinte maneira: $ ex demofile "demofile" [noeol] 20L, 387C Entrando no modo Ex. Digite “visual” para ir para o modo Normal. É diferente de todos os outros sistemas operacionais Agora, se você deseja imprimir a primeira linha nas próximas 5 linhas (ou seja, 1 a 5 linhas), dê o comando : 1,5 p Hello World. Este é vivek de Poona. Anterior Este é vivek de Poona. Eu amo Linux. LSST v1.05 > Capítulo 6 > Impressão de texto na tela http://www.cyberciti.biz/pdf/lsst/ch06sec02.html (1 de 2) [29/07/2002 18:53:25] Imprimindo uma linha específica Imprimindo linhas usando intervalo Imprimindo arquivo inteiro na tela Machine Translated by Google
  • 133. 2 Este é vivek de Poona. 3 1 Olá, mundo. ..... NOTA Este comando imprime um número próximo a cada linha. Se você não quiser o número, você pode desativar os números emitindo o seguinte comando : set nonumber: 1,3 p Próximo Excluindo linhas Lar Acima Dê o comando : definir número: 1,3 p Anterior OK! Eu irei parar. NOTA Aqui 1 é a primeira linha e $ é o caractere especial de ex, que significa caractere da última linha. Então 1,$ significa imprimir da primeira linha até o caractere da última linha (ou seja, final do arquivo). Aqui p significa impressão. Começando com ex Olá Mundo. ... ..... Este é vivek de Poona. http://www.cyberciti.biz/pdf/lsst/ch06sec02.html (2 de 2) [29/07/2002 18:53:25] LSST v1.05 > Capítulo 6 > Impressão de texto na tela Imprimindo o número da linha com nosso texto Machine Translated by Google
  • 134. OBSERVAÇÃO Eu amo Linux. Tutorial de script de shell do Linux (LSST) v1.05r3 Aqui 1 é a 1ª linha e o comando d indica exclusões (que exclui a 1ª linha). Próximo Copiando linhas Dê o comando Lar Acima :1, d Anterior Anterior Próximo Imprimindo texto na tela Você pode até excluir o intervalo da linha dando o comando como Capítulo 6: Aprendendo expressões com ex :1,5d http://www.cyberciti.biz/pdf/lsst/ch06sec03.html [29/07/2002 18:53:26] LSST v1.05 > Capítulo 6 > Excluindo linhas Excluindo linhas Machine Translated by Google
  • 135. . (DOT) é um comando especial do Linux. ..... Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6: Aprendendo expressões com ex OK! Eu irei parar. Meu irmão Vikrant também adora Linux. Atualmente ele aprende Linux. Linux é legal. É diferente de todos os outros sistemas operacionais Eu amo Linux. Você sabe? É diferente de todos os outros sistemas operacionais .... . (DOT) é um comando especial do Linux. Meu irmão Vikrant também adora Linux. Próximo Rani minha irmã nunca usa Linux Ela só adora jogar e nada mais. Dê o comando da seguinte forma : 1,4 co $: 1,$ p Eu amo Linux. NOTA Aqui 1,4 significa copiar de 1 a 4 linhas; comando co significa cópia; $ é o fim do arquivo. Então, isso significa copiar as primeiras quatro linhas até o final do arquivo. Você pode excluir esta linha da seguinte maneira : 18,21 d Ok! Eu irei parar. :1,$p Eu amo Linux. O Linux agora tem 10 anos. No próximo ano o Linux completará 11 anos. É diferente de todos os outros sistemas operacionais Anterior http://www.cyberciti.biz/pdf/lsst/ch06sec04.html (1 de 2) [29/07/2002 18:53:28] LSST v1.05 > Capítulo 6 > Copiando linhas Copiando linhas Machine Translated by Google
  • 136. Anterior Acima Excluindo linhas OK! Eu irei parar. Procurando as palavras Lar Próximo http://www.cyberciti.biz/pdf/lsst/ch06sec04.html (2 de 2) [29/07/2002 18:53:28] LSST v1.05 > Capítulo 6 > Copiando linhas Machine Translated by Google
  • 137. Procurando as palavras (b) Dê o seguinte comando : g/ linux/ p :/Linux/ Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6: Aprendendo expressões com ex Eu amo Linux. :c Dê o comando Nota Por exemplo, você pode especificar o endereço (linha) usando um número para várias operações. Isso é útil se você souber o número da linha com antecedência, mas se não souber o número da linha, poderá usar o endereço contextual para imprimir a linha na tela. No exemplo acima, /linux/ é um endereço contextual que é construído cercando uma expressão regular com duas barras. E p é o comando de impressão de ex. No exemplo anterior (:/linux/ p) apenas uma linha é impressa. Se você quiser imprimir todas as ocorrências da palavra "linux", então você deve usar g, que significa endereço de linha global. Isso instrui ex a encontrar todas as ocorrências do padrão. Tente seguir :1,$ /Linux/ p :q O que dá o mesmo resultado. Isso significa que g significa 1,$. Tente seguir e anote a diferença (Dica - falta o relógio p) No próximo ano o Linux completará 11 anos. Próximo Dê o comando (a) Dê o seguinte comando :/linux/ p Eu amo Linux. . (DOT) é um comando especial do Linux. Meu irmão Vikrant também adora Linux. "demofile" 20L, 386C escrito O comando w salvará o arquivo. Atualmente ele aprende Linux. Anterior LSST v1.05 > Capítulo 6 > Pesquisando as palavras http://www.cyberciti.biz/pdf/lsst/ch06sec05.html (1 de 2) [29/07/2002 18:53:29] Salvando o arquivo em ex Desistir do ex Machine Translated by Google
  • 138. Próximo Linhas de enfrentamento Acima Localizar e substituir (substituindo regular Anterior Lar Observe que use o comando wq para salvar e sair do ex. O comando q sai do ex e você retorna ao prompt do shell. expressão) http://www.cyberciti.biz/pdf/lsst/ch06sec05.html (2 de 2) [29/07/2002 18:53:29] LSST v1.05 > Capítulo 6 > Pesquisando as palavras Machine Translated by Google
  • 139. Nota Usando o comando acima, você está substituindo a palavra "aprender" pela palavra "lerarns". Considerado o seguinte comando: .... Próximo Explicação Comando Capítulo 6: Aprendendo expressões com ex Olá Mundo. :p Padrão alvo Se o padrão alvo for encontrado, substitua a expressão (ou seja :8 s/aprende/aprende/ Tutorial de script de shell do Linux (LSST) v1.05r3 Substituto :8h Explicação é OK! Eu irei parar. ..... Substituto Comando Rani minha irmã nunca usa Unix :1,$s/Linux/Unix/ .. O comando acima pode ser explicado da seguinte forma: Substitua todas as linhas Anterior Este é vivek de Poona. Atualmente ele aprende Linux. aprender/ ) :1,$ aprender/ o padrão "Linux" e se o padrão "Linux" for encontrado, substitua o padrão "Unix". Vá para a linha 8, endereço da linha. /aprende/ Usando o comando acima, você está substituindo todas as linhas, ou seja, o comando encontrará toda a linha de endereço para Atualmente ele aprende Linux. é Dê o comando da seguinte forma 8 :1,$p . (DOT) é um comando especial do Linux. http://www.cyberciti.biz/pdf/lsst/ch06sec06.html (1 de 3) [29/07/2002 18:53:31] LSST v1.05 > Capítulo 6 > Localizar e substituir (substituindo expressão regular) Localizar e substituir (substituindo regular expressão) Machine Translated by Google
  • 140. O comando acima encontra todas as linhas que contêm a expressão regular "Unix" e, em seguida, substitui "Linux" por todas as ocorrências de "Unix". Observe que o comando acima também pode ser escrito da seguinte forma : g /Unix/ s//Linux Tente o seguinte e observe o resultado com muito cuidado. :g /Unix/ s/Unix/Linux 3 substituições em 3 linhas Por padrão, o comando substituto substitui apenas a primeira ocorrência de um padrão em uma linha. Vamos dar outro exemplo, dê o comando :/brother/p Meu irmão Vikrant também adora Linux, que também adora Unix. /Linux/ Aqui // é substituído pelo último padrão/expressão regular, ou seja, Unix. Seu atalho. Agora tente o seguinte :g /Linux/ s// UNIX/ 3 substituições em 3 linhas :g/ Linux/p Linux é legal. Agora na linha acima "também" a palavra ocorre duas vezes, dê o seguinte comando substituto : g/brother/ s/ also/XYZ/ :/brother/p Meu irmão Vikrant XYZ adora Linux, que também adora Unix. Rani minha irmã sempre usa Unix UNIX agora tem 10 anos. O comando acima primeiro encontrará a linha contendo o padrão "irmã", se encontrado, então substituirá o padrão "sempre" pelo padrão "nunca" (significa encontrar a linha que contém a palavra irmã, nessa linha encontre a palavra nunca e substitua-a com palavra sempre.) Rani minha irmã sempre usa UNIX :g /Linux/ s//UNIX/ 3 substituições em 3 linhas :g/ UNIX/p Mesmo você também pode usar o endereço contextual da seguinte forma :/sister/ p Rani, minha irmã nunca usa Unix :g / sister/ s/never/always/ :p Unix/ O Linux agora tem 10 anos. UNIX é legal. Padrão de destino Se o padrão de destino for encontrado, substitua a expressão (ou seja, Unix/ ) Rani minha irmã sempre usa Linux http://www.cyberciti.biz/pdf/lsst/ch06sec06.html (2 de 3) [29/07/2002 18:53:31] LSST v1.05 > Capítulo 6 > Localizar e substituir (substituindo expressão regular) Machine Translated by Google
  • 141. Anterior A opção g no final instrui o comando para realizar a substituição em todas as ocorrências do padrão de destino dentro de uma linha de endereço. Substituindo a palavra pela confirmação de do utilizador :g/brother/ s/XYZ/also/g :p Meu irmão Vikrant também adora Linux, que também adora Unix. Próximo Observe que "também" é substituído apenas uma vez. Se você quiser que o comando funcione com todas as ocorrências de padrão dentro de uma linha de endereço, dê o comando da seguinte forma: :g/brother/ s/also/XYZ/ g :p Meu irmão Vikrant XYZ adora Linux, que XYZ adora unix. Certifique-se de que da próxima vez funcione :g/brother/ s/XYZ/also/ Lar Procurando as palavras Acima http://www.cyberciti.biz/pdf/lsst/ch06sec06.html (3 de 3) [29/07/2002 18:53:31] LSST v1.05 > Capítulo 6 > Localizar e substituir (substituindo expressão regular) Machine Translated by Google
  • 142. Depois de dar este comando, ex fará perguntas como - substituir por UNIX (y/ n/ a/ q/ ^E/ ^Y)? :g/Linux/s//UNIX/gc Encontrando palavras Tutorial de script de shell do Linux (LSST) v1.05r3 Digite y para substituir a palavra ou n para não substituir ou a para substituir todas as ocorrências da palavra. Acima Dê o comando da seguinte forma Próximo expressão) Anterior Próximo Capítulo 6: Aprendendo expressões com ex Anterior Lar Localizar e substituir (substituindo regular http://www.cyberciti.biz/pdf/lsst/ch06sec07.html [29/07/2002 18:53:32] LSST v1.05 > Capítulo 6 > Substituindo palavra pela confirmação do usuário do utilizador Substituindo a palavra pela confirmação de Machine Translated by Google
  • 143. Os símbolos < e > correspondem respectivamente à string vazia no início e no final da palavra. Para encontrar a linha que contém o padrão Linux no início, dê o comando :/^Linux Linux é legal. Rani minha irmã nunca usa Linux Para visualizar o arquivo inteiro sem linha em branco, você pode usar o comando a seguir: :g/[^/^$] Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6: Aprendendo expressões com ex Como você sabe, $ é um caractere de fim de linha, o ^ (caret) corresponde ao início da linha. Para encontrar todas as ocorrências do padrão "Linux" no início da linha, dê o comando :g/^Linux Linux é legal. Olá Mundo. Este é vivek de Poona. Encontrará palavras como teatro, o, irmão, outro etc. E se você quiser apenas encontrar palavras como "o" ? Para encontrar a palavra (digamos Linux), você pode dar um comando como :/<Linux> Linux é legal. :g/ <Linux>/ p Linux é legal. O seguinte comando encontrará uma linha vazia:: / ^$ O Linux agora tem 10 anos. Para encontrar todas as linhas em branco, dê o comando: :g/^$ :/Linux$ Próximo Comandos como :g/ the/p É diferente de todos os outros Os. Meu irmão Vikrant também adora Linux, que também adora Unix. Rani minha irmã nunca usa Linux O Linux agora tem 10 anos. Eu amo Linux. E se você quiser encontrar "Linux" no final da linha, dê o comando Anterior É diferente de todos os outros sistemas operacionais LSST v1.05 > Capítulo 6 > Encontrando palavras http://www.cyberciti.biz/pdf/lsst/ch06sec08.html (1 de 3) [29/07/2002 18:53:33] Encontrando palavras Machine Translated by Google
  • 144. g /[^ O Linux agora tem 10 anos. Este é vivek de Poona. O Linux agora tem 10 anos. Atualmente ele aprende Linux. Explicação Atualmente ele aprende Linux. :você Meu irmão Vikrant também adora Linux, que também adora Unix. Comando É diferente de todos os outros Os. Meu irmão Vikrant também adora Linux, que também adora Unix. . (DOT) é um comando especial do Linux. Este é vivek de Poona. . (DOT) é um comando especial do Linux. OK! Eu irei parar. ... Rani, minha irmã nunca usa Linux. Ela só adora jogar e nada mais. /^$ Rani, minha irmã nunca usa Linux. Ela só adora jogar e nada mais. No próximo ano o Linux completará 11 anos. No próximo ano o Linux completará 11 anos. [^] Isso significa não linha vazia, combinação de ^ e $. .... Linux é legal. Todas as ocorrências Linux é legal. :1,$p Olá, mundo. Experimente o comando para desfazer, para desfazer o que você fez, dê o seguinte: Eu amo Linux. OK! Eu irei parar. OK! Eu irei parar. Você sabe? Para deletar todas as linhas em branco você pode dar o seguinte comando : g/^$/d Ok! Eu irei parar. :1,$p Olá, mundo. Você sabe? .... http://www.cyberciti.biz/pdf/lsst/ch06sec08.html (2 de 3) [29/07/2002 18:53:33] LSST v1.05 > Capítulo 6 > Encontrando palavras Machine Translated by Google
  • 145. expressões Acima Usando intervalo de caracteres regularmente do utilizador Lar Próximo Substituindo a palavra pela confirmação de Anterior http://www.cyberciti.biz/pdf/lsst/ch06sec08.html (3 de 3) [29/07/2002 18:53:33] LSST v1.05 > Capítulo 6 > Encontrando palavras Machine Translated by Google
  • 146. Meu irmão Vikrant também adora Linux, que também adora Unix. Isto irá encontrar apenas "Linux" e não o "linux", para superar este problema tente o seguinte :g/[Ll]inux/p Eu amo linux. O Linux agora tem 10 anos. Linux Shell Scripting Tutorial (LSST) v1.05r3 Capítulo 6: Aprendendo expressões com ex Atualmente ele aprende Linux. No próximo ano o Linux completará 11 anos. Aqui, o intervalo de dígitos é especificado fornecendo o primeiro dígito (0-zero) e o último dígito (1), separados por hífen. Você pode tentar [az] para caracteres minúsculos, [AZ] para caracteres maiúsculos. Não apenas isso, existem certas classes nomeadas de caracteres que são predefinidas. Eles são os seguintes: O Linux agora tem 10 anos. Aqui está uma lista de caracteres entre [e], que corresponde a qualquer caractere único nesse intervalo. se o primeiro caractere da lista for ^, ele corresponderá a qualquer caractere que não esteja na lista. No exemplo acima [Ll], tentaremos combinar L ou l com o resto do padrão. Vejamos outro exemplo. Suponha que você queira corresponder um caractere de um dígito no intervalo, você pode dar o comando da seguinte forma :/[0123456789] Significado Rani minha irmã nunca usa Linux Até você pode tentar da seguinte maneira : g/[0-9] No próximo ano o Linux completará 11 anos. Letras de A a Z ou de a a z Excluir caractere ou caractere de controle comum (0x7F ou 0x00 a 0x1F) [:alnum:] [:alfa:] [:cntrl:] Tente o seguinte comando : g/Linux/ p Linux é legal. Anterior Linux é legal. Rani, minha irmã nunca usa Linux. (DOT) é um comando especial do Linux. Classes predefinidas de personagens Próximo O Linux agora tem 10 anos. Letras e dígitos (A a Z ou a a z ou 0 a 9) http://www.cyberciti.biz/pdf/lsst/ch06sec09.html (1 de 3) [29/07/2002 18:53:35] LSST v1.05 > Capítulo 6 > Usando intervalo de caracteres em expressões regulares Usando intervalo de caracteres em expressões regulares Machine Translated by Google
  • 147. [:digit:] [:graph:] [:lower:] [:print:] [:punct:] Dígito hexadecimal (0 a 9, A a F, a a f) Isso incluirá lo(ves), Do, no(thing) etc. Aqui, o primeiro caractere c é correspondido, depois qualquer caractere único (.) seguido por um número n de caractere único (1 ou 100 vezes par) e finalmente termina com e. Isso pode encontrar palavras diferentes como segue comando ou catand etc. Dígito (0 a 9) [:espaço:] * Corresponde a zero ou mais vezes. Por exemplo, digite o seguinte comando : g/L* Hello World. Este é vivek de Poona. Nos metacaracteres de expressão regular, como . (DOT) ou * perdem seu significado especial se usarmos como . ou *. A barra invertida remove o significado especial de tais caracteres de carne e você pode usá-los como caracteres comuns. Por exemplo, se você quiser pesquisar. (DOT) no início da linha, então você não pode Espaço, tabulação, retorno de carro, nova linha, tabulação vertical ou avanço de formulário (0x09 a 0x0D, 0x20) Por exemplo, digite o seguinte comando : g/ <.o> Ela só adora jogar e nada mais. Rani minha irmã nunca usa Linux Letra maiúscula (A a Z) Você sabe? Em vez de escrever esse comando, você pode facilmente usar classes ou intervalos predefinidos da seguinte forma :/ [[:alnum:]] :g/Li* Linux é legal. :g/c.*e . (DOT) é um comando especial do Linux. Caractere de impressão (0x20 a 0x7E) O Linux agora tem 10 anos. Caractere de pontuação (ctrl ou espaço) Caractere de impressão, como impressão, exceto que um caractere de espaço é excluído [:superior:] [:xdígito:] O . (ponto) corresponde a qualquer caractere único. .... Letra minúscula (a a z) Por exemplo, para encontrar dígitos ou alfabeto (superior e inferior), você escreverá :/[0-9A- Za-Z] .... http://www.cyberciti.biz/pdf/lsst/ch06sec09.html (2 de 3) [29/07/2002 18:53:35] LSST v1.05 > Capítulo 6 > Usando intervalo de caracteres em expressões regulares Machine Translated by Google
  • 148. Em vez disso, use :g/ ^. OK! Eu irei parar. use o comando da seguinte forma : g/^. . (DOT) é um comando especial do Linux. ... Próximo . (DOT) é um comando especial do Linux. Usando & como caractere de substituição especial Lar .... .. Olá Mundo. Anterior Acima Encontrando palavras Este é vivek de Poona. http://www.cyberciti.biz/pdf/lsst/ch06sec09.html (3 de 3) [29/07/2002 18:53:35] LSST v1.05 > Capítulo 6 > Usando intervalo de caracteres em expressões regulares Machine Translated by Google
  • 149. 3 substituições em 3 linhas :1,$ s/Linux/&-Unix/p padrão (finalmente construindo o substituto "Linux-Unix" para "Linux"). Convertendo caracteres minúsculos em Rani minha irmã nunca usa Linux-Unix Tutorial de script de shell do Linux (LSST) v1.05r3 Você consegue adivinhar a saída deste comando? :1,$ s/Linux-Unix/&Linux/p maiúsculas Este comando substituirá o padrão de destino "Linux" por "Linux-Unix". & antes - Unix significa usar "último Acima Experimente o seguinte comando: padrão encontrado" com determinado padrão, então aqui o último padrão encontrado é "Linux", que é usado com determinado -Unix Linux-Unix já completou 10 anos. expressões Próximo Próximo Lar Rani minha irmã nunca usa Linux-Unix Capítulo 6: Aprendendo expressões com ex :g/Linux-Unix/p Anterior Anterior Linux-Unix é legal. Usando intervalo de caracteres regularmente http://www.cyberciti.biz/pdf/lsst/ch06sec10.html [29/07/2002 18:53:35] LSST v1.05 > Capítulo 6 > Usando & como caractere de substituição especial personagem Usando & como substituto especial Machine Translated by Google
  • 150. A localização do endereço da linha é tudo, ou seja, encontre todas as linhas para seguir o padrão g Anterior Próximo Capítulo 6: Aprendendo expressões com ex :1,$ s/^ *$// 1,$ /[az]/ Comando Tutorial de script de shell do Linux (LSST) v1.05r3 é :1,$ s/[az]/u &/g Substituição de MAIÚSCULAS (u) Nota: Use l (L pequeno) para caracteres minúsculos. Espero que você tenha aprendido muito com isso. Para dominar a expressão você precisa praticar bastante. Esse Próximo Lar Encontre todas as letras minúsculas - Destino :1,$ s/[AZ]/l&/g Você consegue adivinhar a saída do seguinte comando? Usando & como caractere de substituição especial Comando substituto Anterior Nota: indica dois espaços pretos. Explicação você&/ seus amigos com tais expressões. Você consegue adivinhar o que a última expressão faz? Substituição global tutorial é muito importante para continuar com o restante do tutorial e se tornar um usuário avançado do Linux. Impressionar awk - revisitado O comando acima pode ser explicado da seguinte forma: Tente o seguinte comando Substitua por maiúsculas. u& significa substituir o último padrão (&) correspondente ao seu Parabéns pela conclusão bem-sucedida deste tutorial de expressões regulares. Acima http://www.cyberciti.biz/pdf/lsst/ch06sec11.html [29/07/2002 18:53:37] LSST v1.05 > Capítulo 6 > Convertendo caracteres minúsculos em maiúsculos maiúsculas Convertendo caracteres minúsculos em Machine Translated by Google
  • 151. Padrão { Corresponder a zero ou mais caracteres ^ Anterior ? Escolhas separadas para combinar Próximo Capítulo 7: awk revisitado Personagem de escape seguindo awk -f {arquivo de programa awk} nome do arquivo Significado Tutorial de script de shell do Linux (LSST) v1.05r3 Sintaxe: expressões. A seguir está o resumo dos metacaracteres comuns do awk: criação etc awk lê a entrada de determinado arquivo (ou também de stdin) uma linha por vez, então cada linha é comparada * Intervalo de correspondência da instância maiúsculas Anterior O utilitário awk é uma linguagem de programação de script/manipulação de dados poderosa (na verdade, baseada no C ação 2 Metacaractere } Próximo ação 1 $ | Começando com o awk O programa awk contém algo como segue: Combine qualquer personagem Lista + Fim da linha da correspondência Combine zero ou um anterior Acima com padrão. Se o padrão corresponder a cada linha, uma determinada ação será executada. O padrão pode ser regular Corresponder ao início da linha Combine mais um anterior Sintaxe geral do awk: Lar Convertendo caracteres minúsculos em linguagem de programação). Use o awk para lidar com tarefas complexas, como cálculo, manipulação de banco de dados, relatório ação N . (Ponto) [ ] { } LSST v1.05 > Capítulo 7 > awk - Revisitado http://www.cyberciti.biz/pdf/lsst/ch07.html [29/07/2002 18:53:38] Introdução: awk - revisitado Machine Translated by Google
  • 152. 4 1. Caneta 5 20,00 ----> É um recorde. 1. Caneta -> Rs.100 Anterior '{imprime $1 $2 "--> Rs." $ 3 * $ 4 O comando print é usado para imprimir conteúdo de variáveis ou texto incluído em Digite o seguinte programa awk no prompt do shell, Capítulo 7: awk revisitado programa/comando no prompt do shell: 2 campos tem seus próprios atributos. Por exemplo, pegue a quantidade. campo. Quantidade. O atributo de campos é seu numérico (pode conter Tutorial de script de shell do Linux (LSST) v1.05r3 1 Nos campos do arquivo acima estão Sr.No,Product,Qty,Unit Price. Campo é o menor elemento de qualquer registro. Cada Preço Lápis 3 3,50 $ 3, $ 4 representam respectivamente os campos Sr.No, Produto, Quantidade e Preço Unitário. (Não confunda $1,$2 etc com O programa/comando awk acima pode ser explicado da seguinte forma: base de dados. Observe que "--> Rs." é uma string que é impressa como sua. 3. Borracha -> Rs.10,5 } ' Considere o seguinte arquivo de banco de dados de texto 5 20h00 espaço (ou caractere de tabulação) e o registro é separado usando um caractere de nova linha (ou seja, cada registro termina em A coleção de registros é conhecida como arquivo de banco de dados. No arquivo de banco de dados de texto acima, cada campo é separado usando Próximo Caneta 2. Lápis -> Rs.20 da variável contém o valor do campo. Finalmente podemos fazer diretamente o 3 apenas dados numéricos). A coleção de campos é conhecida como registro. Então $ awk '{ imprimir $1 $2 "--> Rs." $3 * $4 }'invenção text ". Aqui $1, $2, $3,$4 são todas variáveis especiais. $1, $2, etc. Para esta parte do tutorial, crie um arquivo de dados de texto inventado (mostrado como acima). Agora digite o seguinte awk simples Explicação Nota $1,$2 etc (no awk) também é conhecido como variável predefinida e pode atribuir qualquer valor encontrado no campo. Galo 2 45,50 argumentos de linha de comando do shell script) declaração do programa awk Sr. Sem quantidade de produto " cálculo usando $3 * $4, ou seja, multiplicação do terceiro e quarto campo em Unidade Borracha 10 2,00 o fim da linha). No awk, os campos são acessados usando variáveis especiais. Por exemplo, no banco de dados acima $1, $2, 4. Galo -> Rs.91 http://www.cyberciti.biz/pdf/lsst/ch07sec01.html (1 de 3) [29/07/2002 18:53:39] LSST v1.05 > Capítulo 7 > Começando com o awk Machine Translated by Google
  • 153. , que imprime o registro inteiro, você pode verificar isso emitindo o seguinte awk Aqui o terceiro campo do banco de dados é comparado com 5, este é o padrão. Se esse padrão for encontrado em qualquer banco de dados de linha, o registro inteiro será impresso. $ awk '{print $2}' invenção Você também pode criar um arquivo de comando (programa) awk da seguinte maneira: -f opção instrui o awk, para ler seu , awk imprime o segundo campo do arquivo. Da mesma forma, se você deseja imprimir o segundo e o quarto campo do arquivo, dê o seguinte comando: $awk '{print $2 $4}' inven Pen20.00 Pencil2.00 Rubber3.50 Cock45.50 Agora crie o seguinte programa awk da seguinte maneira: $cat > comp_inv 3 > 5 { print $0 } $0 é uma variável especial do comando awk: $ awk '{print $0}' inven 1. Caneta 5 20,00 2. Lápis 10 2,00 3. Borracha 3 3,50 4. Galo 2 45,50 Execute-o da seguinte maneira: $ awk -f comp_inv inven 2. Lápis 10 2,00 E então você pode executar ou executar o arquivo de comando awk "prn_pen" acima como segue $ awk -f prn_pen inven 5 10 Borracha Galo Caneta $ gato > prn_pen No programa awk acima /Pen/ é o padrão de pesquisa, se esse padrão for encontrado na linha (ou registro), imprima o terceiro campo do registro. {print $3} é chamado de Ação. No prompt do shell, $ awk -f prn_pen comando inven de determinado arquivo, inven é o nome do arquivo de banco de dados que é tomado como entrada para o awk. Lápis /Caneta/ {imprimir $3} http://www.cyberciti.biz/pdf/lsst/ch07sec01.html (2 de 3) [29/07/2002 18:53:39] LSST v1.05 > Capítulo 7 > Machine Translated by Google
  • 154. Acima Variável predefinida do awk Lar Anterior awk revisitado Próximo LSST v1.05 > Capítulo 7 > http://www.cyberciti.biz/pdf/lsst/ch07sec01.html (3 de 3) [29/07/2002 18:53:39] Machine Translated by Google
  • 155. Execute-o da seguinte maneira. Significado Número do registro de entrada Anterior NR ORS Próximo Capítulo 7: awk revisitado String separadora de registros de saída (o padrão é NF registro de entrada respectivamente. No exemplo acima, NR é alterado conforme nosso registro de entrada muda, e NF é Tutorial de script de shell do Linux (LSST) v1.05r3 " NR e NF são variáveis predefinidas do awk, o que significa Número de registros de entrada, Número de campos em { Impressão Rec. # 3 (3. Borracha 3 3,50), e o número de campos para este registro é 4 nova linha) padrão) Começando com o awk Formato de saída do número FS Nosso próximo exemplo fala mais sobre a variável predefinida do awk. Crie o arquivo awk da seguinte maneira: Impressão Rec. # 1 (1. Pen 5 20,00), E o número do campo para este registro é 4 variável awk FILENAME Nome do arquivo de entrada atual Próximo $awk -f def_var invenção Número de campos no registro de entrada OFMT Fazendo aritmética com awk } constante, pois há apenas 4 campos por registro. A tabela a seguir mostra uma lista dessas variáveis integradas do awk. nova linha) NF padrão) OFS Acima Impressão Rec. # 4 (4. Cock 2 45,50), e o número de campos para este registro é 4 String separadora de campo de saída (em branco é RS print "Imprimindo Rec. #" NR "(" $0 "),E o número do campo para este registro é Lar Anterior $ gato > def_var Impressão Rec. # 2 (2. Lápis 10 2,00), e o número do campo para este registro é 4 Caractere separador de registro de entrada (o padrão é Caractere separador de campo (em branco e tabulação é LSST v1.05 > Capítulo 7 > Variável predefinida do awk http://www.cyberciti.biz/pdf/lsst/ch07sec02.html [29/07/2002 18:53:40] Variável predefinida do awk Machine Translated by Google
  • 156. "$ 1 * $ 2 = 20 módulo 3 = 2 Anterior Variáveis predefinidas do awk = Capítulo 7: awk revisitado 20/3 = 6,66667 "US$ 1 - US$ 2 x Tutorial de script de shell do Linux (LSST) v1.05r3 "$ 1 + $ 2 = { = 20 3 (Divisão),% (uso modular para encontrar o restante da operação de divisão). Variáveis definidas pelo usuário no awk "$2" Acima Você pode facilmente fazer a aritmética com o awk da seguinte maneira + Execute o programa awk da seguinte maneira: } Próximo "$1 % $2 (Pressione CTRL + D para encerrar) Lar "$1/$2 = 20 x 3 = 60 Anterior 20 - 3 = 17 + - 20 + 3 = 23 "$1 + $2, a instrução é usada para fins de adição. Aqui $1 + $2, imprimir $ 1 " " $ 2 " imprimir $ 1 " " $ 2 " imprimir $ 1 " / " $ 2 " imprimir $ 1 " " $ 2 " imprimir $ 1 " mod " $ 2 " Próximo $ gato > matemática = $ awk -f matemática No programa acima, print $1 "significa adicionar (+) o primeiro campo ao segundo campo. Da mesma forma que você pode fazer - (subtração), * (multiplicação), / http://www.cyberciti.biz/pdf/lsst/ch07sec03.html [29/07/2002 18:53:41] LSST v1.05 > Capítulo 7 > Fazendo aritmética com awk Fazendo aritmética com awk Machine Translated by Google
  • 157. "não2" No programa acima, no1, no2 e todos são variáveis definidas pelo usuário. Os valores do primeiro e do segundo campo são = Anterior } suporte. artigo = $2 Aqui estamos imprimindo o preço total de cada produto (multiplicando o terceiro campo pelo quarto campo). Capítulo 7: awk revisitado " resposta = $ 1 + $ 2 1 5 Tutorial de script de shell do Linux (LSST) v1.05r3 não2 = $2 $ awk -f matemática1 { = resposta. Observe que a instrução print imprime qualquer coisa { 2.Lápis Rs.20 Agora tente o seguinte programa awk e anote sua saída. $ awk -f fatura inventada Você também pode definir sua própria variável no programa awk, da seguinte maneira: " impresso usando a instrução print as, print no1 no2 entre aspas duplas ("texto") como está. Se a string não estiver entre aspas duplas, ela será tratada como atribuído à variável no1, no2 respectivamente e a adição à variável ans. O valor da variável pode ser Próximo + + Execute-o como O programa a seguir imprime o preço total de cada produto, bem como o total geral de todos os produtos no imprimir nº1 "} 1 + 5 = 6 " imprimir item de reconhecimento "Rs." total " reconhecimento = $ 1 4. Galo Rs.91 Execute o programa da seguinte maneira " total = $ 3 * $ 4 não1 = $1 3.Borracha Rs.10,5 1.Caneta Rs.100 $ gato > matemática1 resposta variável. Além disso, os dois programas acima recebem entrada de stdin (teclado) em vez de arquivo. $ gato > conta http://www.cyberciti.biz/pdf/lsst/ch07sec04.html (1 de 3) [29/07/2002 18:53:42] LSST v1.05 > Capítulo 7 > Variáveis definidas pelo usuário no awk Variáveis definidas pelo usuário no awk Machine Translated by Google
  • 158. BEGIN { print "--------------------------" print "Projeto de lei de 4 de março de 2001. " print "Por Vivek G Gite . " imprimir "---------------------------" $ gato > conta2 --------------------------- } Projeto de lei de 4 de março de 2001. 4. Galo Rs.91 [Total Rs.221,5] } Neste programa, a variável gtotal contém o total geral. Soma o total de cada produto como gtotal = gtotal + total. Finalmente este total é impresso com cada registro entre colchetes. Mas há um problema com nosso roteiro, o total geral é impresso principalmente no final de todos os registros. Para resolver este problema, temos que usar padrões BEGIN e END especiais do awk. Primeiro tome o exemplo, Execute-o como $awk -f bill2 inven } 2. Lápis Rs.20 [Total Rs.120] 3.Borracha Rs.10,5 [Total Rs.130,5] { total = $3 * $4 recno = $1 item = $2 gtotal = gtotal + total imprimir item recno "Rs." total " [Total de R$." gtotal "] " } { END { imprimir "--------------------------" imprimir "Total Rs." impressão gtotal "===========================" Execute o programa awk acima da seguinte maneira: $ awk -f bill1 inven 1.Pen Rs.100 [Total Rs.100] total = $3 * $4 recno = $1 item = $2 gtotal += total de impressão do item recno "Rs." total $ gato > conta1 LSST v1.05 > Capítulo 7 > Variáveis definidas pelo usuário no awk http://www.cyberciti.biz/pdf/lsst/ch07sec04.html (2 de 3) [29/07/2002 18:53:42] Machine Translated by Google
  • 159. } Use o padrão BEGIN para definir o valor das variáveis, para imprimir o cabeçalho do relatório, etc. A sintaxe geral de BEGIN é a seguinte Sintaxe: BEGIN { ação 1 ação 2 ação N Fazendo aritmética com awk Por Vivek G Gite. Instrução END awk, que executa ações END após ler todas as linhas (RECORD) do arquivo de banco de dados. Lar Acima =============== Em nosso exemplo, BEGIN é usado para imprimir o cabeçalho e END é usado para imprimir o total geral. Agora o total geral é impresso no final. No programa acima, os padrões BEGIN e END são usados. BEGIN instrui o awk, que executa ações BEGIN antes que a primeira linha (Record) seja lida do arquivo de banco de dados. Anterior ação 1 ação 2 ação N --------------------------- Total de Rs 221,5 --------------------------- A sintaxe geral do END é a seguinte: } Próximo 1.Caneta Rs.100 2.Lápis Rs.20 3.Borracha Rs.10,5 4.Galo Rs.91 FIM { Uso da instrução printf http://www.cyberciti.biz/pdf/lsst/ch07sec04.html (3 de 3) [29/07/2002 18:53:42] LSST v1.05 > Capítulo 7 > Variáveis definidas pelo usuário no awk Machine Translated by Google
  • 160. { } 1 Caneta Rs.100,000000 2 Lápis Rs.20,000000 3 Borracha Rs.10,500000 4 Galo Rs.91,000000 Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado total = $3 * $4 recno = $1 item = $2 gtotal += total printf "%d %s Rs.%fn", recno, item, total #printf "%2d %-10s Rs.%7.2fn" , reconhecimento, item, total --------------------------- Total de Rs. 221.500000 $ gato > conta3 Por Vivek G Gite. BEGIN { printf "Projeto de lei de 4 de março de 2001.n" printf "Por Vivek G Gite.n" printf "---------------------- -----n" --------------------------- } Próximo O próximo exemplo mostra o uso da instrução especial printf Execute-o da seguinte maneira: $ awk -f bill3 inven Bill de 4 de março de 2001. } =============== Anterior END { printf "---------------------------n" printf "Total de R$ %fn" ,gtotal #printf " tTotal Rs. %7,2fn" ,gtotal printf "===========================n" No exemplo acima, a instrução printf é usada para imprimir a saída formatada das variáveis ou texto. Sintaxe geral de printf da seguinte forma: http://www.cyberciti.biz/pdf/lsst/ch07sec05.html (1 de 3) [29/07/2002 18:53:43] LSST v1.05 > Capítulo 7 > Uso da instrução printf Uso da instrução printf Machine Translated by Google
  • 161. Código de especificação de formato Ele imprimirá o valor de no1. A tabela a seguir mostra esse código de especificação de formato comum: Número decimal como 10, -5 etc. Sintaxe: printf "formato", var1, var2, var N Significado Número hexadecimal, como 0xA, 0xffff etc. %x nº1 , BEGIN { n = 10 printf "%d", n printf "nUma maçã por dia, mantém longetttMédiconaa" } , %d Personagem Para executar o exemplo acima, basta criar qualquer arquivo de programa awk como segue Por exemplo, printf "nUma maçã por dia, mantém longetttDoctornaa" $ gato > p_demo Ele imprimirá o texto na nova linha como: Uma maçã por dia, afasta Doutor. Observe que duas vezes o som do sino é produzido por aa. Para imprimir o valor do número decimal, use %d como código de especificação de formato seguido do nome da variável. Por exemplo, printf "%d" Se você quiser apenas imprimir qualquer texto usando printf da seguinte maneira printf "Hello" printf "Hello Worldn" Exemplo %c String como "vivek", "Boa compra" { isminor = "y" printf "%c" isminor } { n = 10 printf "%d",n } { n = 10 printf "%x",n } { str1 = "Bem-vindo ao Linux!" printf "%s", str1 printf "%s", "Pode imprimir?" } No último exemplo, n é usado para imprimir uma nova linha. Sua parte da sequência de escape a seguir também pode ser usada: t para guia a Alerta ou campainha " Imprimir aspas duplas etc. %s http://www.cyberciti.biz/pdf/lsst/ch07sec05.html (2 de 3) [29/07/2002 18:53:43] LSST v1.05 > Capítulo 7 > Uso da instrução printf Machine Translated by Google
  • 162. Variáveis definidas pelo usuário no awk Uma maçã por dia, afasta Doutor Anterior $ awk -f p_demo Escreva o programa awk para testar o código de especificação de formato. De acordo com sua escolha. 10 Execute-o como Uso do código de especificação de formato Próximo Acima Lar LSST v1.05 > Capítulo 7 > Uso da instrução printf http://www.cyberciti.biz/pdf/lsst/ch07sec05.html (3 de 3) [29/07/2002 18:53:43] Machine Translated by Google
  • 163. total = $3 * $4 recno = $1 item = $2 gtotal += total printf "%2d %-10s Rs.%7.2fn", recno, item, total { --------------------------- Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado } Total de Rs. 221,50 =============== BEGIN { printf "Projeto de lei de 4 de março de 2001.n" printf "Por Vivek G Gite.n" printf "---------------------- -----n" --------------------------- } 1 caneta Rs. 100,00 2 lápis Rs. 20,00 3 borracha Rs. 10,50 4 galos Rs. 91,00 Execute-o como $ awk -f bill4 inven Bill de 4 de março de 2001. Próximo $ gato > conta4 Por Vivek G Gite. END { printf "---------------------------n" printf "tTotal Rs. %6,2fn" ,gtotal printf " ===========================n" Na saída acima você pode ver claramente que printf pode formatar a saída. Vamos tentar entender a formatação da instrução printf. Por exemplo,% 2d, número entre% e d, informa ao printf que atribui 2 espaços para valor. Da mesma forma se você escrever seguindo o programa awk, Anterior } http://www.cyberciti.biz/pdf/lsst/ch07sec06.html (1 de 2) [29/07/2002 18:53:44] LSST v1.05 > Capítulo 7 > Uso do código de especificação de formato Uso do código de especificação de formato Machine Translated by Google
  • 164. d*= $ awk -f prf_demo Lar -= operador *= printf "|%10s|", uma = uma - c se condição em awk * 10 Atribuir o resultado de A mesma técnica é usada em nosso programa bill4 awk para imprimir a saída formatada. Também a declaração como gtotal printf "|%10s|", na Atribuir o resultado do módulo uma% = 10 uma -= 10 Equivalente a | Deus | c uma + = 10 Imprima a Palavra de Deus como justificada corretamente. Deus %= subtração printf "|%-10s|", na += total, que é equivalente a gtotal = gtotal + total. Aqui += é chamado de operador de atribuição. Você pode usar uma = uma + 10 |Deus | * c justificado) { d % = c d -= c d + = c n / D uma = uma Anterior Atribuir o resultado de seguinte operador de atribuição: } uma = uma% 10 a uma = uma + c (pressione CTRL + D para encerrar) *= 10 Usar para printf "|%-10s|", na = $ 1 Atribuir o resultado da adição Acima Uso da instrução printf Atribuição Execute-o da seguinte maneira (e digite Deus) $ gato > prf_demo Imprima a Palavra de Deus justificada à esquerda. (- significa esquerda multiplicação uma = uma uma = uma - 10 printf "|%s|", na Imprime Deus como seu += n / D printf "|%s|", na uma = uma% c |Deus| Exemplo Próximo http://www.cyberciti.biz/pdf/lsst/ch07sec06.html (2 de 2) [29/07/2002 18:53:44] LSST v1.05 > Capítulo 7 > Uso do código de especificação de formato Machine Translated by Google
  • 165. Instrução N se a condição for VERDADEIRA Declaração 2 $ awk > matemática2 Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado } outro { BEGIN { myprompt = "(Para parar pressione CTRL+D) > printf "Bem-vindo ao programa awk de cálculo MyAddtion v0.1n" printf "%s" ,myprompt " Sintaxe: if (condição) { } } Declaração 1 Acima, se a sintaxe for autoexplontária, agora vamos passar para o próximo programa awk Declaração N if (op == "+" ) { ans = $1 + $3 printf "%d %c %d = %dn" ,no1,op,no2,ans printf "%s" ,meuprompt A sintaxe geral da condição if é a seguinte: Anterior Declaração 1 se a condição for FALSA } Próximo Declaração 2 { no1 = $1 op = $2 no2 = $3 ans = 0 http://www.cyberciti.biz/pdf/lsst/ch07sec07.html (1 de 3) [29/07/2002 18:53:45] LSST v1.05 > Capítulo 7 > se condição em awk se condição em awk Machine Translated by Google
  • 166. } , Definir variável definida pelo usuário Atribua o primeiro, segundo, terceiro valor das variáveis às variáveis no1, op, no2 respectivam outro Execute-o da seguinte maneira (forneça a entrada 5 + 2 e 3 - 1 , que é mostrada em negrito) $awk -f math2 Bem-vindo ao programa awk de cálculo MyAddtion v0.1 (para parar, pressione CTRL + D) > 5 + 2 5 + 2 = 7 (Para parar pressione CTRL+D) > 3 - 1 Ops!Erro só sei somar. " Imprima a mensagem de boas- vindas e o valor da variável myprom no1 = $1 op = $2 no2 = $3 ans = 0 END { printf "nBoa compra %sn" Início do COMEÇO { AMBIENTE["USUÁRIO"] Padrão COMEÇAR { Padrão Agora comece a processar a entrada } } } { Sintaxe: número1 + número2 (para parar pressione CTRL+D) > Goodbuy vivek myprompt = "(Para parar pressione CTRL+D) > printf "Bem-vindo ao programa awk de cálculo MyAddtion v0.1n" printf "%s" ,myprompt printf "Ops! Erro, só sei adicionar.nSintaxe: número1 + número2n" printf "%s" ,myprompt No programa acima, vários novos conceitos são introduzidos, então vamos tentar entendê-los passo a passo Fim do COMEÇO LSST v1.05 > Capítulo 7 > se condição em awk http://www.cyberciti.biz/pdf/lsst/ch07sec07.html (2 de 3) [29/07/2002 18:53:45] Machine Translated by Google
  • 167. END { printf "nBoa compra %sn" ENVIRON é uma das variáveis de sistema predefinidas que é array. A matriz é composta por elementos diferentes. A matriz ENVIRON também é feita de elementos. Ele permite que você acesse variáveis do sistema (ou variáveis em seu ambiente). Dê o comando set no prompt do shell para ver a lista de sua variável de ambiente. Você pode usar o nome da variável para fazer referência a qualquer elemento desta matriz. Por exemplo, se você deseja imprimir seu diretório inicial, você pode escrever printf da seguinte forma: printf "%s is my sweet home", ENVIRON["HOME"] Se o comando for usado para tomada de decisão no programa awk. Aqui, se o valor da variável op for "+", a adição será feita e o resultado será impresso na tela, caso contrário, uma mensagem de erro será mostrada na tela. , AMBIENTE["USUÁRIO"] } Os padrões END começam aqui. Próximo O que diz que atualmente faça logon no usuário Goodbuy. Loops no awk Lar } processo. if ( op == "+" ) { ans = no1 + no2 printf "%d %c %d = %dn" ,no1,op,no2,ans printf "%s" ,meuprompt } else { printf "Ops !Erro, só sei adicionar.nSintaxe:número1+ número2n" printf "%s" ,myprompt } Acima Anterior Parar todas as linhas inseridas são Uso do código de especificação de formato LSST v1.05 > Capítulo 7 > se condição em awk http://www.cyberciti.biz/pdf/lsst/ch07sec07.html (3 de 3) [29/07/2002 18:53:45] Machine Translated by Google
  • 168. Declaração N Declaração 2 } Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado } Execute-o da seguinte maneira: $ awk -f while01.awk Pressione ENTER para continuar com o exemplo de loop for do LSST v1.05r3 Soma para 1 a 10 números = 55 Goodbuy Os loops for acima imprimem a soma de todos os números entre 1 e 10. Ele usa um loop for muito simples para conseguir isso. Pegue um número de 1 a 10 usando a variável i e adicione-o à variável de soma como soma = soma anterior + número atual (ou seja, i). Sintaxe do loop for Sintaxe: for (expr1; condição; expr2) { soma += eu; # soma = soma + eu Declaração 1 } printf "Soma de 1 a 10 números = %d nBoacompra!nn", soma saída 1 $ gato > while01.awk Próximo For loop e while loop são usados para fins de loop no awk. BEGIN{ printf "Pressione ENTER para continuar com o exemplo de loop for do LSST v1.05r3n" } { sum = 0 i = 1 for (i=1; i<=10; i++) { As instruções são executadas repetidamente ATÉ que a condição seja verdadeira. ANTES da primeira iteração, expr1 é avaliado. Isso geralmente é usado para inicializar variáveis para o loop. APÓS cada iteração do loop, expr2 é avaliado. Isso geralmente é usado para incrementar um contador de loop. Exemplo: Anterior http://www.cyberciti.biz/pdf/lsst/ch07sec08.html (1 de 3) [29/07/2002 18:53:46] LSST v1.05 > Capítulo 7 > Loops no awk Loops no awk Machine Translated by Google
  • 169. Bem vindo vivek, 0 vezes. Execute-o como (e forneça a entrada como Bem-vindo ao Linux!) $ awk -f for_loop Para testar o loop Pressione CTRL + C para parar Bem-vindo ao Linux! ,AMBIENTE["USUÁRIO"], eu Considere mais um exemplo de loop for: Bem-vindo vivek, 1 vezes. Aqui i++, é equivalente à instrução i = i + 1. ++ é o operador de incremento que aumenta o valor da variável em um e - é o operador de decremento que diminui o valor da variável em um. Não tente i+++, para aumentar o valor de i em 2 (já que +++ não é um operador válido), em vez disso tente i+= 2. Você pode usar o loop while da seguinte maneira: } para(i=0;i<NF;i++) O loop while continuará enquanto a condição for TRUE. Para entender o loop while vamos escrever } printf "Bem-vindo %s, %d vezes.n" Defina o valor de i como 0 (Zero); Continue enquanto o valor de i for menor que NF (Lembre-se de que NF é uma variável incorporada, o que significa Número de Campos no registro); incrementar i em 1 (i++) Continue enquanto a condição dada for VERDADEIRA } { para(i=0;i<NF;i++) { } printf "Bem-vindo %s, %d vezes.n" ,ENVIRON["USER"], i Imprima a mensagem "Bem-vindo....", com o nome do usuário que está conectado no momento e o valor de i. Bem vindo vivek, 2 vezes. Sintaxe: while (condição) { BEGIN { printf "Para testar o loopn" printf "Pressione CTRL + C para pararn" O programa usa o loop for da seguinte maneira: declaração1 declaração2 declaraçãoN $ gato > for_loop LSST v1.05 > Capítulo 7 > Loops no awk http://www.cyberciti.biz/pdf/lsst/ch07sec08.html (2 de 3) [29/07/2002 18:53:46] Machine Translated by Google
  • 170. um } explicado da seguinte forma: não = $ 1 Fim do loop while, já que a condição (no>1) não é verdadeira, ou seja Exemplo da vida real no awk Divida o não por 10 e armazene o resultado em nenhuma variável. { } Próximo número, por favor (CTRL+D para parar): Acima mais um script awk: printf "%d",remn 785 Continue o loop enquanto o valor de no for maior que restante = não% 10 456 não /= 10 Solicitar o próximo número variável restante. enquanto (não > 1) $awk -f while_loop Defina a variável remn como zero Defina o valor dos primeiros campos ($1) como não. remanescente = 0 Execute-o como Encontre o resto de nenhuma variável e atribua o resultado a condição falsa.. printf "nPróximo número por favor (CTRL+D para Próximo Aqui o usuário insere o número 654 que é impresso na ordem inversa, ou seja, 456. O programa acima pode ser { printf "nPróximo número por favor (CTRL+D para parar):"; enquanto (não > 1) Imprima o valor das variáveis remn (restantes). Lar remanescente = 0 } imprima "%d", restante Próximo número por favor (CTRL+D para parar):587 não /= 10 não = $ 1 Anterior se condição no awk parar):"; 654 { Inicie o loop while restante = não% 10 $ gato > while_loop LSST v1.05 > Capítulo 7 > Loops no awk http://www.cyberciti.biz/pdf/lsst/ch07sec08.html (3 de 3) [29/07/2002 18:53:46] Machine Translated by Google
  • 171. Gostaria de ler o nome de todos os arquivos do arquivo e copiá-los para um determinado diretório de destino. Por exemplo Nosso primeiro exemplo O arquivo filelist.conf; parece algo assim: /home/ vivek/ awks/ temp/ file1 / home/ vivek/ final / home/ vivek/ awks/ temp/ file2 / home/ vivek/ final / home/ vivek/ awks/ temp/ file3 / home/ vivek/ final / home/ vivek/ awks/ temp/ file4 / home/ vivek/ final No arquivo acima, o primeiro campo ($1) é o nome do arquivo que eu gostaria de copiar para o diretório de destino fornecido ($2 - segundo campo), ou seja, copie o arquivo /home/vivek/awks/temp/file1 para /home/vivek/final diretório. Para este propósito, escreva o programa awk da seguinte forma: Anterior Antes de aprender mais recursos do awk, é hora de ver alguns exemplos da vida real no awk. Próximo Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado $ cat > temp2final.awk # #temp2final.awk #Linux Shell Scripting Tutorial v1.05, março de 2001 #Autor: Vivek G Gite # # # lógica principal está aqui # { sfile = $1 dfile = $2 cpcmd = "cp " $1 " " $2 printf "Lidando %s para %sn",sfile,dsistema de arquivos(cpcmd) } COMEÇAR{ } # # Finalizar ação, se houver, por exemplo, limpezas # END{ http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (1 de 5) [29/07/2002 18:53:48] LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk Exemplo da vida real no awk Machine Translated by Google
  • 172. Agora imprima a mensagem printf "Lidando %s para %sn",sfile,dfile system(cpcmd) printf "O comando rm foi bem-sucedido e o arquivo %s foi removido n", } Emita o comando cp real usando a função system() . $ 1} Execute-o como (suponha que o arquivo foo exista e bar não exista) $ awk -f tryrmsys foo rm o comando foi bem-sucedido e o arquivo foo foi removido o comando bar rm não foi bem-sucedido Aqui cpcmd, a variável é usada para construir o comando cp . dcmd = "rm " $1 if ( system(dcmd) != 0 ) printf "comando rm sem sucesson" cpcmd = "cp "$1" "$2 outro A saída do comando não está disponível para programar; mas system() retorna o código de saída (código de erro) com o qual você pode determinar se o comando foi bem-sucedido ou não. Por exemplo, queremos ver se o comando rm foi bem-sucedido ou não, você pode escrever o código da seguinte forma: Enquanto escrevo o guia de instalação visual, costumo capturar muitas imagens para o meu trabalho, enquanto capturo imagens que arquivo = $1 arquivo = $2 Defina o caminho do arquivo de origem, ou seja, o primeiro campo ($1) do arquivo filelist.conf Defina o caminho do arquivo de origem, ou seja, o segundo campo ($2) do arquivo filelist.conf Use seu comando cp normal para copiar o arquivo da origem para o destino. Execute-o da seguinte maneira: $ awk -f temp2final.awk filelist.conf A função system() executa determinado comando do sistema. Por exemplo, se você deseja remover o arquivo usando o comando rm do Linux, você pode escrever o sistema da seguinte forma: system("rm foo") $ gato > tryrmsys { (Pressione CTRL + D para encerrar) O programa awk acima pode ser explicado da seguinte forma: OU dcmd = "rm " $1 sistema(dcmd) Nosso segundo exemplo: http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (2 de 5) [29/07/2002 18:53:48] LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk Machine Translated by Google
  • 173. Agora converta todos os nomes de arquivo em maiúsculas para minúsculas e armazene-os no arquivo / tmp/file2.$$. Liste todos os arquivos no diretório de trabalho atual linha por linha e envie a saída para o arquivo /tmp/file1.$$. rm -f /tmp/tmpdb.$$ salvou todas as imagens (ou seja, nomes de arquivos) em MAIÚSCULAS, por exemplo AWK_SCRIPT="renomear.awk" awkspath=$HOME/bin/$AWK_SCRIPT rename.awk pode ser explicado da seguinte forma: Declarações/Comando Declarações/Comando rm -f /tmp/arquivo1.$$ rm -f /tmp/arquivo2.$$ if [ -f $awkspath ]; então awk -f $awkspath /tmp/tmpdb.$$ else echo -e "n$0: Erro fatal - $awkspath não encontrado" echo -e "nCertifique- se de que $awkspath esteja definido corretamente no script $0n" fi Explicação Nome dos scripts awk que renomeiam o arquivo Onde nosso script awk está instalado, geralmente ele deve ser instalado em seu diretório inicial/bin (algo como /home/vivek/bin) Veja se o script rename.awk está instalado, se não estiver instalado, dá uma mensagem de erro na tela. Se instalado, chame o script rename.awk e forneça o caminho /tep/tepdb.$$ para ler todos os nomes de arquivos deste arquivo. cole /tmp/arquivo1.$$ /tmp/arquivo2.$$ > /tmp/tmpdb.$$ up2low e renomear.awk up2low pode ser explicado da seguinte forma: RH7x01.JPG,RH7x02.JPG,...RH7x138.JPG. ls -1 > /tmp/arquivo1.$$ Agora cole o nome do arquivo em maiúsculas e o nome do arquivo em minúsculas no terceiro arquivo chamado /tmp/ tmpdb.$$ arquivo Remova os arquivos file1.$$ e file2.$$ Remova o arquivo temporário. Agora gostaria de renomear todos os arquivos para letras minúsculas e tentei com os dois scripts a seguir: tr "[AZ]" "[az]" < /tmp/file1.$$ > /tmp/file2.$$ Explicação http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (3 de 5) [29/07/2002 18:53:48] LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk Machine Translated by Google
  • 174. como isdir2 = "[ -d " $2 " ] " Certifique-se de não renomear acidentalmente nossos próprios scripts, se os scripts estiverem no diretório de trabalho atual. Certifique-se de que a origem ou o destino sejam arquivos e não o diretório. Verificamos isso usando o comando [expr] do bash. A partir do script awk você pode chamar ou invocar (como o chamamos oficialmente) o [ expr ] se o diretório existir, ele retornará verdadeiro (indicado por zero) e se não, retornará um valor diferente de zero. isdir1 = "[ -d " $1 " ] " isdir2 = [ -d $2 ] ou seja, se o segundo campo é diretório ou próximo else if( ( system(isdir1) ) == 0 || system((isdir2)) == 0 ) { printf "%s ou %s é diretório não pode renomeá-lo para minúsculasn",sfile,dfile next # continue com a próxima gravação } O que significa $ 1? Se você se lembra, no awk $1 é o primeiro campo. Arquivo fonte Como acima, exceto que testa o segundo campo Arquivo de destino dfile = $2 if (sfile == scriptname || sfile == awkscriptname ) próximo Então, estamos testando se o diretório existe } ou não. Esta expressão é bastante complicada. É algo assim: isdir1 = [ -d $1 ] não. Nosso nome do script shell (up2low) e nome do script awk (rename.awk). else if ( sfile == dfile ) { printf "Pulando, "%s" já está em minúsculasn",sfile O que significa ver se o diretório existe usando [ expr ]. Como você sabe, [expr] é usado para testar se expr é verdadeiro ou não. scriptname = "up2low" awkscriptname = "renomear.awk" sfile = $1 Se o arquivo de origem e de destino forem iguais, significa que o arquivo já está em letras minúsculas, não há necessidade de renomeá-lo para letras minúsculas. http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (4 de 5) [29/07/2002 18:53:48] LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk Machine Translated by Google
  • 175. O comando de exemplo acima cria arquivos como arquivos TEMP1.TXT,TEMP2.TXT,....TEMP10.TXT. $ para j em 1 2 3 4 5 6 7 8 9 10; toque em TEMP$j.TXT; feito Loops no awk else # tudo bem, renomeie para minúsculas { mvcmd = "mv " $1 " " $2 printf "Renomeando %s para %sn",sfile,dfile system(mvcmd) } Execute-o da seguinte maneira: $ up2low Letras ou letras é o diretório não pode renomeá-lo para minúsculas RH6_FILES ou rh6_files é o diretório não pode renomeá-lo para minúsculas Renomeando RH7x01.JPG para rh7x01.jpg Renomeando RH7x02.JPG para rh7x02.jpg Renomeando RH7x03.JPG para rh7x03.jpg Renomeando RH7x04.JPG para rh7x04.jpg Renomeando RH7x05.JPG para rh7x05.jpg Renomeando RH7x06.JPG para rh7x06.jpg Lar Acima Em seguida, renomeie-o para minúsculas emitindo o comando mv command. Na minha estação de trabalho a saída acima é mostrada. Observe que se você não tiver o nome dos arquivos em MAIÚSCULAS para fins de teste, poderá criar o nome dos arquivos da seguinte maneira: Anterior .... • Diretórios • Nome dos nossos scripts • E o arquivo está em MAIÚSCULAS Agora, se os arquivos de origem e destino forem .... Renomeando RH7x138.JPG para rh7x138.jpg Próximo awk diversos .. não LSST v1.05 > Capítulo 7 > Exemplo da vida real no awk http://www.cyberciti.biz/pdf/lsst/ch07sec09.html (5 de 5) [29/07/2002 18:53:48] Machine Translated by Google
  • 176. idade + 1 na, ", ano que vem você será" | 2 Exemplo: Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado } | 3 1 -> getline é o nome da função 2 -> nome da variável é usado para atribuir o valor lido da entrada $ gato > testusrip Aqui, a função getline é usada para ler a entrada do teclado e, em seguida, atribuir os dados (inseridos pelo teclado) à variável. Para ler a entrada do tubo, use o seguinte BEGIN { printf "Seu nome, por favor:" getline na < "-" printf "%s sua idade, por favor:",na getline idade < "-" print "Olá " Sintaxe: getline nome-da-variável < "-" | 1 Vivek, sua idade, por favor: 26 Sintaxe: getline < "nome do arquivo" Sintaxe: "comando" | Obter linha Exemplo: getline < "amigos.db" Você pode até receber informações do teclado enquanto executa o script awk, tente o seguinte script awk: Anterior Olá Vivek, no próximo ano você fará 27 anos Salve-o e execute como $ awk -f testusrip 3 -> Significa ler do stdin (teclado) Próximo Seu nome por favor: Vivek Para ler a entrada do arquivo, use o seguinte http://www.cyberciti.biz/pdf/lsst/ch07sec10.html (1 de 2) [29/07/2002 18:53:49] LSST v1.05 > Capítulo 7 > awk diversos ah, diversos Machine Translated by Google
  • 177. COMEÇAR { "data" | getline hoje imprimir hoje $ gato > awkread_file1 Próximo sed - Introdução rápida $ gato > awkread_file } O comando date é executado e canalizado para getline que atribui a saída do comando date à variável $0. Lar Se você quiser sua própria variável, substitua o programa acima da seguinte maneira Acima Anterior Execute-o como $ awk -f awkread_file Sexta-feira, 12 de abril 00:05:45 IST 2002 COMEÇAR { "data" | getline imprimir $ 0 Execute-o da seguinte maneira: $ awk -f awkread_file1 Exemplos da vida real no awk } Tente entender o seguinte script awk e anote sua saída. temp2final1.awk http://www.cyberciti.biz/pdf/lsst/ch07sec10.html (2 de 2) [29/07/2002 18:53:49] LSST v1.05 > Capítulo 7 > awk diversos Machine Translated by Google
  • 178. -e linux é linux 's/Linux/UNIX(sistema v)/' demofile1 Próximo $ sed -e 'sed-commands' nome do arquivo de dados $ sed -e 's/Linux/UNIX(system v)/' demofile1 ... A sintaxe geral do substituto é s/pattern/pattern-to-substitute/' Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado ..... Use o comando substituto para substituir Linux por UNIX (sistema v). Opção Este é vivek de Poona. Inicie o comando sed -f Antes de começar com o tutorial, você deve conhecer as expressões básicas que são abordadas em nosso Aprendendo expressões com ex- tutorial. Para esta parte do tutorial crie demofile1. Depois de criar o tipo de arquivo seguindo o comando sed no prompt do shell: Comandos Sintaxe: sed -option 'expressão geral' [arquivo de dados] sed -option sed-script-file [arquivo de dados] Sintaxe geral do sed SED é um editor de fluxo. Um editor de fluxo é usado para realizar transformações básicas de texto em um fluxo de entrada (um arquivo ou entrada de um pipeline). O SED funciona fazendo apenas uma passagem sobre a(s) entrada(s), sendo consequentemente mais eficiente. Mas é a capacidade do SED de filtrar texto em um pipeline que o distingue particularmente de outros tipos de editores. O comando sed acima pode ser explicado da seguinte forma: Leia o comando sed do arquivo de script sed. Leia os dados do demofile1 Anterior ..... $sed -f sed-script-file nome do arquivo de dados $ sed -f chgdb.sed friends.tdb Exemplo sed Eu amo Linux. Significado Leia o comando sed diferente da linha de comando. Significado $ sed 's/Linux/UNIX(sistema v)/' demofile1 Olá mundo. A opção pode ser: http://www.cyberciti.biz/pdf/lsst/ch07sec11.html (1 de 2) [29/07/2002 18:53:50] LSST v1.05 > Capítulo 7 > sed - Introdução rápida sed - Introdução rápida Machine Translated by Google
  • 179. Anterior awk diversos da bandeira de impressão. -n Lar você deve usar o comando p $ sed -n '/^*..$/p' arquivo demo2 comando. Quando -n é usado Suprimir a saída do sed Acima Próximo Redirecionando a saída do comando sed http://www.cyberciti.biz/pdf/lsst/ch07sec11.html (2 de 2) [29/07/2002 18:53:50] LSST v1.05 > Capítulo 7 > sed - Introdução rápida Machine Translated by Google
  • 180. Redirecionando a saída do comando sed $ arquivo cat.out E pode ver a saída usando o comando cat da seguinte maneira Tutorial de script de shell do Linux (LSST) v1.05r3 Aqui -n opção para o comando sed, suprime a saída do comando sed; e /vivek/ é o padrão que nós Anterior sed - Introdução rápida estamos procurando, finalmente, se o padrão foi impresso usando o comando p do sed. Você pode redirecionar a saída do comando sed para o arquivo da seguinte maneira está registrado ou não. $ quem | sed -n '/vivek/p' $ sed 's/Linux/UNIX(sistema v)/' demofile1 > arquivo.out Como você conhece o padrão /^$/, combine a linha em branco ed, o comando exclui a linha em branco. Anterior Próximo Como escrever scripts sed? Próximo O comando sed seguinte recebe informações do comando who e sed é usado para verificar se o usuário específico Usando sed você pode excluir todas as linhas em branco do arquivo como segue Capítulo 7: awk revisitado Lar Acima $ sed '/^$/d' arquivo demo1 LSST v1.05 > Capítulo 7 > Redirecionando a saída do comando sed http://www.cyberciti.biz/pdf/lsst/ch07sec12.html [29/07/2002 18:53:51] Excluindo linhas em branco Machine Translated by Google
  • 181. Como escrever scripts sed? http://www.cyberciti.biz/pdf/lsst/ch07sec13.html (1 de 2) [29/07/2002 18:53:53] LSST v1.05 > Capítulo 7 > Como escrever scripts sed? No script sed acima, 1i é o comando (i) insert. A sintaxe geral é a seguinte: Sintaxe: [endereço-linha]i Execute o script sed acima da seguinte maneira: $ sed -f chg1.sed inven1 O preço de todos os itens muda desde 1º de abril de 2001 1. Caneta 5 19,5 2. Lápis 10 2,60 3. Borracha 3 4,25 4. Galo 2 51,00 Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado texto Próximo texto $ cat > chg1.sed 1i O preço de todos os itens muda de 1º de abril de 2001 /Pen/s/20.00/19.5/ /Pencil/s/2.00/2.60/ / Rubber/s/3.50/4.25/ /Cock/s / 45,50/51,00/ Exemplo: / INDIA/ a E- mail: vg@indiamail.co.in Sintaxe geral de anexar Dica: Dê a extensão .sed ao script sed, .sh ao script Shell e .awk ao(s) arquivo(s) de script awk, isso ajudará você a identificar os arquivos rapidamente. Anterior Sintaxe: [endereço-linha]a Portanto, 1i Preço de todos os itens alterados a partir de 1º de abril de 2001 significa inserir o texto "Preço de todos os itens alterados a partir de 1º de abril de 2001" na linha número 1. O comando Sed pode ser agrupado em um arquivo de texto, conhecido como script sed. Para o próximo exemplo de script sed, crie o arquivo de dados inven1 e crie "chg1.sed", arquivo de script como segue Da mesma forma que você pode usar o comando anexar (a) ou alterar (c) em seu script sed, Machine Translated by Google
  • 182. http://www.cyberciti.biz/pdf/lsst/ch07sec13.html (2 de 2) [29/07/2002 18:53:53] LSST v1.05 > Capítulo 7 > Como escrever scripts sed? Encontre a palavra ÍNDIA e altere o ID do e-mail para "vg@indiamail.co.in" E-mail: vg@indiamail.co.in Encontre a palavra ÍNDIA e acrescente (a) o texto "E-mail: vg@indiamail.co.in" . O resto das declarações (como /Pen/ s/ 20.00/19.5/) são declarações substitutas gerais. Exemplo: Próximo /ÍNDIA/ c Mais exemplos de sed Lar [endereço-linha]c texto Sintaxe geral de mudança da seguinte forma: Anterior Acima Redirecionando a saída do comando sed Sintaxe: Machine Translated by Google
  • 183. Até você pode usar a seguinte expressão para o mesmo propósito $ sed -n '/^*{2,3}$/p' demofile2 Pelo menos enésimas ocorrências serão correspondidas. Então /10{2} irá procurar por 1 seguido por 0 (zero) e {2}, diz ao sed para procurar 0 (zero) duas vezes. Sintaxe: {n,m} Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 7: awk revisitado Explicação Início da linha Encontre o asterisco ou estrela ( remova o significado especial do metacaractere '*') Seguido por quaisquer dois caracteres (você também pode usar ** ou seja, $ sed -n '/^***$/p' demofile2 ) Agora, o comando a seguir descobrirá as linhas entre *** e *** e, em seguida, excluirá todas essas linhas $sed -e '/ ^*{2,3}$/,/^*{2,3 }$/d' demofile2 > /tmp/fi.$$ $cat /tmp/fi.$$ Digite o seguinte comando sed no shell promote: $ sed -n '/ 10{2}1/p' demofile2 1001 O comando acima imprimirá 1001, aqui no padrão de pesquisa usamos {2}. A expressão sed acima pode ser explicada da seguinte forma: .. Comando Sintaxe: {n,} $/p *** Próximo ^ * Primeiro crie o arquivo de texto demofile2 que é usado para demonstrar os próximos exemplos de script sed. *** Corresponde a qualquer número de ocorrências entre n e m. Fim da linha (para que apenas três estrelas ou asterisco sejam correspondidos) Imprima o padrão. Anterior Exemplo: $ sed -n '/10{2,4}1/p' demofile2 1001 10001 100001 Corresponderá a "1001", "10001", "100001", mas não a "101" ou "10000000". Suponha que você queira imprimir todas as linhas que começam com *** (três estrelas ou asteriscos), então você pode digitar o comando $ sed -n '/^*..$/p' demofile2 Mais exemplos de sed http://www.cyberciti.biz/pdf/lsst/ch07sec14.html (1 de 4) [29/07/2002 18:53:54] LSST v1.05 > Capítulo 7 > Mais exemplos de sed Correspondendo a qualquer número de ocorrências Machine Translated by Google
  • 184. $ gato > rmblksp O mesmo que acima }< ^ O script acima pode ser explicado da seguinte forma: Rani sabe o que é sed {2,3} $ Expressão /^$/d Nosso próximo exemplo remove todas as linhas em branco e converte vários espaços em um único espaço, para isso você A expressão acima pode ser explicada da seguinte forma * /^*{2,3}$/,/^*{2,3}$/{ Os scripts sed acima encontram todas as linhas entre *** e *** e o desempenho após as operações Encontre os próximos dois asteriscos Você pode agrupar os comandos em scripts sed conforme mostrado no exemplo a seguir $ sed -f rmblksp arquivo demo3 Encontre dois ou mais espaços em branco e substitua-os por um único s/ */ /g< Encontre o asterisco ou estrela ( remova o significado especial de '*' ^*{2,3}$d $ sed -f dem_gsed demofile2 > /tmp/fi.$$ Agora salve o script sed acima e execute-o da seguinte maneira: Início da linha , /^$/d Expressão / ^$/d Significado s/Linux/Linux-Unix/ Significado Próximo intervalo ou padrão de pesquisa precisa do arquivo demofile3 . Escreva o script sed da seguinte maneira: -------------------------------------------------- s/ */ /g 2) Substitua "Linux-Unix" pela palavra "Linux" usando a expressão s/Linux/Linux-Unix/. Eu não sei o que é sed, mas acho Bem-vindo ao mundo do sed, o que é sed? $ gato > dem_gsed Fim da linha 1) Exclua a linha em branco, se houver, usando a expressão /^$/d. espaço em branco Encontre todas as linhas em branco e exclua usando o comando d . Agora exclua todas as linhas entre o intervalo *** e *** metacaractere) $ gato /tmp/fi.$$ Execute o script acima da seguinte maneira: http://www.cyberciti.biz/pdf/lsst/ch07sec14.html (2 de 4) [29/07/2002 18:53:54] LSST v1.05 > Capítulo 7 > Mais exemplos de sed Machine Translated by Google
  • 185. /MILÍMETROS /{ a email:vk@fackmail.co.in } N Observe que isso indica dois espaços em branco e indica um espaço em branco. N e- mail:nk@fackmail.co.in N N a email:ag@fackmail.co.in } N /NK/{N N a email:rk@fackmail.co.in } Para realizar todas as tarefas acima, escreva o script sed da seguinte forma: $ cat > mkchgfrddb s/A.bad/Aurangabad/ gs/MH/Maharastra/gs/^$/ ============================ =======================================/g /VK /{ Para nosso próximo e último exemplo, crie o arquivo de banco de dados amigos Nossa tarefa é a seguinte para o arquivo de banco de dados de amigos: 1) Encontre todas as ocorrências da palavra "A'bad", substitua-a pela palavra "Aurangabad" 2) Expanda o valor do estado MH para Maharastra 3) Encontre todas as linhas em branco e substitua pela linha real (ou seja, ========) N a email:mm@fackmail.co.in } /AG / { N 4)Insira o endereço de e-mail de cada pessoa no final do endereço postal da pessoa. Para cada pessoa, o ID de e-mail é diferente /RK/{N http://www.cyberciti.biz/pdf/lsst/ch07sec14.html (3 de 4) [29/07/2002 18:53:54] LSST v1.05 > Capítulo 7 > Mais exemplos de sed Machine Translated by Google
  • 186. Substitua a linha em branco pela linha real Substituir Maharastra por MH } Combine o padrão e siga o comando entre { e }, se o padrão for encontrado. Aqui estamos encontrando o nome inicial de cada amigo, se corresponder, então iremos ao final do endereço dele (dando o comando N duas vezes) e anexando (um comando) o endereço de e-mail do amigo no final. s/A.bad/Aurangabad/g Próximo s/MH/Maharastra/gs/^$/ ==========/g /VK /{ NN a email:vk@fackmail.co.in } Exemplos de scripts de shell Lar Expressão Significado Substitua Aurangabad por A'bad. Observe que aqui o segundo caractere em A'bad é ' (aspas simples), para corresponder a essas aspas simples, temos que usar . (DOT - Special Metacharcter) que corresponde a qualquer caractere único. Execute-o da seguinte maneira: $ sed -f mkchgfrddb amigos > atualizado_friendsdb $ cat atualizado_friendsdb Nossos últimos exemplos mostram como podemos manipular arquivos de dados de texto usando sed. Aqui termina nosso tutorial sobre sed/awk, mas a próxima versão (LSST versão 2.0) cobrirá mais exemplos da vida real, estudos de caso usando todas essas ferramentas, além de integração com scripts shell, etc. Acima O script acima pode ser explicado da seguinte forma: Anterior Como escrever scripts sed? http://www.cyberciti.biz/pdf/lsst/ch07sec14.html (4 de 4) [29/07/2002 18:53:54] LSST v1.05 > Capítulo 7 > Mais exemplos de sed Machine Translated by Google
  • 187. Q.3.Escreva um script para imprimir nos como 5,4,3,2,1 usando o loop while. Resposta: Consulte o script de shell do segundo trimestre. Q.8.Como realizar cálculo de número real (número com ponto decimal) no Linux Resposta: Use o comando bc do Linux Q.11.Escreva o script para determinar se determinado arquivo existe ou não, o nome do arquivo é fornecido como argumento de linha de comando, verifique também se há um número suficiente de argumentos de linha de comando. Resposta: Consulte Q11 Shell Script. Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 8: Exemplos de scripts de shell Resposta: Consulte o script do shell do terceiro trimestre. Q.9.Como calcular o cálculo do número real 5,12 + 2,5 no prompt $ no Shell? Resposta: Use o comando como $ echo 5.12 + 2.5 | a.C. Q.12.Escreva um script para determinar se determinado argumento de linha de comando ($1) contém o símbolo "*" ou não, se $1 não contém o símbolo "*" adicione-o a $1, caso contrário, mostre a mensagem "O símbolo não é obrigatório". Por exemplo, se chamamos este script de Q12, depois de fornecer, $ Q12 /bin Aqui $1 é /bin, ele deve verificar se o símbolo "*" está presente ou não, caso contrário, deve imprimir Obrigatório, ou seja, /bin/*, e se o símbolo estiver presente então o símbolo não é obrigatório deve ser impresso. Teste seu script como $ Q12 /bin Q.1. Como escrever um script de shell que adicionará dois números, que são fornecidos como argumento de linha de comando, e se esses dois números não forem fornecidos, mostre o erro e seu uso. Resposta: Consulte Q1 Shell Script. Q.7.Escreva um script para imprimir a soma dos números fornecidos de todos os dígitos, por exemplo. Se não for 123, a soma de todos os dígitos será 1+2+3 = 6. , Q.2.Escreva um script para descobrir o maior número de três números dados. Nos são fornecidos como argumento de linha de comando. Erro de impressão se argumentos suficientes não forem fornecidos. Resposta: Consulte o script de shell Q7. Q.6.Escreva um script para imprimir o número fornecido na ordem inversa, por exemplo. Se não for 123, deverá ser impresso como 321. , Resposta: Consulte o script de shell Q10. Próximo , Esses exercícios são para testar sua compreensão geral do script de shell. Meu conselho é primeiro tentar escrever esse script de shell você mesmo para entender como colocar os conceitos para funcionar em scripts da vida real. Para obter um exemplo de resposta ao exercício, você pode consultar o arquivo de script de shell fornecido com este tutorial. Se você quer se tornar um bom programador, então seu primeiro hábito deve ser ver bons códigos/amostras de linguagem de programação, depois praticar muito e finalmente implementar seu próprio código (e se tornar um bom programador!!!). Resposta: Consulte o script de shell Q6. Q.4. Escreva o script, usando a instrução case para realizar operações matemáticas básicas como segue + adição - subtração x multiplicação / divisão O nome do script deve ser 'q4', que funciona da seguinte maneira $ ./q4 20/3, verifique também se há argumentos de linha de comando suficientes Resposta : Consulte o script de shell do quarto trimestre. Q.10.Como realizar cálculos de números reais em shell script e armazenar o resultado na terceira variável, digamos a = 5,66, b = 8,67, c = a + b? Anterior Q.5.Escreva um script para ver a data, hora, nome de usuário e diretório atual atuais. Resposta: Consulte o script de shell Q5. aqui estamos fornecendo a saída dos comandos echo para bc para calcular 5,12 + 2,5 http://www.cyberciti.biz/pdf/lsst/ch08.html (1 de 3) [29/07/2002 18:53:58] LSST v1.05 > Capítulo 8 > Exemplos de Shell Scripts Mais exemplos de Shell Script (Exercício para você :-) Machine Translated by Google
  • 188. Excluir Q14 -c -d -m -e versão do kernel o arquivo,reporte erros, se houver, ao excluir o arquivo para o usuário. em efeito Negrito e Blink, e em cores diferentes como vermelho, marrom etc. Nota: Crie uma função para todas as ações, por exemplo, para mostrar data/hora na tela, crie a função show_datetime(). Q.15. Escreva um script chamado sayHello, coloque este script em seu arquivo de inicialização chamado .bash_profile, o script deve ser executado assim que você fizer logon Data hora Para excluir o arquivo selecionado do diretório fornecido assume o diretório atual e mostra todos os arquivos apenas de Q.16. Como escrever um script que irá imprimir a mensagem "Hello World" usando o comando echo. $ Q13 5 5 myf , Aqui print contém o arquivo 'myf' da linha número 5 até a próxima 5 linha desse arquivo. 5) Sua configuração de caminho atual 1) Usuário atualmente logado e seu nome de log Para ver a data e hora atual , -d mostra a lista de arquivos no diretório de trabalho atual Resposta: Consulte o script de shell Q18. Calendário para o sistema e imprime qualquer uma das seguintes mensagens na infobox usando o utilitário de diálogo, se instalado em seu sistema, Se o utilitário de diálogo estiver Onde as opções funcionam como 6) Seu diretório de trabalho atual nesse diretório, os arquivos devem ser mostrados na tela usando menus de diálogo Resposta: Consulte o script de shell Q13 Resposta: Consulte o script de shell Q16 Q.18. Escreva um script de shell para implementar menus usando o utilitário de diálogo. Os itens de menu e as ações de acordo com o item de menu selecionado são os seguintes: -m start mc (shell de comandante da meia-noite), se instalado Saída Boa tarde Resposta: Consulte o script de shell do Q12 2) Seu shell atual A data e a hora devem ser mostradas usando a infobox do utilitário de diálogo Propósito não instalado, use a instrução echo para imprimir a mensagem: - Q.19. Escreva um script shell para mostrar várias configurações do sistema, como 7) Mostrar o número de usuários atualmente logados utilitário, deixe o usuário selecionar o arquivo e peça a confirmação ao usuário Q.17. Escreva um script para implementar o processo em segundo plano que imprimirá continuamente a hora atual no canto superior direito da tela. O usuário pode fazer seu trabalho normal no prompt $. Q.14. Escreva o script para implementar a instrução getopts, seu script deve entender o seguinte argumento de linha de comando chamado este script 3) Seu diretório inicial Para sair deste script de shell Ação para item de menu -e {editor} inicie este {editor} se instalado Para ver o calendário atual , Boa noite, conforme horário do sistema. Q.13. Escreva o script para imprimir o conteúdo do arquivo de um determinado número de linha até o próximo número de linhas. Por exemplo, se chamássemos este script como O calendário deve ser mostrado usando a infobox do utilitário de diálogo , 8) Sobre seu sistema operacional e versão, número de lançamento 9) Mostrar todos os shells disponíveis Resposta: Consulte o script de shell Q17. Q14, $ Q12 /bin/* Bom dia se ele deseja excluir o arquivo selecionado, se a resposta for sim, exclua Sai/interrompe o programa orientado por menu, ou seja, este script Item do menu Resposta: Consulte o script de shell do Q14 Primeiro pergunte o nome do usuário do diretório onde todos os arquivos estão presentes, se não houver nome Resposta: Consulte o script de shell Q15 Q13 e execute como 4) Seu tipo de sistema operacional -c limpar a tela enquanto http://www.cyberciti.biz/pdf/lsst/ch08.html (2 de 3) [29/07/2002 18:53:58] LSST v1.05 > Capítulo 8 > Exemplos de Shell Scripts Machine Translated by Google
  • 189. para 3 para 2 Resposta: Clique nos links acima para ver os scripts. 10) Mostrar configurações do mouse para 4 Q.21.Escreva um script shell para converter nomes de arquivos de MAIÚSCULAS para nomes de arquivos em minúsculas ou vice-versa. Resposta: Veja o script rename.awk - awk e o script shell up2sh . Resposta: Consulte o script de shell Q19. por 8 Próximo Q.20.Escreva um script de shell usando o loop for para imprimir os seguintes padrões na tela para 9 por7 Anterior Outros recursos 13) Mostrar informações do disco rígido, como tamanho do disco rígido, memória cache, modelo, etc. Mais exemplos de sed 14) Sistema de arquivos (montado) 11) Mostrar informações da CPU do computador, como tipo de processador, velocidade, etc. por 5 por 8 Lar 12) Mostrar informações de memória por 6 Acima http://www.cyberciti.biz/pdf/lsst/ch08.html (3 de 3) [29/07/2002 18:53:58] LSST v1.05 > Capítulo 8 > Exemplos de Shell Scripts Machine Translated by Google
  • 190. Esta referência de comando foi escrita especialmente para o LSST. Ele contém o nome do comando, sintaxe geral seguida de um exemplo. Isso é útil durante a programação do shell e você pode usar como guia de referência rápida de comandos do Linux. Este tutorial/documento é útil para iniciantes que desejam aprender o sistema de arquivos Linux, pois cobre o conceito básico de sistema de arquivos, comandos ou utilitários relacionados ao sistema de arquivos. Ele explicará conceitos básicos de arquivos, como o que são arquivos e diretórios, quais são os pontos de montagem, como usar o cdrom ou a unidade de disquete no Linux. Acima Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 9: Outros recursos Próximo Sobre o autor Apêndice - A Exemplos de scripts de shell Informação Lar Mais informações sobre a próxima edição deste tutorial. Este é um novo capítulo adicionado ao LSST v1.05r3, que fornece mais referências a outros materiais disponíveis sobre scripts de shell na Internet ou em softwares. Também indica alguns outros recursos que podem ser úteis durante a programação do shell. Anterior Apêndice B Anterior Referência de comandos do Linux (LCR) Próximo Apêndice - A Tutorial do servidor de arquivos Linux (LFST) versão b0.1 Rev. LSST v1.05 > Capítulo 9 > Introdução http://www.cyberciti.biz/pdf/lsst/ch09.html [29/07/2002 18:53:59] Introdução Machine Translated by Google
  • 191. escreve um artigo sobre Linux/Unix, LSST é um desses artigos/documentos. Seu plano futuro inclui mais iniciantes. Ele também está trabalhando com várias empresas de informática como consultor de tecnologia. Atualmente ele Outra informação Próximo Tutorial de script de shell do Linux (LSST) v1.05r3 artigo/documentos sobre Linux especialmente para iniciantes. Se você tiver alguma sugestão ou nova ideia ou problema Este tutorial foi preparado com a ajuda de todo o material valioso da web, bem como da ajuda on-line de Linux (páginas de manual e informações), instruções sobre Linux, etc. Também agradecimentos especiais a Ashish por seu valioso Sobre este documento Vivek G. Gite dirige uma pequena empresa chamada "Cyberciti Computers" e *nix Solution empresa nixCraft. Ele é Por favor visite http://www.cyberciti.biz/nixcraft/linux/docs/ para a versão mais recente deste Tutorial/Documento como Lar desenvolvedor de software freelance e também ensina hardware de computador, redes e Linux/Unix para bem como para outros tutoriais/documentos. Posso ser contatado pelo e-mail: vivek@nixcraft.com. Anterior Acima Anterior Outros recursos Próximo Capítulo 9: Outros Recursos com este tutorial, sinta-se à vontade para entrar em contato com o autor usando o seguinte ID de e-mail. Onde encontro a versão mais recente? sugestão para este tutorial/documento. Como entro em contato com o autor? Todas as marcas registradas são reconhecidas e usadas apenas para fins de identificação. LSST v1.05 > Sobre o autor http://www.cyberciti.biz/pdf/lsst/aboutauth.html [29/07/2002 18:54:01] sobre o autor Machine Translated by Google
  • 192. Embora o autor acredite que o conteúdo seja exato no momento da publicação, nenhuma responsabilidade será assumida por ele, sua aplicação ou quaisquer consequências daí decorrentes. caso seja constatada qualquer deturpação, erro ou outra necessidade de esclarecimento, entre em contato imediatamente com o autor. Todas as marcas registradas são propriedade de seus respectivos detentores. A cópia mais recente deste documento pode sempre ser obtida em: http:// www.cyberciti.biz/nixcraft/linux/docs/ Tutorial de script de shell do Linux atualizado pela última vez v1.05r3 (LSST) - na quinta-feira, 04 de julho de 2002. Este documento tem Copyright (C) 1999, 2000, 2001,2002 de Vivek G. Gite <vivek@nixcraft.com>. Pode ser distribuído gratuitamente em qualquer meio, desde que o texto (incluindo este aviso) seja mantido intacto e o conteúdo não seja modificado, editado, adicionado ou alterado de outra forma. A formatação e a apresentação podem ser modificadas. Pequenos trechos podem ser feitos desde que o documento completo seja referenciado de forma adequada e visível. Se você fizer o espelho deste documento, envie um e-mail para o endereço acima, para que possa ser informado sobre atualizações. Anterior Tutorial de script de shell do Linux (LSST) v1.05r3 Capítulo 9: Outros recursos Anterior Sobre o autor Lar Acima Recursos do UniqLinux LSST v1.05 > Sobre este documento http://www.cyberciti.biz/pdf/lsst/aboutthisdoc.html [29/07/2002 18:54:03] Sobre este documento Machine Translated by Google
  • 193. echo "A soma de $1 e $2 é `expr $1 + $2`" Onde x e y são dois números para os quais imprimirei a soma" fi # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/ uniqlinuxfeatures/tools/ # você" x if [$# -ne 2] então echo "Uso - $0 echo" saída 1 #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http:// www.nixcraft.com / # # Q1.Script para somar nos # http://www.cyberciti.biz/pdf/lsst/scripts/q1 [29/07/2002 18:54:23] http://www.cyberciti.biz/pdf/lsst/scripts/q1 Machine Translated by Google
  • 194. # 2) N1 é maior que n2 e n3, se sim # # # # # # # então echo "$n1 é o maior número" # fi echo "Todos os três números são iguais" else # # Algo: 5) FIM se [$n1 -gt $n2] && [$n1 -gt $n3] #!/bin/bash # print n3 é o maior, não vá para a etapa 5, caso contrário, vá para a próxima etapa # print n2 é o maior, não vá para a etapa 5, caso contrário, vá para a próxima etapa n1=$1 echo "$n3 é o maior número" # echo "$n2 é o maior número" # ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta # print n1 é o maior, não vá para a etapa 5, caso contrário, vá para a próxima etapa saída 1 echo "$0: número1 número2 número3 não são fornecidos" >&2 # Escrito por Vivek G. Gitevivek@nixcraft.com> # elif [$n2 -gt $n1] && [$n2 -gt $n3] então # # Tutorial de script de shell do Linux 1.05r3, verão de 2002 # 1) INÍCIO: Considere três números como n1,n2,n3. se [ $# -ne 3 ] então echo "Não consigo descobrir qual número é maior" n3=$3 então 4) N3 é maior que n1 e n2, se sim n2=$2 elif [$1 -eq $2] && [$1 -eq $3] && [$2 -eq $3] #Q2. Script para descobrir o maior número # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/ # A versão mais recente pode ser encontrada em http://www.nixcraft.com/ 3) N2 é maior que n1 e n3, se sim fi elif [$n3 -gt $n1] && [$n3 -gt $n2] então http://www.cyberciti.biz/pdf/lsst/scripts/q2 http://www.cyberciti.biz/pdf/lsst/scripts/q2 [29/07/2002 18:54:27] Machine Translated by Google
  • 195. " 2) Iniciar While Loop 3) Verifique, o valor de i é zero, se sim, vá para a etapa 5, caso contrário, continue com a próxima etapa 4) imprima i, diminua i por 1 (ou seja, i = i-1 para ir para zero) e vá para a etapa 3 5) FIM i=`expr $i - 1` feito # # ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # quero começar de outro valor coloque esse valor) eco "$i 1) START: defina o valor de i como 5 (já que queremos começar em 5, se você #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q3 # Algo: # # # # # # # # # i=5 enquanto test $i != 0 do http://www.cyberciti.biz/pdf/lsst/scripts/q3 [29/07/2002 18:54:33] http://www.cyberciti.biz/pdf/lsst/scripts/q3 Machine Translated by Google
  • 196. outro saída;; eco A resposta é $z echo "Uso - $0 valor1 operador valor2" echo "echo" se teste $# = 3 então esac caso $2 em +) seja z=$1+$3;; -) seja z=$1- $3;; /) seja z=$1/$3;; x|X) seja z=$1*$3;; *) echo Aviso - operador $2 inválido, somente operador +,-,x,/ permitido #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com /##Q4# operador pode ser +,-,/,x (para multiplicação)" fi # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/ uniqlinuxfeatures/tools/ # Onde valor1 e valor2 são valores numéricos" http://www.cyberciti.biz/pdf/lsst/scripts/q4 http://www.cyberciti.biz/pdf/lsst/scripts/q4 [29/07/2002 18:54:42] Machine Translated by Google
  • 197. # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/ uniqlinuxfeatures/tools/ # #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q5 # echo "Olá, $LOGNAME" echo "A data atual é `date`" echo "O usuário é `quem eu sou`" echo "Diretório atual `pwd`" http://www.cyberciti.biz/pdf/lsst/scripts/q5 [29/07/2002 18:54:47] http://www.cyberciti.biz/pdf/lsst/scripts/q5 Machine Translated by Google
  • 198. 6) N é maior que zero, se sim, vá para a etapa 3, caso contrário, próxima etapa 5) Diminuir n por 1 #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Script para reverter dado não # # Algo: # # # # # # # # if [ $# -ne 1 ] então echo "Uso: $0 número" echo " 7) Imprimir rotação 3) Encontre um único dígito em sd como n% 10 que dará (dígito mais à esquerda) sd=`expr $n % 10` rev=`expr $rev * 10 + $sd` n=`expr $n / 10` pronto echo "O número reverso é $rev" 4) Construa revrse no como rev # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/ # n=$1 rev=0 sd=0 1) Insira o número n 2) Defina rev=0, sd=0 Vou encontrar o reverso do determinado número" echo " enquanto [$n -gt 0] faça * 10 + dp Por exemplo. $0 123, imprimirei 321" saída 1 fi http://www.cyberciti.biz/pdf/lsst/scripts/q6 [29/07/2002 18:54:50] http://www.cyberciti.biz/pdf/lsst/scripts/q6 Machine Translated by Google
  • 199. 4) Construa a soma não como soma = soma + sd 1) Insira o número n 3) Encontre um único dígito em sd como n% 10 que dará (dígito mais à esquerda) 5) Diminuir n por 1 Por exemplo. $0 123, imprimirei 6 como soma de todos os dígitos (1+2+3)" saída 1 2) Defina soma = 0, sd = 0 Encontrarei a soma de todos os dígitos para determinado número" echo " #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Algo: # # # # # # # # if [ $# -ne 1 ] então echo "Uso: $0 número" echo " 6) N é maior que zero, se sim, vá para a etapa 3, caso contrário, próxima etapa 7) Imprimir soma fi n=$1 soma=0 sd=0 enquanto [ $n -gt 0 ] faça sd=`expr $n % 10` sum=`expr $sum + $sd` n=`expr $n / 10` done echo "A soma do dígito para numner é $sum" # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/q7 [29/07/2002 18:54:54] http://www.cyberciti.biz/pdf/lsst/scripts/q7 Machine Translated by Google
  • 200. #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q10 # a=5,66 b=8,67 c=`echo $a + $b | bc` echo "$a + $b = $c" # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/q10 [29/07/2002 18:54:57] http://www.cyberciti.biz/pdf/lsst/scripts/q10 Machine Translated by Google
  • 201. if [ $# -ne 1 ] then echo "Uso - $0 nome do arquivo" saída 1 fi fi #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http:// www.nixcraft.com /##Q11 if [ -f $1 ] then echo "$1 arquivo existe" else echo "Desculpe, $1 arquivo não existe" # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http:// www.nixcraft.com/uniqlinuxfeatures/tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/q11 [29/07/2002 18:55:04] http://www.cyberciti.biz/pdf/lsst/scripts/q11 Machine Translated by Google
  • 202. fi grep se [$? -eq 1] then echo "Obrigatório, ou seja, $1/*" else echo "O símbolo não é obrigatório" rm -f /tmp/file.$$ rm -f /tmp/file0.$ $ # # ./ch.sh: referência de vivek- tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http:/ /www.nixcraft.com/uniqlinuxfeatures/tools/ # "*" /tmp/arquivo.$$ >/tmp/arquivo0.$$ gato "$1" > /tmp/arquivo.$$ 2>/tmp/arquivo0.$$ #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http:// www.nixcraft.com / # # Q12 # Script para verificar se "/*" está incluído, em $1 ou não # http://www.cyberciti.biz/pdf/lsst/scripts/q12 [29/07/2002 18:55:29] http://www.cyberciti.biz/pdf/lsst/scripts/q12 Machine Translated by Google
  • 203. se [ -e $3 ]; então cauda +$1 $3 | head -n$2 else echo "$0: Erro ao abrir arquivo $3" exit 2 # se [ $# -eq 3 ]; então fi else echo "Argumentos faltando!" fi # Procure argumentos suficientes # # # Imprime erro/diagnóstico para o usuário se nenhum argumento for fornecido # if [ $# -eq 0 ] então echo "$0:Argumentos de comando de erro faltando!" echo "Uso: $0 start_line uptoline filename" echo "Onde start_line é o número da linha a partir da qual você gostaria de imprimir o arquivo" echo "uptoline é o número da linha até a qual gostaria de imprimir" echo "Por exemplo, $0 5 5 myfile" echo " Aqui, do meu arquivo, são impressas 5 linhas, começando da linha nº 5 até a linha "echo" nº 10. saída 1 #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http:// www.nixcraft.com / # # Q13 # # Shell script para imprimir contém o arquivo de determinada linha não para a próxima # linhas numéricas fornecidas # # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/ # fi http://www.cyberciti.biz/pdf/lsst/scripts/q13 http://www.cyberciti.biz/pdf/lsst/scripts/q13 [29/07/2002 18:55:33] Machine Translated by Google
  • 204. # Função para mostrar arquivos no diretório atual # show_ls() { # MC ced=$1 se qual $ced > /dev/null ; então $ced #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q14 # -c clear # -d dir # -m mc # -e vi { editor } # ls echo "lista os arquivos, pressione uma tecla. leia . ." echo "Comandante da meia-noite, pressione uma tecla. leia mais echo "Erro: Comandante da meia-noite não instalado, pressione uma tecla. ler retornar # Função para iniciar mc # start_mc() { # } se qual mc > /dev/null ; então } retornar # Função para iniciar o editor # start_ed() { limpar echo "Limpar tela, pressione uma tecla. leia } . ." # # . ." . ." # Função para limpar a tela # cls() { retornar fi http://www.cyberciti.biz/pdf/lsst/scripts/q14 (1 de 2) [29/07/2002 18:55:36] http://www.cyberciti.biz/pdf/lsst/scripts/q14 Machine Translated by Google
  • 205. { # # echo "Erro: $ced não está instalado ou esse editor não existe, pressione uma tecla. leia esac e) thised="$OPTARG"; start_ed $thised ;; echo "$ced, pressione uma tecla. leia # # # . ." #Função para imprimir ajuda } } echo " -e {editor}, inicie o {editor} de sua escolha"; print_help_uu c)cls;; # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/ fazer # fi echo "-d mostrar diretório"; # # Verifica se há argumentos suficientes . ." echo "Uso: $0 -c -d -m -v {nome do editor}"; echo "Onde -c limpa a tela"; enquanto getopts cdme: opt feito print_help_uu() outro # O procedimento principal começa aqui #Agora analise os argumentos da linha de comando ?) print_help_uu; saída 1;; fi m) start_mc;; retornar saída 1 d) mostrar_ls;; # # # ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta retornar echo " -m iniciar shell do comandante da meia-noite"; se [$# -eq 0]; então caso "$ opt" em http://www.cyberciti.biz/pdf/lsst/scripts/q14 (2 de 2) [29/07/2002 18:55:36] http://www.cyberciti.biz/pdf/lsst/scripts/q14 Machine Translated by Google
  • 206. if which dialog > /dev/null then dialog --backtitle "Linux Shell Script Tutorial" --title "(-: Bem-vindo ao Linux :-)" --infobox "n$messnEste é $dat" 6 60 echo -n Pressione uma tecla para continuar. . fi #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http:// www.nixcraft.com /##Q15# " fi # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http:// www.nixcraft.com/uniqlinuxfeatures/tools/ # if [ $temph -gt 16 -a $temph -le 18 ] then mess="Boa noite $LOGNAME" leia claro senão echo -e "$messnEste é $dat" fi if [ $temph -gt 12 -a $temph -le 16 ] then mess="Boa tarde $LOGNAME" temph=`data | cut -c12-13` dat=`data +"%A %d em %B de %Y (%r)"` . fi if [ $temph -lt 12 ] then mess="Bom dia $LOGNAME, tenha um bom dia!" " http://www.cyberciti.biz/pdf/lsst/scripts/q15 http://www.cyberciti.biz/pdf/lsst/scripts/q15 [29/07/2002 18:55:41] Machine Translated by Google
  • 207. # Cor vermelha clear echo -e "033[1m Olá Mundo" # efeito negrito echo -e "033[5m Piscar" # efeito de piscar echo -e "033[0m Olá Mundo" echo -e "033[31m Olá Mundo" echo -e "033[32m Olá Mundo" # Por exemplo. echo -e "033[1m Olá Mundo" # | | # | | # # #de volta ao normal Mensagem de código de escape #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q16 # comando echo com sequência de escape para fornecer efeitos diferentes # # Sintaxe: echo -e "escape-code sua mensagem, var1, var2 etc" # Veja o restante na tela echo -e "033[34m Hello World" echo -e "033[35m Hello World" echo -e "033[36m Hello World" echo -e -n "033[0m " # volta ao noraml echo -e "033[41m Olá Mundo" echo -e "033[42m Olá Mundo" echo -e "033[43m Olá Mundo" echo -e "033[44m Olá Mundo" echo -e "033 [45m Olá Mundo" echo -e "033[46m Olá Mundo" # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # # Cor verde echo -e "033[33m Olá Mundo" echo -e "033[0m Olá Mundo" # volta ao noraml http://www.cyberciti.biz/pdf/lsst/scripts/q16 [29/07/2002 18:55:44] http://www.cyberciti.biz/pdf/lsst/scripts/q16 Machine Translated by Google
  • 208. coloque o copo 0 69 ti=`data +"%r"` echo -e -n "033[7s" # #save posição e atributos atuais da tela eco -n $ti enquanto: fazer #Mostre o relógio# echo echo "Relógio Digital para Linux" echo "Para parar este relógio use o comando kill pid, veja acima para pid" echo "Pressione uma tecla para continuar. . ." #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # Q17 # Para executar digite em $ promo como # $ q17 & # # linha 0 e coluna 69 são usadas para mostrar o relógio #coloca o relógio na tela #Atraso de 1 segundo # sono 1 concluído # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # echo -e -n "033[8u" #restaura a posição e os atributos atuais da tela # http://www.cyberciti.biz/pdf/lsst/scripts/q17 [29/07/2002 18:55:52] http://www.cyberciti.biz/pdf/lsst/scripts/q17 Machine Translated by Google
  • 209. menuchoice.temp.$$`" 9 25 leia rm -f menuchoice.temp. $$ retorne cal > menuchoice.temp.$$ dialog --backtitle "Tutorial do Linux Shell" --title "Calendário" --infobox "`cat grep se [ $? -eq 1] então mfile=$mfile/* #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # } fi fi } if [ -z $mfile ] then mfile=`pwd`/* else mostrar_cal() { "*" /tmp/dirip.$$ esac pronto "A data é `data`" 3 40 lida retornar mostrar_datahora() { delete_file() { dialog -- backtitle "Tutorial do Linux Shell" --title "Excluir arquivo" --inputbox "Insira o caminho do diretório (Insira para o diretório atual)" 10 40 2>/ tmp/dirip.$$ rtval=$ ? mfile=`cat /tmp/dirip.$$` para eu em $mfile faça dialog --backtitle "Tutorial do Linux Shell" --title "Data e hora do sistema" --infobox caso $rtval em 1) rm -f /tmp/ dirip.$$ ; retornar ;; 255) rm -f /tmp/dirip.$$ ; retornar ;; se [ -f $i ] então echo "$i Excluir?" >> /tmp/listafinal.$$ http://www.cyberciti.biz/pdf/lsst/scripts/q18 http://www.cyberciti.biz/pdf/lsst/scripts/q18 (1 de 3) [29/07/2002 18:55:59] Machine Translated by Google
  • 210. Pressione uma tecla" 5 60 read fi else dialog -- backtitle "Linux Shell Tutorial" --title "Informações: Comando de exclusão" --infobox "Arquivo: $file2erase não é leia mais diálogo --backtitle "Tutorial do Linux Shell" --title "Erro: Comando de exclusão" --infobox "Erro ao excluir arquivo: $file2erase, } escolha=`cat menuchoice.temp.$$` dialog --backtitle "Tutorial do Linux Shell" --title "Selecionar arquivo para excluir" --menu "Use [Para cima][Para baixo] para mover, [Enter] para selecionar o arquivo" 20 60 12 `cat /tmp/finallist .$$` 2>/tmp/file2delete.tmp.$$ excluída, a ação é cancelada, pressione uma tecla" 5 60 read fi while true do dialog -- clear --title "Menu principal" --menu "Para mover as teclas de seta [PARA CIMA/PARA BAIXO] n [Enter] para selecionarn rm -f menuchoice.temp.$$ dialog --backtitle "Tutorial do Linux Shell" --title "Informações: Comando de exclusão" --infobox "Arquivo: $file2erase é rm -f /tmp/dirip.$$ rm -f /tmp/finallist.$$ rm -f /tmp/file2delete.tmp.$$ "Para sair deste programa" 2> menuchoice.temp.$$ Excluído com sucesso, pressione uma tecla" 5 60 retornar rm -f /tmp/file2delete.tmp.$$; retornar;; "Para remover arquivo" "Excluir" retotar=$? case $rtval em 0) dialog -- backtitle "Tutorial do Linux Shell" --title "Você está certo" --yesno "nnDeseja excluir: $file2erase " 10 60 "Saída" se [$? -eq 0 ] ; então rm -f $file2erase se [ $? -eq 0 ] ; então rtval=$? esac 1) rm -f /tmp/dirip.$$ ; rm -f /tmp/finallist.$$ ; rm -f /tmp/file2delete.tmp.$$; retornar;; 255) rm -f /tmp/dirip.$ $ ; rm -f /tmp/finallist.$$ ; Escolha o Serviço que você gosta:" 20 51 4 "Data/hora" arquivo2erase=`cat /tmp/file2delete.tmp.$$` ;; "Para ver a data e hora do sistema" "Para ver o Calaender" "Calendário" http://www.cyberciti.biz/pdf/lsst/scripts/q18 http://www.cyberciti.biz/pdf/lsst/scripts/q18 (2 de 3) [29/07/2002 18:55:59] Machine Translated by Google
  • 211. esac Calendário) show_cal ;; Sair) sair 0;; # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http:// www.nixcraft.com/uniqlinuxfeatures/tools/ # Data/hora) show_datetime ;; Excluir) delete_file ;; caso $ escolha em caso $retopt em 0) esac ;; 1) saída;; 255) saída ;; feito claro http://www.cyberciti.biz/pdf/lsst/scripts/q18 (3 de 3) [29/07/2002 18:55:59] http://www.cyberciti.biz/pdf/lsst/scripts/q18 Machine Translated by Google
  • 212. echo -e "Shell atual: $SHELL" >> /tmp/info.tmp.01.$$$ fi /tmp/info.tmp.01.$$$ echo -e "Informações do mouse do computador:" echo -e # "------------------------------------------------- -------------------" >> /tmp/info.tmp.01.$$$ /tmp/info.tmp.01.$$$ cat /proc/ cpuinfo >> /tmp/info.tmp.01.$$$ "------------------------------------------------- -------------------" >> # nouser=`quem | wc -l` então então #!/bin/bash # if [ -f /etc/redhat-release ] # echo -e "Diretório atual: `pwd`" >> /tmp/info.tmp.01.$$$ echo -e "Conchas disponíveis:" echo -e "`cat /etc/shells`" >> /tmp/info.tmp.01.$$$ "------------------------------------------------- -------------------" >> então "------------------------------------------------- -------------------" >> "------------------------------------------------- -------------------" >> # echo -e "Seu tipo de sistema operacional: $OSTYPE" >> /tmp/info.tmp.01.$$$ então se [ -f /etc/shells ] # Escrito por Vivek G. Gitevivek@nixcraft.com> echo -e "Diretório inicial: $HOME" >> /tmp/info.tmp.01.$$$ >> /tmp/info.tmp.01.$$$ "------------------------------------------------- -------------------" >> "------------------------------------------------- -------------------" >> # Tutorial de script de shell do Linux 1.05r3, verão de 2002 echo -e "Nome de usuário: $USER (Nome de login: $LOGNAME)" >> /tmp/info.tmp.01.$$$ echo -e "SO: `cat /etc/redhat-release`" >> /tmp/info.tmp.01.$$$ eco -e echo -e /tmp/ info.tmp.01.$$$ echo -e "Informações sobre a memória do computador:" >> /tmp/info.tmp.01.$$$ echo -e /tmp/info.tmp.01. $$$ cat /proc/meminfo >> /tmp/info.tmp.01.$$$ se [ -f /etc/sysconfig/mouse ] echo -e /tmp/ info.tmp.01.$$$ echo -e "Informações da CPU do computador:" >> /tmp/info.tmp.01.$$$ echo -e "-------- -------------------------------------------------- ----------" >> /tmp/info.tmp.01.$$$ echo -e "Informações do disco rígido:" >> /tmp/info.tmp.01.$$$ echo -e echo -e "Atualmente conectado: $nouser usuário(s)" >> /tmp/info.tmp.01.$$$ fi fi #Q19 eco -e se [ -d /proc/ide/hda ] # A versão mais recente pode ser encontrada em http://www.nixcraft.com/ echo -e "PATH: $PATH" >> /tmp/info.tmp.01.$$$ >> /tmp/info.tmp.01.$$$ /tmp/info.tmp.01.$$$ echo -e "`cat /etc/sysconfig/mouse`" >> /tmp/info.tmp.01.$$$ http://www.cyberciti.biz/pdf/lsst/scripts/q19 (1 de 2) [29/07/2002 18:56:10] http://www.cyberciti.biz/pdf/lsst/scripts/q19 Machine Translated by Google
  • 213. dialog --backtitle "Linux Software Diagnostics (LSD) Shell Script Ver.1.0" --title então # ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta echo -e "Modelo: `cat /proc/ide/hda/model` " >> /tmp/info.tmp.01.$$$ echo -e "Driver: `cat /proc/ide/hda/driver` " echo -e "Tamanho do cache: `cat /proc/ide/hda/cache` " "Pressione as teclas para cima/para baixo para mover" --textbox /tmp/info.tmp.01.$$$ 21 70 # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/ # /tmp/info.tmp.01.$$$ cat /proc/ mounts >> /tmp/info.tmp.01.$$$ rm -f /tmp/info.tmp.01.$$$ se qual caixa de diálogo > /dev/null # "------------------------------------------------- -------------------" >> fi echo -e /tmp/ info.tmp.01.$$$ echo -e "Sistema de arquivos (montagem):" >> /tmp/info.tmp.01.$$$ echo -e "------ -------------------------------------------------- ------------" >> >> /tmp/info.tmp.01.$$$ outro fi >> /tmp/info.tmp.01.$$$ gato /tmp/info.tmp.01.$$$ |mais http://www.cyberciti.biz/pdf/lsst/scripts/q19 (2 de 2) [29/07/2002 18:56:10] http://www.cyberciti.biz/pdf/lsst/scripts/q19 Machine Translated by Google
  • 214. echo "Você consegue ver o seguinte:" # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # para (( i=1; i<=5; i++ )) fazer #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # for (( j=1; j<=i; j++ )) do echo -n "$i" concluído echo "" concluído http://www.cyberciti.biz/pdf/lsst/scripts/for2 [29/07/2002 18:56:20] http://www.cyberciti.biz/pdf/lsst/scripts/for2 Machine Translated by Google
  • 215. para (( i=1; i<=5; i++ )) fazer # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # echo "Você consegue ver o seguinte:" #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # for (( j=1; j<=i; j++ )) do echo -n "$j" concluído echo "" concluído http://www.cyberciti.biz/pdf/lsst/scripts/for3 http://www.cyberciti.biz/pdf/lsst/scripts/for3 [29/07/2002 18:56:25] Machine Translated by Google
  • 216. para (( i=1; i<=5; i++ )) fazer " |" echo "Suba os degraus do sucesso" #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # for (( j=1; j<=i; j++ )) do echo -n concluído echo "_ " concluído # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/ uniqlinuxfeatures/tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/for4 [29/07/2002 18:56:28] http://www.cyberciti.biz/pdf/lsst/scripts/for4 Machine Translated by Google
  • 217. para (( i=1; i<=5; i++ )) fazer "*" ecoar "Estrelas" #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # for (( j=1; j<=i; j++ )) do echo -n feito echo "" feito # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/ uniqlinuxfeatures/tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/for5 http://www.cyberciti.biz/pdf/lsst/scripts/for5 [29/07/2002 18:56:31] Machine Translated by Google
  • 218. for (( j=1; j<=i; j++ )) do echo -n feito echo "" feito for (( j=1; j<=i; j++ )) do echo -n feito echo "" feito para (( i=5; i>=1; i-- )) fazer "*" ecoar "Estrelas" "*" para (( i=1; i<=5; i++ )) fazer #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http:// www.nixcraft.com / # # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/ uniqlinuxfeatures/tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/for6 [29/07/2002 18:56:36] http://www.cyberciti.biz/pdf/lsst/scripts/for6 Machine Translated by Google
  • 219. se [$i -eq 3]; então echo -n "______" echo -n -e ">> Servidor Powerd.n" else echo "~~~~~" for (( j=1; j<=i; j++ )) do echo -n "|Linux" concluído echo "______" concluído for (( j=1; j<=i; j++ )) do echo -n "|Linux" concluído pronto claro para (( i=3; i>=1; i-- )) fazer para (( i=1; i<=3; i++ )) fazer #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/for7 [29/07/2002 18:56:40] http://www.cyberciti.biz/pdf/lsst/scripts/for7 Machine Translated by Google
  • 220. for (( i=1; i<=MAX_NO; i++ )) faça claro echo -n concluído para (( j=1; j<=i; j++ )) do echo -n concluído echo "" concluído #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # para (( s=MAX_NO; s>=i; s-- )) faça " ." echo -e "nntttEspero que goste, minha estupidez (?)" [$MAX_NO -ge 5 -a $MAX_NO -le 9]; então echo "Peço para inserir um número entre 5 e 9, ok" saída 1 para (( s=MAX_NO; s>=i; s-- )) faça fi " " "$eu" " se ! MAX_NO=0 " " for (( i=1; i<=MAX_NO; i++ )) faça # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # echo -n "Insira o número entre (5 a 9): leia MAX_NO echo -n concluído para (( j=1; j<=i; j++ )) do echo -n concluído echo "" concluído http://www.cyberciti.biz/pdf/lsst/scripts/for8 http://www.cyberciti.biz/pdf/lsst/scripts/for8 [29/07/2002 18:56:43] Machine Translated by Google
  • 221. for (( i=1; i<=MAX_NO; i++ )) faça claro echo -n concluído para (( j=1; j<=i; j++ )) do echo -n concluído echo "" concluído #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Escrito por Vivek G. Gite <vivek@nixcraft.com> # # A versão mais recente pode ser encontrada em http://www.nixcraft.com / # para (( s=MAX_NO; s>=i; s-- )) faça " ." echo -e "nntttEspero que goste, minha estupidez (?)" [$MAX_NO -ge 5 -a $MAX_NO -le 9]; então echo "Peço para inserir um número entre 5 e 9, ok" saída 1 for (( s=i; s<=MAX_NO; s++ )) faça fi " " ###### Segundo estágio ###################### ## ## para (( i=MAX_NO; i>=1; i-- ) ) fazer " se ! MAX_NO=0 " " " ." # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # echo -n concluído para (( j=1; j<=i; j++ )) do echo -n concluído echo "" concluído echo -n "Insira o número entre (5 a 9): leia MAX_NO http://www.cyberciti.biz/pdf/lsst/scripts/for9 http://www.cyberciti.biz/pdf/lsst/scripts/for9 [29/07/2002 18:56:51] Machine Translated by Google
  • 226. http://www.cyberciti.biz/pdf/lsst/scripts/rename.awk [29/07/2002 18:57:29] http://www.cyberciti.biz/pdf/lsst/scripts/rename.awk printf "%s ou %s o diretório não pode renomeá-lo para minúsculasn",sfile,dfile next # continua com a próxima gravação senão if( ( sistema(isdir1) ) == 0 || sistema((isdir2)) == 0 ) { # Linux Shell Scripting Tutorial v1.05r3, Summer-2002 # rename.awk: script awk para renomear arquivo com alguma inteligência integrada # Autor: Vivek G. Gite <vivek@nixcraft.com> # BEGIN{ } } else if (sfile == dfile) { # # certifique-se de que estamos renomeando nosso self se estiver no mesmo diretório # if ( sfile == scriptname || sfile == awkscriptname ) # # Finalizar ação, se houver, por exemplo, limpezas # END{ } próximo # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/ uniqlinuxfeatures/tools/ # } else # tudo bem, renomeie para minúsculas { mvcmd = "mv " sfile " " dfile printf "Renomeando %s para %sn",sfile,dfile system(mvcmd) } nome do script = "up2low" awkscriptname = "renomear.awk" sfile = $1 dfile = $2 # # não devemos renomear diretórios na origem ou destino # # # lógica principal está aqui # { printf "Pulando, "%s" já está em letras minúsculasn",sfile } isdir1 = "[ -d " $1 " ] " isdir2 = "[ -d " $2 " ] " próximo Machine Translated by Google
  • 227. http://www.cyberciti.biz/pdf/lsst/scripts/up2low http://www.cyberciti.biz/pdf/lsst/scripts/up2low [29/07/2002 18:57:32] rm -f /tmp/arquivo1.$$ rm -f /tmp/ arquivo2.$$ ls -1 > /tmp/arquivo1.$$ cole /tmp/arquivo1.$$ /tmp/arquivo2.$$ > /tmp/tmpdb.$$ # # # mude sua localização aqui # awkspath=$HOME/ bin/$AWK_SCRIPT tr "[AZ]" "[az]" < /tmp/file1.$$ > /tmp/file2.$$ AWK_SCRIPT="renomear.awk" #!/bin/bash # # up2low: script para converter o nome do arquivo maiúsculo para minúsculo no atual # diretório de trabalho # Autor: Vivek G. Gite <vivek@nixcraft.com> # #Copie este arquivo para o seu diretório bin, ou seja, $HOME/bin como cp rename.awk $HOME/bin # # Certifique-se de que o script awk exista # se [ -f $awkspath ]; then awk -f $awkspath /tmp/ tmpdb.$$ else echo -e "n$0: Erro fatal - $awkspath não encontrado" echo -e "nCertifique-se de que $awkspath esteja definido corretamente no script $0n" # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/ uniqlinuxfeatures/tools/ # fi rm -f /tmp/tmpdb.$$ Machine Translated by Google
  • 228. Em 1964, o sistema operacional chamado MULTICS (Multiplexed Information and Computing System) foi desenvolvido pela Bell adicionado ao Unix. Então o governo dos EUA. e os militares usaram o Unix para sua inter-rede (agora é conhecido como ÿ Processador Intel x86 (Celeron/PII/PIII/PIV/Old-Pentiums/80386/80486) Linux é grátis. conceitos diversos e respostas para a seção de exercícios de muitos scripts de shell. Ao mesmo tempo, o Unix começou a ser distribuído para universidades. Ali alunos e professor começaram Assim como o Unix, o Linux roda em diferentes plataformas de hardware; por exemplo Nota: Este arquivo faz parte do Linux Shell Scripting Tutorial e contém muitas definições de Linux/Unix, do Programa/Software/SO estão sob Licença Pública Geral GNU (GPL). executado na verdadeira plataforma de hardware (1970-71). para que você possa modificar o sistema operacional (sim, sistema operacional! sistema operacional Linux!!) de acordo com seu gosto. PDP - 7 Computador, montador e poucos utilitários, conhecido como Unix (1969). Mas esta versão do Unix é • Assim como o Unix, o Linux também é escrito em C. A versão comercial do Unix pode custar-lhe dinheiro) Então Ken Thompson (programador de sistemas do Bell Labs) pensa que poderia fazer melhor (Em 1991, Linus Portanto, Unix é um sistema operacional de rede multiusuário, multitarefa e com reconhecimento de Internet. Linux quase teve o mesmo Unix Like INTERNET). Primeiro, está disponível gratuitamente (você não precisa pagar para usar este sistema operacional, outros sistemas operacionais como MS-Windows ou Laboratórios, MIT e General Electric. Mas este sistema operacional não foi o de sucesso. ÿ PCs Macintosh Unix é um sistema operacional de quase 35 anos. mais experimentos em Unix. Devido a isso o Unix ganhar mais popularidade, vários novos recursos também são • Assim como o Unix, o Linux é rico em ambiente de desenvolvimento/programação. não portátil. Então o Unix foi reescrito em C. Como o Unix é escrito em 'C', ele é portátil. Isso significa que o Unix pode • Assim como o Unix, o Linux também é um sistema operacional de rede multiusuário/multitarefa/32 ou 64 bits. Também oferece muitos aplicativos de Software Livre, linguagens de programação e ferramentas de desenvolvimento, etc. Segundo grátis significa liberdade para usar Linux, ou seja, quando você adquirir o Linux você também obterá o código fonte do Linux, Torvalds sentiu que poderia fazer melhor que o Minix - a história se repete). Então Ken Thompson escreveu o sistema operacional em recurso por exemplo Unix como Livre http://www.cyberciti.biz/pdf/lsst/misc.htm (1 de 12) [29/07/2002 18:58:21] Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix • Machine Translated by Google
  • 229. Lista de comandos comuns do editor vi Código aberto Para inserir novo texto esc + : + wq Para continuar com a pesquisa Linux é desenvolvido sob a Licença Pública GNU. Isso às vezes é chamado de "copyleft", para Para encontrar todas as ocorrências de determinada palavra e substituir esc + dw esc + : + q Para salvar e sair do editor vi esc + : + w "nome do arquivo" programas, você deve disponibilizar essas alterações para todos. Isso basicamente significa que você não pode aceitar esc + : + w (Pressione a tecla 'escape', depois 'dois pontos' e Para salvar o arquivo com o nome do arquivo (salvar como) Para colar o texto que acabou de deletar ou copiar no cursor esc + p Para pesquisar uma palavra especificada na direção inversa esc + ?word (pressione a tecla 'escape', digite word-to-find) Para. por exemplo:$s/mumbai/pune/g Sob a GPL o código-fonte está disponível para quem quiser e pode ser livremente modificado, desenvolvido, Use esta sintaxe de comando vi por exemplo, para encontrar a palavra 'shri', digite como esc + /word (pressione a tecla 'escape', digite /word-to-find, n distingui-lo de um copyright. Para salvar arquivo então globalmente sem confirmação Para este propósito esc + : + q! Para procurar uma palavra especificada na direção direta esc + :$s/palavra a ser encontrada/palavra a ser substituída/g Para sair sem salvar Para excluir uma palavra da posição do cursor finalmente 'w') Para sair do editor vi Para excluir a linha inteira onde o cursor está localizado esc + dd o código-fonte do Linux, faça algumas alterações e venda sua versão modificada sem fazer o Aqui a palavra "mumbai" é substituída por "pune" e assim por diante. Existem apenas algumas restrições ao uso do código. Se você fizer alterações no esc + i (você deve pressionar a tecla 'escape' e depois 'i') /shri) Para copiar a linha onde o cursor está localizado esc + yy ÿ Processador Alfa (Compaq) ÿ Processador Cyrix ÿ Processador AMD ÿ Processador Sun Microsystems Sparc código-fonte disponível. Para obter mais detalhes, visite a página inicial de código aberto. Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix http://www.cyberciti.biz/pdf/lsst/misc.htm (2 de 12) [29/07/2002 18:58:21] Machine Translated by Google
  • 230. Para executar o script, você precisa estar no mesmo diretório onde criou seu script, se estiver em um diretório diferente, seu script não será executado (por causa das configurações do caminho), por exemplo. Seu diretório inicial é (use $ pwd para ver o diretório de trabalho atual) /home/vivek. Então você criou um script chamado 'first', após a criação deste script você mudou para algum outro diretório, digamos /home/ vivek/Letters/Personal, agora se você tentar executar seu script ele não será executado, pois o script 'first' está no diretório /home/vivek, para superar esse problema há duas maneiras primeiro, especifique o caminho completo do seu script sempre que quiser executá-lo em outros diretórios, como dar o seguinte comando $ /bin/sh /home/vivek/first esc + :!comando shell Agora, toda vez que você precisa fornecer tudo isso detalhado enquanto trabalha em outro diretório, isso leva tempo e você precisa lembrar o caminho completo. esc + :$s/palavra-para-encontrar/palavra-para-substituir/cg Por exemplo: !pwd Para executar comandos shell como ls, cp ou date etc dentro do vi Para encontrar todas as ocorrências de determinada palavra e substituí-las globalmente pela confirmação Existe outra maneira, se você notar que todos os nossos programas (na forma de arquivos executáveis) estão marcados como executáveis e podem ser executados diretamente a partir do prompt de qualquer diretório. (Para ver os executáveis do nosso programa normal, dê o comando $ ls -l /bin ) Digitando comandos como $ bc $ cc myprg.c $ cal etc, como é possível? Todos os nossos arquivos executáveis são instalados no diretório chamado /bin e o diretório /bin está definido em sua configuração PATH. Agora, quando você digita o nome de qualquer comando no prompt $, o que o shell faz é primeiro procurar esse comando em sua parte interna (chamada como comando interno, que faz parte do próprio Shell, e está sempre disponível para execução), se encontrado como comando interno, o shell irá executá- lo, se não for encontrado, ele irá procurar o diretório atual, se for encontrado, o shell executará o comando do diretório atual, se não for encontrado , então o Shell irá procurar a configuração PATH e tentar encontrar nosso arquivo executável de comandos solicitados em todos os diretórios mencionados nas configurações PATH, se encontrado ele irá executá-lo, caso contrário ele dará a mensagem "bash: xxxx: comando não encontrado", ainda assim ainda resta uma dúvida: posso executar meu script de shell igual a esses executáveis? Sim, você pode, para esse fim, criar o diretório bin em seu diretório inicial e depois copiar http://www.cyberciti.biz/pdf/lsst/misc.htm (3 de 12) [29/07/2002 18:58:21] Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix Como o Shell localiza o arquivo Machine Translated by Google
  • 231. $cd Teste se o script está em execução ou não (ele será executado) sua versão testada do shell script para este diretório bin. Depois disso, você pode executar seu script como arquivo executável sem usar comandos como $ /bin/sh / home/vivek/first Comando para criar seu próprio diretório bin. $ mkdir bin para encontrar o resto 20% 3 = 2, (lembre-se de seu número inteiro , Vá para o seu diretório inicial Q.3.Como imprimir a soma de dois números, digamos 6 e 3 $ echo 6 + 3 Isso imprimirá 6 + 3, não a soma 9. Para fazer operações de soma ou matemática no shell, use expr, a sintaxe é a seguinte Sintaxe : expr operador op1 op2 Onde, op1 e op2 são qualquer número inteiro (número sem ponto decimal) e o operador pode ser + Adição - Subtração / Divisão % Modular, para encontrar o resto Por exemplo, cálculo 20/3 = 6) * Multiplicação $ expr 6 + 3 Agora criado o diretório bin, para instalar seu próprio script de shell, para que o script possa ser executado como um programa independente ou possa ser acessado de qualquer diretório, copie seu script 'primeiro' para seu diretório bin Q.1.Como definir a variável x com valor 10 e imprimi-la na tela. $ x = 10 $ eco $ x Cada um dos comandos acima Explicação Q.2.Como definir a variável xn com valor Rani e imprimi-la na tela For Ans. Clique aqui $xn=Rani $echo $xn $ cp primeiro ~/bin $ primeiro $ cd $ mkdir bin $ cp primeiro ~/bin $ primeiro Cada um dos comandos acima pode ser explicado da seguinte forma: http://www.cyberciti.biz/pdf/lsst/misc.htm (4 de 12) [29/07/2002 18:58:21] Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix Resposta ao exercício de seções variáveis Machine Translated by Google
  • 232. Q.6.Aponte o erro, se houver, no script a seguir Q.4.Como definir duas variáveis x=20, y=5 e depois imprimir a divisão de xey (ou seja, x/y) Q.5.Modifique acima e armazene a divisão de xey na variável chamada z For Ans. Clique aqui $ x=20 $ y=5 $ z=`expr x / y` $ echo $z $ vi variscript # # # Script para testar MEU conhecimento sobre variáveis! # meunome=Vivek myos = TroubleOS -----> ERRO 1 myno=5 echo "Meu nome é $meunome" echo "Meu sistema operacional é $myos" echo "Meu número é myno, você pode ver este número" --- -> ERRO 2 Mas Para Resp. Clique aqui $x=20 $ y=5 $ expr x / y , Agora ele imprimirá soma como 9 $ expr 6+3 não funcionará porque é necessário espaço entre o número e o operador (consulte Aritmética do Shell) ERRO 1 Leia isto ERRO 2 Leia isto O script a seguir deve funcionar agora, após a correção do bug! $ vi variscript # # # Script para testar MEU conhecimento sobre variáveis! # meunome=Vivek myos=TroubleOS myno=5 echo "Meu nome é $meunome" echo "Meu sistema operacional é $myos" echo "Meu número é $myno, você pode ver este número" Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix http://www.cyberciti.biz/pdf/lsst/misc.htm (5 de 12) [29/07/2002 18:58:21] Machine Translated by Google
  • 233. Substituição de parâmetros. http://www.cyberciti.biz/pdf/lsst/misc.htm (6 de 12) [29/07/2002 18:58:21] Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix Em vez de dar o comando acima, posso dar o comando da seguinte maneira $cp /mnt/cdrom/lsoft/samba*.rmp /home/vivek/soft/artical/linux/lsst $cp /mnt/cdrom/lsoft/samba*.rmp `pwd` Aqui o arquivo é copiado para o seu diretório de trabalho. Veja a última substituição de parâmetro do comando `pwd`, expanda-o para /home/vivek/soft/artical/linux/lsst. Isso economizará meu tempo. $cp /mnt/cdrom/lsoft/samba*.rmp `pwd` $pwd $cp /mnt/cdrom/lsoft/samba*.rmp `pwd` Agora suponha que estamos trabalhando em um diretório chamado "/home/vivek/soft/artical/linux/lsst" e eu quero copiar alguns arquivos samba de "/mnt/cdrom/lsoft" para meu diretório de trabalho atual, então meu comando será algo como O comando ($ echo 'expr 6 + 3') é conhecido como Substituição de parâmetro. Quando um comando é colocado entre aspas, o comando é executado e obteremos a saída. Principalmente, isso é usado em conjunto com outros comandos. Por exemplo Agora considere seguir o comando $($ echo 'expr 6 + 3') Ponto Futuro: Qual é a diferença entre seguir dois comandos? $cp / mnt/cdrom/lsoft/samba*.rmp `pwd` Tente anotar a saída da seguinte substituição de parâmetro. $echo "A data de hoje é `data`" $cal > menuchoice.temp.$$ $dialog --backtitle "Tutorial do Linux Shell" --title "Calendário" --infobox "`cat menuchoice.temp.$$`" 9 25; ler E $cp /mnt/cdrom/lsoft/samba*.rmp . Machine Translated by Google
  • 234. Resposta às variáveis no Linux. Responda ao comando if. Resposta à Seção de Processo. Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix http://www.cyberciti.biz/pdf/lsst/misc.htm (7 de 12) [29/07/2002 18:58:21] 1) Se você deseja imprimir a localização do seu diretório inicial, dê o comando: (a) $ echo $HOME 2) Como você descobrirá o processo de execução (reprodução de MP3 e digitação de letras)? ou 3) "Atualmente apenas dois processos estão rodando em seu ambiente Linux/PC", É Verdadeiro ou Falso?, E como você irá verificar isso? Resp.: Experimente $ ps aux ou $ ps ax | grep processo-que-você-deseja-pesquisar C) E se você digitar $ ./trmfi, o que será gerado. 1) É um exemplo de multitarefa? Resp.: Sim, já que você está executando dois processos simultaneamente. Resp .: A mensagem a seguir será mostrada pelo comando rm, pois rm é chamado a partir do script sem nenhum parâmetro. rm: poucos argumentos Tente `rm --help' para mais informações. Resp.: (a) o comando está correto, pois temos que imprimir o conteúdo da variável (HOME) e não o HOME. Você deve usar $ seguido do nome da variável para imprimir cotainas de variáveis. B) Se o arquivo bar não estiver presente em seu disco e você der o comando, $ ./trmfi bar o que será gerado. 4) Se você não quiser ouvir música (arquivos MP3), mas quiser continuar com outro trabalho no PC, execute uma das seguintes ações: Desligue os alto-falantes1. Resp.: A mensagem "rm: não é possível remover 'bar': Esse arquivo ou diretório não existe" será impressa porque o arquivo bar não existe no disco e chamamos o comando rm, então erro de rm commad (b) $ eco HOME A) Existe um arquivo chamado foo, em seu disco e você dá o comando $ ./trmfi foo que será gerado. Resp .: Não, não é verdade, quando você inicia o Linux OS, vários processos são iniciados em segundo plano para finalidades diferentes. Para verificar isso basta usar o comando top ou ps aux . Resp .: o arquivo foo será excluído e a mensagem "arquivo foo excluído" na tela será impressa. Qual dos comandos acima está correto e por quê? Machine Translated by Google
  • 235. O que é sequência de caracteres especiais e como gravá-la no console? Como posso escrever uma mensagem colorida no console Linux? , principalmente esse tipo de pergunta é feita por novatos (especialmente aqueles que estão aprendendo programação shell!). Como você sabe no Linux tudo é considerado um arquivo, nosso console é um desses arquivos especiais. Você pode escrever sequências de caracteres especiais no console, que controlam todos os aspectos do console, como cores na tela, efeitos de texto em negrito ou piscante, limpeza da tela, exibição de caixas de texto, etc. Nosso console Linux é baseado nos terminais seriais DEC VT100 que suportam código de sequência de escape ANSI. Desligue o computador / desligue o Linux Os2. Por padrão, tudo o que você envia para o console é impresso como se fosse. Por exemplo, considere a seguinte instrução echo, $ echo "Hello World" Você pode usar a instrução echo para imprimir a mensagem, para usar a sequência de escape ANSI você deve usar a opção -e Ou você pode tentar o comando killall para encerrar o processo pelo nome da seguinte maneira: $ killall mp3-process-name 3) Em seguida imprime nossa mensagem normal Olá Mundo Colorido! na cor azul. Observe que a sequência de escape ANSI começa com 033 (valor octal), que é representado como ^[ em arquivos termcap e terminfo de terminais e documentação. A instrução echo acima usa sequência de escape ANSI (033[34m), acima da string inteira (ou seja, "033[34m Hello Colorful World!" ) é o processo da seguinte forma Res.: Use a ação nº. 3, ou seja, elimine o processo de MP3. Dica: Primeiro encontre o PID do processo de reprodução de MP3 emitindo o comando: $ ps ax | grep mp3-process-name Então na primeira coluna você obterá o PID do processo. Mate este PID para finalizar o processo como: $ kill PID 1) Primeiro 033, é o caractere de escape, que faz com que alguma ação seja executada 2) Aqui ele define a cor de primeiro plano da tela para Azul usando [código de escape 34m . A instrução Hello World Above echo imprime a sequência de caracteres na tela, mas se houver alguma sequência de escape especial (caractere de controle) em sequencia, então primeiro alguma ação é executada de acordo com a sequência de escape (ou caractere de controle) e então o caractere normal é impresso no console . Por exemplo, seguir o comando echo imprime uma mensagem na cor azul no console $ echo -e "033[34m Hello Colorful World!" Mate o processo de reprodução de MP33. Olá mundo colorido! Nenhuma das opções acima4. Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix http://www.cyberciti.biz/pdf/lsst/misc.htm (8 de 12) [29/07/2002 18:58:21] Console Linux (tela) Machine Translated by Google
  • 236. Parâmetro (Primeiro plano branco e preto eco -e "033[2q" [34 (switch) com instrução echo, a sintaxe geral é a seguinte Exemplos Limpa o modo ANSI são separados por ponto e vírgula (;) . Esses números são lidos até que a letra ou caractere de ação do console não seja encontrado atributos entendi os seguintes parâmetros Personagem de fuga BOLD e Blink, veja abaixo para 0 atributos eu Na sintaxe acima, você deve usar033[ pois possui código de escape diferente para operações diferentes. Tão logo Restaura a posição do cursor e Defina o modo ANSI modo. No modo CSI, o console lê uma série de números decimais codificados em ASCII (conhecidos como parâmetro) que eu Personagem ou carta $ echo -e "Eu sou 033[1m BOLD 033[0m Pessoa" eco -e "033[h" echo -e "033[código de escape sua mensagem" posição (col , posição da linha) e você cores ou efeitos diferentes , como Significado Define o esquema de cores padrão bloquear, LED scroll lock ligado ou desligado, consulte m é letra (especifica ação) Sequência remove efeito de negrito (033[0m) 1 é para o modo de escape, então ele lê o caractere "[" e passa para Introdução à Sequência de Comando (CSI) Uso em CSI 033 sem piscar etc. echo -e "033[35m Olá Mundo" A tabela a seguir mostra uma lista importante de tais letras ou caracteres de código de escape/ ação Imprime a palavra BOLD em negrito e o próximo ANSI Armazena o cursor atual x,y h Sintaxe Ativa teclado num lock, maiúsculas 34 é parâmetro Exemplo fundo), intensidade normal, eu abaixo. eco -e "033[8u" Útil para mostrar personagens em (que determina que ação tomar). No exemplo acima parâmetro tomado por m. Início do CSI Eu sou uma pessoa OUSADA q echo -e "033[7s" eco -e "033[l" conforme o console recebe a mensagem ele começa a processá-la/lê-la, e se encontrar o caractere de escape (033) ele se move Definir intensidade BOLD http://www.cyberciti.biz/pdf/lsst/misc.htm (9 de 12) [29/07/2002 18:58:21] Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix Machine Translated by Google
  • 237. 25 40 - 47 2 Efeito de piscar 5 Remove/desativa o efeito de piscar 30 - 37 0 2 (Ei, você deve conhecer caracteres ASCII estendidos para isso!!!) Defina a cor de fundo xx - Tente descobrir isso como um exercício para você :-) $ echo -e "033[7m SO Linux! Melhor SO!! 033[0m" Significado 31 - VERMELHO LED Num Lock ligado e outros desligados Efeito de vídeo reverso, ou seja, primeiro plano preto e fundo branco no esquema de cores padrão Remove/desativa o efeito reverso q entenda os seguintes parâmetros $ echo -e "033[44m Uau!!!" $ echo -e "033[1m BOLD 033[2m DIM 033[0m" $ echo -e "033[5m Flash! 033[0m" 27 3 Definir intensidade fraca $ echo -e "033[31m estou de vermelho" 11 1 LED de scroll lock ligado e outros desligados Clique aqui para ver um exemplo do comando s e u. 32 - Verde xx - Tente encontrar esta sobra como exercício para você :-) Desliga todos os LEDs do teclado Clique aqui para ver um exemplo do comando m. Mostra caracteres de controle especiais como caracteres gráficos. Por exemplo, antes de emitir este comando, pressione alt $ pressione a tecla alt + 178 (mantenha pressionada) de $ echo -e "033[11m" teclado numérico pressione 178 $ pressione alt + 178 e deixe ambas as teclas; nada $ echo -e "033[0m" será impresso. Agora dê --> $ pressione alt + 178 comando mostrado no exemplo e tente o acima, funciona. 7 Definir cor de primeiro plano Parâmetros LED de Caps Lock ligado e outros desligados Clique aqui para ver um exemplo do comando q. Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix http://www.cyberciti.biz/pdf/lsst/misc.htm (10 de 12) [29/07/2002 18:58:21] Machine Translated by Google
  • 238. 2) Use o seguinte para a linha de movimento do cursor; col H Por exemplo, caixa (20,5,7,40) 1) Uso de 11 parâmetros para m ou 1) Escreva a função box(), que irá desenhar uma caixa na tela (em shell Script) (esquerda, superior, altura, largura) Dica: use a sequência de escape ANSI A tabela acima não contém sequências CSI inteiras. Minha próxima série de tutoriais sobre linguagem de programação C certamente terá uma história inteira com S-Lang e maldições (?). Qualquer conhecimento que você adquirir aqui será desafiadoramente o primeiro passo em direção à programação séria usando c. Todo esse conhecimento é suficiente para Programação Shell, agora tente o seguinte exercício :-) Estou com fome, dê-me mais exercícios e desafios de programação! :-) Esta é apenas uma introdução rápida sobre o console Linux e o que você pode fazer usando esta sequência Escape. Por exemplo, $ echo -e "033[5;10H Olá" $ echo -e "033[6;10f Olá" No exemplo acima imprime a mensagem Hello na linha 5 e coluna 6 e Hi na 6ª linha e 10ª coluna. rowl;col f http://www.cyberciti.biz/pdf/lsst/misc.htm (11 de 12) [29/07/2002 18:58:21] Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix Machine Translated by Google
  • 239. Variáveis incorporadas do shell http://www.cyberciti.biz/pdf/lsst/misc.htm (12 de 12) [29/07/2002 18:58:21] Tutorial de script de shell do Linux v1.05r3 > Diversos. Definição Linux/Unix Todos os argumentos para shell $* O mesmo que acima Veja exemplo de variável $@ e $* . argumentos de linha em shell script. $! PID do último processo em segundo plano iniciado (iniciado com &) $# $@ $- Significado Número de argumentos de linha de comando. Útil para testar não. de comando $$ Opção fornecida ao shell Concha embutida PID do shell Variáveis Machine Translated by Google
  • 240. # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/ Stuart Herbert para nos dar esta utilidade. Pressione qualquer tecla. . " 7 50 ; leia # ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta para mostrar algumas informações na tela, Obrigado a Savio Lam e # Tutorial" --infobox "Esta é uma caixa de diálogo chamada infobox, que é usada dialog --title "Caixa de informações do utilitário de diálogo do Linux" --backtitle "Linux Shell Script . # http://www.cyberciti.biz/pdf/lsst/scripts/dial [29/07/2002 19:02:05] http://www.cyberciti.biz/pdf/lsst/scripts/dial Machine Translated by Google
  • 241. # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/tools/ e Stuart Herbert para nos dar esta utilidade. Pressione qualquer tecla. . # ./ch.sh: referência vivek-tech.com para nixcraft.com convertida usando esta ferramenta # para mostrar algumas informações na tela que também possui o botão Ok, obrigado a Savio Lam # Tutorial" --msgbox "Esta é uma caixa de diálogo chamada msgbox, que é usada dialog --title "Msgbox do Utilitário de Diálogo do Linux" --backtitle "Linux Shell Script " 9 50 . http://www.cyberciti.biz/pdf/lsst/scripts/dia2 http://www.cyberciti.biz/pdf/lsst/scripts/dia2 [29/07/2002 19:02:19] Machine Translated by Google
  • 242. 0) echo "Usuário seleciona para excluir arquivo";; 1) echo "Usuário seleciona não excluir arquivo";; 255) echo "Cancelado pelo usuário pressionando a tecla [ESC]";; esac dialog --title "Alerta: Excluir arquivo" --backtitle "Linux Shell Script Tutorial" --yesno "nDeseja excluir o arquivo '/usr/letters/jobapplication'" 7 60 sel=$? caso $sel em # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft.com/uniqlinuxfeatures/ tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/dia3 [29/07/2002 19:02:37] http://www.cyberciti.biz/pdf/lsst/scripts/dia3 Machine Translated by Google
  • 243. sel=$? rm -f /tmp/entrada.$$ na=`cat /tmp/input.$$` case $sel em 0) echo "Olá $na" ;; 1) echo "Cancelar é pressionar" ;; 255) echo "Tecla [ESCAPE] pressionada" ;; dialog --title "Caixa de entrada - Para receber informações suas" --backtitle "Linux Shell Script Tutorial" --inputbox "Digite seu nome, por favor" 8 60 2>/tmp/input.$$ esac # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http:// www.nixcraft.com/uniqlinuxfeatures/tools/ # http://www.cyberciti.biz/pdf/lsst/scripts/dia4 [29/07/2002 19:02:44] http://www.cyberciti.biz/pdf/lsst/scripts/dia4 Machine Translated by Google
  • 244. "Para ver o calendário" "Mostra data e hora" # "Para iniciar o editor vi" 2>/tmp/menuitem.$$ esac # # ./ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http:// www.nixcraft.com/uniqlinuxfeatures/tools/ # Calendário Calendário) cal;; Editor)vi;; editor caso $ menuitem em Selecione " 15 50 3 Data hora Data/hora) data;; menuitem=`cat /tmp/menuitem.$$` #Como criar um pequeno menu usando a caixa de diálogo # dialog -- backtitle "Tutorial do Linux Shell Script " --title "Main Menu" --menu "Mova usando [UP] [DOWN],[Enter] para optar=$? http://www.cyberciti.biz/pdf/lsst/scripts/smenu [29/07/2002 19:02:50] http://www.cyberciti.biz/pdf/lsst/scripts/smenu Machine Translated by Google
  • 247. bom 12 Disquete bom 5 queijo ok 4 peça 4 ovos cacke bom 10 caneta http://www.cyberciti.biz/pdf/lsst/datafiles/inventory [29/07/2002 19:03:20] http://www.cyberciti.biz/pdf/lsst/datafiles/inventory Machine Translated by Google
  • 248. O leite da Índia é bom. chá Red-Lable é bom. o chá é melhor que o café. http://www.cyberciti.biz/pdf/lsst/datafiles/teaormilk [29/07/2002 19:03:31] http://www.cyberciti.biz/pdf/lsst/datafiles/teaormilk Machine Translated by Google
  • 249. para Olá, sou vivek 12333 12333, bem- vindo sai academia de informática, a'ruim. o que ainda me lembro desse nome. carvalho! como você está, Luser? o que ainda me lembro desse nome. http://www.cyberciti.biz/pdf/lsst/datafiles/personame http://www.cyberciti.biz/pdf/lsst/datafiles/personame [29/07/2002 19:03:41] Machine Translated by Google
  • 250. Olá Mundo! desenhos animados são bons, especialmente desenhos como Tom (gato), qual é a música número um 12221, eles nos amam, eu também http://www.cyberciti.biz/pdf/lsst/datafiles/demo-file [29/07/2002 19:03:53] http://www.cyberciti.biz/pdf/lsst/datafiles/demo-file Machine Translated by Google
  • 251. Linux é legal. É diferente de todos os outros sistemas operacionais Atualmente ele aprende Linux. O Linux agora tem 10 anos. Eu amo Linux. Meu irmão Vikrant também adora Linux, que também adora Unix. Este é vivek de Poona. Olá Mundo. Rani, minha irmã nunca usa Linux. Ela só adora jogar e nada mais. Você sabe? . (DOT) é um comando especial do Linux. No próximo ano o Linux completará 11 anos. OK! Eu irei parar. http://www.cyberciti.biz/pdf/lsst/datafiles/demofile http://www.cyberciti.biz/pdf/lsst/datafiles/demofile [29/07/2002 19:04:03] Machine Translated by Google
  • 252. 3. Borracha 3 3,50 2. Lápis 10 2,00 1. Caneta 5 20,00 4. Galo 2 45,50 http://www.cyberciti.biz/pdf/lsst/datafiles/inven http://www.cyberciti.biz/pdf/lsst/datafiles/inven [29/07/2002 19:04:29] Machine Translated by Google
  • 253. = + { - "$ 1 * $ 2 = } "$1 % $2 x "US$ 1 - US$ 2 "$1/$2 = = imprimir $ 1 " " $ 2 " imprimir $ 1 " " $ 2 " imprimir $ 1 " / " $ 2 " imprimir $ 1 " " $ 2 " imprimir $ 1 " mod " $ 2 " "$ 1 + $ 2 = http://www.cyberciti.biz/pdf/lsst/datafiles/math [29/07/2002 19:04:49] http://www.cyberciti.biz/pdf/lsst/datafiles/math Machine Translated by Google
  • 254. " resposta = $1 + $2 imprimir no1 " + não2 = $2 "não2" não1 = $1 { = resposta } http://www.cyberciti.biz/pdf/lsst/datafiles/math1 http://www.cyberciti.biz/pdf/lsst/datafiles/math1 [29/07/2002 19:04:59] Machine Translated by Google
  • 255. total = $3 * $4 recno = $1 item = $2 imprimir recno item "Rs." total { } http://www.cyberciti.biz/pdf/lsst/datafiles/bill [29/07/2002 19:05:03] http://www.cyberciti.biz/pdf/lsst/datafiles/bill Machine Translated by Google
  • 256. " } total = $3 * $4 recno = $1 item = $2 gtotal += total de impressão do item recno "Rs." total BEGIN { print "--------------------------" print "Projeto de lei de 4 de março de 2001. " print "Por Vivek G Gite . imprimir "---------------------------" } } { END { imprimir "--------------------------" imprimir "Total Rs." impressão gtotal "===========================" http://www.cyberciti.biz/pdf/lsst/datafiles/bill2 http://www.cyberciti.biz/pdf/lsst/datafiles/bill2 [29/07/2002 19:05:11] Machine Translated by Google
  • 257. total = $3 * $4 recno = $1 item = $2 gtotal += total printf "%d %s Rs.%fn", recno, item, total #printf "%2d %-10s Rs.%7.2fn" , reconhecimento, item, total END { printf "---------------------------n" printf "Total de R$ %fn" ,gtotal #printf " tTotal Rs. %7,2fn" ,gtotal printf "===========================n" { BEGIN { printf "Projeto de lei de 4 de março de 2001.n" printf "Por Vivek G Gite. n" printf "---------------------- -----n" } } } http://www.cyberciti.biz/pdf/lsst/datafiles/bill3 [29/07/2002 19:05:22] http://www.cyberciti.biz/pdf/lsst/datafiles/bill3 Machine Translated by Google
  • 258. { END { printf "---------------------------n" printf "tTotal Rs. %6,2fn" ,gtotal printf " ===========================n" total = $3 * $4 recno = $1 item = $2 gtotal += total printf "%2d %-10s Rs.%7.2fn", recno, item, total BEGIN { printf "Projeto de lei de 4 de março de 2001.n" printf "Por Vivek G Gite.n" printf "---------------------- -----n" } } } http://www.cyberciti.biz/pdf/lsst/datafiles/bill4 [29/07/2002 19:05:32] http://www.cyberciti.biz/pdf/lsst/datafiles/bill4 Machine Translated by Google
  • 259. não2 = $3 } operação = $2 COMEÇAR { resposta = 0 { printf "Ops!Erro só sei somar.nSintaxe: número1 + número2n" printf "%s", meu prompt { printf "%s", meu prompt AMBIENTE["USUÁRIO"] } outro não1 = $1 , resposta = $ 1 + $ 3 " FIM { printf "nBoa compra %sn" } printf "%d %c %d = %dn" ,no1,op,no2,ans se (op == "+" ) myprompt = "(Para parar pressione CTRL+D) > printf "Bem-vindo ao programa awk de cálculo MyAddtion v0.1n" } } printf "%s", meu prompt { http://www.cyberciti.biz/pdf/lsst/datafiles/math2 [29/07/2002 19:05:56] http://www.cyberciti.biz/pdf/lsst/datafiles/math2 Machine Translated by Google
  • 260. } { } soma = 0 i = 1 para (i=1; i<=10; i++) { BEGIN{ printf "Pressione ENTER para continuar com o exemplo de loop for do LSST v1.05r3n" } soma += eu; # soma = soma + eu printf "Soma de 1 a 10 números = %d nBoacompra!nn", soma saída 1 http://www.cyberciti.biz/pdf/lsst/datafiles/while01.awk [29/07/2002 19:06:15] http://www.cyberciti.biz/pdf/lsst/datafiles/while01.awk Machine Translated by Google
  • 261. /home/vivek/final /home/vivek/final /home/vivek/final /home/vivek/awks/temp/file1 /home/ vivek/awks/temp/file2 /home/vivek/ awks/temp/file3 /home/vivek/awks/ temp/file4 /home/vivek/final http://www.cyberciti.biz/pdf/lsst/datafiles/filelist.conf http://www.cyberciti.biz/pdf/lsst/datafiles/filelist.conf [29/07/2002 19:06:30] Machine Translated by Google
  • 262. } {dcmd = "rm " $1 if ( sistema(dcmd) != 0 ) printf "comando rm não foi bem sucedidon" else printf "comando rm foi bem sucedido e %s arquivo foi removido n", $1 http://www.cyberciti.biz/pdf/lsst/datafiles/tryrmsys [29/07/2002 19:06:39] http://www.cyberciti.biz/pdf/lsst/datafiles/tryrmsys Machine Translated by Google
  • 263. idade + 1 na, ", ano que vem você será" BEGIN { printf "Seu nome, por favor:" getline na < "-" printf "%s sua idade, por favor:",na getline idade < "-" print "Olá " } http://www.cyberciti.biz/pdf/lsst/datafiles/testusrip [29/07/2002 19:06:53] http://www.cyberciti.biz/pdf/lsst/datafiles/testusrip Machine Translated by Google
  • 264. COMEÇO{ "data" | getline imprimir $0} http://www.cyberciti.biz/pdf/lsst/datafiles/awkread_file [29/07/2002 19:07:03] http://www.cyberciti.biz/pdf/lsst/datafiles/awkread_file Machine Translated by Google
  • 265. COMEÇO{ "data" | getline hoje imprimir hoje } http://www.cyberciti.biz/pdf/lsst/datafiles/awkread_file1 [29/07/2002 19:07:06] http://www.cyberciti.biz/pdf/lsst/datafiles/awkread_file1 Machine Translated by Google
  • 266. se ( { sfile = $1 dfile = $2 issexist = "[ -e " $1 " ]" isdexist = "[ -e " $2 " ]" cpcmd = "cp " $1 " " $2 printf "Lidando %s para %sn",sfile ,dfile if( ( sistema(issexist) ) != 0 ) { } } else sistema(cpcmd) # # lógica principal está aqui # { printf "Ignorando "%s", não existen",sfile next # lê o próximo registro COMEÇAR{ } # #temp2final1.awk: Versão 2 #Linux Shell Scripting Tutorial v1.05, março de 2001 # #Autor: Vivek G Gite # # #Esta versão verifica primeiro o arquivo de origem e destino #depois copia o arquivo. Se o arquivo já existir, ele solicitará confirmação. # # # printf ""%s", existe overwrite(y/N)?", sfile getline ans < "-" if( ans == "y" || ans == "Y") } # # Finalizar ação, se houver, por exemplo, limpezas # END{ } # # ./ ch.sh: referência de vivek-tech.com para nixcraft.com convertida usando esta ferramenta # Veja a ferramenta em http://www.nixcraft. com/uniqlinuxfeatures/tools/ # (sistema(isdexist)) == 0) sistema (cpcmd) http://www.cyberciti.biz/pdf/lsst/scripts/temp2final1.awk [29/07/2002 19:07:15] http://www.cyberciti.biz/pdf/lsst/scripts/temp2final1.awk Machine Translated by Google
  • 267. Linux é legal. É diferente de todos os outros sistemas operacionais Atualmente ele aprende Linux. . (DOT) é um comando especial do Linux. Eu amo Linux. Meu irmão Vikrant também adora Linux, que também adora Unix. Este é vivek de Poona. Olá Mundo. Você sabe? Rani, minha irmã nunca usa Linux. Ela só adora jogar e nada mais. Eu me importo com você e Vivek se importa. 1224 bem vindo 6888 linux liux linux é linux OK! Eu irei parar. No próximo ano o Linux completará 11 anos. O Linux agora tem 10 anos. http://www.cyberciti.biz/pdf/lsst/datafiles/demofile1 http://www.cyberciti.biz/pdf/lsst/datafiles/demofile1 [29/07/2002 19:07:28] Machine Translated by Google
  • 268. 1i O preço de todos os itens muda de 1º de abril de 2001 /Pen/s/20.00/19.5/ / Pencil/s/2.00/2.60/ /Rubber/s/ 3.50/4.25/ /Cock/s/45.50/51.00/ http://www.cyberciti.biz/pdf/lsst/datafiles/chg1.sed [29/07/2002 19:07:44] http://www.cyberciti.biz/pdf/lsst/datafiles/chg1.sed Machine Translated by Google
  • 269. 1001 100001 10001 1000000001 10101010 10101010 ************************ A data de hoje é 12/05/01, ou seja, 5 de dezembro de 2001 *** Renu minha irmã nasceu em 01/06/74 *** Números divertidos Números binários Quando eu era criança, adorava ver estrelas, minha mãe diz que as estrelas são um presente de Deus para nós! Minha data de nascimento: 5 de abril de 00 ***** Existe alguma relação entre star e Linux Ok, o Linux é como uma estrela. ******** Meu irmão Vivkran nasceu em 5 de dezembro de 70 Star dá vida a coisas boas http://www.cyberciti.biz/pdf/lsst/datafiles/demofile2 [29/07/2002 19:07:53] http://www.cyberciti.biz/pdf/lsst/datafiles/demofile2 Machine Translated by Google
  • 270. } /^*{2,3}$/,/^*{2,3}$/{ /^$/ds/Linux/Linux-Unix/ http://www.cyberciti.biz/pdf/lsst/datafiles/dem_gsed [29/07/2002 19:08:01] http://www.cyberciti.biz/pdf/lsst/datafiles/dem_gsed Machine Translated by Google
  • 271. sed é Não sei Rani sabe o que -------------------------------------------------- - sed o que é sed, mas eu acho o que é sed? Bem-vindo ao mundo do http://www.cyberciti.biz/pdf/lsst/datafiles/demofile3 [29/07/2002 19:08:06] http://www.cyberciti.biz/pdf/lsst/datafiles/demofile3 Machine Translated by Google
  • 272. A'bad, MH, ÍNDIA. -------------------------------------------------- ----------------------- VK Rajopadhey 22/05, Rua 4, -------------------------------------------------- --------------------- AG Turismo 22, MIDC, Pune, MH, ÍNDIA. Comida, Música 98220-5678 -------------------------------------------------- --------------------- Pune, MH, ÍNDIA. Jogos de computador 02/01/74 NK Kulkarni Setor 20, Padmavti, 12/05/73 98220-9888 A'bad, MH, ÍNDIA. Passatempo Alimentos, Bebidas, Estilo de Vida 98220-6823 Coleção de moedas antigas 98220-6877 Telefone # 10/09/70 RK Joshi Flat No.9, Torres Pushpa, Mumbai, MH, ÍNDIA. Nome do amigo 15/6/72 Informática, Leitura de Livros 98220-3333 Data de nascimento 01/02/71 MM Couve 6/21, Silver Estate, http://www.cyberciti.biz/pdf/lsst/datafiles/friends http://www.cyberciti.biz/pdf/lsst/datafiles/friends [29/07/2002 19:08:18] Machine Translated by Google