pwd
ls
ls -la
cat nome_arquivo.extensao
whoami
echo "algum texto" > nome_arquivo.txt
echo "outro texto" >> nome_arquivo.txt
mkdir nome_diretorio
rmdir nome_diretorio
rm -r nome_diretorio
rm nome_arquivo
cp arquivo_existente.txt novo_arquivo.txt
mv arquivo_existente.txt novo_arquivo.txt
mv arquivo_existente.txt nome_diretorio/
cp -r nome_diretorio_origem nome_diretorio_destino
zip -rq nome_arquivo.zip nome_diretório
unzip -q nome_arquivo.zip
unzip -l nome_arquivo.zip
tar -czf nome_arquivo.tar.gz nome_diretorio/
tar -xzf nome_arquivo.tar.gz
head nome_arquivo.txt
head -n 3 nome_arquivo.txt
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
ps -e
kill id-programa
ou
kill -9 id-programa
ps -ef
ps -ef | grep nome-programa
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
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
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: 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.
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
.