learning the bash shell
isbn : 9788979141283
간만에 집에 갔더니 책장 한쪽 구석에 이 책이 꽂혀있었다. 한 10년전에 사서 읽었는데, 반가운 마음이 들어서 다시 읽었다. 혹시나하고 인터넷에 찾아보니 절판이 되었다. 전에 읽었을때 집에 리눅스를 안써 실습을 못해봤다. 그러다보니 가득이나 불친절한 설명의 책이 더 이해가 안되어 대충 보고 던졌던 기억이 난다.
책의 구성은 CLI의 입력방법, bash의 변수 선언, 흐름 제어, 옵션으로 받아들이는 인자 제어, 디버깅 등으로 구성되어있다. 책은 하나의 예제를 처음부터 끝가지 보완하는 방식으로 설명을 한다. 뒷장으로 갈수록 코드의 복잡성,완성도가 높아지고 이를 대상으로 그 장의 개념을 설명한다. 그러나 그렇게 와닿는 예제가 아니라 이해도가 좀 떨어진다. 예제 자체도 개략적인 개념을 익히기에는 너무 길다.
이런 과정을 거치고 끝까지 읽으면 강력한 도구를 손에 넣은 기분이 든다. 어디 무협지의 명검을 손에 넣은 기분? 리눅스를 사용하는 시스템에 ssh를 통해 접속하면 보이는 검은 화면이 있는데 이게 셸이다. 이 책을 이를 효과적으로 사용하는지를 설명한다. 요즘은 gui로 프로그램이 제작되어 있는데 마우스 클릭이 기본이 된다. 이런 프로그램들은 사용하기 쉬우나 사용자가 할수 있는 작업들이 제한되어 있다. 반복적인 작업을 하려면 클릭 노가다를 하루종일 해야한다. 처음 접근은 쉬우나 활용이 떨어진다.
이와 반대로 cli로 불리는 환경에서는 사용자가 자유롭게 입력할수 있다. 유닉스, 리눅스에서 지원하는 각종 유틸리티와 파이프, 리다이렉션 등을 사용하면 gui 환경의 마우스 클릭 수백번을 하나의 명령줄에 할 수 있다. 처음에는 접근하기가 어려운데 활용도가 높다. 리눅스는 모든 하드웨어를 파일로 처리하므로 셸에 익숙해지면 모든 하드웨어도 같은 방식으로 접근이 가능하다.
지금은 명령어 두드리다 안되면 stack over flow같은 커뮤니티에 물어보면 원하는 답을 바로 찾을 수 있다. 십몇년 전에는 그런 공동체가 없었던 것 같다. 원하는 결과가 안나오면 그 부분에서 하염없이 시간을 보내다가 결국 포기한다. 또한 리눅스에서 제공하는 메뉴얼은 초보자들에게 불친절하다. 제공하는 man 페이지를 보고 문제를 해결하기란 거의 불가능 했다. 예제들이 있어야 이해가 되는데 그런 예제들이 거의 없었다. 뜬구름 잡는 마음으로 이런 책을 보면 문제가 해결되기도 하고 아니기도 했다. 마치 시험범위를 정해놓고 나중에 시험보는 방식으로 접근을 했다. 지금은 시험을 책을 펴놓고 본다고 해야하나? 사용하기 많이 쉬워졌다. 이런 책들은 과거보다 효율이 떨어지지만 필요하다. 개념을 익혀야 문제를 풀수 있으니까.
프로그램을 작성하면 한개의 작업이나 천개의 작업이나 그 시간 차이는 없다. 단순 한개의 작업만 하면 코드를 작성하는 시간이 작업하는 시간보다 많다. 그러나 10개 이상 반복작업을 해야 한다면 프로그램을 작성으로 결과를 얻는게 효율도 좋고, 정신적인 스트레스도 없다. 하나의 코드를 작성하고 수정하는데 얼마나 걸리느냐는 그 사람의 내공에 달려있겠지만. 앞으로는 간단한 코드는 직접 작성해야 하는 경우가 많을 것이다. 그런면에서 이런 부분을 공부하는 시간이 아깝지 않을 것이다.