본문 바로가기

개발툴

UNIX 명령어 vs GUI

이전에 왜 linux, shell 명령어가 중요한지부스트캠프 - 최종프로젝트 회고록 (tistory.com)에서 적은적이 있습니다. 이제부터는 LInux,Shell 명령어라는 단어를 UNIX 명령어로 정정하도록 하겠습니다. UNIX 명령어와 일종의 라이벌 관계(상대편)에 있는게 GUI Interface라고 생각합니다. UNIX 명령어로 명령어를 내리는 Shell을 CLI(Command Line Interface)라 부릅니다. GUI 를 혐오하고 모든지 CLI로 만 해결하려는 개발자들을 예전에 몇몇 본적이 있습니다. 극단적으로 GUI를 혐오하고 CLI를 찬양할 필요는 없다고 생각합니다.

UNIX 명령어 vs GUI

Microsoft가 Windows를 출시한 이후 , GUI Interface가 Standard가 되었고 , 저희는 어렸을 때 부터 GUI에 익숙해져 살아왔습니다. 마우스를 이동해서 아이콘을 클릭하는 것이 너무 익숙합니다. 현재는 , window 뿐만 아니라 Mac OS라는 GUI도 있습니다. LInux 도 GUI를 지원해줍니다. 사람들은 GUI에 길들여져 있기에, UNIX 명령어 체계가 불편합니다.

UNIX를 꼭 배워야 하는가에 대한 질문에 , 답부터 말하면, UNIX 명령어를 모르기 때문에 , 할 수 없는 일은 없습니다. 예를들어 ,cd를 모른다고 다른 디렉토리로 이동할 수 없지는 않습니다. UNIX 명령어로 할 수 있으면 GUI로도 할 수있다고 개인적으로 생각합니다.따라서, 비개발직군들은 UNIX 명령어를 몰라도 상관없다고 생각합니다. 하지만, 개발직군들이 UNIX 명령어를 사용할줄 모르냐 와 이를 적재적소에 사용할줄 아는가 모르는가의 차이는 엄청난 차이를 만들어 낼 것입니다.

UNIX 명령어는 어떨때 좋을까요?

UNIX 명령어가 어떨때 좋을까요? 멋있어 보여서, 해커처럼 보여서, 똑똑해 보여서 쓰는건 아닙니다. 자동화가 가능하기 때문입니다.자동화라는 말은 사람이 할 걸 대신해준다 라는 의미가 강하지만, 의외의 부분도 자동화라고 표현할 수 있습니다. 예를 들어 , python에 math 라이브러리 prod 라는 method를 사용하면 numeric type object로 구성된 iterable object의 mutliplication을 반환합니다. 개발자가 for문으로 mulitiplication code를 짜야하지만, python이 대신 해주는 것입니다. 사람이 눈으로 특정 단어가 들어간 문서를 찾을떄 , python은 in 이라는 method로 편하게 할 수 있습니다. 사람이 해야할 것을 대신 해주므로 자동화라 할 수 있습니다.이렇게 넓은 의미로 보면 , 컴퓨터로 하는 모든 것이 자동화라고 생각합니다. 자동화를 하든 안하든 하는 일의 양은 결국 같습니다.(사람이 자동화를 하기 위한 명령어를 입력하는 것을 제외하면) 그저, 컴퓨터의 연산속도가 빠르기에 순식간에 하는 것처럼 보이는 겁니다.

UNIX 명령어로 디렉토리를 찾아서 해당 디렉토리로 이동하는게 사람이 마우스로 폴더를 클릭해서 움직이는 것이 빠르기 때문에 ,cd라는 명령어를 사용하는 것입니다. UNIX 명령어가 많은 과정을 자동화시키지 않아준다면, 속도면에서 이득을 볼 수 없을거고 , 굳이 익숙한 GUI를 버리고 CLI로 갈아탈 이유는 없다고 생각합니다. 서버컴퓨터에서는 GUI를 설치할 수 없기에 CLI를 사용해야 한다고 하는 분도 계시지만, 이것은 핵심을 놓치고 있다고 생각합니다. CLI로 작업을 한다는 것은 UNIX 명령어로 shell에 명령을 내리는 것이기에 UNIX 명령어에 초점을 맞추어서 생각해야 한다고 생각합니다.

UNIX 명령어를 사용했을때 , GUI보다 빠르다면 UNIX명령어 사용을 고려할 때입니다

숙련도 이슈 하지만 시간을 들일 가치는 있다.

물론 UNIX 명령어를 처음부터 잘 쓸수는 없습니다. 처음에는 작업속도가 2배 혹은 몇배가 더 느려질 수 있습니다. 이를 연습하기 위해서 , 내가 하고 있는 작업이 자동화 될 수 있는 부분인가 생각하고, 내가 전에 사용하기로 했었던 명령어인가를 기억해야 하기 때문에 ,굉장히 피곤한 작업이 될 것입니다. 뿐만 아니라, 수십년을(혹시 10살 미만인 독자분이 있다면 본인 나이에 맞춰서 생각해주세요) 살아오면서 만든 습관을 단 몇일 만에 바꾸는건 정말 어렵습니다. 몇 개월이 걸릴 수도 있는데, 평생 개발자를 할거라면 아깝지는 않다고 생각이듭니다. (실제로 몇 개월 씩이나 걸릴거 같지는 않습니다. 저도 연습한지 3일정도 됬는데, 꽤 잘 사용하고 있습니다.) .극단적으로 , UNIX로 typing양을 1/10으로 줄인다고 하면, 말로만 듣던 10X개발자가 되는것입니다. 남는 시간에 공부를 할 수 있고 , 놀러갈 수 도있고 , 가족이랑 시간을 보낼수 도 있고, 정말 좋습니다. typing양을 4%정도만 줄인다 가정해도 대략적으로 1년이면 2주일은 줄일 수 있을것입니다. 휴가가 공짜로 생기는 것입니다. 일은 덜하고 휴가는 생기고 , 얼마나 좋습니까 !!.

앞으로의 post

저는 앞으로 제 개인적으로 GUI와 비교했을 때 , 무엇이 더 빠를까에 초점을 맞추어서 명령어를 비교하는 글을 올리려고 합니다. 차이점을 인지하면 머릿속에 더 각인이 잘 된다고 생각합니다.

 

Reference

The Pragmatic Programmer - YES24

 

'개발툴' 카테고리의 다른 글

WSL2 ssh key 관리하기  (0) 2022.01.11
누구나 할 수 있는 WSL설치!  (0) 2022.01.06
Unix 명령어 정리  (0) 2022.01.05