Em um tutorial sobreinfraestrutura de chave públicao autor configura um banco de dados para trabalhar ao configurar umAutoridade de certificação raiz:
cp /dev/null ca/root-ca/db/root-ca.db
cp /dev/null ca/root-ca/db/root-ca.db.attr
echo 01 > ca/root-ca/db/root-ca.crt.srl
echo 01 > ca/root-ca/db/root-ca.crl.srl
Eu sei que /dev/null
é um arquivo especial que não contém nada e não é impresso em nenhum lugar se você echo
entrar nele.
Parece que é isso que o autor está tentando fazer, então fiz um pequeno exemplo para testar:
$ ls
$ touch foo
$ cp /dev/null bar
$ cat /dev/null > baz
$ ls
bar baz foo
$ ls -l
total 0
-rw-r--r-- 1 mbigras 1264914557 0 Apr 14 14:35 bar
-rw-r--r-- 1 mbigras 1264914557 0 Apr 14 14:35 baz
-rw-r--r-- 1 mbigras 1264914557 0 Apr 14 14:35 foo
- Dado que temos um diretório vazio, há alguma diferença entre os arquivos
foo
,bar
oubaz
? - O objetivo é
cp
apenas/dev/null
configurar um arquivo que sabemos que está vazio?
Responder1
Todos resultam no mesmo arquivo vazio.
Poderia até usar apenas >baz2
. Um pouco mais elegante na minha opinião, pois não depende da /dev/null
presença e não envolve a invocação de comandos/processos adicionais.
Tenha em mente que diferentemente de touch
, o resultado de >baz2
será um arquivo vazio mesmo que baz2
já exista e tenha algum conteúdo.
$ touch foo
$ cp /dev/null bar
$ cat /dev/null >baz
$ >baz2
$ ls -l
total 0
-rw-rw-r-- 1 ec2-user ec2-user 0 Apr 14 21:40 bar
-rw-rw-r-- 1 ec2-user ec2-user 0 Apr 14 21:40 baz
-rw-rw-r-- 1 ec2-user ec2-user 0 Apr 14 21:40 baz2
-rw-rw-r-- 1 ec2-user ec2-user 0 Apr 14 21:39 foo
$
Responder2
A diferença está no que acontece se o arquivo já existir e tiver conteúdo:
Por exemplo, aqui está um arquivo com conteúdo:
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 6 Apr 14 18:06 ca/root-ca/db/root-ca.db
$ touch ca/root-ca/db/root-ca.db
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 6 Apr 14 18:06 ca/root-ca/db/root-ca.db
$ cp /dev/null ca/root-ca/db/root-ca.db
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 0 Apr 14 18:06 ca/root-ca/db/root-ca.db
Podemos ver que o touch
comando não esvaziou o arquivo, mas cp
sim.
Agora, normalmente, o :
comando pode ser usado:
: > ca/root-ca/db/root-ca.db
por exemplo
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 6 Apr 14 18:08 ca/root-ca/db/root-ca.db
$ : > ca/root-ca/db/root-ca.db
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 0 Apr 14 18:08 ca/root-ca/db/root-ca.db
No entanto, nas notas de treinamento e nos trabalhos do curso, isso pode ser mais difícil de ler, considerado um erro de digitação ou algo semelhante. Às vezes, usar uma string de comando mais longa é melhor :-)