Skip to content

Instantly share code, notes, and snippets.

@paulo-neto
Last active May 23, 2021 13:01
Show Gist options
  • Save paulo-neto/e39a3f2f7282dd98cd5f5890a8fa7a24 to your computer and use it in GitHub Desktop.
Save paulo-neto/e39a3f2f7282dd98cd5f5890a8fa7a24 to your computer and use it in GitHub Desktop.
Comandos do terminal linux

Terminal Linux

Qual diretório estou?

  pwd

Listar arquivos e doretórios

  ls

Listar arquivos e diretórios, inclusive os ocultos

  ls -la

Ler arquivo no terminal

  cat nome_arquivo.extensao

Retornar o nome do usuário

  whoami

Criar um arquivo com conteudo

  echo "algum texto" > nome_arquivo.txt

Escrever em um arquivo que já possua conteudo

  echo "outro texto" >> nome_arquivo.txt

Criar um diretório

  mkdir nome_diretorio

Apagar um diretório(vazio)

  rmdir nome_diretorio

Apagar um diretório com seu conteúdo recursivamente

  rm -r nome_diretorio

Apagar um arquivo

  rm nome_arquivo

Copiando arquivo

  cp arquivo_existente.txt novo_arquivo.txt

Movendo arquivo(renomeando)

  mv arquivo_existente.txt novo_arquivo.txt

Movendo arquivo para um outro diretório

  mv arquivo_existente.txt nome_diretorio/  

Copiando diretório,com todo seu conteúdo, para um outro diretório

  cp -r nome_diretorio_origem nome_diretorio_destino

Zipar diretório,com todo seu conteúdo e não "printar" informações no terminal

  zip -rq nome_arquivo.zip nome_diretório

Unzipar arquivo e não "printar" informações no terminal

  unzip -q nome_arquivo.zip

Ver conteúdo do arquivo zipado

  unzip -l nome_arquivo.zip

"Zipando com tar"

  tar -czf nome_arquivo.tar.gz nome_diretorio/

"Unzipando com tar"

  tar -xzf nome_arquivo.tar.gz 

Retorna apenas as dez primeiras linhas do arquivo

  head nome_arquivo.txt

Informando o número de linha queremos ler

  head -n 3 nome_arquivo.txt

Ler as últimas linhas do arquivo

  tail nome_arquivo.txt

Abrir e navegar pelo texto do arquivo no terminal utilizando as setas para cima e para baixo do teclado

  less nome_arquivo.txt

Terminal Linux - programas, processos e pacotes

Queremos saber de todos os processos em todo o sistema

  ps -e

Finalizar um programa pelo ID

  kill id-programa
  ou
  kill -9 id-programa

Mais detalhes sobre os processos que estão em execução

  ps -ef

Filtrar os resultados da listagem

  ps -ef | grep nome-programa       

Comandos VI

O texto do arquivo aparece para nós e podemos navegar por ele utilizando as setas do teclado. Para sairmos do modo de navegação e entrarmos no modo de inclusão, apertamos a tecla i, assim podemos inserir textos no arquivo exatamente no lugar onde pressionamos o i. Para voltarmos à navegação e saírmos do modo de navegação, pressionamos a tecla ESC. Para salvarmos essas alterações usamos o comando :w e para sair do VI, digitamos :q.

Vimos que para inserir textos na posição onde o cursor se encontra, pressionamos a tecla i, mas podemos inserir textos usando também a tecla a, neste caso inclusão de texto será feita na posição seguinte de onde estiver o cursor.

Sabemos como inserir texto, mas e para excluir? Para excluir caracteres usamos a tecla x, ela funciona como o delete do teclado. Porém esse comando tem algo diferente: se digitarmos o número de caracteres que queremos apagar e logo depois a tecla x, serão apagados a quantidade digitada, é como se tivéssemos apertado o x várias vezes, algo como 11 x, apagará 11 caracteres de texto. O x já ajuda bastante, mas caso queiramos excluir uma linha inteira, ele pode não ajudar muito, porém, para deletarmos uma linha inteira podemos simplesmente digitar a tecla d duas vezes (dd), digitar uma quantidade antes do dd funciona da mesma forma que no comando x.

Tente sair do editor sem salvar o arquivo. Dará erro, isso porque temos que salvar o arquivo para podermos sair. Podemos juntar os comandos de salvar e sair em apenas um comando: :wq. Se quisermos sair sem salvar, precisamos usar o comando :q!.

Vimos bastantes comandos do VI até aqui, mas todos eles são teclas de letras em minúsculo, isso porque letras em maiúsculas possuem um comportamento diferente, o A (shift + a) por exemplo, também é um comando para edição de texto, mas ao contrário da i e a, o A insere texto no final da linha atual.

Resumindo os comandos que vimos do VI, até agora temos:

Setas: para navegação
i: inclui (na posição atual)
a: adiciona (na posição posterior)
Shift+A: adiciona (fim da linha)
x: remove caracteres (n x remove n caracteres)
dd: remove uma linha (n dd remove n linhas)

Se quisermos ir para a última linha do texto por exemplo, basta apertarmos Shift + g. Se quisermos pular para a linha n, apertamos o número correspondente e depois Shift + g. Então se, por exemplo, quisermos ir para a linha 5, fazemos 5 e depois Shift + g, para a primeira linha a combinação também é válida: 1 e depois Shift + g, sempre com Shift para que o g seja maiúsculo.

Se quisermos ir para o final da linha atual usamos a tecla $, ou seja, Shift + 4 e para ir ao início da linha digitamos 0.

Algo bem comum ligado à navegação de um arquivo é a procura de palavras. Para buscarmos palavras no texto usando o VI, digitamos "/" + o texto que procuramos, algo como: /California Se digitarmos isso, o cursor vai para a primeira ocorrência da palavra California. Se apertarmos a tecla n, ele irá para a próxima ocorrência e com Shift + n, podemos voltar para a anterior.

Um recurso muito comum de ser utilizado nas edições de texto são o copiar e colar, os quais veremos como fazer no VI. Para copiarmos uma linha do texto apertamos a tecla y duas vezes e para colar o que foi copiado, basta usar a tecla p.

Também podemos usar a ideia de quantidade de linhas com os números para copiar e colar. Se quisermos copiar a linha atual e mais as duas linhas abaixo podemos fazer 3 e yy - três linhas foram copiadas. O mesmo serve para o comando de colar: 3 e p cola três vezes o conteúdo copiado anteriormente.

Para encontrar um programa que estejamos procurando com essa listagem enorme de processos. Podemos usar o comando ps -ef | grep NomeDoPrograma para filtrar os resultados da listagem:

  ps -ef | grep nomePrograma

O comando grep é utilizado para filtragem de dados dada uma entrada, neste caso a entrada é o resultado do comando ps. O | é um redirecionador de saídas de programas para programas, ou seja, ele redireciona a saída do comando ps para ser usada como entrada para o comando grep. O comando grep também serve para pesquisarmos linhas com palavras específicas dentro de um arquivo de texto, no caso do arquivo google.txt que criamos no curso anterior, podemos pesquisar as linhas que tenham a palavra California da seguinte forma: grep California google.txt

Encerrando processos

Utilizamos o comando kill para enviar um sinal para um processo. Os processos utilizam sinais para se comunicar entre si. Sinais também são utilizados pelo Linux para interferir no funcionamento dos processos.

Exemplos de sinais são o STOP e o CONT, que podem ser utilizados, respectivamente, para interromper a execução de um processo e retornar à execução do processo que foi interrompido anteriormente.

Para utilizar o comando kill, passamos o sinal que desejamos enviar ao processo seguido do identificador único do processo, o pid. Imagine que temos um processo com pid = 11163 no nosso sistema:

  $ kill -STOP 11163
  $ kill -CONT 11163

Para encerrar um processo de forma que ele possa realizar algumas tarefas antes de ser encerrado, utilizamos o sinal TERM. Quando não indicamos nenhum sinal para o comando kill, é o sinal TERM que é executado por padrão. Portanto, o comando que podemos utilizar para encerrar o processo de uma maneira mais educada é:

  $ kill 11269

Em alguns momentos mais críticos precisamos encerrar um processo à força. Precisamos "matar" o processo. Nesse caso utilizamos o sinal KILL, que é também representado com o número -9. Então para garantir que o programa será encerrado imediatamente, fazemos:

  $ kill -9 11364

killall e top

Para vermos um novo comando muito útil, experimente deixar abertas, duas abas executando o comando top. Após isso abra mais uma aba e verifique o status dos processos desses comandos com o comando ps, lembra dele?

  ps -ef | grep top

Visto a lista de processos do top, como podemos fazer para encerrar todos os processos que estão executando esse comando? Poderíamos usar o comando kill fornecendo todos os IDs da seguinte maneira:

  kill -9 idProcesso idProcesso

Ou usando um outro comando que chamado killall. Ele permite matar todos os processos de um mesmo programa, ou seja, com um mesmo nome, sem precisar digitar seus ID's, como era feito antes com o kill. Exemplo:

  killall top

Podemos usar o modificador -9 igual fazemos com o comando kill:

  killall -9 top

Assim, serão finalizados todos os processos com o nome top.

Jobs, bg, fg, pstree, &

jobs: mostra os processos que estão sendo executados dentro do bash;
fg e bg: jogam os processos para foreground e background, respectivamente;
[programa] &: abre o [programa] diretamente em background;
pstree: mostra todos os processos em um gráfico de árvore.

Permissões

Os arquivos no Linux podem ter permissões para leitura (r), escrita (w) e execução (x). Essas permissões são distribuídas para o dono do arquivo, ao grupo de usuários e também para outros usuários. Os diretórios (d) sofrem das mesmas regras. Com o comando ls -l, podemos verificar a listagem de arquivos com todas as informações de permissões discutidas. Assim como temos o +x para adicionar permissão de execução, temos também o +r e o +w. Podemos também combinar essas permissões da seguinte forma: chmod +rwx.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment