Windows 환경에서 간략하게 자동화를 하고 싶은 경우 저는 Powershell 보다는 batch 파일을 사용하곤 합니다.

batch 파일을 사용하다 보면 batch 파일 내에서 또 다른 batch 파일을 실행하고 싶은 경우가 있는데

이런 경우에는 call 이라는 키워드를 사용 합니다.

그냥 batch 파일 이름을 그대로 쓰면 현재의 스크립트는 더 이상 실행되지 않습니다.

아래 주소에 call 에 대해 이해하기 좋은 예가 있더군요.


Script-one.cmd 파일은 아래와 같고

REM --- Script-one.cmd ---
@echo off
echo Script one
call Script-two.cmd REM 또 다른 batch 파일 실행
echo Script one again
exit /b

Script-two.cmd 파일은 아래와 같은 경우

REM --- Script-two.cmd ---
@echo off
echo Script two
exit /b

Script-one.cmd 을 실행 시키면 중간에 Script-two.cmd 를 호출하게 됩니다.

그리고 Script-two.cmd 파일의 실행이 다 종료 되면 Script-one.cmd 의 나머지 부분들이 실행 됩니다.

결과는 다음과 같습니다.

>REM --- Script-one.cmd ---
Script one
Script two
Script one again



리눅스 사용자들은 홈 폴더에 대한 개념이 명확 하지만 윈도우 사용자들은 홈 폴더에 대한 개념이 명확하지 않은 경우가 많이 있습니다.

 

요즘 나오는 컴퓨터 운영체제들은 멀티유저용인 만큼 사용자에 따른 홈 폴더 사용은 필수 입니다.

 

Python 사용시 현재 사용자의 home 폴더에 접근 하는 방법에 대해 소개하려 합니다.

 

현재 제 컴퓨터는 Windows 7 64비트 입니다. 그리고 계정은 Administrator 입니다.

 

현재 사용자의 홈 폴더를 확인 하는 방법은 CMD 창에서 다음과 같이 echo %userprofile% 이라고 타이핑 하면 나옵니다.

 


 

컴퓨터가 달라지면 달라지면 당연히 홈 폴더 역시 바뀌게 될 겁니다.

 

따라서 홈 폴더에 대한 접근은 하드 코딩이 아닌 다음과 같은 코딩을 통해 접근 하는 게 좋다고 생각됩니다.

 

from os.path import expanduser

if __name__ == '__main__':

    home = expanduser("~")

    print home

 

위 코드를 실행해보면~ 다음과 같이 자신의 홈 폴더에 접근 할 수 있습니다.

 


리눅스 데스크톱 사용시 요즘은 GUI 을 많이 사용하곤 하지만

 

그래도~ 리눅스는 터미널이죠~

 

보통의 경우 리눅스 터미널은 bash shell 을 사용하곤 하는데~ bash 에서 cd(change directory) 명령을 통해 디렉터리를 자주 왔다리 갔다리 하는데… 이게 참… 불편합니다.

 

그래서 좀 찾아보니 역시 어딘가에 답은 있더군요. 아래 글을 보니 commacd 라는 툴에 대해 소개 하더군요.

 

http://shyiko.com/2014/10/10/commacd/

 

말 그래도 ,( comma) 을 사용하여 directory 를 이동하는 건데~ 이게 써보니 무지하게 획기적이더군요.

 

commacd의 공식 사이트는 아래 주소와 같습니다.

 

https://github.com/shyiko/commacd

 

저는 지금 윈도우에서 사용 중이라 Cygwin 에서 진행을 해 봤습니다. 물론 리눅스에서도 똑같이 하면 됩니다.

 

위 페이지에서 Installation 부분을 보시면 아시겠지만 일단 curl 이 설치가 되어 있어야 합니다.

 

https://github.com/shyiko/commacd#installation

 

curl 이 설치되어 있는 분은 위 설명 대로 아래 명령어를 통해 설치하면 되고~

 

curl https://raw.githubusercontent.com/shyiko/commacd/master/commacd.bash -o ~/.commacd.bash && \

echo "source ~/.commacd.bash" >> ~/.bashrc

 

저처럼 아래와 같이 Cygwin에서 wget을 사용하여 설치 해도 됩니다. 주의할 점은 아래와 같이 –O 을 써야 한다는 겁니다.

 

wget https://raw.githubusercontent.com/shyiko/commacd/master/commacd.bash -O ~/.commacd.bash && \

echo "source ~/.commacd.bash" >> ~/.bashrc

 

 

vim ~/.bashrc 명령을 통해 .bashrc 파일을 확인 하면 아래 그림과 같이 source ~/.commacd.bash 라는 명령어가 추가 된 것을 확인 할 수 있습니다.

다음으로 bashrc 파일을 실행 합니다.

source ~/.bashrc

 

이제 commacd 을 사용하는 일만 남았군요.

 

Usage 을 보시면 간단한 사용 방법을 아실 텐데요~

 

https://github.com/shyiko/commacd#usage

 

주 사용방법은 , ,, ,,, 을 사용하는 겁니다.

 

, 는 하위 폴더로 가는 거고~ ,, 는 상위 폴더~ ,,, 는 상하위로 가는 명령어입니다.

 

, d 라는 명령어를 통해 현재 폴더 하위의 d 가 들어가 있는 폴더의 목록을 보여 주면 숫자로 선택 하면 됩니다.

 

, c 을 하면 c 로 시작하는 폴더가 나오고~ , p 라고 하면 p 로 시작하는 폴더가 나오죠~

 

그 하위로 갈 때도 일일이 path 을 다 치지 않고~ /usr/local/Cellar 폴더 가려면 , /u/l/ce 와 같이 일부만 쳐도 들어가더군요.

 

현재 저는 /cygdrive/c/Users/Administrator/Downloads 폴더에 있습니다. 현재 폴더의 상위 폴더인 /cygdrive/c 로 가기 위해서는

 

,, c 라고만 하면 상위에서 c 가 들어있는 최 하위 폴더로 가게 됩니다.

 

다음으로 ,,, 명령을 실행 해 볼 건데요. ,,, 명령을 통해 최상위 폴더 아래의 임의의 폴더로 접근 할 수 있습니다.

 

현재 저는 다음과 같이 /cygdrive/c/Program Files/AhnLab 폴더에 잇습니다.

 

그런데 /cygdrive/c/Windows 폴더에 접근 하고 싶다고 해보죠~

 

그럼 아래 그림과 같이 간단하게 ,,, c/win 라고만 타이핑 하면 해당 패턴을 가진 폴더가 나오고~ 아래 그림과 같이 0을 선택하여 해당 폴더로 이동 할 수 있습니다.

 

commacd 아~ 너무 편하고 좋네요. cd 의 혁명인 것 같습니다. 앞으로는 commacd 없으면 못 살 거 같네요.


+ Recent posts