대학(원)을 떠나 회사에 다닌 지도 벌써 4년이 다 되어 간다. 하지만 여전히 커맨드라인 환경(on *nix)이 몸에 더 익은 건 어쩔 수 없나 싶다. Win32 GUI 환경의 이런저런 개발 도구를 쓰긴 하지만, 정작 자주 하는 작업은 죄다 커맨드라인으로 하게 되더라.
예를 들어, 소스 코드를 수정한 후 커밋하기 까지 다음과 같은 과정을 거친다.
- 소스 트리 전체 리빌드
- 소스 트리 내의 유닛 테스트 실행
- 소스 트리 diff 보기
- 3의 결과를 보면서 커밋 로그 쓰기
이 작업을 어떻게 하느냐고?
1, 2는
msbuild build-configuration.xml /t:Clean;Build;Test
로 한다. *nix 에서 하는
make clean; make test
의 느낌으로?
3은 이렇게 한다. 소스 트리 diff 보는 건 꽤 긴 시간 동안 tortoise svn 을 써왔지만, 가장 만족스러운 diff-viewer 는 vim 이다. 그래서 아래처럼 매크로를 만들어놓고 쓴다. ((실제로는 다른 설정들 때문에 설정 디렉터리 회피 ( –config-dir=nul )나, vim 닫을 때 “저장 하시겠습니까?”류의 메시지를 피하기 위한 set nomodified 같은 게 잔뜩 들어있다 ))
svn diff –x –pbu %* | gvim -c “set ft=diff” –
이게 변경 사항 있는 부분 왔다갔다하기도 편하고, VisualStudio 나 기타 편집할 때 쓰는 툴(=vi 혹은 그에 상응하는 에디터)과도 일치해서 이런 식으로 쓴다.
4의 커밋 로그는 저거 보면서 svn commit 해서 뜨는 gvim 혹은 vim으로 작성 ((set SVN_EDITOR=gvim –f 로 해 둠)) 한 후, 파일을 저장하면서 커밋한다.
svn 저장소가 커지면서 좀 느리다고 느낀 이후로 커맨드라인으로 최대한 이주하는게 내 방침이 되었다. 그리고 예전 같은 편안함을 다시 느끼게 되서 꽤나 만족스럽다. 역시 익숙한게 최고?
좀 과한 외삽일진 모르겠지만, 이 때 들인 노력이 얼마 안된다는 걸 생각하면, 이거 말고 다른 영역의 프로그래밍이라도, *nix 쪽에 뿌리를 둔 프로그래머라면 MS Windows 환경에서도 약간의 삽질(?)과 수고를 통해 좀 더 편안하게 작업할 수 있을 것 같다.
이것 저것 자동화할 땐 명령줄이 최고죠. ㅎㅎ
그렇습니다.
작고 간단한 기능을 할 때 커맨드라인만한게 없죠 크크
리눅스 플밍하다 윈도우 플밍할 때, 일단 콘솔 기반으로 기능을 하는 프로그램을 만들고, GUI는 그 프로그램을 그저 래핑하는 방식으로 자꾸 짜게되는 버릇이 있습니다. 문제라고 생각하지만 전 아직도 이게 좋네요.
저도 그렇습니다.
예전에 도스 쓰다가 윈도우95 처음 쓰기 시작했을때,
파일 복사건 이동이건 압축 풀기건 전부 도스창 띄워서 했던 생각이 나네요.
그게 더 편하고 왠지 윈도우로 하는건 믿음이 안가던… :)
요즘은 윈도우는 거의 안 쓰고 리눅스만 사용해서
커맨드라인과 GUI를 다 쓰는데, 서버쪽은 X-Window 가 없으니
무조건 커맨드라인 쓰구요.
저도 커맨드라인이 빨리 되고 편하긴한데
일부 작업, 가령 폴더안에 여러 파일중에 특정파일 다수를 선택해야 할때나
기타등등의 경우는 GUI가 더 편해서 이걸 쓰게 되더군요.
그리고 GNOME DO 같은 유틸을 쓰면 프로그램 실행도
커맨드라인 만큼 혹은 그 이상 빠르구요.
그래도 확실히 커맨드라인이 더 편하고 빠르고 강력해서
용량 많이 차지하는 폴더 검사할때는
현재 위치에서 메가나 기가단위 이상의 용량을 차지하는 폴더들 순서대로
정렬하는 이런 커맨드를 만들어 쓰는게 훨씬 편하죠.
du -sh .[^.]* * | grep -e ^[0-9]*[.]*[0-9]*[MG] | sort -n
(제가 대충 만들어 쓰는거라, 여기 오시는 분들중에
혹시 더 좋은거 있으시면 공유 좀…^^; )
대부분 커맨드라인이 빠르긴 하죠. 하지만 Kevin 님 말씀처럼 일부를 선택적으로 고르거나 할 때는 GUI 가 편하다는데는 저도 적극 동의 합니다.
다만 프로그래밍(?)적으로 뭔가 할 때는 *nix filter 들과 같이 뭔가 하는게 빠르고, 편하죠(?).
저 스크립트보다 더 간단하게는 아마 안될거 같은데요 :)