shell scripts Se você usava arquivos .BAT para criar atalhos para longas linhas de comando (eu usei muito), pode fazer isso inserindo linhas de apelido apropriadas (veja exemplo acima) em profile ou .profile. Mas, se seus .BATs eram mais complicados, você vai adorar a linguagem de script do shell: é tão poderosa quanto QBasic, se não for mais. Tem variáveis, estruturas como while, for, case, if... then... else, e vários outros recursos: pode ser uma boa alternativa a uma linguagem de programação "de verdade".
Para escrever um script--o equivalente a um arquivo .BAT no DOS--tudo o -
-que você tem a fazer é escrever um arquivo ASCII contendo as instruções, -
-gravá-lo, e torná-lo executável com o comando chmod +x -
-
scriptfile
. Para executá-lo, digite o nome do arquivo.
Um aviso: o editor do sistema chama-se vi, e na minha experiência a maioria dos novos usuários acha-o muito difícil de usar. Eu não vou explicar como usá-lo, porque eu não gosto do vi e não o uso. Aqui basta dizer que:
Um bom editor para iniciantes é o joe: executando-o como jstar,
você obterá as mesmas associações de teclas que o editor do
DOS. jed no modo WordStar ou IDE é melhor ainda. Consulte a
Seção (Onde Encontrar Aplicativos)
para saber onde pegar esses editores.
Escrever scripts do bash é um assunto tão vasto que preencheria um livro, e eu não me aprofundarei mais nesse tópico. Eu só darei um exemplo de script de shell, do qual você poderá extrair algumas regras básicas:
#!/bin/sh # sample.sh # Isto é um comentário # não mude a primeira linha, ela precisa estar lá echo "O sistema é: `uname -a`" # usa a saída do comando echo "Meu nome é $0" # variáveis embutidas echo "Você me deu os seguintes $# parâmetros: "$* echo "O primeiro parâmetro: "$1 echo -n "Como você se chama? " ; read seu_nome echo note a diferença: "oi $your_name" # quotando com " echo note a diferença: 'oi $your_name' # quotando com ' DIRS=0 ; ARQS=0 for arquivo in `ls .` ; do if [ -d ${arquivo} ] ; then # se arquivo for um diretório DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1 elif [ -f ${arquivo} ] ; then ARQS=`expr $ARQS + 1` fi case ${arquivo} in *.gif|*jpg) echo "${arquivo}: arquivo gráfico" ;; *.txt|*.tex) echo "${arquivo}: arquivo texto" ;; *.c|*.f|*.for) echo "${arquivo}: arquivo fonte" ;; *) echo "${arquivo}: arquivo genérico" ;; esac done echo "há ${DIRS} diretórios e ${ARQS} arquivos" ls | grep "ZxY--!!!WKW" if [ $? != 0 ] ; then # código de saída do último comando echo "ZxY--!!!WKW não encontrado" fi echo "pront... digite 'man bash' se você \ quiser mais informações."
C Unix