Quem tem Shell Script não precisa de Autoexec! Por: André Luiz dos Santos Pereira Para quem está migrando do ambiente DOS/Windows para o Linux, podeestranhar a falta de arquivos de lote como o autoexec.bat. No Linux, temos umalinguagem que abrange o potencial dos arquivos de lote e linguagem de programação: trata-se do Shell Script. Os arquivos Shell Script sempre começam com a seguinte declaração: #!/bin/sh Isso indica que todos os comandos digitados devem ser passados para aShell. Abaixo, temos um código extremamente útil para iniciantes: trata-se deumscript que monta o cd-rom e logo em seguida, acessa. Observe: #!/bin/sh #Montar o cd-rom mount /dev/cdrom /mnt/cdrom cd /mnt/cdrom Salve o arquivo como cdon e defina as permissões para o arquivo com ocomando: chmod a+x cdrom. Caso queira exibir o a saída do comando, altere o programa e inclua oseguinte comando: #!/bin/sh #Montar o cd-rom echo `mount /dev/cdrom /mnt/cdrom` cd /mnt/cdrom O comando echo faz a exibição de algo na tela. Possui a seguinte forma: echo `comando` : Exibe a saída do comando. echo "comando" : Escreve a palavra comando na tela. Assim como em arquivos de lote MS-DOS, podemos especificar parâmetros emShell Script. Seu funcionamento é parecido, porém a declaração do parâmetro sedá por $(número do parâmetro). Exemplo #arquivo: mensagem. #!/bin/sh echo "$1, seja bem vindo ao Linux!" Ao digitarmos na linha de comando: ./mensagem André André, seja bem vindo ao Linux! Podemos especificar até 9 parâmetros em Shell Script. O programa acima poderia também ser escrito da seguinte forma usandovariáveis: #arquivo: mensagem. #!/bin/sh $Mess = ", seja bem vindo ao Linux!" echo "$1 $Mess" Para recolher entradas via teclado, utilize o comando read da seguinteforma: #arquivo: mensagem. #!/bin/sh echo -n "Qual seu nome? " read $nome $Mess = ", seja bem vindo ao Linux!" echo "$nome $Mess" Muito útil na construção de menus com opções. A fim de prover maiores recursos a nossas shells, vamos entender algumas expressões utilizadas para texto = texto & "controle de fluxo: Expressões para comparação de inteiros: -gt -> maior -ge -> maior ou igual -lt -> menor -le -> menor ou igual -eq -> igual -ne -> diferente Expressões para comparação de strings: -n -> diferente de zero -z -> igual a zero = -> igual a != -> diferente de Expressões lógicas: -a -> e (and) -o -> ou (or) ! -> não (not) Expressões para arquivos: -e -> existente -r -> é legível -w -> é gravável -x -> é executável -d -> é diretório -nt -> é mais novo que Comandos para controle de fluxo: 1° -> if/fi: Verifica uma expressão e executa um bloco de código caso verdadeira. Estrutura: if [expressão]; then comandos; else comandos; fim-se se [expressão]; então comandos; senão comandos; fim-se 2° -> case/esac: Parecido com if, exceto que utiliza variáveis comoexpressão. Muito usado na criação de menus. Estrutura: case $variavel in valor1) comando1 ;; valor2) comando2 ;; valor3) comando3 ;; valor4) comando4 ;; esac caso $viariavel seja valor1) comando1 ;; valor2) comando2 ;; valor3) comando3 ;; valor4) comando4 ;; fim-caso 3° -> while: Executa um bloco de código enquanto [expressão] forverdadeira. Estrutura: while [expressão] do comandos; done enquanto [expressão] faça comandos; concluído Comandos úteis: expr : Realiza cálculos. Uso: expr valor1 + valor2 + - adição - - subtração \* - multiplicação / - divisão % - resto xargs - Concatena comandos. exemplo : find / -iname "~*" | xargs rm -f # No caso, o autor deste programa utilizou o comando find de exemplo,ele vai localizar todos arquivos que comece com ~ e em seguida com a ajudado xargs indicando para remover todos com o comando rm ! André Luiz dos Santos Pereira therap@uol.com.br