빈 파일을 만들 때 ‘: >> file’보다 ‘touch file’을 선호하는 이유는 무엇입니까? >> file 기능적으로 다음과 같은

지금까지이 작업을 수행 할 수 있다는 것을 절대 깨닫지 못했습니다.

: >> file

기능적으로 다음과 같은 것 같습니다.

touch file

대부분의 리소스가이 셸 내장에 대한 터치를 선호하는 이유가 있습니까?



답변

당신은 사용할 필요가 없습니다 :; 당신은 > file(적어도 bash다른 쉘은 다르게 행동 할 수 있습니다) 할 수 있습니다 .

실질적인 측면에서, 여기에는 실질적인 차이가 없습니다 (하지만 호출하는 데 드는 약간의 오버 헤드가 문제임 /bin/touch).

touch그러나 내용을 변경하거나 지우지 않고 이미 존재하는 파일의 타임 스탬프를 수정하는 데 사용할 수도 있습니다. 또한 이미 존재 > file하는 file것을 날려 버릴 것 입니다. 대신을 사용하여 해결할 수 있습니다 >> file.

또 다른 차이점 touchtouch foo bar baz quux각 파일마다 고유 한 리디렉션이 필요한 리디렉션보다 더 간결한 구문으로 여러 파일을 한 번에 생성 (또는 타임 스탬프 업데이트) 할 수 있다는 것입니다 (예 🙂 >foo >bar >baz >quux.

사용 touch:

$ touch foo; stat -x foo; sleep 2; touch foo; stat -x foo
  File: "foo"
  Size: 0            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (991148597/redacted)  Gid: (1640268302/redacted)
Device: 1,5   Inode: 8597208698    Links: 1
Access: Fri May 25 10:55:19 2018
Modify: Fri May 25 10:55:19 2018
Change: Fri May 25 10:55:19 2018
  File: "foo"
  Size: 0            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (991148597/redacted)  Gid: (1640268302/redacted)
Device: 1,5   Inode: 8597208698    Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:55:21 2018
Change: Fri May 25 10:55:21 2018

리디렉션 사용 :

$ > foo; stat -x foo; sleep 2; >> foo; stat -x foo
  File: "foo"
  Size: 0            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (991148597/redacted)  Gid: (1640268302/redacted)
Device: 1,5   Inode: 8597208698    Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:56:25 2018
Change: Fri May 25 10:56:25 2018
  File: "foo"
  Size: 0            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (991148597/redacted)  Gid: (1640268302/redacted)
Device: 1,5   Inode: 8597208698    Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:56:25 2018
Change: Fri May 25 10:56:25 2018


답변

touch별도의 특수 문자를 입력하지 않고도 한 번에 여러 파일을 이동할 수 있기 때문 입니다. 여기에는 괄호 확장과 같은 것들이 포함됩니다 touch file{1,2,3,4}.

또 다른 문제는 튜토리얼을 작성할 때 독자가 주제에 대해 잘 모르는 것을 인식하는 것이 중요하다는 것입니다. 문자가 아닌 문자가 이상하게 보이는 조합보다 간단한 명령이 훨씬 이해하기 쉽습니다. 내가 모르는 캐주얼 쉘 사용자의 숫자가 기대 :정말하지 않는 단순한 이유이며, 이렇게 아무것도. > foo명령이없는 일반의 경우와 마찬가지로 : 리디렉션이 무엇인지 알고 있더라도 소스없는 리디렉션은 직관적이지 않을 수 있습니다.

또한 여기서는 unix.se에서 프롬프트를 표시하기 위해 선행 달러 기호로 명령 샘플을 작성하는 경우가 많습니다. 줄의 시작 부분에 특수 문자가 혼동 될 수 있습니다. >기본 프롬프트의 일부로 사용 되는 시스템 및 쉘이 있습니다 .


답변

글쎄, 나에게 가장 중요한 이유는 가독성이다. 으로 touch file당신이 무슨 일이 일어나고 있는지, 사람도 꽤 쉘 스크립트 무슨 일이 일어나고 있는지 알고에서 교육을하지. 그렇지 않은 경우 쉽게 수행 man touch하고 볼 수 있습니다.

A FILE argument that does not exist is created empty

애매한 물건 등으로 :하고 >, 그것은 무슨 일이 일어나고 있는지 더 어려운, 그리고 진짜 장점은 없다 같은 것을 사용할 필요가 없습니다.


답변

/ tmp의 일부 마커 파일이 작성되고 있음을 기억하는 이전 쉘 스크립트 중 하나를 검색한다고 가정하십시오. “touch”라는 단어에 대한 모든 * .sh 파일을 쉽게 잡을 수 있습니다. 검색 할 정확한 파일 이름을 모르는 경우 콜론을 움켜 쥐면 많은 오 탐지가 발생합니다.


답변