Utilizar o Terminal de comandos pode parecer uma tarefa complexa, limitada e intimidadora para usuários não ambientados. Porém, com a enorme adoção de sistemas operacionais Linux por parte de servidores, e Mac por desenvolvedores, é necessário pelo menos um pouco de familiaridade com a ferramenta.
Além disso, a maioria das linguagens e frameworks disponibilizam seus recursos por meio de CLI, que significa Command Line Interface (interface de linha de comando), mesma prática adotada por ferramentas de outras áreas como banco de dados e sistemas de controle de versão.
Exemplos:
- nodejs (node e npm)
- emberjs e angular
- php
- ruby
- python
- git e svn
- mysql e postgres
…entre outras.
Ou seja, é praticamente impossível pensar num ambiente de desenvolvimento que não necessite de nenhuma interação com a linha de comando.
E com o passar do tempo é provável que você adquira mais habilidade e produtividade utilizando ferramentas do Terminal.
Catálogo
A seguir, um catálogo simplificado para servir como ponto de partida para adaptação à linha de comando de sistemas baseados em Unix, por categoria.
Navegação
pwd: imprime o caminho completo do diretório atual.ls [path]: lista os arquivos publicos informados no parâmetropath.cd [path]: navegar para o diretório informado no parâmetropath.
Ajuda
man [command]: exibe o manual do comando informado no parâmetrocommand.[command] --helpou[command] -h: geralmente, ferramentas da linha de comando irão exibir um menu de opções disponíveis e informações de utilização do comando informado no parâmetrocommand.
Manipulação de arquivos
cp [source] [destination]: copiar o arquivo informado no parâmetrosourcepara o caminho no parâmetrodestination.mv [source] [destination]: mover arquivo ou pasta do parâmetrosourcepara o caminho informado emdestination, ou renomear caso o destino seja o mesmo diretório.touch [filename]: cria um arquivo com o nome informado no parâmetrofilename.mkdir [fullpath]: cria um diretório com o caminho completo informado no parâmetrofullpath.rm [filename]: excluir o arquivo informado no parâmetrofilename.rm -r [path]: exclui um diretório informado no parâmetropath.ln -s [source] [destination]: cria um link simbólico entre o arquivo informado no parâmetrosourcee o destino informado nodestination.
Visualização de arquivos
echo [text]: imprime o texto informado no parâmetrotextno terminal.echo $[varname]: exibe o conteúdo presente na variável informada no parâmetrovarname.cat [filename]: imprime o conteúdo presente no arquivo informado no parâmetrofilename.head [filename]: imprime as dez primeiras linhas do arquivo informado no parâmetrofilename.tail [filename]: imprime as dez últimas linhas do arquivo informado no parâmetrofilename.grep [pattern] [filename]: imprime as linhas do arquivo informado no parâmetrofilenameque satisfazem o padrão (Regex) informado no parâmetropattern.
Administração
sudo [command]: executa o comando informado no parâmetrocommandcomo super usuário.[command1] && [command2]: o operador&&permite que vários comandos sejam executados em sequência.[command] &: executa o comando informado no parâmetrocommandem segundo plano.bash [script.sh]: utiliza o bash para executar o script informado no parâmetroscript.sh.[command1] | [command2]: redireciona a saída do comandocommand1para a entrada do comandocommand2.[command] > [filename]: redireciona a saída do comandocommand1para um arquivo criado com o nome informado emfilename.[command] >> [filename]: adiciona a saída do comandocommand1no final do arquivo informado no parâmetrofilename.
Processos
ps: exibe uma lista de processos em execução do usuário atual no terminal atual.ps -e: exibe todos os processos em execução.pstree: exibe a lista de processos em execução, em forma de árvore.pgrep [name]: exibe o PID do processo informado no parâmetroname.kill -9 [PID]: envia o sinal de encerramento para o processo que possui o PID informado no parâmetroPID.
Permissões
chmod [code] [filename]: altera a permissão do arquivo informado emfilenamede acordo com o código informado no parâmetrocode.chmod +x [filename]: torna o arquivofilenameum executável.chwon [path]: altera o dono do arquivo ou diretório informado no parâmetropath.
Commando “find”
find .: procura arquivos e diretórios recursivamente a partir do atual.find . -name *.png -exec cp '{}' ~/images \;: copia todos os arquivos PNG para a pasta~/images.find . -name .svn -prune -exec rm -r '{}' \;: exclui todos os diretórios com nome.svn.find . -type f -exec file '{}' \;: executa os arquivos.
Net
ssh user@server: acessar um servidor via SSH.scp user@host:[remotefile] [localpath]: Copia o arquivo remoto para uma pasta local.scp [localfile] user@host:[remotepath]: Copia um arquivo local para o servidor remoto.wget [url]: efetua o download do arquivo informado emurla partir da web.