|
Para facilitar a sua vida na linha de comando, você também pode criar seus próprios shell scripts, o que é de alguma forma similar aos arquivos .bat do DOS.
Apresentamos aqui alguns exemplos, como este script que recebe o argumento passado pela linha de comando:
#!/bin/sh
# buscar: busca arquivo passado como argumento em '/'.
# verificar se o argumento foi passado
if [ $# -ne 1 ]; then
echo 1>&2 "Uso: ./buscar ARQUIVO"
else
# comando find recebendo os argumentos
echo -e "\t*** Resultado(s) da pesquisa: ***"
find / -name "$1" -print
fi
exit 0
Para entender os scripts, é importante ter o conceito das variáveis e testes condicionais específicos do bash.
Algumas variáveis shell:
- $#: número de argumentos (argc)
- $*, $@: retorna todos argumentos passados
- $?: código de retorno do último comando
- $$: número do processo atual
- outras: $HOME, $PATH, $SHELL, $TERM, $USER
Caracteres especiais:
- aspas simples ('): delimita uma string
- aspas duplas ("): delimita mas resolve variáveis
- crase (`): delimita mas executa a string
- \: caracter de escape
- ( ): agrupa comandos, permite rodar subshells paralelas
- (( )): avalia a expressão aritmética e permite manipulação de variáveis C-type
for (( i=0; i<5; i++)) do echo $i; done;
Testes condicionais ([ expr] ou test expr):
- -e: verifica se existe
- -d: verifica se é um diretório
- -f: verifica se é um arquivo
- -r: verifica permissão de leitura
- -g: verifica permissão SGID
- -u: verifica permissão SUID
- -w: verifica permissão de escrita
- -x: verifica permissão de execução
- -L: verifica se é um link
|
- -eq: é igual (==)
- -ne: é diferente (!=)
- -gt: é maior (>)
- -ge: é maior ou igual (>=)
- -lt: é menor (<)
- -le: é menor ou igual (<=)
- -s: verifica se tamanho do arquivo não é 0
- -z: verifica se valor da string é 0
- -n: verifica se valor da string não é 0
|
Outro exemplo, um menu em bash simples (while, read, case...) utilizando here-document para desenhar a tela ao invés de echo (Mais info: LG 57, por Ben Okopnik).
Neste script, que instala pacotes tgz em distros sem suporte, procuro exemplificar o uso de funções e subshell no bash.
Tutoriais você encontra em UNIXhelp, LDP, entre outros. Exemplos e scripts: SHELLdorado, SF.net, etc.
Alguns shell scripts que considero úteis:
- ren: altera o nome dos arquivos de acordo com certas regras (ex: .htm para .html).
- lcf: altera o nome dos arquivos para letras minúsculas (./lcf *).
Estes e outros scripts estão no pacote kscripts , na seção Downloads deste site.
Os scripts encontrados no /etc do Slackware são shell scripts globais. Como usuário, você pode criar scripts locais,
por exemplo:
.xinitrc (startx com o window manager de sua escolha), .bash_profile (que será executado no login), .bash_logout (que será executado no logout).
Para mais informações: man bash e man sed :)
|