TUTORIAL DE SHELL SCRIPT
Desenvolvido por Leonardo Weslei Diniz
Email: exterminador3@gmail.com
Nick na comunidade Viva o
Linux: exterminador3
Comandos
man: Comando que nos mostra o manual de um outro comando.
Uso: man [seção] comando
Observe que seção é opcional, mas pode ser:
- Comandos do usuário
- Chamadas ao sistema
- Biblioteca de funções
- Dispositivos
- Formatos de arquivos
- Jogos
- Informações gerais
- Administração do sistema
Exemplo de uso:
$ man 1 ls
Utilize /palavra para procurar e "q" para sair.
--help: Essa opção é aceita em vários comandos e retorna um tópico de ajuda ao usuário.
info: Funciona como o man e serve para o mostrar informações a respeito do comando.
logout: Fecha a shell do usuário. Este comando é utilizado quando se termina sua sessão ou para se trocar de usuário.
shutdown -r now: Comando utilizado para reiniciar a máquina. Possui alguns similares: reboot, init 6, Ctrl + Alt + Del. Existe também o "shutdown -h now", que desliga a máquina. Seus similares: halt, init 0.
su: Utilizado para se trocar de usuário sem efetuar logout. Muito comum em acessos via rede, já que via rede por default o root não pode se logar.
Usa-se também su -c "comando a executar" para se executar um comando com poderes de root e depois retornar. Obviamente será pedida uma senha.
Uso do su:
$ su nomeDoUsuárioAseVirar
ls: Comando que serve para listar arquivos. Suas opções mais utilizadas são:
- -la, onde o -l significa listar as permissões (inclusive) e o -a para listar todos os arquivos (lembrando que para o Linux arquivos começados com . são ocultos).
OBS: O Conectiva Linux possui um alias chamado l para o comando ls -la, use-o e caso a sua distribuição não contenha tal alias, crie-o. Veja mais adiante como fazê-lo.
cd: Comando para mudar-se de diretório. O deslocamento absoluto se tem quando utilizamos a raiz (/) para indicarmos para onde queremos ir. Por exemplo, imaginemos que estamos no diretório /usr/src/linux e desejamos ir para o diretório /usr/src/teste. Temos duas opções, a seguir:
- cd /usr/src/teste - Deslocamento absoluto, observe o uso do / no início do diretório para o qual queremos ir;
- cd ../teste - Deslocamento relativo, perceba que se estivéssemos em um outro diretório (/usr) por exemplo, não iríamos cair onde queremos. Daí a convenção de "relativo".
cp: Copia arquivos. Use: "cp arquivoASerCopiado novoArquivo". Opções interessantes:
- -i - Pede confirmação antes de substituir um arquivo existente;
- -R - Cópia recursiva. Serve para copiar diretórios e seu conteúdo.
mv: Move arquivos. Use-o também para renomear. Uso: "mv arquivo novaLocalizacao/", "mv arquivo novoNome". Recomendado:
- -i - Confirma antes de substituir um arquivo existente.
OBS: No Conectiva Linux existe um alias tanto para o comando cp como para o mv com a opção -i.
alias: Cria um apelido para um comando. Tem precedência sobre o comando, ou seja, pode-se criar um alias do tipo: alias ls="ls -la". Toda vez que digitarmos ls na verdade ele executará ls -la.
clear: Limpa a tela. Recomenda-se a criação de um alias chamado c para este comando.
mkdir: Comando para a criação de diretórios. Usa-se o -p caso se queira criar uma "árvore" de diretórios.
mktmp: Cria uma pasta temporária, acrescenta-se -d caso queira criar diretórios normais.
rmdir: Complemento do comando mkdir. Serve para remover um diretório vazio. A opção -p serve para remover uma árvore de diretórios vazia (sem arquivos).
rm: Comando utilizado para apagar arquivos. Observe que o rm simplesmente não apaga diretórios. Sua opção -r indica para apagar recursivamente, ou seja, ir apagando todos os arquivos em subdiretórios e inclusive os próprios diretórios. A opção -f força apagar, e não emite mensagens de erro caso não exista um arquivo.
who (w, whoami): O comando who e w listam os usuários que estão logados na máquina. O w tem uma saída um pouco mais complexa, mostrando mais informações. O comando "who is god" é uma sátira e retorna o nome de seu usuário. O comando whoami (pode ser escrito who am i) também retorna o nome de seu usuário e é utilizado para saber com qual usuário você está logado, muito usado quando se utiliza o su e acaba se confundindo quem é você.
df: Mostra informações de sistemas de arquivos montados (mesmo CDROM e disquete).
free: Mostra informações de memória (swap inclusive).
cat /proc/cpuinfo: Informações muito completas de seu processador.
setterm: Este comando serve para modificar configurações do terminal do Linux, tais como cor de fundo e cor da letra. Ex:
$ setterm -background green # Fundo Verde
$ setterm -foreground yellow # Letra "amarela"
OBS: Este comando mudará a cor a partir do momento em que ele for dado, ou seja, você precisa imprimir algo na tela ou dar um clear para realmente mudar a cor. Ah, e não funciona em modo gráfico.
tput: Utilizaremos este comando para posicionar o cursor na tela onde quisermos. Ele será muito útil quando estivermos construindo shell scripts. Ex:
$ tput cup 5 10 # Posiciona o cursor na linha 5 coluna 10.
uptime: Mostra a quanto tempo o sistema está ligado. Os maiores uptimes da internet são com máquinas UNIX.
ps: Comando que lista os processos em execução no sistema. Recomenda-se sempre utilizá-lo com as opções AUX, para que liste TODOS os processos ativos no sistema.
kill: Serve para matar um processo em execução. Deve-se utilizar um dos sinais existentes para esta tarefa. O sinal padrão é o sinal 15. Após o sinal, deve-se informar o PID (identificador único de processos) do processo que se deseja matar (encerrar).
killall: Implementação do Linux muito interessante. Permite-se que se mate diversos processos com o mesmo nome de uma única vez. Observe que pode utilizá-lo para matar um único processo pelo nome, desde que se tenha o cuidado de perceber se não existem outros processos com este nome. Ex:
$ killall httpd
$ killall -9 vi
touch: Cria um arquivo texto vazio. Muito interessante na hora de se testar alguma coisa. Uso: touch nomeDeArquivoaCriar nomeDeArquivoaCriar2 ... Pode-se criar diversos arquivos de uma única vez.
find: Busca arquivos. Muito avançado. Uso: find DirAProcurar opções. Exemplos de uso:
$ find / -name nome_do_arquivo # Procura a partir da raiz (no sistema todo) o arquivo "nome_do_arquivo"
$ find /home -exec grep "teste" {} \; -exec ls -la {} \ # Procura a partir do diretório /home arquivos com o conteúdo teste (grep teste) e lista este arquivo (ls -la).
$ find /usr -type l -ok rm -rf {} \; # Procura no diretório /usr links (-type l) e caso encontre, confirma se deve ou não apagar (-ok rm -rf).
Consulte o manual para informações mais interessantes.
locate: Busca arquivos, mas utiliza uma base de dados como padrão, o que o torna muito rápido. Cuidado! Atualize sempre sua base de dados ou irão aparecer arquivos que já foram removidos em suas buscas.
Outro problema do locate é o fato de que ele busca qualquer ocorrência da palavra a buscar, ou seja, se você fizer locate a, ele irá listar TUDO no sistema que contém a letra a. Para atualizar sua base de dados utilize:
updatedb. Para buscar utilize: "locate oqbuscar".
top: Método interessante de se visualizar os processos ativos na máquina.
Use:
- M --> Ordenar por consumo de memória;
- P --> Ordenar por consumo de CPU.
vi ou vim (editor de textos): Ótimos editores de textos. As opções vistas foram:
- ESC :w - Salva arquivo;
- ESC :x - Salva e sai;
- ESC :q - Sai quando você não alterou nada;
- ESC :q! - Sai sem salvar;
- ESC /palavra - Procura palavra;
- ESC n - Procura pela próxima ocorrência de palavra.
jobs: Lista os processos que estão em segundo plano, retornando o número do processo de segundo plano, que deverá ser utilizado para trazê-lo de volta.
fg: Comando que trás de volta um processo do segundo plano. Uso: fg IdDeProcessoRetornadoPeloJobs
ln: Este comando cria um link (atalho) entre diretórios e arquivos. Um link simbólico (opção -s) nada mais é do que um arquivo no HD que aponta para a área onde está o arquivo original. Se o original é apagado, o link fica "quebrado". Já um link direto (apenas ln) dá um outro nome para a mesma área do HD. Como um backup contra remoção indevida, no entanto usa-se o mesmo espaço do HD, referenciando-no de duas maneiras diferentes. Crie e compare. Um link direto não pode ser feito entre diretórios.
Uso:
$ ln -s Original Link
$ ln Original Link
chmod: Comando que muda as permissões de um arquivo. Estas podem ser vistas através do comando ls -l.
- R - Permissão de leitura. Para diretórios, pode listar seu conteúdo pode;
- W - Permissão de escrita;
- X - Permissão de execução. Para diretórios, pode entrar nele.
Ex: chmod -R +rwx pasta
- A opção -R manda dar a permissão recursivamente a todos os arquivos e subdiretórios deste diretório em questão;
- +rwx à Está-se dando todas as permissões, pode ser substituído por um simples 7;
- -rwx à Está-se tirando todas as permissões, pode ser substituído por um simples 0.
umask: Comando que muda a máscara de permissões padrão para a criação de arquivos e diretórios. Seu uso será explicado mais adiante, apenas em modo OCTAL e não CARACTERE. O modo CARACTERE foi explicado no curso básico, mas não o será nesta apostila.
chown: Utilizado para mudar o DONO e o GRUPO dono de um arquivo ou diretório.
Uso: chown novodono:novogrupo arquivoOudiretorio
Observe que a opção :novogrupo pode ser omitida ou trocada por .novogrupo.
Também aqui existe a opção -R.
chgrp: Utilizado para mudar apenas o grupo dono de um arquivo. Uso: chgrp novogrupo ArquivoOuDiretório
groupadd: Permissão que adiciona um grupo. Um grupo nada mais é do que a união de diversos usuários com as mesmas características. Por exemplo, poderíamos ter um grupo estudantes ou alunos. Para adicionarmos este grupo, devemos utilizar o comando:
# groupadd vivaolinux
No arquivo /etc/group será adicionada uma entrada vivaolinux, e será dado um GID (identificador de grupo) a este grupo.
useradd: Permissão que adiciona um usuário.
Qualquer pessoa que for utilizar o Linux deve necessariamente possuir um usuário válido na máquina. Lembrando que NÃO devemos utilizar o root a menos que necessário, esta tarefa é importantíssima mesmo para usuários caseiros. Adicionando:
# useradd leonardo vivaolinux
Adicionamos o usuário leonardo no grupo vivaolinux.