git stripspace
모든 빌드(또는 사전 커밋 또는 수동)에서 모든 소스 코드 파일을 실행하여 불필요한 공백을 제거한 다음 표준 방식으로 코드 형식을 지정하고 싶습니다 .
그래서 나는 다음과 같은 것을하고 싶습니다
git stripspace < project/code.m > project/code.m
find -exec
그래서 나는 or을 사용할 수 있어야 한다고 생각했지만 'git Stripspace'를 좋아하지 않는 xargs
것 find
같습니다(아마도 < 또는 > 사이의 공백 때문일 것입니다). 그리고 동일한 파일 이름, 동일한 매개변수를 전달하는 방법을 모르겠습니다. 연속으로 두 번 올바르게 리디렉션(< >)합니다.
답변1
파일을 읽기 전에 파일이 손상되었습니다. 임시 파일이나 sponge
다음과 같은 유틸리티를 사용해야 합니다 .더 많은 유틸리티.
이 경우에는 또는 을 사용할 수 없습니다 find -exec
. xargs
명령과 파일 이름이 포함된 셸에 인수를 전달해야 합니다. 파일 이름 토큰(파일 이름으로 대체됨)이 별도의 인수가 될 것으로 예상합니다 xargs
. find
대신 루프를 사용할 수 있습니다.
임시 파일 사용:
find | while read file ; do
git stripspace < "$file" > tempfile
mv -f tempfile "$file"
done
그리고 sponge
:
find | while read file ; do
git stripspace < "$file" | sponge "$file"
done
답변2
Ex 모드에서 Vim을 사용할 수 있습니다:
ex -sc '%!git stripspace' -cx project/code.m
%
모든 행 선택!
명령 실행x
저장하고 닫습니다