cat 또는 cp vs touch를 사용하여 /dev/null 작업

cat 또는 cp vs touch를 사용하여 /dev/null 작업

에 대한 튜토리얼에서공개 키 인프라저자는 설정 시 사용할 데이터베이스를 설정합니다.루트 인증 기관:

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

/dev/null나는 그 안에 아무것도 들어 있지 않고 어디에 들어가도 아무 것도 인쇄하지 않는 특별한 파일이라는 것을 알고 있습니다 echo.

작성자가 그렇게 하려고 하는 것 같아서 테스트하기 위해 작은 예를 만들었습니다.

$ 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
  • foo빈 디렉토리가 있다고 가정할 때 , bar또는 baz? 파일 사이에 차이점이 있습니까 ?
  • 우리가 알고 있는 파일을 설정하기 위해 cpfrom 을 사용하는 것이 비어 있습니까 ?/dev/null

답변1

모두 동일한 빈 파일이 생성됩니다.

그냥 사용해도 됩니다 >baz2. 제 생각에는 /dev/null존재 여부 에 의존하지 않고 추가 명령/프로세스 호출을 포함하지 않기 때문에 좀 더 우아합니다 .

touch와 달리 의 결과는 이미 존재하고 일부 콘텐츠가 있더라도 >baz2빈 파일이 된다는 점을 명심하세요 .baz2

$ 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
$

답변2

차이점은 파일이 이미 존재하고 내용이 있는 경우 어떻게 되는지에 있습니다.

예를 들어 콘텐츠가 포함된 파일은 다음과 같습니다.

$ 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

touch명령이 파일을 비운 것이 아니라 비 웠음을 알 수 있습니다 cp.

이제 일반적으로 다음 :명령을 대신 사용할 수 있습니다.

: > 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: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

그러나 교육 노트와 과정 작업에서는 읽기가 더 어렵거나 오타로 간주되거나 유사할 수 있습니다. 때로는 더 긴 명령 문자열을 사용하는 것이 더 좋습니다 :-)

관련 정보