지금까지는 이렇게 할 수 있다는 것을 몰랐습니다.
: >> file
기능적으로 다음과 유사해 보입니다.
touch file
대부분의 리소스가 이 내장 셸보다 터치를 선호하는 이유가 있나요?
답변1
을 사용할 필요도 없습니다 :
. > file
적어도 Windows에서는 bash
다른 셸이 다르게 동작할 수 있습니다.
실제로 여기에는 실질적인 차이가 없습니다(비록 을 호출하는 오버헤드는 작지만 /bin/touch
).
touch
그러나 콘텐츠를 변경하거나 삭제하지 않고 이미 존재하는 파일의 타임스탬프를 수정하는 데에도 사용할 수 있으며, 이미 존재하는 > file
모든 항목도 삭제됩니다 . file
를 사용하면 이 문제를 해결할 수 있습니다 >> file
.
또 다른 차이점은 touch
리디렉션보다 더 깔끔한 구문을 사용하여(예를 들어) 여러 파일을 한 번에 생성(또는 타임스탬프 업데이트)할 수 있다는 것입니다 touch 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
답변2
touch
별도의 특수 문자를 입력하지 않고도 여러 파일을 한 번에 처리 할 수 있기 때문입니다 . 여기에는 버팀대 확장 touch file{1,2,3,4}
과 같은 것이 포함됩니다.
또 다른 문제는 튜토리얼을 작성할 때 독자가 해당 주제에 대해 잘 알지 못할 수도 있다는 점을 인식하는 것이 중요하다는 것입니다. 간단한 명령은 알파벳이 아닌 문자의 이상하게 보이는 조합보다 이해하기 쉽습니다. :
실제로는 그렇지 않다는 단순한 이유 때문에 이것이 무엇인지 모르는 일반 쉘 사용자가 많이 있을 것으로 예상됩니다.하다아무것. 마찬가지로, 명령이 없는 일반 경우 > foo
: 리디렉션이 무엇인지 알더라도 리디렉션출처 없음직관적이지 않을 수도 있습니다.
또한 unix.se에서는 프롬프트를 표시하기 위해 달러 기호 앞에 명령 예제를 작성하는 경우가 많습니다. 줄 시작 부분의 특수 문자는 이와 혼동될 수 있습니다. (일부 시스템과 쉘에서는 이를 >
기본 프롬프트의 일부로 사용합니다.)
답변3
글쎄요, 제가 보기에 가장 큰 이유는 가독성입니다. 무슨 일이 일어나고 있는지 안다면 touch file
쉘 스크립팅에 대한 교육을 받지 않은 사람이라도 무슨 일이 일어나고 있는지 알 것입니다. 그렇지 않은 경우 다음을 수행하고 확인하는 것이 쉽습니다 man touch
.
A FILE argument that does not exist is created empty
:
및 와 같은 비밀스러운 내용을 사용하면 >
무슨 일이 일어나고 있는지 알기가 더 어렵고 실제 이점이 없기 때문에 사용할 필요가 없습니다.
답변4
당신이 오래된 쉘 스크립트를 검색하고 있는데 /tmp에 몇 개의 태그 파일을 생성한 것을 기억하고 있다고 상상해 보십시오. 모든 *.sh 파일에서 "touch"라는 단어를 찾는 것은 쉽습니다. 검색할 정확한 파일 이름을 모르는 경우 콜론을 검색하면 잘못된 긍정이 많이 생성됩니다.