IDL/Miscellaneous

"IDL에는 pwd 명령이 없나요?"

이상우_IDL 2018. 4. 12. 18:34
728x90
반응형

오늘 올릴 내용의 제목을 조금 자극적(?)으로 해봤습니다. 아마 pwd라는 명령은 Mac OS(터미널 모드), 리눅스, 유닉스 등과 같은 OS를 사용하시는 분들에게는 익숙할 것이라고 생각합니다. 아시다시피 이 명령은 유저가 현재 위치한 디렉토리가 어디인지를 알려주는 역할을 합니다. 예를 들어 Mac OS의 터미널 프롬프트상에서 이 명령을 실행해보면 다음과 같이 현재 위치에 해당되는 디렉토리 경로를 알려줍니다.


SWLee:~ Sangwoo$ pwd

/Users/Sangwoo


그런데 이와 유사한 기능을 IDL 내에서도 사용할 수 있으면 좋겠단 생각이 들 경우가 있습니다. 사실 IDL을 사용하는 와중에도 현재 작업중인 디렉토리가 어디인지를 명시적으로 확인하는 것이 필요할 경우들이 종종 있기 때문입니다. 그러나 IDL에는 pwd라는 명령은 없습니다. 따라서 커맨드 입력창에서 이 명령을 실행해봤자 다음과 같이 존재하지 않는 명령이라는 에러 메시지만 나오게 됩니다.


IDL> pwd

% Attempt to call undefined procedure: 'PWD'.

% Execution halted at: $MAIN$          


그렇다면 pwd는 없다하더라도 pwd에 준하는 기능은 IDL에 없을까요? 당연히 있습니다. 다음과 같이 해주면 됩니다.


IDL> CD, CURRENT=dir

IDL> PRINT, dir

/Users/Sangwoo/Documents/IDL


이와 같이 CD라는 명령을 CURRENT 키워드와 함께 사용하면 됩니다. CD 명령은 그 이름에서 짐작할 수 있듯이 "Change Directory"의 의미를 갖는, 즉 특정 디렉토리로의 이동을 목적으로 사용되는 명령입니다. 원래는 다음과 같이 옮겨가고자 하는 디렉토리의 이름을 문자값 인자로 주면서 사용합니다. 만약 현재 디렉토리 내에 data라는 이름의 하위 디렉토리가 있어서 그 디렉토리로 이동하고자 한다면 다음과 같이 해주면 됩니다.


IDL> CD, 'data'


물론 이 상태에서 아까와 같이 현재의 디렉토리 위치를 확인해보면 다음과 같습니다.


IDL> CD, CURRENT=dir

IDL> PRINT, dir

/Users/Sangwoo/Documents/IDL/data


이와 같이 CD 명령은 특정 디렉토리로의 이동을 위하여 사용할 수도 있고, CURRENT 키워드를 함께 사용하면 이 키워드에 지정된 변수를 통하여 현재 위치한 디렉토리 경로를 문자값의 형태로 가져올 수도 있게 해줍니다. 만약 한 단계 위의 상위 디렉토리로 되돌아가려면 다음과 같이 하면 됩니다.


IDL> CD, '..'


그리고 이동하고자 하는 디렉토리를 상대 경로가 아닌 절대 경로로 주는 것도 당연히 가능합니다.


IDL> CD, '/Applications/harris/IDL87'


물론 윈도우즈 OS에서라면 다음과 같은 형태가 되겠지요.


IDL> CD, 'C:\Applications\harris\IDL87'


사실 CD와 같은 명령은 IDL상에서 OS로의 접근을 가능하게 해주는 여러 종류의 명령들 중 하나입니다. 이와 관련된 좀 더 자세한 내용은 IDL 도움말에서 Routines (by Topic)의 Operating System Access이라는 섹션에서 잘 소개가 되어 있습니다. 여기서는 유사한 종류의 다른 명령들(FILE_MKDIR, FILE_MOVE, FILE_COPY 등)에 대한 자세한 내용들도 보실 수 있습니다. 이러한 OS 접근용 기능들을 잘 활용하면 좀 더 폭넓은 작업이 가능하므로 관심있게 봐두시길 권해봅니다.

반응형