2013-03-11 5 views
0

을 명령 "Gdate"을 이해하지 마십시오 나는 리눅스에서이 쉘 스크립트 유지해야합니다는 쉘 스크립트의 리눅스

export DAYDAY=`gdate --date "30 days ago" +"%Y%m%d"` 
if [ -d $TMP/AA/$DAYDAY]; then 
    rm -r $TMP/AA/$DAYDAY 
fi 

을하지만 그것을 실행할 수 없습니다. 'gdate'를 찾을 수 없습니다. 이 코드는 정확히 30 일 이전의 로그 디렉토리를 지우는 것입니다.

+0

'man gdate' –

+0

@ZagorulkinDmitry에 쓰기 - gdate라는 명령이 없으면 'man gdate'가 작동하지 않습니다. 내 시스템에서 : 'gdate 수동 입력 없음' – tjameson

+0

http://www.opensource.apple.com/source/X11misc/X11misc-20/pkg-config/pkg-config-0.25/glib-1.2.10/gdate. c –

답변

4

Linux가 아닌 다른 시스템에서는 유틸리티의 GNU 버전을 g (예 : gmake, gtar 등) 접두사로 설치하는 것이 일반적입니다. 이 경우, 이것은 date 명령의 GNU 풍미를 나타낼 가능성이 높습니다. 그래서, 당신은 리눅스에 있기 때문에, 단지 date로 변경 :

export DAYDAY=`date --date "30 days ago" +"%Y%m%d"` 
if [ -d $TMP/AA/$DAYDAY]; then 
    rm -r $TMP/AA/$DAYDAY 
fi 
+0

고마워. 내가 바꿔서 실행할 수있어. Im 초보자가 리눅스를 배우고 배우기가 매우 어렵습니다. 다시 한 번 고마워. FatalError – Futureman

2

나는 90 %의 맥 사무실에서 리눅스에서 작동 및 동료 '스크립트의 상당수는 gsedgdate 같은 것들을 참조. 내가 $OSTYPE에 스위치가 제대로이 문제를 해결할 수없는 경우 나는 결국 항복이 한 : date

sudo ln -s $(which date) /bin/gdate 

이 심볼릭 링크 gdate합니다. gdate (또는 gsed, gtar 또는 gmake가), GNU/리눅스 에 설치되어있는 버전을 분명히 GNU 버전이다가 전혀 없습니다 때문에

이것은 매우 안전합니다.

물론 명령의 별명을 지정할 수도 있지만 사용자와 셸을 전달합니다. 사실상 전체 프로그램의 앨리어싱입니다.