Ubuntu touch e mkdir
Nesta aula você vai criar arquivos e pastas pelo terminal. São dois comandos: touch cria arquivos vazios e mkdir cria pastas. Parece pouco, mas eles têm truques que economizam muito trabalho, como criar 12 pastas de uma vez.
- O que cada parte dos comandos
touchemkdirfaz. - Seis formas diferentes de criar várias pastas, e quando usar cada uma.
- Como criar uma estrutura inteira de pastas com um comando só.
- O que fazer quando aparece "Arquivo existe" ou "No such file or directory".
Todos os exemplos acontecem numa máquina fictícia chamada notebook, com a usuária ana. No seu computador, o começo do prompt terá o seu usuário e o nome da sua máquina.
Antes de começar: leia o prompt
Cada linha que começa com ana@notebook:~$ é um comando que a Ana digitou. As linhas sem esse começo são a resposta do computador. Veja o que cada pedaço do prompt significa:
$ pwd /home/ana
| Pedaço | Significado |
|---|---|
ana | Quem está usando o terminal (o usuário). |
@notebook | Em qual máquina. "@" se lê "em". |
:~ | Em qual pasta você está. ~ é a sua pasta pessoal, /home/ana. |
$ | Fim do prompt: o terminal está esperando você digitar. Vira # quando você é o administrador (root). |
mkdir: criar uma pasta
mkdir vem de make directory, "criar diretório". Diretório é o nome técnico de pasta.
- mkdir
- O programa. Ele cria pastas.
- estudos
- O argumento: o nome da pasta que você quer criar.
Vamos criar a pasta e conferir se ela apareceu:
$ mkdir estudos $ ls Documentos Imagens Música Vídeos frutas.txt Downloads Modelos Público estudos 'Área de trabalho' « "estudos" apareceu
Repare que o mkdir não mostrou nada. No Linux, silêncio significa sucesso: o comando só fala quando dá erro, ou quando você pede. Por isso usamos o ls logo depois, para conferir.
O nome tem espaços. O ls coloca aspas para mostrar que é um nome só, e não três. É também assim que você deve digitar esse nome: cd 'Área de trabalho'.
Pedindo para o mkdir falar: -v
A opção -v (de verbose, "detalhado") faz o comando contar o que fez:
- mkdir
- O programa.
- -v
- Uma opção: muda o comportamento. Opções começam com hífen.
- aulas
- O nome da pasta.
$ mkdir -v aulas mkdir: criou o diretório 'aulas'
O que o comando devolve
Além do que aparece na tela, todo comando devolve um código de saída: 0 quando deu certo e outro número quando deu errado. Você vê esse código com echo $?, logo depois do comando:
$ mkdir provas $ echo $? 0 « 0 = deu certo $ mkdir provas mkdir: provas: Arquivo existe $ echo $? 1 « 1 = deu errado
Esse código é o que scripts usam para decidir o que fazer depois. Você vai usá-lo em Condicionais.
Criar várias pastas: 6 formas diferentes
Imagine que a Ana quer uma pasta para cada mês do semestre: jan, fev, mar, abr, mai e jun. Existem várias formas de fazer isso. Todas chegam ao mesmo resultado; o que muda é a situação em que cada uma é mais prática.
Forma 1: vários nomes separados por espaço
O mkdir aceita quantos nomes você quiser. Cada palavra separada por espaço vira uma pasta.
- mkdir
- O programa.
- jan fev mar
- Três argumentos. Cada um vira uma pasta.
$ cd estudos $ mkdir jan fev mar $ ls fev jan mar
É a forma mais simples e a mais usada no dia a dia. Use quando os nomes forem poucos e diferentes entre si.
O ls mostra os nomes em ordem alfabética: f vem antes de j. Ele não sabe que são meses.
Forma 2: chaves { }
Quando os nomes têm uma parte em comum, as chaves evitam repetir. Quem entende as chaves é o shell (o programa que lê o que você digita), e não o mkdir. O shell transforma {jan,fev,mar} em jan fev mar antes de chamar o mkdir.
Você pode ver essa transformação usando echo, que só repete o que recebeu:
$ echo relatorio-{jan,fev,mar}.txt
relatorio-jan.txt relatorio-fev.txt relatorio-mar.txt
Não coloque espaço depois da vírgula: {jan, fev} não funciona. Com uma opção só, como {jan}, as chaves também não fazem nada.
Forma 3: sequências {1..12}
Com dois pontos entre o começo e o fim, as chaves geram uma sequência. Se você escrever o primeiro número com zero na frente, todos ficam com o mesmo tamanho, e isso ajuda a ordenar.
$ echo aula{1..5}
aula1 aula2 aula3 aula4 aula5
$ mkdir mes{01..12}
$ ls
mes01 mes03 mes05 mes07 mes09 mes11
mes02 mes04 mes06 mes08 mes10 mes12
O ls organiza os nomes em colunas, de cima para baixo, para caber na largura da janela.
Sem o zero, o ls mostraria mes1 mes10 mes11 mes12 mes2…, porque compara letra por letra: "1" seguido de "0" vem antes de "2".
Forma 4: laço for
Um laço repete um comando para cada item de uma lista. É mais longo de digitar, mas permite fazer mais de uma coisa por pasta.
- for mes in abr mai jun
- Para cada palavra da lista, guarde-a na variável
mes… - ;
- Separa as partes do comando.
- do mkdir "$mes"
- …e rode isto.
$mesé trocado pela palavra da vez. - ; done
- Fim do laço.
$ for mes in abr mai jun; do mkdir "$mes"; echo "criei $mes"; done criei abr criei mai criei jun
Você vai aprender laços a fundo em Laços.
Forma 5: a partir de uma lista em arquivo
Se os nomes já estão num arquivo de texto, um por linha, o xargs lê o arquivo e entrega os nomes ao mkdir. É útil quando a lista é grande ou veio de outro lugar, como uma planilha.
$ cat clientes.txt padaria oficina mercado $ xargs mkdir < clientes.txt $ ls clientes.txt mercado oficina padaria
- xargs
- Lê palavras da entrada e as passa como argumentos para outro comando.
- mkdir
- O comando que vai receber as palavras.
- < clientes.txt
- Usa o arquivo como entrada (veja Redirecionamento).
Se algum nome tiver espaço, use xargs -d '\n' mkdir < clientes.txt, que separa só por linha.
Forma 6: pelo gerenciador de arquivos
No desktop, abra o app Arquivos e pressione Ctrl+Shift+N. Para uma ou duas pastas, é tão rápido quanto o terminal. Para dez ou mais, o terminal ganha.
Qual forma usar?
| Forma | Exemplo | Melhor quando… |
|---|---|---|
| Vários nomes | mkdir jan fev mar | São poucos nomes, sem padrão. |
| Chaves | mkdir rel-{jan,fev} | Os nomes têm uma parte igual. |
| Sequência | mkdir aula{01..20} | Os nomes são numerados. |
| Laço for | for m in a b; do …; done | Você quer fazer mais coisas para cada pasta. |
| xargs | xargs mkdir < lista.txt | Os nomes já estão num arquivo. |
| Interface gráfica | Ctrl+Shift+N | É só uma pasta e o Arquivos já está aberto. |
Missão: você está na pasta semestre. Crie as pastas jan, fev, mar, abr, mai e jun. Use pelo menos duas formas diferentes e confira com ls.
Criar pastas dentro de pastas: -p
Tente criar site/css quando a pasta site ainda não existe:
$ mkdir site/css mkdir: No such file or directory
O mkdir só cria o último nível. Ele não cria site sozinho e reclama que não achou o caminho. A opção -p (de parents, "pais") cria todas as pastas que faltam no caminho:
- mkdir
- O programa.
- -p
- Cria as pastas "pais" que faltarem e não reclama se a pasta já existir.
- -v
- Mostra cada pasta criada.
- site/css
- O caminho completo que você quer.
$ mkdir -pv site/css mkdir: criou o diretório 'site' mkdir: criou o diretório 'site/css'
Uma estrutura inteira de uma vez
Juntando -p com chaves, você monta a estrutura de um projeto num comando só. Compare as duas formas, que dão o mesmo resultado:
# forma longa: um caminho por pasta
$ mkdir -p loja/src loja/docs loja/testes/unidade loja/testes/integracao
# forma curta: com chaves
$ mkdir -p loja/{src,docs,testes/{unidade,integracao}}
$ tree loja
loja
├── docs
├── src
└── testes
├── integracao
└── unidade
5 directories, 0 files
O tree desenha a árvore de pastas. Se ele não estiver instalado, rode sudo apt install tree.
Em scripts, use sempre mkdir -p. Se a pasta já existir, ele não dá erro, e o script continua.
Missão: crie, com um único comando, a pasta app contendo src, docs e testes. Depois veja o resultado com tree app.
touch: criar arquivos vazios
touch significa "tocar". Ele "toca" no arquivo para atualizar a data de modificação. Se o arquivo não existe, ele cria um vazio. Por isso é usado para criar arquivos.
- touch
- O programa.
- anotacoes.txt
- O arquivo a criar (ou a "tocar", se já existir).
$ touch anotacoes.txt $ ls -l anotacoes.txt -rw-rw-r-- 1 ana ana 0 Oct 15 10:30 anotacoes.txt « tamanho 0: o arquivo está vazio
Ele também aceita vários nomes e chaves, exatamente como o mkdir:
$ touch index.html style.css script.js
$ touch capitulo{1..3}.md
$ ls
capitulo1.md capitulo2.md capitulo3.md index.html script.js style.css
O touch não apaga o conteúdo
Se o arquivo já existe, o touch só muda a data. O conteúdo fica intacto:
$ cat notas.txt Comprar café $ ls -l notas.txt -rw-rw-r-- 1 ana ana 13 Oct 14 17:40 notas.txt $ touch notas.txt $ ls -l notas.txt -rw-rw-r-- 1 ana ana 13 Oct 15 10:30 notas.txt « só a data mudou $ cat notas.txt Comprar café
Mudar a data de propósito: -d
Com -d (de date, "data") você escolhe a data que o arquivo vai ter. Isso é útil para testar scripts que apagam arquivos antigos.
$ touch -d "2026-01-01 08:00" antigo.log $ ls -l antigo.log -rw-rw-r-- 1 ana ana 0 Jan 1 2026 antigo.log
Outras formas de criar um arquivo
O touch cria arquivos vazios. Quando você já quer escrever algo dentro, há outros caminhos:
| Comando | O que faz | Cuidado |
|---|---|---|
touch arq.txt | Cria vazio ou só atualiza a data | Nunca apaga conteúdo |
echo "texto" > arq.txt | Cria com uma linha de texto | Apaga o conteúdo anterior |
echo "texto" >> arq.txt | Acrescenta uma linha no fim | Seguro: não apaga nada |
> arq.txt | Cria vazio ou esvazia o arquivo | Apaga o conteúdo sem perguntar |
nano arq.txt | Abre um editor para escrever | Veja nano e vim |
$ echo "Lista de compras" > compras.txt $ echo "pão" >> compras.txt $ echo "leite" >> compras.txt $ cat compras.txt Lista de compras pão leite
> apaga, >> acrescenta
Um > no lugar de >> apaga tudo o que havia no arquivo, sem perguntar e sem lixeira. Na dúvida, use >>.
Missão: crie o arquivo compras.txt com três linhas: pão, leite e café. Use echo com > e >>, e confira com cat compras.txt.
Quando não funciona
$ mkdir fotos mkdir: fotos: Arquivo existe
O que aconteceu: já existe uma pasta, ou um arquivo, com esse nome.
Como resolver: confira com ls -l fotos. Se a ideia era só "garantir que a pasta exista", use mkdir -p fotos, que não reclama.
$ mkdir projetos/2026/janeiro mkdir: No such file or directory
O que aconteceu: alguma pasta do caminho (projetos ou 2026) ainda não existe. Repare que, no Ubuntu 26.04, a mensagem não diz qual parte falta.
Como resolver: use mkdir -p projetos/2026/janeiro.
$ mkdir /opt/meuapp mkdir: Permission denied $ touch /etc/teste.conf touch: não é possível executor o touch em '/etc/teste.conf': Permission denied
O que aconteceu: fora da sua pasta pessoal, quase tudo pertence ao administrador (root). O erro de digitação "executor" faz parte da tradução original do Ubuntu.
Como resolver: se você realmente precisa criar ali, use sudo. Antes, confira se não deveria estar na sua pasta pessoal. Veja sudo e Entendendo Permissões.
$ sudo mkdir /opt/meuapp [sudo: authenticate] Senha: $ ls -ld /opt/meuapp drwxr-xr-x 2 root root 4096 Oct 15 10:31 /opt/meuapp
$ mkdir Meus Projetos $ ls Meus Projetos
O que aconteceu: o espaço separa argumentos. O mkdir recebeu dois nomes e criou duas pastas.
Como resolver: apague as duas com rmdir Meus Projetos e crie de novo com aspas: mkdir "Meus Projetos". Outra opção é evitar espaços: meus-projetos.
Referência de opções
mkdir
| Opção | Descrição | Exemplo |
|---|---|---|
-p | Cria as pastas que faltam no caminho; não reclama se já existir | mkdir -p a/b/c |
-v | Mostra cada pasta criada | mkdir -v fotos |
-m | Define as permissões já na criação | mkdir -m 700 privado |
touch
| Opção | Descrição | Exemplo |
|---|---|---|
-d | Usa a data informada em vez de agora | touch -d "2026-01-01" a.txt |
-t | Data no formato AAAAMMDDhhmm | touch -t 202601010800 a.txt |
-c | Não cria o arquivo se ele não existir; só atualiza a data | touch -c a.txt |
-r | Copia a data de outro arquivo | touch -r modelo.txt a.txt |
Exercícios
1. Várias pastas de uma vez
Complete para criar as pastas fotos, videos e musicas com um único comando:
2. Caminho que ainda não existe
A pasta trabalho não existe. Complete para criar trabalho/2026/relatorios sem erro:
3. Sequência numerada
Complete para criar aula01 até aula10:
4. O arquivo notas.txt tem 20 linhas. O que acontece depois de touch notas.txt?
5. Qual comando apaga o conteúdo de log.txt?
Resumo
mkdir nomecria uma pasta;mkdir a b ccria várias.- Chaves
{a,b}e sequências{01..12}são expandidas pelo shell e funcionam com qualquer comando. mkdir -pcria o caminho inteiro e não reclama se a pasta já existir.touchcria arquivos vazios e nunca apaga conteúdo;>apaga,>>acrescenta.- Silêncio é sucesso. Confira com
lsou comecho $?.