No Linux, sempre há mais de uma maneira de fazer alguma coisa. Quer você execute um comando, use um aplicativo GUI ou escreva seu próprio programa, há muitos métodos para fazer as coisas. Mas cada um pode nos ensinar algo novo sobre o sistema operacional que usamos.
Aprenda sobre o buraco negro do Linux, um comando para instalar outros comandos, como criar scripts para o Vim e muito mais!
Usando o comando de toque
O comando touch é provavelmente a maneira mais óbvia e natural de criar um arquivo novo e vazio. Para fazer isso, basta executar:
touch filename Se o arquivo ainda não existir, o touch irá criá-lo para você. Isso foi tudo que eu sabia sobre touch durante anos, até perceber que ele tinha mais propósito do que apenas criar arquivos vazios:
touch realmente deve ser usado para alterar os carimbos de data e hora dos arquivos, especificamente os tempos de acesso e modificação. Por exemplo, você pode definir a hora da última modificação de um arquivo assim:
touch -d "2025-01-01 12:00:00" filename Sua versão do touch pode suportar formatos adicionais. Por padrão, o toque altera ambos os carimbos de data/hora para a hora atual.
Seu comportamento de criação de arquivo é outro padrão: se o arquivo ainda não existir, touch o cria. Este é um caso raro em que uma ferramenta Unix faz um pouco mais do que você imagina, mas o padrão faz todo o sentido.
Usando echo com redirecionamento de saída
O recurso de redirecionamento de saída do Linux permite redirecionar a saída de um comando. Você pode usá-lo para enviar saída para um arquivo, por exemplo. Se esse arquivo ainda não existir, seu shell irá criá-lo.
Esse é o conceito simples por trás deste comando para criar um arquivo vazio:
echo -n > filename A única coisa complicada aqui é a opção -n, que diz ao echo para não imprimir um caractere de nova linha à direita. Sem esta opção, seu novo arquivo não ficará vazio; ele usará um único byte para armazenar o caractere de nova linha.
Redirecionamento de saída sem comando
O redirecionamento de saída é poderoso; tanto que você nem precisa de um comando para usá-lo!
> filename Por padrão, o operador de redirecionamento de saída procurará algo para redirecionar. Se não houver fluxo de saída, ele usará a entrada padrão. Portanto, quando você executa o comando acima, seu shell solicitará uma entrada:
Você verá tudo o que digita, mas, diferentemente do modo normal de linha de comando, não verá um prompt no início de cada linha. Quando terminar, você precisará pressionar Ctrl+D para sinalizar o fim da entrada. Se você fizer isso imediatamente, sem digitar nada, você obterá um novo arquivo vazio.
Instalando um arquivo
A maioria das instalações envolve um gerenciador de pacotes, como apt ou Homebrew. Mas há uma alternativa ainda mais simples que você talvez não conheça: instalar. O programa de instalação não faz muita coisa e é frequentemente usado em scripts para instalar os programas mais simples.
install ./filename /usr/local/bin/filename Tudo o que isso realmente faz é copiar o primeiro arquivo para o segundo, assim como o comando cp, mas a instalação oferece muito mais opções. Você pode usá-lo para vincular arquivos em vez de copiá-los, criar novos diretórios ao mesmo tempo e definir permissões precisas.
install -m 644 /dev/null filename A única falha dessa abordagem é que install cria um executável por padrão, então a opção -m é usada para substituir isso.
Mas a parte inteligente aqui é menos o comando de instalação e mais o uso de /dev/null. Como tudo no diretório /dev padrão do Linux, /dev/null é bem diferente dos arquivos padrão. É também um arquivo de pseudodispositivo, o que significa que não representa hardware físico real.
/dev/null às vezes é chamado de “buraco negro” do Linux, já que qualquer coisa que você escrever nele desaparecerá silenciosamente. Ele também não produz saída, por isso é outra ótima fonte para um arquivo vazio.
Na verdade, agora que você conhece /dev/null, existe uma maneira ainda mais fácil de usá-lo; basta copiá-lo:
cp /dev/null filename Criando scripts no editor Vim
Vim é um editor de texto poderoso, mas muitos usuários de Linux têm uma relação de amor/ódio com ele. Mesmo se você for um usuário comum, talvez não tenha percebido que pode criar scripts e usá-lo no modo interativo. Você pode obter alguns scripts simples usando a opção -c:
vim -c command Para usar esta abordagem para criar um arquivo vazio, basta executar o comando “write and quit” com um novo nome de arquivo:
vim -c 'wq' filename Isso fará com que o Vim crie um buffer novo e vazio chamado filename – desde que esse arquivo não exista – e então escreva e saia imediatamente.
Uma abordagem de baixo nível com dd
A criação de arquivos é uma operação de baixo nível por natureza, mas os comandos mostrados até agora ofuscam essa complexidade, protegendo o usuário dela. Isso é menos verdadeiro em relação ao próximo comando, dd. Este é um comando estranho: ele não usa hífens para opções e seu nome é obscuro. Eu penso nisso como “despejo de disco”, embora o nome seja originalmente uma abreviação de “definição de dados”.
O programa dd copia blocos de dados, que têm 512 bytes por padrão. Usando a opção of, você pode especificar um arquivo para gravar em vez da saída padrão:
-
true|dd of=filename
dd lê a entrada padrão, que, neste caso, é canalizada do programa verdadeiro. Este comando é mais um exemplo de comando que não produz saída, então você pode gravá-lo em um arquivo e ter certeza de que está vazio.
Como o dd é de nível tão baixo, você pode causar muitos danos se não tomar cuidado. Então, eu realmente não recomendaria usar essa abordagem!
Escreva um programa para fazer isso
Finalmente, se ainda não for complicado o suficiente, você pode realmente projetar demais essa tarefa com algum Python, Perl ou qualquer que seja sua linguagem de programação favorita. Aqui está uma linha única do Perl:
perl -e 'open(my $fh, ">", "filename")' A opção -e do Perl permite executar um comando; neste caso, é uma chamada para a função open. O “>” define o modo para saída, que cria o arquivo se ele ainda não existir.