저는 일반적으로 Linux를 처음 접했기 때문에 특정 명령의 해야 할 일과 하지 말아야 할 일에 대해 잘 모릅니다.
파일을 만들고 메모하고 싶습니다.
touch file.txt `
파일을 생성할 뿐만 아니라 다음도 수행합니다.
echo >> file.txt
그리고
> file.txt
"">"와 "touch"를 사용하여 만든 파일은 모두 0바이트이지만 "echo"를 사용하여 만든 파일은 1바이트입니다.
파일 크기가 다른 이유는 무엇입니까? 파일을 만드는 가장 좋은 방법은 무엇입니까? 파일을 만들 때 "touch" 또는 "">" 대신 "echo"를 사용해야 하는 경우는 언제입니까?
답변1
파일 생성에 대한 일반적인 질문은 다음을 참조하세요.파일을 생성하는 쉘 명령이 없는 이유는 무엇입니까?
> file
와 함께 echo >> file
,껍데기파일이 아직 존재하지 않으면 파일이 생성됩니다.
를 사용하면 > file
파일이 이미 있으면 잘립니다. 명령이 지정되지 않았으므로 파일에 아무 것도 기록되지 않으며 파일은 비어 있게 됩니다.
echo
, 매개변수 없이 빈 줄을 인쇄합니다. 따라서 출력에는 줄 끝 문자, 일반적으로 개행 문자(LF, \n
)가 포함됩니다.
% echo | od -c
0000000 \n
0000001
따라서 를 사용하면 echo >> file
파일에 1바이트를 쓸 수 있습니다. 파일이 이미 존재하는 경우 (덮어쓰기) >>
대신 (추가)를 사용했기 때문에 바이트가 추가됩니다 >
.
touch
파일이 아직 존재하지 않으면 파일을 생성하고, 그렇지 않으면 파일의 타임스탬프를 업데이트합니다. touch
파일의 내용은 변경되지 않으므로 파일이 이미 존재하고 일부 내용이 포함된 경우 touch
.
어떤 것을 사용하고 싶은지는 원하는 효과에 따라 다릅니다.
답변2
무루의 대답행동의 차이가 잘 설명되어 있습니다.
요구 사항에 따라 동일한 목표를 달성하는 방법이 여러 가지 있을 수 있습니다. 이 경우에는 "맛"이나 가독성의 문제일 수 있습니다. 나는 선호한다 touch
. 틀림없이 더 안전합니다. 파일이 이미 존재하고 해당 내용을 잃고 싶지 않은 경우입니다. 또한 잊을 수 없습니다.
스크립트에 명령을 작성하는 경우 일반적인 규칙은 사람들이 코드를 작성하는 것보다 코드를 더 많이 읽는다는 것입니다. 즉, 당신은 컴퓨터뿐만 아니라 미래의 자신을 포함하여 인간과도 소통하고 있습니다. :-). 다음 코드 줄이 약간 명확하지 않을 수 있습니다.
> file
똑같은 동작이 필요한 경우에는 > file
이라는 명령도 있습니다 truncate
. truncate
GNU coreutils에서 제공됩니다.