2011-03-30 3 views
0

필자는 펄 스크립트를 사용하여 실습을하고 있는데, 매번 shebang을 타이핑 할 때마다 .pl 확장자와 새틴 파일을 가진 새로운 파일을 생성하는 기본 유닉스 스크립트를 만들기로 결정했다. 편집을 위해 파일을 엽니 다. 내가 시도한 것은 :펄 스크립트 파일에 shebang을 자동으로 삽입하는 유닉스 스크립트

alias ep "echo '#! /usr/bin/perl' >> perl/\!*.pl; emacs perl/\!*.pl;" 

그러나 파일이 존재하지 않으면 오류가 발생합니다. 나는 >>가 추가하거나 만들 것이라고 생각했기 때문에 이상하다고 생각했습니다. 그래서 >>가 변경되었습니다. 그러나이 파일은 존재하지 않습니다. 파일이 존재하면 오류로 인해 충돌합니다. if 문을 추가하려고했지만 구문 오류와 부적절한 오류도 발생했습니다. 나는 무엇을 위해 있었는지 :

alias ep "if [ ! -f perl/\!*.pl ] then echo '#! /usr/bin/perl' > perl/\!*.pl fi; emacs perl/\!*.pl;" 

나는 무엇이 누락 되었습니까? 나는 유닉스 스크립팅에 너무 익숙하지 않지만 일반적인 지식을 가지고있다.

답변

1

이렇게하면 안됩니다. 에 대한 고려하는 것들이 많이 있습니다

당신이 이맥스 대신 직접

확인이 그것을 할 수 있습니다 (정말 펄 파일이 등이 이미 존재하는 경우이다) : emacs skeletons and auto-insert

+0

완벽하게 작동합니다. 이맥스에서 .pl 파일에 매핑 된 자동 삽입을 설정하고 .pl 확장명을 추가하기 위해 스크립트를 변경했습니다. – awestover89

3

set -C (set -o noclobber라고도 함)이있는 것 같습니다.

리디렉션 연산자 >|을 사용하거나 set +C과 함께 옵션을 실행 취소하여 파일을 옮길 수 있습니다.

+0

이 있었다 정확한 문제. 나는 이미 존재한다면 파일을 덮어 쓰지 않으려 고하기 때문에 no clobber 옵션을 유지할 것입니다. 그러나 내 질문에 답해 주셔서 감사합니다. – awestover89

관련 문제