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.

Você vai aprender
  • O que cada parte dos comandos touch e mkdir faz.
  • 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çoSignificado
anaQuem está usando o terminal (o usuário).
@notebookEm 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.

Por que 'Área de trabalho' aparece entre aspas?

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.

Por que "fev" veio antes de "jan"?

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
Atenção às chaves

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?

FormaExemploMelhor quando…
Vários nomesmkdir jan fev marSão poucos nomes, sem padrão.
Chavesmkdir rel-{jan,fev}Os nomes têm uma parte igual.
Sequênciamkdir aula{01..20}Os nomes são numerados.
Laço forfor m in a b; do …; doneVocê quer fazer mais coisas para cada pasta.
xargsxargs mkdir < lista.txtOs nomes já estão num arquivo.
Interface gráficaCtrl+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.

Dica para scripts

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:

ComandoO que fazCuidado
touch arq.txtCria vazio ou só atualiza a dataNunca apaga conteúdo
echo "texto" > arq.txtCria com uma linha de textoApaga o conteúdo anterior
echo "texto" >> arq.txtAcrescenta uma linha no fimSeguro: não apaga nada
> arq.txtCria vazio ou esvazia o arquivoApaga o conteúdo sem perguntar
nano arq.txtAbre um editor para escreverVeja 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
Atenção: > 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

"Arquivo existe"
$ 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.

"No such file or directory" no mkdir
$ 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.

"Permission denied"
$ 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
Nome com espaço virou duas pastas
$ 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çãoDescriçãoExemplo
-pCria as pastas que faltam no caminho; não reclama se já existirmkdir -p a/b/c
-vMostra cada pasta criadamkdir -v fotos
-mDefine as permissões já na criaçãomkdir -m 700 privado

touch

OpçãoDescriçãoExemplo
-dUsa a data informada em vez de agoratouch -d "2026-01-01" a.txt
-tData no formato AAAAMMDDhhmmtouch -t 202601010800 a.txt
-cNão cria o arquivo se ele não existir; só atualiza a datatouch -c a.txt
-rCopia a data de outro arquivotouch -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:

mkdir

2. Caminho que ainda não existe

A pasta trabalho não existe. Complete para criar trabalho/2026/relatorios sem erro:

mkdir trabalho/2026/relatorios

3. Sequência numerada

Complete para criar aula01 até aula10:

mkdir aula

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 nome cria uma pasta; mkdir a b c cria várias.
  • Chaves {a,b} e sequências {01..12} são expandidas pelo shell e funcionam com qualquer comando.
  • mkdir -p cria o caminho inteiro e não reclama se a pasta já existir.
  • touch cria arquivos vazios e nunca apaga conteúdo; > apaga, >> acrescenta.
  • Silêncio é sucesso. Confira com ls ou com echo $?.