Em uma aula de Software Livre, abordei as questões da necessidade de uma certa fluência na utilização dos comandos mais conhecidos por linha de comando, ou CL (Command Line); Quando menciono certa fluência, o que quero dizer é o conhecimento básico para administração de um sistema, manipulação de arquivos de configuração, cópias de arquivos, uso de utilitários de atualização do sistema, como "aptitude", "apt-get", "dpkg" ou edição de textos com "vim".
Quem não conhece ou nunca utilizou os comandos presentes no shell, não imagina o ganho de produtividade e versatilidade em administrar Sistemas Linux. Naturalmente, o aprendizado não é somente memorização de comandos e suas sintaxes, mas no curto e médio prazo, ja é possível tirar bons proveitos do estudo de cada domando. Além disso, altamente recomendado como uma primeira linguagem para aprender os primeiros passos em programação de computadores conforme Jon "Maddog" Hall no seu blog em [1].
Então, o shell é um interpretador que está entre o usuário e o kernel do sistema operacional, fazendo todas as análises dos comandos, checando por exemplo sua sintaxe, se o comando é válido e enviando as requisições para execução. Costumo dizer que o shell é o ponto mais próximos que podemos estar do kernel de um sistema Linux e, lógicamente, o kernel é o ponto mais próximo dos dispositivos de hardware própriamente dito, como execução de comandos de leitura e gravação em disco ou comunicação com impressoras por exemplo. Como dito no paragráfo anterior, outra grande utilidade do shell é ser uma linguagem de programação, conhecida como "script shell" com objetivos de automatizar programas, configurações, instalações, etc.
Crédito imagem:
http://apoie.org/JulioNeves/PapoI.htmO Shell mais conhecido no mundo Linux é o bash − GNU Bourne-Again SHell. O Bash é um interpretador de comando compatível com sh capaz de executar comandos pela entrada padrão ou através de um arquivo. Também incorpora características úteis do ksh e csh, fielmente seguindo as especificações POSIX (IEEE Standard 1003.1).
Caso necessite informações sobre o bash, instale o bash-doc e vefifique sua documentação em /usr/share/doc/bash-doc ou sua man page (man bash);
Para trabalhar com eficácia no Shell, recomendo o estudo de alguns comandos simples e ter disciplina para aprender todo dia um pouco, por exemplo, iniciando por aqueles comandos mais simples, com manipulação de arquivos e diretórios; ao surgir dúvidas, a ferramenta mais acessível para ter informações sobre um comando é o próprio comando seguido do --help, como por exemplo ls --help, ou usando a man page (man ls); Abaixo vou listar comandos que julgo ser necessário seu estudo para uma utilização do estudante de Software Livre:
pwd
mostra o diretório atual
ls lista arquivos no diretório corrente (ls -l, ls -lhat)
man exibe um manual do comando especificado (man ls)
mkdir cria um diretório
rm remove arquivo
rm -rf cuidado, remove diretório de forma recursiva
| pipe, concatena comandos
> cria arquivo
>> cria ou adiciona dados em um arquivo
/dev/null direciona a saida descartando os resultados
find comando útil para localização de arquivos
ps mostra os processos correntes, ex ps -aux
kill mata um processo pelo seu número
pkill mata um processo pelo seu nome
alias útil para dar "apelidos" a comandos, ex: alias cp='cp -i'
cal apresenda o calendário
chmod permite atribuir modos a um arquivo
less similar ao more, premite visualizar o conteúdo de um arquivo
chown permite alterar dono e grupo de um arquivo
clear (ctrl+l) limpa a tela
tar comando para backup
gzip comprime ou expande um arquivo
date mostra a data corrente, configura data no sistema
du disk user
df reporta o espaço usado no disco
file determina um tipo de arquivo
find procura por arquivos na hierarquia de diretórios
head mostra o inicio de um arquivo
ln cria links simbólicos
mail envia e-mail
more controla a saida de um comando
password cria, altera senha, bloqueio/desbloqueio de usuário
ping não conhece o ping?
hostname retorna ou configura o hostname de uma máquina
reboot reinicia o sistema
shutdown desliga o sistema
rmdir exclui um diretório
tail útil para checagem de logs
su sudo user
wc util para contar linhas, palavras de um arquivo
whereis mostra o local de um comando
who who am i
top mostra informações sobre o sistema, atividade, uptime, etc
uptime mostra tempo do sistema ligado
mount monta dispositivos de blocos, discos, etc
umount
Alguns comandos, podem necessitar de poderes de sudo ou ainda utilizar a conta de root! Sobre isto, veja mais em
root, direitos, privilégios e segurança;O domínio dos comandos acima, mesmo que básico, já ajuda o estudante a ter fluência na manipulação de dados via linha de comando; Aproveite as possibilidades de usar Linux e divirta-se.
[1] http://www.lpi.org/blog/shell-powerful-first-computer-language