[linux] Linux에서 이미 존재하고 보호되는 파일을 비우는 ( “자르기”) 방법은 무엇입니까?

자주 잘라야하는 내 서버에 error.log라는 파일이 있습니다. 파일에 대한 rw 권한이 있습니다. vi에서 파일 열기> 모든 콘텐츠 삭제> 작업 저장 (분명히). 하지만 아래를 시도하면

cat /dev/null > error.log

나는 메시지를 받는다

File already exists.

분명히 실수로 파일을 덮어 쓰는 것을 방지하기 위해 서버에서 일종의 구성이 수행됩니다. 누구든지 단일 명령으로 파일을 “자르는”방법을 말할 수 있습니까?



답변

당신은이 noclobber옵션을 설정합니다. 오류는 csh에서 발생한 것처럼 보이므로 다음을 수행합니다.

cat /dev/null >! file

내가 틀렸고 bash를 사용하고 있다면 다음을 수행해야합니다.

cat /dev/null >| file

bash에서는 다음과 같이 줄일 수도 있습니다.

>| file


답변

함수 자르기를 사용할 수도 있습니다.

$truncate -s0 yourfile

권한이 거부 된 경우 sudo를 사용하십시오.

$sudo truncate -s0 yourfile

도움말 / 매뉴얼 : man truncate

우분투 Linux에서 테스트 됨


답변

이것은 파일 크기를 0으로 설정하기에 충분합니다.

> error.log


답변

저의 선배 동료는 다음과 같은 점을 인정합니다.

:> filename

이것은 로그 파일을 손상시키지 않으므로 예를 들어 syslog에서도 사용할 수 있습니다.


답변

false | tee fileToTruncate

잘 작동 할 수 있습니다


답변

sudo는 이후 작동하지 않습니다 리디렉션 > I 등, tee이 목적을 위해 명령

echo "" | sudo tee fileName


답변

누구나이 명령을 시도하여 Linux 시스템 에서 파일을자를 수 있습니다.

이것은 모든 형식에서 확실히 작동합니다.

truncate -s 0 file.txt