- Aprender
- Computação e TI
- TI, redes e nuvem
- Fundamentos de Linux
- Linha de comando do Linux
A linha de comando do Linux
BásicoAula 2 de 7 do curso Curso de Fundamentos de Linux
O que você vai aprender
- Reconhecer o shell e seu prompt, digitar comandos na forma correta com opções e argumentos e usar as teclas que tornam o trabalho na linha de comando mais rápido e seguro.
- Reconhecer o shell, o terminal e o promptDistinguir o shell da janela do terminal, interpretar o que o prompt informa sobre quem você é e onde está e usar as teclas básicas para executar, interromper e repetir comandos.
- Escrever comandos com opções e argumentosFormar um comando com seu nome, opções e argumentos, combinar opções curtas, usar opções longas e valores de opções e lidar corretamente com espaços e nomes incomuns.
- Reconhecer o shell, o terminal e o prompt
- Usar as páginas de manual e a ajuda rápida integrada aos comandos e ao shell para descobrir o que um comando faz e quais opções ele tem, sem sair do terminal.
- Ler e pesquisar as páginas de manualAbrir uma página de manual, compreender suas seções e a notação SYNOPSIS, navegar e pesquisar nela, escolher uma seção do manual e encontrar a página certa quando você não souber o nome do comando.
- Usar a ajuda rápida e outras fontes de documentaçãoObter um resumo rápido das opções com --help, ler a ajuda dos comandos internos do shell, encontrar documentação adicional em /usr/share/doc e nas páginas Info e usar mensagens de erro como pistas.
- Ler e pesquisar as páginas de manual
- Compreender como o Linux organiza arquivos em uma única árvore de diretórios, navegar por ela com caminhos absolutos e relativos e listar e inspecionar o conteúdo de cada diretório.
- Compreender a árvore de diretóriosDescrever a árvore única que começa no diretório raiz, reconhecer os principais diretórios do sistema e o diretório pessoal e seguir as regras para nomes de arquivos e arquivos ocultos.
- Navegar com caminhos absolutos e relativosSaber onde você está, mudar de diretório e escrever caminhos a partir da raiz ou do diretório atual, com .. e com ~, escolhendo o tipo adequado para cada tarefa.
- Listar e inspecionar o conteúdo dos diretóriosListar arquivos com ls e suas opções comuns, interpretar cada coluna de uma listagem detalhada e mostrar arquivos ocultos, tamanhos, ordens de classificação e o conteúdo de subdiretórios.
- Compreender a árvore de diretórios
- Gerenciar arquivos e diretórios pelo shell: criá-los, copiá-los, movê-los ou renomeá-los e excluí-los com segurança, sabendo exatamente o que cada comando faz quando os nomes já existem.
- Criar arquivos e diretóriosCriar diretórios, inclusive diretórios aninhados, criar arquivos vazios ou atualizar seus registros de data e hora com touch e remover diretórios vazios.
- Copiar, mover e renomearCopiar arquivos e diretórios inteiros com cp, mover e renomear com mv, prever onde o resultado ficará e evitar a sobrescrita acidental de arquivos.
- Excluir arquivos e diretórios com segurançaRemover arquivos e árvores de diretórios com rm, usar as opções que perguntam ou forçam a remoção e seguir uma rotina que evita excluir itens errados.
- Criar arquivos e diretórios
- Usar padrões com caracteres curinga do shell para indicar vários arquivos de uma vez, prever exatamente quais nomes correspondem a um padrão e usar padrões com segurança em comandos que copiam, movem e excluem.
- Encontrar nomes de arquivo correspondentes a padrões com *, ? e [ ]Escrever padrões com *, ? e expressões entre colchetes, incluindo intervalos e negação, e prever a quais nomes existentes eles correspondem, levando em conta maiúsculas, minúsculas e arquivos ocultos.
- Usar caracteres curinga com segurança nos comandosPrever o que o shell passa a um comando após a expansão, pré-visualizar padrões antes de usá-los, impedir a expansão com aspas e usar chaves para gerar nomes.
- Encontrar nomes de arquivo correspondentes a padrões com *, ? e [ ]
- Recuperar e repetir comandos anteriores do histórico, armazenar valores em variáveis do shell e de ambiente e controlar como o shell localiza programas por meio de PATH.
- Recuperar e reutilizar comandos do históricoPercorrer, pesquisar e executar novamente comandos anteriores, usar a expansão do histórico com cuidado e saber onde o Bash guarda o histórico e o que ele registra.
- Definir e usar variáveis do shell e de ambienteCriar, ler e remover variáveis, exportá-las para o ambiente, usar as variáveis de ambiente comuns, proteger valores corretamente com aspas e manter configurações.
- Controlar como o shell localiza comandos com PATHExplicar como o shell transforma um nome de comando em um programa, ler e ampliar PATH, executar um programa que não está em PATH e verificar qual programa um nome executa.
- Recuperar e reutilizar comandos do histórico
Guia de estudo de Linha de comando do Linux
1Trabalhar no prompt do shell
Uma sessão de terminal oferece um lugar para digitar instruções e ver seus resultados. O shell lê cada instrução, enquanto o prompt ajuda você a acompanhar sua conta de usuário e sua localização. Você aprenderá as teclas para completar nomes e corrigir uma linha e, depois, formará comandos com nomes, opções e argumentos. Usar os espaços e as aspas corretamente importa: o shell atua sobre as palavras que recebe, e uma pequena alteração na digitação pode indicar outro arquivo.
1.1 Reconhecer o shell, o terminal e o prompt
Um shell lê comandos e inicia as tarefas solicitadas. Um terminal é a janela pela qual você digita e vê a saída. Abrir outro terminal normalmente inicia outra sessão de shell. Um console fornece uma tela de texto conectada diretamente à máquina; um login por SSH pode fornecer um shell em outro computador.
Leia o prompt
No exemplo de prompt sam@laptop:~$, sam é o usuário, laptop é o nome do computador e ~ significa o diretório pessoal. O $ final geralmente indica um usuário comum. O formato do prompt pode mudar, então use comandos para confirmar detalhes quando necessário. whoami exibe o nome da conta, e pwd exibe o diretório atual.
Por convenção, um prompt com # indica root, a conta de administrador. Trabalhe como usuário comum e use direitos de administrador apenas quando uma tarefa precisar deles. Um símbolo de prompt exibido antes de um comando de exemplo não faz parte do comando que você digita.
Execute uma primeira sessão
Digite cada linha separadamente e pressione Enter:
whoami
pwd
date
echo Hello
Para a conta do exemplo, os dois primeiros resultados são sam e /home/sam. date mostra a data e a hora atuais; echo Hello exibe Hello. A saída de um comando aparece abaixo da entrada, seguida de um novo prompt. Alguns comandos bem-sucedidos não exibem nada: mkdir reports cria um diretório silenciosamente. Inspecione o resultado com ls quando precisar de confirmação.
O Bash, Bourne Again Shell, é muito usado no Linux. Outros shells incluem zsh e fish. echo $0 mostra como o shell atual foi iniciado; echo $SHELL mostra o shell de login configurado para a conta. Iniciar outro shell pode fazer essas respostas diferirem. Uma janela de terminal não determina, por si só, qual shell é executado dentro dela.
Edite e recupere
| Tecla | Ação |
|---|---|
| Tab | Completa um comando ou nome de arquivo; pressione duas vezes para ver as possibilidades quando houver ambiguidade |
| Para cima / Para baixo | Percorre comandos digitados anteriormente |
| Ctrl+C | Cancela a linha de entrada atual ou interrompe um programa em primeiro plano |
| Ctrl+L | Limpa a tela; clear também faz isso |
| Ctrl+D em uma linha vazia | Encerra o shell, assim como exit |
Suponha que você digite ls Doc e pressione Tab. Se Documents for o único nome correspondente, o preenchimento o completa. Se vários nomes começarem com Doc, o Bash precisará de mais caracteres ou de uma escolha. O preenchimento ajuda com a grafia e o uso de maiúsculas e minúsculas: Documents e documents são nomes diferentes.
Um programa em tela cheia pode estar esperando sua própria tecla em vez de mostrar o prompt do shell. Pressione q para sair de man ou less. Um comando cat sem arquivo aguarda a entrada digitada; Ctrl+C leva você de volta ao shell. Portanto, Ctrl+C não é o atalho usual para copiar no terminal. Muitos emuladores de terminal usam Ctrl+Shift+C e Ctrl+Shift+V para copiar e colar.
Os layouts de teclado também afetam como você digita símbolos como ~, [ e {. Alguns layouts usam AltGr, e a tecla morta ~ pode precisar de Espaço para aparecer. Digite comandos com as maiúsculas e minúsculas exatas: LS e ls são nomes de comandos diferentes.
Principais conclusões
- O shell interpreta comandos; o terminal exibe a sessão.
- Um prompt ajuda a identificar a conta, o computador e o diretório atual.
- Use Tab para completar nomes e Ctrl+C para interromper ou cancelar.
- Ctrl+D em uma linha vazia encerra o shell;
qfecha um paginador de manual.
1.2 Escrever comandos com opções e argumentos
Uma linha de comando é formada por palavras. A primeira palavra indica o que executar, as opções alteram seu comportamento e os argumentos fornecem os objetos ou valores sobre os quais ele atua. Espaços separam essas palavras.
Identifique as partes
Em ls -l /etc, ls é o comando, -l solicita uma listagem detalhada e /etc é o argumento que indica o diretório. A forma de uso command [options] [arguments] descreve essa organização; você não digita esses colchetes.
Opções curtas usam um hífen e uma letra. ls -a -l, ls -al e ls -la solicitam a mesma listagem. Opções longas usam dois hífens, como em ls --all. Mantenha as opções longas separadas; juntar palavras após um único hífen não cria uma opção longa. Por exemplo, ls -all é interpretado como as opções curtas -a -l -l.
Uma opção também pode precisar de um valor. Em touch -d 2025-01-31 old.txt, a data pertence a -d; old.txt é o argumento que indica o arquivo. A forma longa é touch --date=2025-01-31 old.txt. Leia a descrição de uso para saber se uma opção precisa de um valor e como fornecê-lo.
Mantenha cada nome unido
O shell trata espaços sem proteção como limites entre palavras. Cada uma destas três linhas indica um único arquivo:
ls "Annual Report.pdf"
ls 'Annual Report.pdf'
ls Annual\ Report.pdf
As aspas ou a barra invertida protegem o espaço; elas não fazem parte do nome do arquivo. Sem essa proteção, ls Annual Report.pdf solicita dois arquivos. Um efeito semelhante aparece com echo: em echo Hello world, o comando recebe duas palavras e exibe um espaço entre elas, enquanto echo "Hello world" preserva os três espaços dentro de um único argumento.
Evite ambiguidades nas opções
Coloque as opções antes dos argumentos que indicam arquivos. Comandos GNU muitas vezes também as aceitam depois, mas colocá-las primeiro facilita a leitura da linha e funciona em mais situações. Nos comandos que o aceitam, -- encerra o processamento de opções. Portanto, rm -- -draft.txt trata -draft.txt como nome de arquivo. O caminho ./-draft.txt também começa com um ponto, então rm ./-draft.txt evita um primeiro caractere parecido com uma opção.
As letras das opções pertencem a cada comando. cp -r copia diretórios recursivamente, mas ls -r inverte a ordenação; ls -R lista diretórios recursivamente. ls -h altera a exibição de tamanhos e não solicita ajuda. Um traço médio copiado, –, também é diferente do - comum exigido pelas opções.
Descubra o que um nome executa
Um comando pode ser um arquivo de programa, um comando interno do shell ou um alias que se expande em outra linha de comando. cd é integrado ao Bash porque altera o diretório desse shell. ls normalmente é um programa, muitas vezes com um alias que adiciona cores. type cd e type ls informam o significado ativo.
Se ls-l falhar com command not found, o Bash procurou esse nome inteiro. Insira o espaço que falta: ls -l. Se um comando informar que uma opção não foi reconhecida, verifique a grafia da opção e sua documentação; alterar o caminho do arquivo não corrigirá um erro de opção.
Principais conclusões
- Espaços separam o comando, as opções e os argumentos.
- Use aspas ou escape para proteger um espaço que faz parte de um nome.
- Opções curtas podem ser combinadas; opções longas usam dois hífens.
- Uma opção pode exigir um valor próprio.
--ou um caminho com./permite usar um nome de arquivo que começa com hífen.typedistingue um comando interno, um alias e um arquivo de programa.
2Encontrar ajuda na linha de comando
A ajuda na linha de comando permite responder a uma dúvida específica sem memorizar todas as opções. Uma página de manual fornece uma referência completa; a ajuda rápida de um comando oferece um lembrete mais curto. O Bash também tem um sistema de ajuda separado para comandos internos do shell. Você aprenderá a escolher a fonte adequada, interpretar as abreviações em uma linha de uso, pesquisar em uma página longa e usar uma mensagem de erro para decidir o que verificar em seguida.
2.1 Ler e pesquisar as páginas de manual
Uma página de manual é uma referência detalhada para um comando ou recurso do sistema. Abra uma com man ls. A página normalmente aparece em less, um paginador que mostra uma tela por vez e permite pesquisar sem sair do terminal.
Leia a estrutura da página
O título NAME identifica o comando e sua finalidade. SYNOPSIS apresenta seu padrão de chamada. DESCRIPTION e OPTIONS explicam o comportamento e as opções. EXAMPLES pode mostrar usos reais, enquanto FILES e ENVIRONMENT descrevem arquivos e variáveis relacionados. SEE ALSO indica páginas relacionadas. Os títulos variam porque alguns comandos precisam de informações que outros não precisam.
Uma linha de uso como ls [OPTION]... [FILE]... é uma notação compacta:
- Texto literal, geralmente em negrito, é digitado como aparece.
- Texto que representa um valor, geralmente em itálico ou sublinhado, é substituído pelo seu valor.
- Colchetes envolvem partes opcionais.
...significa que a parte anterior pode ser repetida.- Uma barra vertical separa alternativas.
Tanto o grupo de opções quanto o de arquivos nessa forma de ls são opcionais, então ls sozinho é válido. Em mkdir [OPTION]... DIRECTORY..., o grupo de diretórios não tem colchetes: pelo menos um nome de diretório é obrigatório. Não digite DIRECTORY apenas porque ele aparece no manual.
Pesquise durante a leitura
Espaço ou Page Down avança uma tela; b volta. As setas movem por linhas. g minúsculo vai para o início, e G maiúsculo vai para o fim. Digite /human e pressione Enter para buscar “human”. Use n para o próximo resultado e N para o anterior. Pressione q para sair da página; h abre a ajuda do paginador.
Para uma busca prática, abra man ls, pesquise /human e leia a entrada de -h, --human-readable. Ela funciona com uma listagem que mostra tamanhos, como -l. Saia do manual e execute ls -lh. Um arquivo de 2048 bytes aparece como 2.0K. Usar apenas ls -h ainda produz uma listagem simples de nomes, pois nenhuma coluna de tamanho foi solicitada.
Escolha a seção correta do manual
| Seção | Assunto |
|---|---|
| 1 | Comandos de usuário |
| 2 | Chamadas de sistema |
| 3 | Funções de biblioteca |
| 4 | Arquivos especiais de dispositivo |
| 5 | Formatos de arquivo |
| 6 | Jogos |
| 7 | Visões gerais e convenções |
| 8 | Comandos de administração do sistema |
A referência passwd(5) indica a explicação da seção 5 sobre o formato do arquivo de senhas. Execute man 5 passwd para selecioná-la. man passwd sem número normalmente abre a página do comando na seção 1.
Se você conhece a finalidade, mas não o comando, execute apropos directory ou man -k directory. Eles pesquisam nomes e descrições curtas indexados. Se você já conhece um nome e quer sua finalidade em uma linha, use whatis ls ou man -f ls. Um sistema novo pode ter um índice vazio, então uma busca por palavra-chave sem resultado não prova que o comando está ausente.
Algumas instalações mínimas não incluem manuais. A ausência de uma página man cd também costuma ocorrer porque cd é um comando interno do shell. Use help cd para obter a descrição do próprio Bash.
Principais conclusões
- Use
man commandpara consultar uma referência e/wordpara pesquisar nela. - Em SYNOPSIS, colchetes indicam partes opcionais; reticências indicam repetição.
- Um número de seção seleciona entre páginas que compartilham o mesmo nome.
apropospesquisa finalidades;whatisconsulta um nome conhecido.- Use
helppara comandos internos do Bash, comocd.
2.2 Usar a ajuda rápida e outras fontes de documentação
Você nem sempre precisa de uma página de manual completa. Uma lista rápida de opções, a ajuda de um comando interno ou uma mensagem de erro podem responder à dúvida imediata. Escolha uma fonte que descreva o comando que você está realmente executando.
Escolha a ajuda adequada ao comando
type cp normalmente identifica um arquivo de programa, então cp --help fornece seu uso e suas opções. type cd identifica um comando interno do shell, então help cd descreve a versão do Bash. help sozinho lista os comandos internos do Bash; ele não fornece uma página de ajuda para o programa externo ls.
A maioria dos comandos GNU aceita --help, mas os significados das opções curtas variam. Para ls, -h significa tamanhos legíveis, não ajuda. Ler ls --help é a forma confiável de verificar as opções de ls sem tirar conclusões com base em outro programa.
Suponha que você queira criar reports/2026/q1, mas os diretórios pai não existam. Resolva a questão:
apropos directorysugeremkdirpara criar diretórios.mkdir --helpmostra-p, --parentse explica como criar diretórios pai ausentes.mkdir -p reports/2026/q1cria o caminho inteiro.
A consulta à ajuda fornece o comportamento que faltava, não apenas o nome do comando. Isso importa quando você já conhece mkdir, mas sua forma comum informa que falta um diretório pai.
Consulte outras fontes além da lista de opções
Os manuais GNU Info são documentos mais longos e com links. info coreutils abre a documentação dos utilitários básicos de arquivos. No Info, n vai para o próximo nó, p para o nó anterior, u sobe um nível, Enter segue um link selecionado e q sai. Um nó é uma parte do manual com links.
Pacotes instalados também podem fornecer documentação em /usr/share/doc/. Por exemplo, ls /usr/share/doc/bash lista a documentação do pacote Bash. Esses diretórios podem conter arquivos README, registros de alterações, textos de licença e exemplos. O sufixo .gz indica um arquivo compactado; zless pode exibir texto compactado.
Leia um erro como uma pista
Um erro geralmente indica o comando, o objeto e o motivo. Em ls: cannot access 'note.txt': No such file or directory, ls foi executado, mas não conseguiu encontrar esse caminho. Verifique pwd, a grafia e o uso de maiúsculas e minúsculas, além do diretório que contém o arquivo. Digitar ls novamente em maiúsculas criaria outro problema, no nome do comando.
rmdir: failed to remove 'photos': Directory not empty significa que o destino existe, mas ainda contém entradas. Listá-lo, incluindo as entradas ocultas, explica por que a remoção falhou. Uma opção desconhecida é diferente: uma mensagem sobre --bogus direciona você a ls --help porque a própria opção é inválida.
A ajuda local corresponde mais de perto ao programa instalado do que um exemplo qualquer da web. ls --version identifica a versão GNU quando você precisa comparar a documentação. Antes de usar um comando copiado e desconhecido, identifique cada opção na ajuda do próprio comando, especialmente para comandos que removem arquivos ou são executados com direitos de administrador.
Principais conclusões
- Escolha
command --helppara opções de programas ehelp namepara comandos internos do Bash. infoe/usr/share/doc/podem fornecer explicações e exemplos mais detalhados.- Use o comando, o caminho e o motivo em um erro para decidir o que verificar em seguida.
3Navegar pelo sistema de arquivos do Linux
Arquivos e diretórios ficam em uma única árvore, e cada comando trabalha a partir de um ponto específico dessa árvore. Um caminho informa a ele aonde ir ou o que inspecionar. Você percorrerá caminhos a partir da raiz e do diretório atual, usará atalhos para diretórios pessoais e pai e interpretará listagens que mostram mais que nomes. Essas habilidades permitem verificar sua localização e os objetos com que você trabalha antes de alterar qualquer coisa.
3.1 Compreender a árvore de diretórios
O Linux organiza arquivos e diretórios em uma única árvore. Um arquivo contém dados; um diretório, chamado de pasta em um gerenciador gráfico de arquivos, contém entradas nomeadas para arquivos e outros diretórios. A árvore começa no diretório raiz, /.
Percorra a árvore
Uma barra separa os componentes de um caminho: /home/sam/photos leva de / para home, depois para sam e depois para photos. Outros discos aparecem dentro da mesma árvore, muitas vezes abaixo de /media ou /mnt; eles não precisam de letras de unidade. Uma barra invertida não é um separador de caminhos no Linux. O Bash a usa para proteger o caractere seguinte, como em Annual\ Report.pdf.
Locais importantes têm funções diferentes:
| Local | Finalidade principal |
|---|---|
/home | Diretórios pessoais de usuários comuns |
/root | Diretório pessoal do usuário root |
/etc | Configuração do sistema |
/bin, /usr/bin | Arquivos de programas de uso cotidiano |
/sbin, /usr/sbin | Programas de administração do sistema |
/tmp | Dados temporários que podem ser apagados automaticamente |
/var | Dados variáveis, incluindo logs em /var/log |
/dev | Arquivos de dispositivo |
Muitas distribuições atuais criam links de /bin para /usr/bin e de /sbin para /usr/sbin. Por isso, você pode ver dois nomes de diretório que levam aos mesmos programas instalados. O diretório raiz / e o diretório /root continuam indicando locais diferentes: um inicia a árvore, e o outro é o diretório pessoal de uma conta.
Reconheça seus arquivos
Para o usuário sam do exemplo, o diretório pessoal é /home/sam, abreviado pelo shell como ~. /home é seu diretório pai, não o diretório pessoal de sam. Documentos e configurações pessoais normalmente ficam no diretório pessoal; /tmp não é adequado para algo que você precisa guardar, pois dados temporários podem ser removidos automaticamente.
Considere esta estrutura:
/home/sam/
.bashrc
Documents/
cv.pdf
letter.txt
photos/
projects/
notes.txt
website/
index.html
style.css
O caminho completo até a folha de estilo é /home/sam/projects/website/style.css. O arquivo notes.txt está ao lado de website, não dentro dele. As entradas de cada diretório determinam o próximo passo possível na árvore.
Leia os nomes exatamente como são
Os nomes diferenciam maiúsculas de minúsculas: notes.txt, Notes.txt e NOTES.TXT podem indicar três arquivos. Nomes não podem conter / nem um byte nulo. Letras simples, dígitos, pontos, hífens e sublinhados tornam os nomes cotidianos fáceis de digitar; sistemas de arquivos comuns no Linux limitam um nome a 255 bytes.
Um sufixo como .txt faz parte de um nome e não comprova seu conteúdo. file report examina os dados e pode identificar um PDF mesmo quando o nome não tem .pdf.
Um ponto no início oculta uma entrada da saída comum de ls. .bashrc, .profile e .config geralmente contêm configurações. Oculto significa omitido da listagem padrão, não protegido contra acesso; ls -a revela esses nomes. A entrada especial . significa o próprio diretório, e .. significa seu diretório pai. Na raiz, .. ainda leva a /.
Principais conclusões
- Os caminhos do Linux pertencem a uma única árvore que começa em
/. /home/sam,/homee/rootsão diretórios diferentes.- Nomes de arquivos diferenciam maiúsculas de minúsculas; extensões não determinam o conteúdo.
- Um ponto no início oculta um nome de uma listagem comum, não do acesso autorizado.
.significa o diretório atual e..significa seu diretório pai.
3.2 Navegar com caminhos absolutos e relativos
Um caminho informa a um comando onde encontrar um objeto. Para interpretar um caminho corretamente, primeiro determine onde ele começa. Um caminho absoluto começa em /; um caminho relativo começa no diretório de trabalho atual do shell.
Determine seu ponto de partida
pwd exibe seu diretório atual. Em /home/sam, o caminho projects/website chega a /home/sam/projects/website. Em /etc, esse mesmo caminho relativo significaria /etc/projects/website. O caminho absoluto /home/sam/projects/website identifica o mesmo local a partir de qualquer um dos dois pontos de partida.
cd altera o diretório atual. Ele não lista o conteúdo do destino nem abre um arquivo. cd projects entra em um subdiretório chamado projects; cd /etc vai para o local absoluto /etc. Sem argumento, cd retorna ao diretório pessoal. cd - retorna ao diretório de trabalho anterior e exibe esse local.
Percorra um caminho por partes
Comece em /home/sam/projects/website e considere cd ../../photos:
- O primeiro
..chega a/home/sam/projects. - O segundo
..chega a/home/sam. photosdesce até/home/sam/photos.
O comando inteiro faz uma única mudança para o destino final. A partir do diretório website, cd .. para em projects, enquanto cd ../.. para no diretório pessoal. O diretório de partida importa a cada vez: depois que você se move, um segundo comando relativo começa em seu novo local.
Um ./ no início indica explicitamente o diretório atual. ./notes.txt e notes.txt referem-se ao mesmo arquivo local. ls ../photos lista um diretório próximo sem mover o shell até lá; somente um comando que altera o diretório de trabalho, como cd, muda a base para caminhos relativos posteriores.
Use o atalho do diretório pessoal
No início de uma palavra sem aspas, o Bash expande ~ para seu diretório pessoal. Portanto, cd ~/Documents funciona de qualquer lugar para sam. ~alex refere-se ao diretório pessoal de alex.
Colocar o til entre aspas impede essa expansão: cd "~/Documents" solicita um diretório literal ~ abaixo do diretório atual. Se a parte seguinte contiver um espaço, deixe o til fora das aspas:
cd ~/"My Files"
Você também pode escrever cd "$HOME/My Files"; as aspas duplas preservam o espaço e permitem a expansão do valor da variável.
Diagnostique um caminho que falha
cd /projects solicita projects imediatamente abaixo de /, não abaixo do seu diretório pessoal. cd.. é um único nome de comando; escreva cd ... documents em minúsculas falha quando o nome real é Documents. Verifique o início, cada componente e suas maiúsculas e minúsculas exatas. O preenchimento com Tab pode completar um nome existente e evitar um erro de digitação.
Caminhos absolutos são adequados para instruções que precisam funcionar a partir de locais diferentes. Caminhos relativos são convenientes para trabalhar em locais próximos. Ambas as formas também funcionam como argumentos de arquivo para cp, mv, ls e outros comandos; a interpretação de um caminho não depende de usá-lo com cd.
Principais conclusões
- Use
pwdpara determinar a base de um caminho relativo. - Caminhos absolutos começam com
/; caminhos relativos começam no diretório atual. - Interprete cada
..como um passo até o diretório pai. cd,cd -ecd ..têm destinos diferentes.- Deixe
~sem aspas quando quiser expandi-lo para o diretório pessoal.
3.3 Listar e inspecionar o conteúdo dos diretórios
ls mostra o conteúdo do diretório atual ou os arquivos e diretórios indicados. Uma listagem pode responder a mais do que “O que há aqui?”: as opções revelam entradas ocultas, detalhes, tamanhos, ordenação e subdiretórios.
Escolha o que mostrar
ls e ls -l sem outras opções omitem entradas ocultas. -a as inclui junto com . e ..; -A inclui entradas ocultas sem esses dois nomes especiais. -F adiciona uma barra depois dos nomes de diretórios. As cores da saída são outro recurso visual, mas as cores exatas dependem do sistema.
ls projects lista o conteúdo de projects. Já ls -ld projects mostra uma listagem detalhada da própria entrada do diretório. A opção -d altera o objeto exibido, não a quantidade de detalhes.
Interprete uma listagem detalhada
Considere esta linha de ls -l:
-rw-r--r-- 1 sam sam 2048 Mar 3 14:20 notes.txt
Leia da esquerda para a direita:
-indica um arquivo comum;dindicaria um diretório el, um link simbólico.- Os nove caracteres seguintes descrevem as permissões do proprietário, do grupo e dos demais.
1é a contagem de links físicos.- Os dois campos
samidentificam o proprietário e o grupo. 2048é o tamanho do arquivo em bytes.- A data e a hora descrevem a última modificação do conteúdo.
notes.txté o nome.
ls -lh exibe esse tamanho como 2.0K. A opção -h altera a formatação do tamanho, enquanto -l fornece a coluna de tamanho. ls -h sozinho ainda mostra nomes sem tamanhos.
O tamanho do próprio diretório é o espaço usado por suas entradas; não é a soma de todos os dados dentro dele. O cabeçalho total 12 descreve os blocos de disco das entradas listadas, não doze arquivos. Use as linhas de nomes de arquivo para ver as próprias entradas.
Ordene o resultado
| Opções | O que aparece primeiro |
|---|---|
| Sem opção de ordenação | Nomes na ordem da configuração regional |
-t | Entradas modificadas mais recentemente |
-S | Maiores entradas |
-r com outra ordem | O inverso dessa ordem |
Por exemplo, ls -lt coloca as alterações mais recentes primeiro, enquanto ls -ltr as coloca por último. ls -lhS mostra tamanhos legíveis, com os maiores primeiro. Maiúsculas, minúsculas e sinais de pontuação podem ser ordenados de forma diferente conforme a configuração regional, então não conclua que um arquivo está ausente apenas porque seu nome não apareceu onde você esperava.
Inspecione abaixo do primeiro nível
ls -R projects lista o conteúdo de projects e depois seus subdiretórios. Com notes.txt ao lado de um diretório website, o primeiro cabeçalho é projects: e suas entradas incluem esses dois nomes. Um cabeçalho posterior, projects/website:, identifica a listagem que contém index.html e style.css.
-R maiúsculo é recursivo. -r minúsculo apenas inverte a ordenação. Combinar -a com uma listagem recursiva também revela entradas ocultas, o que pode tornar o resultado muito mais longo. Para os metadados de um único diretório, ls -ld geralmente permite uma inspeção mais clara.
Principais conclusões
-lacrescenta detalhes e-htorna os tamanhos exibidos mais fáceis de ler.-ainclui entradas ocultas;-Aomite apenas.e...-dlista o próprio diretório;-Rlista seus subdiretórios.-t,-Se-rcontrolam a ordenação.- O tamanho de um diretório e a linha
totalnão são contagens nem totais de todos os arquivos contidos nele. - Uma listagem detalhada identifica tipo, permissões, links, proprietário, grupo, tamanho, data e hora de modificação e nome.
4Criar, copiar, mover e excluir arquivos e diretórios
Criar um diretório, copiar um arquivo e renomear um arquivo alteram a árvore de formas diferentes. O resultado também depende de o destino já existir ou não. Você criará uma pequena estrutura de diretórios, preverá onde cópias e arquivos movidos ficarão e distinguirá a remoção de um diretório vazio da remoção de uma árvore inteira. Interpretar o comando como uma ação sobre caminhos específicos de origem e destino ajuda a evitar sobrescritas e remoções acidentais.
4.1 Criar arquivos e diretórios
mkdir cria diretórios, e touch cria arquivos vazios ou atualiza registros de data e hora existentes. São ações distintas: um diretório fornece um lugar para entradas, enquanto um arquivo vazio já é um arquivo, embora não contenha dados.
Crie o diretório primeiro
mkdir drafts cria um diretório abaixo da sua localização atual. mkdir drafts final cria dois diretórios no mesmo nível. Se um nome solicitado já existir, mkdir sem opções informará File exists.
Normalmente, os diretórios pai de um caminho precisam existir. Se reports não existir, mkdir reports/2026/q1 não conseguirá chegar ao local solicitado. Acrescente -p para criar os diretórios pai ausentes:
mkdir -p reports/2026/q1
Isso cria cada nível ausente e aceita níveis que já existem como diretórios. Repetir o comando é útil ao preparar uma estrutura cujas partes existentes devem permanecer no lugar. Ele não transforma um arquivo comum existente em diretório.
Adicione arquivos vazios
touch todo.txt cria um arquivo de zero byte se esse nome não existir. Se o arquivo existir, touch mantém seu conteúdo e atualiza suas datas e horas de acesso e modificação. Esse comando não apaga o conteúdo de um arquivo. Você pode indicar vários arquivos, como em touch a.txt b.txt, ou escolher uma data e hora com touch -d 2025-01-31 old.txt.
Arquivos com conteúdo normalmente são criados por um programa que salva dados, como um editor. Criar um arquivo com touch dá a ele um nome e um conteúdo vazio; o comando não adiciona texto para você.
Crie um pequeno projeto
Começando no seu diretório pessoal, execute:
mkdir -p website/css website/images
touch website/index.html website/css/style.css
ls -R website
A primeira linha cria website e seus dois subdiretórios. A segunda coloca index.html dentro de website e style.css dentro de website/css. Ela não coloca nenhum dos arquivos em images. Na listagem recursiva, website: contém css, images e index.html; website/css: contém style.css; website/images: não contém entradas comuns.
Observe que o comando touch depende dos diretórios pai criados por mkdir. Inverter essas duas etapas causaria uma falha se website ainda não existisse.
Remova um diretório vazio
rmdir website/images remove esse diretório vazio. rmdir website/css falha enquanto style.css estiver dentro dele. Uma entrada oculta também torna um diretório não vazio, então inspecione-o com ls -A se a listagem comum parecer vazia.
rmdir -p reports/2026/q1 remove q1, depois tenta 2026 e, em seguida, reports. Ele para quando um diretório pai não está vazio. Essa opção atua de baixo para cima, enquanto mkdir -p cria os diretórios pai ausentes de cima para baixo.
Espaços continuam separando argumentos. mkdir My Project solicita dois diretórios; mkdir "My Project" solicita um. Um nome simples como my-project evita o espaço. Os nomes Reports e reports são diferentes, então use as mesmas maiúsculas e minúsculas no comando de criação e nos caminhos posteriores.
Principais conclusões
mkdircria diretórios;-ptambém cria diretórios pai ausentes.touchcria um arquivo vazio ausente ou atualiza um arquivo existente sem apagá-lo.- Crie os diretórios pai antes dos arquivos dentro deles.
rmdirremove apenas diretórios vazios, sem nenhuma entrada oculta.
4.2 Copiar, mover e renomear
Uma cópia mantém a origem no lugar. Uma movimentação altera seu nome ou local. Para prever o resultado de qualquer uma das ações, leia o caminho de origem, o caminho de destino e verifique se o destino já existe.
Preveja o destino de uma cópia
cp notes.txt notes-backup.txt cria um segundo arquivo chamado notes-backup.txt. Se Documents for um diretório existente, cp notes.txt Documents/ criará Documents/notes.txt. A barra final expressa a intenção de copiar para dentro de um diretório.
Quando há várias origens, o último argumento deve ser um diretório existente. cp cv.pdf letter.txt backup/ coloca os dois arquivos indicados em backup. Esse comando não cria automaticamente um diretório de destino ausente.
Diretórios exigem cópia recursiva. cp website website-old omite o diretório porque nenhuma opção recursiva foi fornecida. cp -r website website-old copia a árvore, mas o resultado depende do destino:
| Antes da cópia | Local da árvore copiada |
|---|---|
website-old não existe | website-old/index.html e assim por diante |
website-old existe como diretório | website-old/website/index.html e assim por diante |
Um diretório de destino existente recebe o diretório de origem com seu nome. Ele não é substituído automaticamente pelo conteúdo da origem.
Mova ou renomeie
mv draft.txt final.txt renomeia um arquivo. mv final.txt Documents/ move o arquivo para um diretório existente. mv website site renomeia um diretório quando site não existe e não precisa de opção recursiva.
Dentro de um mesmo sistema de arquivos, uma movimentação normalmente altera entradas de diretório sem copiar todos os dados. Mover entre sistemas de arquivos pode exigir a cópia e a remoção de dados, então uma movimentação grande pode não terminar instantaneamente.
Se archive não existir, mv notes.txt archive renomeará o arquivo para archive. Já mv notes.txt archive/ exige um diretório e falha quando ele não existe. Use a barra quando um novo nome de arquivo não for o resultado desejado.
Controle a substituição e os metadados
cp e mv sem opções podem sobrescrever um arquivo de destino existente sem perguntar. -i pergunta antes da substituição; -n ignora destinos existentes; -v exibe as ações. Aliases podem adicionar opções, então use type cp ou type mv se o comportamento observado for diferente.
Uma cópia comum recém-criada recebe uma nova data e hora de modificação. cp -p preserva os registros de data e hora e as permissões, enquanto cp -a preserva recursivamente os atributos de uma árvore de diretórios e é útil para backups. Não suponha que uma cópia comum preserve a data e a hora da origem apenas porque os conteúdos são iguais.
Acompanhe uma operação completa
Em /home/sam, primeiro crie backup. cp projects/notes.txt backup/ cria backup/notes.txt. Em seguida, mv backup/notes.txt backup/notes-2026.txt altera apenas o nome da cópia. Por fim, cp -r projects/website backup/ cria backup/website, incluindo seus arquivos. Os originais projects/notes.txt e projects/website permanecem onde estavam porque nenhum deles foi origem de uma movimentação.
Principais conclusões
cpmantém a origem;mvaltera seu nome ou local.- Um diretório de destino existente recebe a origem com seu nome.
- Várias origens exigem um diretório como último argumento.
cp -rcopia uma árvore;mvnão precisa de opção recursiva.-ipergunta antes de sobrescrever e-nignora um destino existente.cp -ppreserva registros de data e hora e permissões;cp -apreserva uma árvore recursivamente.
4.3 Excluir arquivos e diretórios com segurança
rm remove os arquivos indicados por seus argumentos. Diferentemente da ação de enviar à lixeira em um gerenciador gráfico de arquivos, ele não os coloca em uma lixeira. Um backup normalmente é a forma de recuperação após uma remoção.
Selecione o comando de remoção adequado
rm old.txt remove um arquivo, e rm a.txt b.txt remove vários arquivos indicados. rm old sem opções recusa a operação se old for um diretório. rmdir old ou o rm -d old do GNU remove um diretório somente quando está vazio. rm -r old remove recursivamente seu conteúdo e depois o próprio diretório.
Essa distinção é útil quando você espera que um diretório esteja vazio. A falha de rmdir com Directory not empty dá a você a chance de inspecionar conteúdos inesperados. A remoção recursiva também removeria esses conteúdos.
Controle as perguntas de forma consciente
| Opção | Efeito |
|---|---|
-i | Pergunta antes de cada remoção |
-I | Pergunta uma vez antes de remover mais de três arquivos ou de uma remoção recursiva |
-f | Não pergunta; ignora nomes ausentes |
-v | Exibe as ações de remoção |
Durante uma entrada interativa comum, rm também pode perguntar sobre um arquivo protegido contra escrita. -f suprime essa pergunta. Isso não torna a exclusão recuperável nem elimina todos os possíveis motivos de falha de um comando.
Confira os alvos exatos
Use esta rotina antes de uma remoção que possa afetar vários nomes:
- Execute
pwdpara confirmar sua localização. - Liste os nomes exatos ou o padrão que pretende remover.
- Inspecione a lista, inclusive para verificar se algum diretório foi selecionado.
- Use a mesma expressão de alvo com
rm, acrescentando-iquando a confirmação ajudar.
Suponha que o diretório contenha draft1.tmp, draft2.tmp, final.txt e notes.tmp. ls *.tmp mostra os três arquivos temporários. rm -i *.tmp pergunta sobre esses três nomes; final.txt não corresponde ao padrão. Responder n ignora um arquivo, enquanto y confirma a remoção.
Mantenha a grafia do caminho intacta
Um espaço é um limite entre palavras mesmo em um comando perigoso. Acrescentar um espaço entre ~/ e o nome de um item abaixo dele transforma um caminho relativo ao diretório pessoal em dois alvos separados. Confira a linha inteira antes de pressionar Enter. Evite a remoção recursiva forçada na limpeza rotineira quando um comando mais específico atender à tarefa. Por padrão, o rm do GNU protege o próprio /; essa proteção não protege todos os caminhos abaixo de / contra um padrão incorreto.
Um hífen no início pode ser confundido com uma opção. rm -- -draft.txt encerra a interpretação de opções antes do nome do arquivo. rm ./-draft.txt também o indica sem ambiguidade. Para um espaço dentro de um nome, use rm "old notes.txt"; a versão sem aspas indica old e notes.txt separadamente.
Um erro exige diagnóstico, não privilégios maiores por padrão. Se uma remoção falhar, verifique se o alvo é um diretório, se seu caminho está correto e o que a mensagem diz. Repetir um comando digitado incorretamente com direitos de administrador amplia o que o erro pode afetar.
Principais conclusões
rmremove diretamente; ele não envia arquivos para uma lixeira.- Use
rmdirpara um diretório vazio erm -rpara uma árvore. - Verifique o diretório de trabalho e os alvos exatos antes da remoção.
-ipergunta por alvo;-fsuprime perguntas e ignora nomes ausentes.- Espaços, aspas e hífens no início alteram a interpretação dos argumentos de remoção.
5Selecionar arquivos com caracteres curinga
Um caractere curinga pode transformar um padrão curto em muitos nomes de arquivos. O Bash faz essa correspondência antes de iniciar o comando, então o mesmo padrão pode servir para uma listagem, uma cópia ou uma remoção. Você determinará exatamente quais nomes correspondem ao padrão, levará em conta maiúsculas, minúsculas e entradas ocultas e verá como as aspas alteram o que chega a um programa. A expansão de chaves acrescenta outra ferramenta útil: ela produz novos nomes mesmo quando não existem arquivos com esses nomes.
5.1 Encontrar nomes de arquivo correspondentes a padrões com *, ? e [ ]
Um padrão de nomes de arquivo é um padrão usado para selecionar nomes. O Bash substitui um padrão sem aspas pelos nomes existentes que correspondem a ele antes de iniciar o comando. Você pode usar o mesmo padrão com ls, cp, mv ou outro comando que aceite esses nomes.
Compare um nome por partes
| Parte do padrão | A que corresponde |
|---|---|
* | Qualquer sequência de caracteres, inclusive nenhuma |
? | Exatamente um caractere |
[12] | Um caractere: 1 ou 2 |
[0-9] | Um dígito no intervalo |
[!0-9] | Um caractere fora do intervalo de dígitos |
Um padrão corresponde ao nome inteiro. report* corresponde a report porque o asterisco pode corresponder a nenhum caractere. beach?.jpg corresponde a beach1.jpg, mas não a beach10.jpg: dois dígitos não cabem em um ponto de interrogação. beach[12].jpg restringe essa posição a 1 ou 2.
Para um exemplo de seleção, suponha que photos contenha beach1.jpg, beach2.jpg, beach10.jpg, city1.jpg, city2.png, IMG_01.JPG, notes.txt e .index. O padrão *.jpg corresponde às três fotos de praia e a city1.jpg. city* também corresponde a city2.png porque restringe o início, não o sufixo. [!b]* corresponde a nomes cujo primeiro caractere não é b, deixando de fora tanto os nomes de praia quanto o arquivo oculto .index.
Considere maiúsculas, minúsculas e pontos no início
Por padrão, a correspondência diferencia maiúsculas de minúsculas. *.jpg não seleciona IMG_01.JPG. O padrão *.[jJ][pP][gG] aceita ambas as formas em cada posição do sufixo, então inclui os dois estilos.
Na correspondência comum do Bash, um ponto no início exige um ponto explícito no começo desse componente do caminho. * ignora .index; .i* o seleciona. Essa regra também se aplica dentro de um diretório: photos/* ignora nomes ocultos em photos. O padrão não passa a incluir arquivos ocultos apenas porque ls -a é o comando que o recebe; a expansão já ocorreu antes de ls começar.
Um caractere curinga não atravessa /. photos/*.jpg seleciona correspondências diretamente dentro de photos. */notes.txt seleciona um arquivo correspondente exatamente um nível de diretório abaixo do atual. Ele não pesquisa todos os diretórios mais profundos.
Leia os conjuntos de caracteres com atenção
[abc] oferece uma posição de caractere, não uma escolha entre nomes de arquivos inteiros. Um ! ou ^ no início nega o conjunto. Um intervalo como [a-f] segue as regras da configuração regional, que podem afetar a ordenação e a correspondência. Classes nomeadas usam outro par de colchetes: [[:digit:]], [[:upper:]] e [[:lower:]]. Suas classificações de caracteres seguem a configuração regional; caracteres minúsculos não se restringem às letras ASCII de a a z.
Padrões de nomes de arquivo e expressões regulares usam regras diferentes. Em um padrão de nomes de arquivo, um ponto é um ponto literal e * já é uma instrução completa para “qualquer sequência”. Não use o significado de . ou * de um padrão de busca de texto ao prever correspondências de nomes de arquivos.
Principais conclusões
- O Bash expande padrões de nomes de arquivo em nomes existentes correspondentes antes de executar um comando.
*corresponde a zero ou mais caracteres;?e um conjunto entre colchetes correspondem, cada um, a um caractere.- Maiúsculas, minúsculas e um ponto no início afetam a correspondência.
- Caracteres curinga correspondem dentro de um componente de caminho e não atravessam
/. - Intervalos e classes de caracteres dependem da configuração regional.
- Padrões de nomes de arquivo e expressões regulares interpretam símbolos de formas diferentes.
5.2 Usar caracteres curinga com segurança nos comandos
Um programa recebe os nomes produzidos pelo Bash, não a expressão com caracteres curinga que os selecionou. Por isso, a pré-visualização é útil: você pode inspecionar os argumentos selecionados antes de um comando alterar arquivos.
Expanda e depois execute
Se notes.txt e todo.txt forem os únicos nomes .txt, ls *.txt receberá esses dois nomes. O shell faz a correspondência; depois, ls pode listar cada argumento de acordo com suas próprias regras. Diretórios correspondentes também contam como nomes, então um padrão não garante que cada alvo seja um arquivo comum.
echo *.tmp exibe as palavras expandidas sem alterar arquivos. ls -d -- *.tmp lista as próprias entradas correspondentes, incluindo entradas de diretório, em vez de mostrar seu conteúdo. Para nomes de arquivos simples, essas pré-visualizações facilitam a verificação da seleção antes de copiar, mover ou remover.
No Bash padrão, um padrão sem correspondência permanece inalterado. Se não existir nenhum nome .pdf, echo *.pdf exibirá *.pdf; ls *.pdf tentará acessar esse nome literal e informará que ele não existe. Portanto, um asterisco exibido pode indicar ausência de correspondência, e não uma lista real de arquivos selecionados.
Decida quem deve receber o padrão
Aspas impedem a expansão de caracteres curinga. echo '*.txt', echo "*.txt" e echo \*.txt exibem o padrão literal. Já echo *.txt solicita ao Bash que selecione nomes existentes correspondentes. As aspas são adequadas quando o próprio programa deve receber os caracteres especiais ou quando um arquivo real tem um asterisco no nome.
Mantenha essa escolha separada do uso de aspas para espaços. Um nome de arquivo selecionado pela expansão de nomes de arquivo permanece um único argumento mesmo que contenha um espaço. Mas uma variável que contém um caminho normalmente deve ficar entre aspas duplas quando usada, pois sua expansão sem aspas pode ser separada em palavras.
Verifique o destino do comando
cp *.jpg ~/backup/ copia nomes correspondentes para um diretório de backup existente. mv draft* archive/ move nomes correspondentes para um diretório de armazenamento existente. Uma barra final exige um diretório como destino, ajudando a revelar um destino ausente em vez de renomear silenciosamente uma única origem.
Um * abrangente inclui diretórios. cp * backup/ copia arquivos comuns, mas omite diretórios sem cópia recursiva. Acrescentar -r inclui diretórios, inclusive o próprio backup quando ele está dentro do diretório atual; então cp se recusa a copiar esse diretório para dentro dele mesmo. Coloque um backup fora do conjunto de origens selecionado ou escolha um padrão mais restrito.
Os espaços alteram a seleção. *.tmp é um padrão; * .tmp é um padrão abrangente mais um argumento separado cujo nome começa com ponto. Pré-visualize a expressão que você realmente usará.
Gere novos nomes com chaves
A expansão de chaves gera palavras, existam elas ou não:
mkdir -p project/{src,docs,tests}
touch file{1..3}.txt
cp notes.txt{,.bak}
A primeira linha cria três subdiretórios com os nomes indicados. A segunda produz file1.txt, file2.txt e file3.txt. A última expande para cp notes.txt notes.txt.bak; sua primeira alternativa entre chaves está vazia. Use chaves para gerar nomes e padrões de nomes de arquivo para selecionar os existentes.
Principais conclusões
- Pré-visualize o padrão que será usado antes de executar um comando que altera arquivos.
- Sem correspondência, o Bash padrão mantém o padrão literal.
- Aspas ou uma barra invertida mantêm os caracteres curinga literais.
- Padrões de nomes de arquivo selecionam diretórios e também arquivos comuns.
- A expansão de chaves cria palavras mesmo quando não existem arquivos correspondentes.
6Reutilizar comandos e trabalhar com variáveis
Um shell pode lembrar seus comandos e armazenar valores que você usa novamente. O histórico poupa digitação, as variáveis dão nomes a valores úteis e o ambiente passa valores selecionados a programas recém-iniciados. PATH usa uma variável de ambiente para informar ao Bash onde procurar arquivos de programa. Você relacionará esses recursos ao uso de aspas, à localização de comandos e aos arquivos de inicialização para explicar tanto o que funciona agora quanto o que uma sessão de terminal posterior herdará.
6.1 Recuperar e reutilizar comandos do histórico
O Bash mantém uma lista de histórico dos comandos digitados no shell. Você pode recuperar uma linha, inspecioná-la, alterar uma parte e executar a versão editada. Isso é especialmente útil para um caminho longo ou uma combinação de opções usada recentemente.
Recupere uma linha antes de executá-la
As setas para cima e para baixo percorrem comandos anteriores. A linha recuperada torna-se uma entrada editável; ela não é executada até que você pressione Enter. history exibe a lista numerada, e history 5 limita a saída às entradas recentes.
Ctrl+R pesquisa de trás para a frente. Digite parte de um comando, como mkdir, para encontrar a linha correspondente mais recente. Pressione Ctrl+R novamente para uma correspondência mais antiga. Enter executa o comando exibido, enquanto Ctrl+G cancela a busca. Leia o resultado inteiro, pois o trecho correspondente pode aparecer em vários comandos com caminhos diferentes.
Entenda os atalhos com ponto de exclamação
A expansão do histórico reescreve expressões antes da execução:
| Expressão | Texto reutilizado |
|---|---|
!! | O comando anterior |
!42 | A entrada 42 do histórico |
!ls | O comando mais recente que começa com ls |
!$ | O último argumento do comando anterior |
Por exemplo, imediatamente após mkdir -p reports/2026, cd !$ expande para cd reports/2026. O atalho refere-se ao comando anterior, então outro comando digitado entre essas linhas mudaria o que !$ seleciona. Para repetir um comando numerado, use seu número no histórico; para reutilizar seu último argumento, use um atalho de palavra no contexto adequado.
A expansão normalmente exibe o comando expandido e o executa imediatamente. A exibição não é um pedido de confirmação. Um modificador :p, como em !rm:p, exibe a expansão sem executá-la. Recuperar com as setas ou Ctrl+R costuma ser mais fácil quando você quer inspecionar e editar uma linha potencialmente destrutiva. Você pode encontrar sudo !! sendo usado para repetir o último comando com direitos de administrador; inspecione a ação pretendida antes de decidir se direitos adicionais são adequados.
Saiba o que é salvo
O shell ativo mantém o histórico na memória. Ao sair, ele normalmente grava no arquivo indicado por HISTFILE, geralmente ~/.bash_history. Cada terminal tem sua própria lista na memória, então dois terminais abertos não precisam mostrar o mesmo histórico naquele momento.
HISTSIZE limita o número de comandos mantidos na memória. O padrão interno do Bash é 500, embora as distribuições frequentemente o alterem. HISTFILESIZE limita as linhas no arquivo de histórico salvo. Essas configurações controlam locais diferentes, então alterar uma não significa que você alterou os dois limites.
HISTCONTROL=ignorespace omite linhas que começam com espaço; ignoredups omite uma linha idêntica à anterior; ignoreboth combina os dois comportamentos. São opções de configuração, não motivos para supor que um terminal qualquer deixa de registrar um comando. history -d 42 remove uma entrada, e history -c limpa a lista atual na memória.
Senhas colocadas em argumentos de comandos podem ser armazenadas no histórico. Deixe que um programa solicite uma senha em seu próprio prompt, em vez de colocá-la na linha de comando.
Principais conclusões
- A recuperação com as setas e Ctrl+R permite inspecionar um comando antes de pressionar Enter.
!!, entradas numeradas, prefixos e!$referem-se a textos anteriores diferentes.- A expansão do histórico normalmente executa imediatamente;
:pexibe sem executar. - A lista de histórico ativa e o arquivo de histórico salvo têm limites separados.
- Mantenha senhas fora dos argumentos de comandos.
6.2 Definir e usar variáveis do shell e de ambiente
Uma variável dá um nome a um valor. O Bash pode substituir esse valor em linhas de comando posteriores. Uma variável de ambiente também é passada a programas iniciados por esse shell, permitindo que eles leiam configurações como idioma ou localização do diretório pessoal.
Atribua e leia um valor
Escreva uma atribuição sem espaços ao redor de =:
city=Lisbon
echo "$city"
echo "${city}_trip"
A primeira linha armazena Lisbon; as linhas seguintes exibem Lisbon e Lisbon_trip. As chaves indicam onde o nome da variável termina. Sem elas, $city_trip significa outra variável chamada city_trip.
city = Lisbon não é uma atribuição: o Bash tenta executar um comando chamado city com dois argumentos. Os nomes diferenciam maiúsculas de minúsculas e podem conter letras, dígitos e sublinhados, mas não podem começar com um dígito. Na utilização comum do Bash, ler uma variável não definida produz um valor vazio. unset city remove a variável.
Escolha as aspas adequadas à tarefa
| Entrada | O que o Bash faz |
|---|---|
echo "$HOME" | Expande HOME e mantém o resultado unido |
echo '$HOME' | Passa o texto literal $HOME |
echo \$HOME | Protege o sinal de cifrão e também exibe $HOME |
Após greeting="Good morning", echo "$greeting, $USER" exibe a saudação e o nome da conta como um único argumento. Coloque uma variável usada como caminho entre aspas duplas quando seu valor puder conter espaços. Aspas simples protegem tudo que está dentro delas, inclusive o sinal de cifrão, então não servem ao mesmo propósito das aspas duplas quando você quer expandir uma variável.
Passe configurações a programas filhos
Uma atribuição comum cria uma variável do shell. export city marca-a para o ambiente; export city=Lisbon combina as duas ações. Compare:
city=Lisbon
bash -c 'echo $city'
export city
bash -c 'echo $city'
Se city não tiver sido exportada anteriormente, o primeiro shell filho exibirá uma linha vazia. Após a exportação, um filho recém-iniciado recebe Lisbon. A exportação passa uma cópia na inicialização; ela não atualiza programas que já estão em execução.
env e printenv listam as entradas de ambiente, enquanto printenv HOME mostra uma. set também lista variáveis e funções do shell. Configurações comuns incluem HOME para o diretório pessoal, USER para o usuário, PWD para o diretório de trabalho, SHELL para o shell de login, LANG para idioma e formatos regionais e PATH para localização de programas. Nomes em minúsculas para seus próprios valores evitam conflitos com esses nomes convencionalmente escritos em maiúsculas.
Controle a duração e a inicialização
Uma atribuição antes de um comando fornece uma configuração apenas a esse comando: TZ=Asia/Tokyo date exibe a hora de Tóquio sem substituir a configuração de fuso horário do shell. LC_ALL=C ls --help solicita mensagens sem tradução.
Uma configuração não salva no prompt pertence àquele shell; abrir outro terminal não a torna persistente. Coloque uma configuração repetida, como export EDITOR=nano, em ~/.bashrc para shells interativos do Bash que não sejam de login. Shells de login leem arquivos de perfil, que frequentemente carregam esse arquivo. Um novo shell que não seja de login lê a configuração salva; source ~/.bashrc aplica o arquivo no shell atual.
Principais conclusões
- Atribuições não têm espaços ao redor de
=;$namelê o valor. - Aspas duplas permitem a expansão e preservam espaços; aspas simples mantêm o texto literal.
exportpassa uma variável a programas filhos iniciados posteriormente.envmostra o ambiente;settambém inclui variáveis e funções do shell.- Uma atribuição no início pode afetar apenas um comando.
- Arquivos de inicialização disponibilizam configurações salvas em shells posteriores.
6.3 Controlar como o shell localiza comandos com PATH
Quando você digita um nome de comando, o Bash precisa decidir o que esse nome significa. Ele pode ser um alias, uma função, um comando interno ou um arquivo de programa. PATH controla a busca por arquivos de programa para um nome que não contém barra.
Leia a lista de busca
PATH contém nomes de diretórios separados por dois-pontos, por exemplo, /usr/local/bin:/usr/bin:/bin. echo "$PATH" exibe a lista. O Bash considera primeiro os significados definidos no shell; para o nome de um programa externo, ele pesquisa os diretórios listados da esquerda para a direita e usa o primeiro executável correspondente.
Os nomes dos diretórios importam, não o fato de um programa estar instalado em algum lugar. Um arquivo fora da lista de busca não é encontrado apenas pelo nome. Programas de uso cotidiano geralmente ficam em /usr/bin ou /bin; programas de administração usam /usr/sbin ou /sbin; instalações locais frequentemente usam /usr/local/bin. Programas pessoais podem ficar em ~/bin ou ~/.local/bin.
Se dois diretórios de PATH contiverem um programa com o mesmo nome, o diretório anterior terá prioridade em uma nova busca.
Inspecione o comando ativo
type cd identifica um comando interno do shell. type ls pode identificar /usr/bin/ls ou informar um alias que adiciona cores. type -a echo lista as correspondências internas e externas. which ls normalmente informa um caminho de programa em PATH, mas pode deixar de mostrar recursos do shell que type conhece. Use type quando quiser entender o que o Bash realmente fará.
Execute um caminho explícito
O PATH usual omite o diretório atual. Portanto, um arquivo executável chamado backup no diretório atual precisa ser executado com ./backup, a menos que seu diretório esteja em PATH. Um nome de comando que contém / indica diretamente um local:
./backup
/home/sam/bin/backup
As duas formas dispensam a busca em PATH. A primeira é relativa ao seu diretório de trabalho; a segunda começa em /. O arquivo ainda precisa ser executável. Apenas poder listá-lo ou lê-lo não permite executá-lo.
Amplie sem substituir
Para adicionar um diretório pessoal ao final, mantenha o valor existente:
export PATH="$PATH:$HOME/bin"
Os dois-pontos separam a lista antiga do diretório acrescentado. Com um executável backup em /home/sam/bin, um comando backup posterior poderá encontrá-lo. Acrescentar ao final mantém qualquer programa correspondente anterior à frente do novo diretório. Colocar o novo diretório primeiro mudaria qual nome duplicado teria prioridade.
Já PATH=$HOME/bin descarta todos os diretórios existentes no valor. Comandos externos como ls podem deixar de funcionar apenas pelo nome. Abrir um novo terminal com a configuração normal de inicialização restaura seu PATH normal; para o shell atual, export PATH=/usr/local/bin:/usr/bin:/bin fornece uma lista básica de correção. Comandos internos ainda podem funcionar porque não são encontrados por meio de PATH.
Para manter uma adição desejada em novos shells interativos que não sejam de login, salve sua linha de exportação em ~/.bashrc.
Principais conclusões
- PATH é uma lista separada por dois-pontos, pesquisada da esquerda para a direita em busca de comandos externos.
typetambém informa aliases, funções e comandos internos.- Um comando que contém
/indica um caminho diretamente e dispensa PATH. - Mantenha
$PATHao ampliar a lista. - A ordem de busca determina qual nome duplicado de programa externo tem prioridade.
Exercícios resolvidos de Linha de comando do Linux
1Montar e interpretar um comando
11 passos
- 1IntroduçãoLeia uma sessão de terminal
Um terminal mostra uma interação: você digita um comando, o shell o interpreta e qualquer resultado aparece abaixo. O prompt marca o ponto em que outra linha pode começar.
Vamos interpretar esse prompt, usar algumas teclas e montar um comando cujos espaços e opções signifiquem exatamente o que pretendemos. O objetivo é entender a linha antes de pressionar Enter.
- 2ExplicaçãoIdentifique o shell e a janela
O shell é o interpretador. O terminal é a janela que exibe sua entrada e saída. O Bash é um shell muito usado no Linux; outra janela de terminal também pode executar o Bash.
Em
sam@laptop:~$, o prompt identifica sam em laptop, trabalhando no diretório pessoal. O cifrão final, por convenção, indica um usuário comum. Não digite esse símbolo de prompt ao inserir um comando de exemplo. - 3ExemploDescubra quem você é e onde está
Digite
whoamie leia o resultado: para nossa conta de exemplo, ésam. Em seguida, digitepwd; no diretório pessoal, ele exibe/home/sam. Cada comando é uma linha de entrada separada.A saída é uma informação retornada pelo comando, não um texto que você precisa digitar novamente. Um novo prompt significa que o shell está pronto. Um comando bem-sucedido também pode não produzir saída, então o tamanho da saída não mede o sucesso.
- 4DicaComplete, cancele ou saia
Comece a digitar o nome de um diretório e pressione Tab para completá-lo. Quando mais de um nome corresponder, acrescente mais caracteres ou pressione Tab duas vezes para ver as possibilidades. O preenchimento segue a grafia e as maiúsculas e minúsculas reais dos nomes existentes.
Ctrl+C cancela a entrada ou interrompe um programa em primeiro plano. Ctrl+D em uma linha vazia encerra o shell. Em um paginador de manual,
qfecha a página; a mesma tecla tem significado diferente de um comando digitado no prompt do shell. - 5DesafioEscolha a tecla para corrigir a situação
Você digitou
ls-l, percebeu que falta um espaço e quer descartar toda a linha de entrada antes que ela seja executada. Qual tecla leva você de volta a uma nova linha de entrada?---reveal---
Pressione Ctrl+C. Ele cancela a entrada pendente sem executá-la. Já Ctrl+L limpa a tela; isso não é o mesmo que descartar o que você digitou. Você também poderia editar a linha para
ls -l, mas a ação solicitada aqui é o cancelamento. - 6ExplicaçãoDê uma função a cada palavra
Leia
ls -l /etccomo três palavras com três funções.lsidentifica o comando,-laltera seu comportamento e/etcindica o que listar. Os espaços de separação permitem que o Bash passe essas partes separadamente.Opções curtas têm um hífen; opções longas têm dois.
ls -lacombina-le-a, enquantols --allé uma opção longa. Algumas opções também precisam de valores, que são indicados em seu texto de ajuda. - 7ExemploMantenha unido um nome com espaço
Suponha que um arquivo se chame “Annual Report.pdf”. Digitar
ls Annual Report.pdffornece dois argumentos de arquivo porque o espaço sem aspas separa as palavras.Escreva
ls "Annual Report.pdf"para manter o nome unido. Aspas simples também funcionam para esse nome literal, ou você pode proteger seu espaço com escape, como emAnnual\ Report.pdf. Os caracteres de proteção orientam o shell; eles não se tornam caracteres do nome do arquivo. - 8Ideia-chaveOpções pertencem a seus comandos
Uma letra familiar pode ter significados diferentes em programas diferentes.
cp -rcopia diretórios recursivamente, masls -rapenas inverte a ordenação. A opção de listagem recursiva é-Rmaiúsculo.Da mesma forma,
ls -hformata tamanhos; ele não solicita ajuda. Leia o comando e a opção como um par. Supor o significado a partir de uma opção usada com outro comando pode produzir um comando válido que faz a coisa errada. - 9DesafioMonte uma listagem clara
Um arquivo se chama “Course Plan.txt”. Como você pode solicitar sua listagem detalhada sem pedir dois arquivos separados?
---reveal---
Use
ls -l "Course Plan.txt". O primeiro espaço separa o comando da opção, e o seguinte separa a opção do argumento entre aspas. O espaço interno permanece dentro de um único nome. Jáls-lseria outro nome de comando, eCourse Plan.txtsem aspas seria interpretado como dois argumentos de alvo. - 10DesafioLide com dois tipos de texto especial
O arquivo que você precisa listar se chama “-old notes.txt”. Você quer detalhes e precisa lidar com o hífen inicial e o espaço interno. Escreva um comando
lsdo GNU para ele.---reveal---
Use
ls -l -- "-old notes.txt". As aspas mantêm o nome unido, enquanto--informa alsque deve parar de interpretar opções. As aspas, por si só, não removem o hífen inicial, então resolvem o problema do espaço, mas não o da opção.ls -l "./-old notes.txt"também funciona. - 11RecapitulaçãoLeia a linha antes de pressionar Enter
Reconheça o prompt e depois leia a linha digitada como um comando com opções e argumentos separados. Proteja espaços dentro dos nomes, verifique os significados das opções para o comando em uso e use o preenchimento para reduzir erros de digitação.
Quando a entrada estiver errada, cancele-a ou edite-a antes de executar; quando um programa ocupar a tela, use sua própria ação de saída ou interrupção.
2Encontrar o comportamento de comando necessário
10 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoEncontre uma resposta na ajuda
- 2ExplicaçãoAbra o manual do comando
- 3ExemploInterprete partes opcionais e repetidas
- 4DicaPesquise e volte ao prompt
- 5DesafioSelecione a página necessária
- 6ConexãoUse o tipo de comando para escolher a ajuda
- 7ExemploLeia o motivo de uma falha
- 8DesafioEscolha uma referência para um comando interno
- 9DesafioPasse da finalidade a um comando funcional
- 10RecapitulaçãoAssocie a pergunta à referência
3Navegar e inspecionar uma árvore de diretórios
13 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoPercorra um caminho pela árvore
- 2ExplicaçãoComece pela raiz
- 3ExemploLeia uma pequena estrutura
- 4DesafioReconheça uma entrada oculta
- 5ExplicaçãoDefina a base do caminho
- 6ExemploSuba dois níveis
- 7DicaUse atalhos para o diretório pessoal e o anterior
- 8DesafioEncontre um diretório ao lado do diretório pai
- 9ExplicaçãoAcrescente os detalhes necessários
- 10ExemploSepare tamanho de ordenação
- 11DesafioEscolha a listagem para a pergunta
- 12DesafioAcompanhe uma mudança e uma inspeção
- 13RecapitulaçãoMantenha localização e visualização separadas
4Criar, copiar, renomear e limpar
14 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoPreveja a estrutura final
- 2ExemploCrie os diretórios pai
- 3ExemploAdicione arquivos à estrutura
- 4DesafioVerifique o que deve existir primeiro
- 5ExplicaçãoCopie um arquivo para um diretório
- 6ExemploCopie a árvore
- 7ExemploRenomeie dentro da cópia
- 8DicaExija um diretório quando for essa a intenção
- 9DesafioLocalize um arquivo copiado
- 10ExplicaçãoRemova um subdiretório vazio
- 11DicaVerifique o alvo antes da remoção
- 12DesafioEscolha uma ação apenas para diretório vazio
- 13DesafioAcompanhe toda a limpeza
- 14RecapitulaçãoInterprete ações como mudanças em caminhos
5Analise um padrão antes de usá-lo
12 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoPreveja uma seleção com caracteres curinga
- 2ExplicaçãoDetermine quantos caracteres cada símbolo corresponde
- 3ExemploRestrinja uma posição
- 4Ideia-chaveMaiúsculas, minúsculas e pontos continuam importantes
- 5DesafioSelecione as correspondências exatas
- 6ExplicaçãoDeixe o shell expandir primeiro
- 7ExemploInterprete um padrão literal
- 8DesafioDetermine o que chega ao programa
- 9DicaMantenha o destino fora da seleção
- 10ExemploGere nomes antes que os arquivos existam
- 11DesafioGere, mova e depois selecione
- 12RecapitulaçãoSepare seleção de geração
6Reutilizar comandos e acompanhar configurações herdadas
15 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoReutilize uma linha e um valor
- 2ExplicaçãoRecupere com chance de editar
- 3ExemploEntenda o que o atalho reutiliza
- 4DesafioIdentifique corretamente o comando anterior
- 5ExplicaçãoAtribua um valor sem separá-lo
- 6ExemploEscolha o que as aspas permitem
- 7ExemploCompartilhe uma cópia com um processo filho
- 8DesafioPreveja a herança e a alteração local
- 9ConexãoEscolha quanto tempo uma configuração dura
- 10ExplicaçãoProcure um comando externo
- 11ExemploAcrescente um diretório pessoal
- 12Ideia-chaveUma barra seleciona um local diretamente
- 13DesafioMantenha a prioridade anterior
- 14DesafioRelacione recuperação, aspas e localização
- 15RecapitulaçãoAcompanhe texto, valores e escopo
Questões de Linha de comando do Linux
Conjunto 1: Prever alterações em arquivos e diretórios10 Questões de Prática
Questão 1 de 10
lab não existe. Como você pode criar lab/week2/input e seus diretórios pai ausentes em um único comando?Mostrar respostaOcultar resposta
mkdir -p cria cada diretório ausente no caminho. mkdir sem opções precisa que o caminho pai exista, então não consegue criar apenas o componente final nesse caso. touch cria arquivos em vez de construir diretórios pai, e -r não é a opção de criação de diretórios pai de mkdir.Questão 2 de 10
records contém jan.csv, e stored já existe como um diretório vazio. Qual caminho contém o arquivo copiado após cp -r records stored?Mostrar respostaOcultar resposta
stored/records. Um resultado diretamente em stored/jan.csv corresponderia a outra estrutura, como uma cópia para um nome de destino que ainda não existia.Questão 3 de 10
agenda.txt contém anotações de reunião. O que acontece quando você executa touch agenda.txt?Mostrar respostaOcultar resposta
touch atualiza as datas e horas de acesso e modificação e preserva o conteúdo. Seu comportamento de criar um arquivo vazio se aplica quando o arquivo indicado não existe. Tratar todo uso de touch como criação de arquivo leva à previsão incorreta de que anotações existentes são apagadas.Questão 4 de 10
rough.txt existe e archive não existe. O que mv rough.txt archive sem alias faz?Mostrar respostaOcultar resposta
archive. mv não presume que um nome inexistente deva ser um diretório. Uma barra final, archive/, indicaria um diretório de destino e faria o comando falhar enquanto ele não existir.Questão 5 de 10
old-cache é um diretório que deve estar vazio. Qual comando o remove apenas se essa expectativa estiver correta?Mostrar respostaOcultar resposta
rmdir aceita apenas um diretório vazio, então conteúdos inesperados impedem a remoção. rm recursivo remove um diretório junto com seu conteúdo e não mantém essa verificação. Uma entrada oculta também conta como conteúdo, mesmo quando uma listagem comum parece vazia.Questão 6 de 10
-scratch.log. Como o rm do GNU sem alias pode receber esse nome sem interpretá-lo como opções?Mostrar respostaOcultar resposta
-- encerra a interpretação de opções, então a palavra seguinte, iniciada por hífen, é tratada como nome de arquivo. Aspas sozinhas não resolvem esse problema: elas preservam o nome como uma palavra, mas mantêm o hífen inicial para rm interpretar. ./-scratch.log também seria um caminho sem ambiguidade.Questão 7 de 10
Mostrar respostaOcultar resposta
-p solicita a preservação dos registros de data e hora e das permissões na cópia. Uma cópia comum recém-criada recebe uma nova data e hora de modificação, mesmo quando seu conteúdo é idêntico. -v apenas informa uma ação; vê-la exibida não significa que os metadados originais foram preservados.Questão 8 de 10
unit/part contém apenas .prefs. Por que rmdir unit/part falha mesmo que ls unit/part sem opções pareça vazio?Mostrar respostaOcultar resposta
.prefs impede que rmdir o remova. ls sem opções omite esse nome; ls -A o mostraria. Estar aninhado dentro de unit não é, por si só, um obstáculo para remover um subdiretório vazio.Questão 9 de 10
/home/sam, source/item.txt existe e saved é um diretório vazio. Você executa cp -r source saved e depois mv saved/source saved/session. Onde estão agora os arquivos original e copiado?Mostrar respostaOcultar resposta
saved/source/item.txt porque saved já existe como diretório. A movimentação depois renomeia esse diretório copiado para session dentro de saved. O original permanece em source/item.txt; mover o diretório copiado não move nem renomeia sua origem.Questão 10 de 10
/home/sam/work, ../safe é um diretório vazio, e part contém apenas keep.txt. Você executa cp part/keep.txt ../safe/, mv part/keep.txt keep.txt e depois rmdir part. O que resta?Mostrar respostaOcultar resposta
/home/sam/safe. A movimentação coloca o original diretamente em /home/sam/work, deixando part vazio, então rmdir part é bem-sucedido. Remover esse diretório agora vazio não remove um arquivo que já foi movido para fora dele.Conjunto 2: Interpretar comandos, ajuda e caminhos10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
sam@laptop:~/training$ e está pronto para receber entrada. Qual local o prompt indica?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
/etc/passwd, mas man passwd abre o comando de alteração de senha. Qual comando abre a página necessária?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
type export informa que export é um comando interno do shell. Como você pode ler a ajuda do Bash para ele?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
mkdir [OPTION]... DIRECTORY.... O que é necessário para uma chamada básica válida?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
/home/sam/labs/module. Qual diretório absoluto cd ../../downloads seleciona?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
assets, sem listar os arquivos dentro dele. Qual comando faz isso?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
ls comum não mostra nada em settings, mas ls -A settings mostra .localrc. Por que os resultados diferem?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
/home/sam, você executa cd projects, depois ls ../downloads e, em seguida, cd ../photos. Todos os diretórios indicados existem. Em qual diretório você está e qual cd - seleciona em seguida?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 3: Encontrar nomes correspondentes e usar valores do shell10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
task.txt, task4.txt e task42.txt. Qual nome corresponde a task?.txt?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
.zip correspondentes no diretório de trabalho. O que echo *.zip exibe?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
upload, inspecioná-lo e editá-lo antes de executar. Qual recurso é adequado para encontrá-lo?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
folder="Project Plans", qual argumento ls "$folder" recebe como caminho?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
rec1.csv, rec2.csv, rec3.csv e rec12.csv. Quais nomes correspondem a rec[!2].csv?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
/opt/team/bin:/usr/bin:/bin. Os dois primeiros diretórios contêm um executável chamado report. Nenhum alias, função ou comando interno tem esse nome. O que é executado?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
pic1.png e pic2.png. O que echo "pic*.png" exibe?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
region não está definida. Você executa region=west e depois bash -c 'echo $region'. Por que o shell filho exibe uma linha vazia?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
item1.dat, item2.dat, item12.dat, .item3.dat e um diretório out vazio. Você executa cp item?.dat out/ e depois mv out/item2.dat out/chosen.dat. Quais arquivos estão em out?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
/usr/bin:/bin. Existem os arquivos executáveis /usr/bin/scan e /home/sam/bin/scan, sem um scan definido no shell. Você executa export PATH="$PATH:$HOME/bin" com HOME /home/sam. O que é executado para scan e para ./scan a partir de /home/sam/bin?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 4: Relacionar caminhos, padrões e comportamento de comandos10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
checkup está no seu diretório atual, que não consta em PATH. Não há outro comando com esse nome. Como você pode executar esse arquivo?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
red1.tmp, red2.tmp, red10.tmp e um diretório save vazio. Após cp red[12].tmp save/ e mv save/red1.tmp save/final.txt, o que echo save/*.tmp exibe?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
ls informa unrecognized option '--time-sort'. Qual é a próxima verificação mais direta para o programa GNU instalado?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
. e ... Qual comando GNU a fornece?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
-d, --date=STRING. Em touch --date=2026-02-18 checkpoint, qual é a função de 2026-02-18?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
clip.jpg, clip.JPG, clip.Jpg e clip.jpeg. Quais nomes correspondem a clip.[jJ][pP][gG]?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
!cp sem executá-lo. Qual expressão de histórico apenas exibe a expansão?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
/home/sam/jobs/run, ../data contém a.txt, e /home/sam/store já existe. Você executa cp -r ../data ../../store/ e depois mv ../../store/data/a.txt ../../store/data/b.txt. Qual novo caminho contém a cópia e onde está a origem?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
area não estava definida. Você executa area=north, export area, bash e, dentro do shell filho, area=south e exit. O que echo "$area" exibe de volta no processo pai e por quê?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
/home/sam/team/drafts, você executa cd ../final, depois cd - e, em seguida, ls ../../photos. Todos os diretórios existem. Onde você está e qual diretório a listagem inspecionou?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 5: Resolver várias decisões na linha de comando10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
tag=blue, o que echo '$tag' exibe?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
bundle não existe. Você executa mkdir -p bundle/raw bundle/log, touch bundle/raw/x, mv bundle/raw/x bundle/log/ e depois rmdir -p bundle/raw. O que permanece dentro de bundle?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
touch note{2..4}.txt, mkdir bin, mv note[24].txt bin/ e depois echo note?.txt. O que é exibido?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
/usr/bin:/bin, HOME é /home/sam, e arquivos executáveis render existem em /usr/bin e /home/sam/bin. Nenhum alias, função ou comando interno se chama render. Após export PATH="$HOME/bin:$PATH", qual arquivo externo render sem caminho seleciona e qual é o PATH completo resultante?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
-review notes.txt. Qual único comando ls do GNU solicita seus detalhes e lida com o hífen inicial e o espaço?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
unit1.tmp, unit2.tmp, unit10.tmp, .unit3.tmp e final.txt, todos arquivos comuns. Após pré-visualizar, você executa rm -i unit?.tmp sem alias e responde y a todas as perguntas. Quais arquivos comuns permanecem?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
mkdir -p samples/day7, você executa pwd e depois echo !$. O que o atalho de histórico seleciona?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
/home/sam, projects contém apenas .prefs e um diretório src; src contém main.c. O diretório archive existe e está vazio. Você executa ls projects, cp -r projects/src archive/, mv projects/src archive/live e depois rmdir projects. O que permanece em projects e archive?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
/home/sam, você define dest="$HOME/Field Notes" e executa export dest. Um Bash filho executa cd "$dest", depois altera para dest=elsewhere e é encerrado. O diretório existe. Em qual caminho o filho entrou e qual é o valor de dest no pai depois disso?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Travou em uma questão sua? Ajuda com Tarefas
Termos-Chave
A
Ajuda do Bash
help seguido do nome de um comando interno.help export explica a exportação de variáveis, enquanto help sozinho lista os comandos internos disponíveis.Ajuda rápida
--help do GNU.mkdir --help para encontrar a opção de criação de diretórios pai sem navegar pela página de manual completa.Ambiente
Apelido de comando
ls como ls --color=auto; type ls revela esse texto de comando adicional.apropos
apropos directory ajuda a identificar mkdir ou rmdir quando você lembra a tarefa, mas não o nome do comando.Argumento
cp report.txt saved/, os dois argumentos de caminho identificam o arquivo de origem e o diretório de destino.Arquivo
.pdf.Arquivo de histórico
~/.bash_history, com seu caminho armazenado em HISTFILE.Arquivo de inicialização
~/.bashrc é lida por um novo Bash interativo que não seja de login; um perfil de login também pode carregar esse arquivo.B
Bash
help cd diretamente porque cd é um de seus comandos internos, não um arquivo de programa separado.Busca reversa
C
Caminho absoluto
/ e descreve um local a partir do diretório raiz, então seu significado não depende da sua localização atual./home/sam/photos identifica o mesmo diretório quer o shell esteja em /etc, quer esteja no diretório pessoal de sam.Caminho explícito do comando
/home/sam/bin, ./backup e /home/sam/bin/backup identificam o mesmo executável local.Caminho relativo
/home/sam/projects, ../photos chega ao diretório de fotos de sam subindo e depois descendo um nível.Caractere curinga
* para uma sequência ou ? para um caractere.part?.txt aceita part4.txt, mas exclui um nome com dois dígitos na posição do ponto de interrogação.Classe de caracteres
[[:digit:]] para dígitos ou [[:lower:]] para caracteres minúsculos.Comando
ls -l /var, o nome do comando é ls; as palavras restantes controlam a listagem e indicam seu alvo.Comando interno
type cd informa que ele é um comando interno, e help cd fornece a documentação do comando do Bash que muda de diretório.Componente de caminho
/.data/*.csv seleciona diretamente dentro de data; ele não seleciona também nomes correspondentes em data/old.Configuração regional
Conta root
# indica root por convenção; o trabalho comum deve usar uma conta comum.Cópia
cp.cp memo.txt stored/ cria stored/memo.txt quando stored existe, deixando o memorando original onde estava.Cópia com preservação de atributos
cp -a que preserva atributos dos arquivos, sendo útil para copiar uma árvore de diretórios.cp -a site site-backup mantém os atributos da árvore em vez de tratá-la como uma cópia comum recém-criada.D
Data e hora de modificação
ls -t a usa para ordenar entradas com as mais recentes primeiro.touch atualiza esse registro sem alterar os dados do arquivo, então pode mudar a ordenação por tempo.Destino
archive existente, mv notes.txt archive usa archive como novo nome de arquivo em vez de criar um diretório.Diferenciação entre maiúsculas e minúsculas
Plans e plans podem identificar diretórios diferentes; o preenchimento ajuda a manter as maiúsculas e minúsculas corretas.Diretório
/home/sam/projects pode conter tanto notes.txt quanto um subdiretório chamado website.Diretório de trabalho
cd projects, o nome relativo notes.txt refere-se a um arquivo dentro desse diretório recém-selecionado.Diretório pai
.. refere-se a esse diretório pai./home/sam/projects/website, um .. chega a projects, enquanto dois chegam ao diretório pessoal de sam.Diretório pessoal
/home/username para um usuário comum do Linux.~ expande para /home/sam; /home sozinho é o diretório que contém os diretórios pessoais dos usuários.Diretório raiz
/, é o ponto de partida da árvore única do sistema de arquivos do Linux, acima de todos os outros caminhos absolutos./etc começa no diretório raiz; ele não indica um subdiretório do seu diretório de trabalho atual.Documentação do pacote
/usr/share/doc/, em um diretório para esse pacote./usr/share/doc/bash pode revelar arquivos README, registros de alterações, texto de licença e exemplos.E
Entrada oculta
ls o omita por padrão..bashrc aparece com ls -a, embora uma listagem comum do diretório pessoal o ignore.Executável
./backup quando seu diretório não consta em PATH.Expansão de chaves
file{1..3}.txt.mkdir work/{src,docs} recebe dois nomes de diretório gerados, mesmo quando nenhum dos subdiretórios existe ainda.Expansão de nomes de arquivo
ls *.log recebe dois nomes de arquivo em vez de receber o padrão literal com asterisco.Expansão de variável
echo "${city}_trip" acrescenta texto ao valor de city, enquanto $city_trip leria um nome de variável diferente.Expansão do histórico
!! para o comando anterior.mkdir drafts, cd !$ reutiliza o último argumento, mas outro comando intermediário o altera.Expansão do til
~ sem aspas no início de uma palavra do shell por um caminho de diretório pessoal, facilitando a digitação de caminhos a partir dele.cd ~/Documents chega aos seus documentos de qualquer lugar, mas colocar o til entre aspas impede essa substituição.export
Expressão entre colchetes
! ou ^ inicial negando esse conjunto.part[13].txt corresponde aos nomes terminados em 1 ou 3 nessa posição, mas não à terminação de dois dígitos 13.H
HISTCONTROL
ignoreboth combina ignorespace e ignoredups; um shell qualquer pode usar outra configuração.Histórico de comandos
I
Interpretador de comandos
pwd em uma sessão de terminal e exibe o diretório em que o shell está trabalhando.L
Listagem detalhada
ls -l, que mostra metadados como tipo, proprietário, grupo, tamanho e data e hora de modificação.ls -l notes.txt mostra os detalhes de um único arquivo; acrescentar -h altera um tamanho em bytes como 2048 para 2.0K.Listagem recursiva
ls -R projects mostra projects: e depois cabeçalhos para subdiretórios como projects/website:.Localização de comandos
type echo pode informar o comando interno do Bash antes de um arquivo echo externo que também existe em um diretório de PATH.M
Manual Info
info coreutils abre um manual mais longo; n, p e u permitem navegar entre seus nós ligados.Mensagem de erro
No such file or directory de ls sugere verificar o caminho, as maiúsculas e minúsculas e o diretório de trabalho.Metadados
mkdir
-p cria diretórios pai ausentes e aceita componentes de caminho já existentes como diretórios.mkdir -p app/css prepara os dois diretórios quando app não existe, para que um arquivo possa ser criado depois dentro de css.Movimentação
mv sem a opção recursiva exigida para copiar uma árvore.mv memo.txt stored/ coloca o arquivo existente em stored, então seu caminho antigo deixa de indicar esse arquivo movido.O
Opção
-l informa a ls que deve mostrar uma listagem detalhada em vez de exibir apenas nomes.Opção de execução forçada
-f em rm do GNU, suprime a confirmação e ignora nomes ausentes, aumentando a necessidade de verificar a expressão de alvo.-f não fornece uma forma de recuperação; apenas altera como a remoção trata perguntas e nomes ausentes.Origem
cp e mv.cp notes.txt archive/, notes.txt fornece os dados e archive/ indica para onde a cópia deve ir.P
Padrão de nomes de arquivo sem correspondência
echo *.pdf exibe o padrão enquanto ls *.pdf informa que esse caminho literal não existe.Padrão literal
echo "*.txt" exibe o asterisco e o sufixo mesmo quando o diretório contém arquivos que corresponderiam a eles.Página de manual
man ls abre a referência do comando de listagem, onde você pode pesquisar uma opção necessária.Paginador
man permite pesquisar com /size, percorrer correspondências com n e sair com q.PATH
/.:$HOME/bin preserva os diretórios anteriores e sua prioridade quando um nome de programa aparece duas vezes.Pré-visualização da expansão
ls -d -- draft* exibe as próprias entradas correspondentes, para que diretórios correspondentes fiquem visíveis como alvos.Prioridade de busca
/usr/bin.Prompt de comando
sam@laptop:~$, o til indica o diretório pessoal e o cifrão final geralmente indica um usuário comum.Proteção de caracteres com aspas ou escape
ls "Work Plan.txt" mantêm o espaço dentro do nome do arquivo em vez de separá-lo em duas palavras.R
Registro de data e hora
touch -d 2025-01-31 old.txt solicita uma data escolhida em vez de usar a hora atual para a atualização.Remoção interativa
rm -i do GNU pergunta separadamente para cada alvo.rm -i *.tmp pergunta sobre os nomes correspondentes antes de removê-los.Remoção recursiva
rm -r do GNU.rmdir old-cache quando um item inesperado deve interromper a limpeza em vez de ser excluído junto com seu diretório pai.rm
rm -i old.txt solicita confirmação antes de remover esse arquivo, permitindo que você recuse a ação.rmdir
rmdir cache informar que há conteúdo, mas ls comum parecer vazio, use ls -A cache para verificar entradas ocultas.S
Seção do manual
man 5 passwd seleciona a página de formato de arquivo em vez da página do comando.Sinopse
mkdir [OPTION]... DIRECTORY... permite opções, mas exige pelo menos um nome de diretório.Sobrescrita
cp ou mv sem opções podem fazer sem perguntar.cp -i notes.txt saved.txt para perguntar antes de substituir saved.txt quando um arquivo com esse nome já existir.T
Tamanho em formato legível
ls -h do GNU.-h com -l: o primeiro formata tamanhos, enquanto o segundo fornece a coluna que os exibe.Terminal
touch
touch checklist.txt mantém o texto de uma lista existente; ele não apaga o arquivo antes de atualizar seus registros de data e hora.V
Variável
name=value e lido por meio de expansão, como $name.topic=linux, echo "$topic" exibe o valor armazenado, enquanto unset topic remove a variável.Variável de ambiente
export.export city permite que um Bash filho posterior leia o valor de city que antes era mantido apenas no processo pai.Variável do shell
city=Lisbon não fornece esse valor a um novo Bash filho, a menos que city já esteja exportada.W
whatis
whatis ls fornece uma descrição curta da finalidade; man ls fornece a referência mais longa quando são necessários mais detalhes.Sobre esta aula
Crie seus próprios Materiais de Estudo
Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.