2011-04-22 3 views
2

우분투에서 젠킨스 bash 스크립트를 OS X로 포팅하려고합니다. 리눅스 (원래는 GNU라고 생각합니다). chmod는 참조 파일에서 모드를 복사 할 수있는 --reference 옵션을 가지고 있습니다. OS X 용 코드를 찾고 있는데, 추가 패키지를 설치하지 않는 것이 좋습니다. 더 나은 플랫폼 간 솔루션이 될 것입니다.OS X에서 chmod --reference를 대체 하시겠습니까?

콘크리트 조각 :

# expand all the templates 
find "$OUTPUT_PATH" -name "*.template" | while read FILE ; do 
    sed \ 
     -e "s/%{NAME}/$OPTION_NAME/g" \ 
     -e "s/%{TITLE}/$OPTION_TITLE/g" \ 
     -e "s/%{VERSION}/$OPTION_VERSION/g" \ 
     -e "s/%{WHEN}/$OPTION_WHEN/g" \ 
      "$FILE" > "${FILE%.*}" 
    chmod --reference="$FILE" "${FILE%.*}" 
    rm -f "$FILE" 
done 

[편집], 합계 -c는 OS X

+2

크로스 플랫폼 쉘 스크립트를, 즉 좋은 :) –

답변

2

-c 옵션이없는 경우 OS의 X는 stat 명령을

# expand all the templates 
find "$OUTPUT_PATH" -name "*.template" | while read FILE ; do 
    savemod=$(stat -c "%a" "$FILE") 
    sed \ 
     -e "s/%{NAME}/$OPTION_NAME/g" \ 
     -e "s/%{TITLE}/$OPTION_TITLE/g" \ 
     -e "s/%{VERSION}/$OPTION_VERSION/g" \ 
     -e "s/%{WHEN}/$OPTION_WHEN/g" \ 
      "$FILE" > "${FILE%.*}" 
    chmod $savemod "${FILE%.*}" 

    rm -f "$FILE" 
done 

이있는 경우, 형식에서 man page of stat을 확인합니다. 비슷한 방법으로 파일의 권한/모드를 얻을 수 있습니다. FreeBSD의 통계에 형식 스위치를 사용하는 방법에 대한 어떻게

+0

'스탯 (1)의은의''-c' 옵션이 없습니다. –

+3

당신은'stat -r $ FILE | cut -f3 -d '''를 사용하여 8 진 권한 비트 맵을 얻습니다. '-r'은'struct stat'의 "raw"내용을 출력하고 세 번째 열은 파일 모드입니다. –

+0

@mu 나를 이길! 나는 맨 페이지를 읽고 있었다. :-P –

2

복사에 적절한 조합이 존재하지 않는 한 파일 절약 모드와 합계 -r의 조합 파일을 먼저 읽은 다음 셸 리디렉션으로 덮어 씁니다. 이렇게하면 원래 사용 권한이 보존됩니다.

3

:

stat -f "%p" ~/.bashrc 
stat -f "%Sp" ~/.bashrc 

stat -f "%u:%g:%p" ~/.bashrc 
+0

그건 좋은 제안입니다. 파일 모드 저장과 결합 –