$ cat > location/i/want/theFileImCreating
cat
realmente não cria arquivos. Ele apenas grava em sua saída padrão. No comando acima, é o redirecionamento de saída ( >
) (configurado pelo shell) que cria o arquivo (ou esvazia um já existente).
Por padrão, os redirecionamentos ( >
) atrapalham o destino, se existir. Se você quiser evitar isso, set -o noclobber
é seu amigo.
Se você não quiser preencher o arquivo com nada, touch
criará um novo arquivo vazio (ou atualizará o registro de data e hora de um já existente).
Se você quiser "criar" estritamente um novo arquivo, incluindo seu caminho, uma função / script do shell auxiliar pode ser útil:
fcreat(){
while (( "$#" )); do
[ ! -f "$1" ] && {
mkdir -p "$(dirname "$1")";
touch "$1";
}; shift
done
}
Uso:
$ fcreat location1/i/want/file1 location2/i/want/file2
$ tree
$ tree
.
├── location1
│ └── i
│ └── want
│ └── file1
└── location2
└── i
└── want
└── file2
fcreat : Eu não sei se estou me tornando um especialista em Unix ou se estou perdendo minha capacidade de soletrar.