Se você souber de qualquer outro arquivo não vazio no sistema, então com POSIX sed :
sed -e 's/.*/hello world/' -e 'wtarget' -e q otherfile
Com o GNU sed e apenas o seu próprio arquivo não vazio, você pode usar:
sed -i.bak -e '$ihello world' -e 'd' foo
Com BSD sed , isso funcionaria:
sed -i.bak -e '$i\
hello world' -e d foo
Se você não estiver usando um shell, presumivelmente o linebreak não é um problema.
Com ex , se o arquivo de destino existir:
ex -c '0,$d' -c 's/^/hello world/' -c 'x' foo
Isso exclui tudo no arquivo, substitui a primeira linha por "hello world", depois escreve e sai. Você poderia fazer a mesma coisa com vi no lugar de ex . Não são necessárias implementações para suportar várias opções de -c , mas elas geralmente são. Para muitas implementações de ex , o requisito de que o arquivo já exista não é imposto.
Além disso, com awk :
awk -v FN=foo -v STR="hello world" 'BEGIN{printf(STR) > FN }'
irá escrever "hello world" para o arquivo "foo".
Se houver arquivos contendo os bytes desejados em locais conhecidos, você poderá montar um byte by byte de arquivo em vários comandos com dd (nesse caso, alphabet contém o alfabeto, mas pode ser um mix de arquivos de entrada):
dd if=alphabet bs=1 skip=7 count=1 of=test
dd if=alphabet bs=1 skip=4 count=1 seek=1 of=test
dd if=alphabet bs=1 skip=11 count=1 seek=2 of=test
dd if=alphabet bs=1 skip=11 count=1 seek=3 of=test
dd if=alphabet bs=1 skip=14 count=1 seek=4 of=test
cat test
hello
A partir daí, apenas cp regular funcionará ou você poderá colocá-lo no local para começar.
Menos comumente, o comando mispipe de moreutils permite construir um canal sem shell:
mispipe "echo 1" "tee wtarget"
é equivalente a echo 1 | tee wtarget , mas retorna o código de saída de echo . Isso usa a função system() internamente, o que não estritamente requer um shell para existir.
Por fim, perl é um comando comum e permite que você grave programas arbitrários para fazer o que quiser na linha de comando, assim como python ou qualquer outra linguagem de script comum. Da mesma forma, se um shell não estiver "executando", mas existir, sh -c 'echo 1 > target' funcionará bem.