Ubuntu O Terminal

O terminal é uma janela onde você controla o computador digitando, em vez de clicar. No começo parece difícil, mas é mais rápido, mais preciso e deixa você automatizar tarefas. Nesta aula você aprende a abrir, ler e dominar essa janela.

Você vai aprender
  • A diferença entre terminal, shell e Bash.
  • Ler o prompt: quem você é, onde está e se é administrador.
  • Digitar menos com a tecla Tab.
  • Reaproveitar comandos antigos com o histórico (↑, history, !!, Ctrl+R).
  • Editar a linha, copiar, colar e cancelar sem medo.
  • Que existe um terminal de emergência para quando a tela trava.

Terminal, shell e Bash

Três palavras aparecem o tempo todo e costumam ser confundidas:

TermoO que éComparação
TerminalO programa com a janela onde você digita. No Ubuntu, o aplicativo se chama Terminal.A tela e o teclado
ShellO programa que lê o que você digitou e executa. O nome vem de "concha": é a camada em volta do sistema.O intérprete
BashO shell padrão do Ubuntu. O nome vem de Bourne Again SHell.Um intérprete específico

Você pode perguntar qual shell está usando:

$ echo $SHELL
/bin/bash

Como abrir o terminal

FormaComoAbre em…
AtalhoCtrl+Alt+TSua pasta pessoal
BuscaSuper, digitar terminal, EnterSua pasta pessoal
Pelo ArquivosBotão direito numa pasta → Abrir no TerminalAquela pasta
Servidor, Multipass, WSLVocê já está no terminal—
Existe um terminal fora da interface gráfica

Além da janela de terminal, o Ubuntu tem consoles de texto (os TTYs) que funcionam mesmo se a interface gráfica travar. Você abre um com Ctrl+Alt+F3. Não teste agora sem ler antes Quando o Sistema Trava, que explica como entrar e como voltar.


Lendo o prompt

O prompt é o texto que aparece antes do cursor. Ele diz que o shell está pronto e traz quatro informações:

$ 
PedaçoSignificado
anaSeu nome de usuário.
@notebookEm qual computador ("@" se lê "em"). É o hostname.
:~A pasta onde você está. ~ é a sua pasta pessoal, /home/ana.
$Você é usuário comum. Vira # quando você é o administrador (root).

O prompt muda conforme você anda pelas pastas. Repare na parte azul:

$ cd Documentos
$ cd projetos
$ cd /etc
$ cd

O último cd, sem nada depois, volta para a pasta pessoal. E quando alguém vira administrador, o $ vira #, um aviso de "cuidado":

$ sudo -i
[sudo: authenticate] Senha:
#> whoami
root
#> exit
sair
Nos exemplos do guia

As linhas com o prompt colorido são o que a pessoa digitou; as outras são a resposta do computador. O botão copiar copia só os comandos, sem o prompt.


Seu primeiro comando

echo
De "eco": repete na tela o que recebeu.
"Olá, terminal!"
O texto a mostrar. As aspas mantêm tudo como uma coisa só.
$ echo "Olá, terminal!"
Olá, terminal!

Digitar um comando sempre segue o mesmo ritmo: você escreve, aperta Enter, o computador responde e um prompt novo aparece. Enquanto o prompt não voltar, o comando ainda está rodando.


Digite menos: a tecla Tab

A tecla Tab completa nomes de comandos, pastas e arquivos. Digite o começo e aperte Tab:

# você digita "cd Doc" e aperta Tab; o shell completa:
$ cd Documentos/

Quando há mais de uma opção, o primeiro Tab completa só a parte em comum. Aperte Tab duas vezes para ver a lista:

# você digita "cd D" e aperta Tab duas vezes:
$ cd D
Documentos/ Downloads/                          « as duas opções que começam com D
O Tab também acha erros

Se o Tab não completa, é porque não existe nada com esse começo. Isso evita erros de digitação, como documentos em vez de Documentos.

Missão: entre na pasta Documentos/projetos/site usando Tab para completar cada nome. Digite cd Doc, aperte Tab, depois pro + Tab, depois s + Tab, e Enter.


Histórico: reaproveitar comandos

O Bash guarda tudo o que você digita. Há quatro formas de voltar a um comando antigo, da mais simples à mais poderosa.

Forma 1: setas

↑ volta ao comando anterior; ↓ avança. Você pode editar o comando antes de apertar Enter.

Forma 2: o comando history

Mostra a lista numerada de comandos digitados:

$ history
  495  sudo apt update
  496  ls -l
  497  cd Documentos
  498  echo "Olá, terminal!"
  499  history

Ela fica gravada no arquivo ~/.bash_history quando você fecha o terminal. Para ver só os últimos, junte com tail: history | tail -5 (o | é explicado em Pipes).

Forma 3: atalhos com !

ExpressãoO que fazExemplo
!!Repete o último comandosudo !!
!nRepete o comando número n do history!496
!textoRepete o último comando que começa com texto!echo

O uso mais famoso é o sudo !!, quando você esquece o sudo:

$ apt update
Erro: Não foi possível abrir arquivo de trava /var/lib/apt/lists/lock - open (13: Permissão negada)
Erro: Não é possível travar o diretório /var/lib/apt/lists/
$ sudo !!
sudo apt update                                  « o Bash mostra o comando que montou
[sudo: authenticate] Senha:
Atingido:1 http://br.archive.ubuntu.com/ubuntu resolute InRelease
...

Forma 4: busca com Ctrl+R

Aperte Ctrl+R e digite parte de um comando antigo. O Bash mostra o mais recente que combina:

(reverse-i-search)`upd': sudo apt update
Durante a buscaEfeito
Ctrl+R de novoMostra a ocorrência anterior
EnterExecuta o comando encontrado
→ ou EscColoca o comando na linha para você editar
Ctrl+GDesiste da busca

Qual forma usar?

SituaçãoUse
O comando foi agora há pouco↑
Esqueceu o sudosudo !!
Foi ontem e você lembra uma palavraCtrl+R
Quer ver tudo o que fezhistory

Missão: rode três comandos quaisquer (por exemplo pwd, ls e whoami), use ↑ para repetir um deles e depois veja a lista com history. O simulador não entende !! nem Ctrl+R; esses, teste no seu Ubuntu.


Editar a linha sem o mouse

AtalhoO que faz
Ctrl+AVai para o início da linha
Ctrl+EVai para o fim da linha
Ctrl+← / →Pula uma palavra para trás / para frente
Ctrl+UApaga do cursor até o início da linha
Ctrl+KApaga do cursor até o fim da linha
Ctrl+WApaga a palavra antes do cursor
Ctrl+YCola o que foi apagado com Ctrl+U, K ou W
Ctrl+LLimpa a tela (igual ao comando clear)
Ctrl+CCancela o comando que está rodando, ou a linha atual
Ctrl+DNuma linha vazia, fecha o terminal (igual a exit)
Ctrl+ZPausa o comando atual (veja Jobs)
Atenção: Ctrl+C não copia

No terminal, Ctrl+C interrompe o comando em execução. Para copiar, use Ctrl+Shift+C.

Cancelar um comando que não termina

Alguns comandos rodam até você mandar parar. O ping, por exemplo, testa a conexão sem fim. O Ctrl+C aparece como ^C:

$ ping ubuntu.com
PING ubuntu.com (185.125.190.20) 56(84) bytes of data.
64 bytes from 185.125.190.20: icmp_seq=1 ttl=50 time=212 ms
64 bytes from 185.125.190.20: icmp_seq=2 ttl=50 time=211 ms
^C                                               « você apertou Ctrl+C
--- ubuntu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms

Copiar e colar

AçãoNo terminal
Copiar o texto selecionadoCtrl+Shift+C
ColarCtrl+Shift+V
Colar a última seleçãoSelecionar com o mouse e clicar com o botão do meio
Pelo menuBotão direito do mouse
Leia antes de colar comandos da internet

Um texto colado que termina com uma quebra de linha é executado na hora, sem você apertar Enter. Cole primeiro num editor de texto se não tiver certeza do que o comando faz.


Senhas invisíveis

Quando um comando pede senha, como o sudo, nada aparece enquanto você digita: nem letras, nem asteriscos. É proposital, para ninguém ver o tamanho da sua senha. Digite normalmente e aperte Enter.

$ sudo apt update
[sudo: authenticate] Senha:                      « digite aqui, mesmo sem ver nada

Abas, janelas e tamanho da letra

AtalhoO que faz
Ctrl+Shift+TNova aba
Ctrl+Shift+NNova janela
Ctrl+Shift+WFecha a aba
Ctrl+Page Up / Page DownTroca de aba
Ctrl++ / Ctrl+-Aumenta / diminui a letra
Ctrl+0Volta a letra ao tamanho normal

Limpar a tela e sair

ComandoO que faz
clear ou Ctrl+LLimpa a tela. O histórico continua lá.
resetConserta um terminal "bagunçado", com símbolos estranhos depois de mostrar um arquivo binário.
exit ou Ctrl+DFecha o terminal, ou encerra a conexão num servidor remoto.

Quando não funciona

"comando não encontrado" com sugestão de instalação
$ sl
Comando 'sl' não encontrado, mas poder ser instalado com:
sudo apt install sl

O que aconteceu: o comando existe, mas o programa não está instalado. O Ubuntu já sugere o pacote. O "poder" no lugar de "pode" é um erro da tradução original do Ubuntu.

Como resolver: rode o comando sugerido, se quiser o programa.

"comando não encontrado" sem sugestão
$ Ls
Ls: comando não encontrado

O que aconteceu: não existe nenhum programa com esse nome. O Linux diferencia maiúsculas: Ls não é ls.

Como resolver: confira a digitação. Use Tab para completar o nome do comando.

Apareceu um > e nada acontece
$ echo "Olá
>
>

O que aconteceu: você abriu aspas e não fechou. O > é o shell pedindo o resto do comando.

Como resolver: aperte Ctrl+C e digite de novo, fechando as aspas.

O terminal "travou"

O que aconteceu: algum comando ainda está rodando, ou esperando você digitar algo (como uma senha ou um texto).

Como resolver: aperte Ctrl+C. Se a janela inteira do Ubuntu parou de responder, o problema é outro: veja Quando o Sistema Trava.

Apareceu ^V ao colar

O que aconteceu: você usou Ctrl+V, que no terminal tem outra função.

Como resolver: use Ctrl+Shift+V.


Exercícios

1. Esqueci o sudo

Você digitou apt update e recebeu erro de permissão. Complete para repetir o último comando com sudo:

sudo

2. Qual é o meu shell?

Complete o comando que mostra o shell em uso:

echo

3. Os últimos comandos

Complete para ver o histórico de comandos:

4. Qual atalho busca um comando antigo no histórico?

5. O prompt é root@notebook:/etc#. O que isso indica?

6. Como copiar um texto selecionado no terminal?


Resumo

  • Abra com Ctrl+Alt+T. O prompt ana@notebook:~$ diz quem, onde e se é root (#).
  • Tab completa nomes; Tab duas vezes lista as opções.
  • ↑, history, sudo !! e Ctrl+R reaproveitam comandos.
  • Ctrl+C cancela; copiar e colar usam Ctrl+Shift+C/V.
  • Senhas não aparecem enquanto você digita. Se a tela inteira travar, existe o TTY (Ctrl+Alt+F3).