cat package.yaml > package.yaml
위의 내용은 잘려서 package.yaml
파일이 비어 있게 됩니다. 즉, cat
빈 출력이 됩니다.
파일 잘림을 방지하는 방법은 무엇입니까? 임시 파일을 사용하는 것 외에 다른 방법은 없나요? 어쩌면 변수일까요?
답변1
파일의 내부 편집을 허용하는 모든 유틸리티는 내부적으로 결과를 임시 파일에 쓴 다음 작업이 완료된 후 원본 파일을 해당 임시 파일로 바꾸는 방식으로 이를 수행합니다.
문서할 수 있는내부 수정이 가능하지만 기존 데이터를 덮어쓰거나 파일 길이를 연장하는 것만 가능합니다. 이는 dd
다음과 같은 유틸리티를 사용하여 수행할 수 있습니다.
$ cat file.txt
hello world
abc abc 123 123
$ cat insert.txt
hello!
$ dd if=insert.txt of=file.txt bs=1 seek=6 conv=notrunc
7+0 records in
7+0 records out
7 bytes transferred in 0.000 secs (30918 bytes/sec)
$ cat file.txt
hello hello!
bc abc 123 123
여기서는 insert.txt
먼저 파일에서 6바이트 앞을 보고(공백 건너뛰기) 내용을 수정하여 내용을 삽입합니다. 쓰기 작업이 끝날 때 출력 파일이 잘리는 것을 방지합니다.file.txt
hello
conv=notrunc
생략 하면 if=insert.txt
키보드를 통해 어떤 텍스트라도 삽입할 수 있습니다. 여기서 "삽입"은 실제로 잘못된 용어입니다. "덮어쓰기"가 무슨 일이 일어나고 있는지에 대한 더 나은 설명일 수 있습니다(끝에 개행 문자가 두 번째 줄의 첫 번째 문자를 덮어쓰는 것을 참조하세요 insert.txt
).
하지만 이런 식으로 파일을 편집하고 싶지는 않습니다.