배움은 힘든 일이고, 아무도 힘든 일을 좋아하지 않습니다. 그렇기 때문에 Bash가 아무리 쉽더라도 공부하는 과정 자체가 여전히 '일'처럼 느껴질 수 있습니다. 하지만 게임을 통해 배운다면 이야기가 달라집니다.
Bash 터미널 사용법을 가르쳐 주는 게임이 많이 있을 것이라고 생각하기 어렵습니다. 실제로 그렇습니다. PC 게임에 정통한 사람들은 Fallout 시리즈의 볼트 내부에 터미널 기반 컴퓨터가 등장한다는 것을 알고 있습니다. 이는 텍스트로 컴퓨터와 소통하는 개념을 친숙하게 만들어 주지만, Alpine이나 Emacs와 비슷한 애플리케이션을 보여줄 뿐 실제 생활에서 쓸 수 있는 명령어나 애플리케이션을 가르쳐 주지는 못합니다.
Fallout 시리즈는 리눅스로 직접 포팅된 적은 없지만(Steam의 오픈소스 Proton을 통해 플레이할 수는 있습니다), Fallout의 전신인 Wasteland 시리즈의 최신작들은 리눅스를 지원합니다. 따라서 인게임 터미널을 경험하고 싶다면 리눅스 게이밍 PC에서 Wasteland 2와 Wasteland 3를 플레이할 수 있습니다. Shadowrun 시리즈 역시 리눅스를 지원하며 터미널 기반 상호작용이 많이 등장하지만, 화려한 시뮬레이션 연출에 묻히는 경향이 있습니다.
이런 게임들은 컴퓨터 터미널을 재미있게 다루고 오픈소스 시스템에서 실행되지만, 그 자체로는 오픈소스가 아닙니다. 반면 텍스트 명령으로 시스템과 상호작용하는 법을 진지하게, 그리고 진심으로 재미있게 가르치는 게임이 최소 두 가지 존재합니다. 무엇보다 이것들은 모두 오픈소스입니다.
Bashcrawl
오래된 텍스트 기반 인터랙티브 게임인 Colossal Cave Adventure를 들어본 적이 있을 것입니다. '직접 선택하는 모험' 스타일의 책에서 영감을 받은 이 게임은 초기 컴퓨터 사용자들이 DOS나 ProDOS 명령줄에서 열광적으로 즐겼으며, 올바른 문법과 엉뚱한 판타지 논리(시니컬한 해커가 해석한)의 조합을 찾아 헤매며 게임을 클리어했습니다. 중세 던전을 탐험하는 도전 외에 유효한 Bash 명령어를 기억해야 한다는 조건이 추가된다면 어떨까요? 그것이 바로 Bashcrawl입니다. Bash 명령어를 학습하고 사용하며 진행하는 Bash 기반 던전 크롤 게임입니다.
Bashcrawl에서 '던전'은 여러분의 컴퓨터에 있는 디렉터리와 파일 형태로 만들어집니다. cd 명령으로 디렉터리를 변경하며 던전의 각 방을 탐험하고, 진행하면서 ls -F로 파일을 살펴보고, cat으로 파일을 읽고, 변수를 설정해 보물을 수집하고, 스크립트를 실행해 몬스터와 싸웁니다. 게임에서 하는 모든 행위는 실제 생활에서도 활용할 수 있는 유효한 Bash 명령어이며, 게임 자체가 실제 디렉터리와 파일로 구성되어 있기 때문에 자연스럽게 Bash 연습이 됩니다.
$ cd entrance/
$ ls
cellar scroll
$ cat scroll
It is pitch black in these catacombs.
You have a magical spell that lists all items in a room.
To see in the dark, type: ls
To move around, type: cd <directory>
Try looking around this room.
Then move into one of the next rooms.
EXAMPLE:
$ ls
$ cd cellar
Remember to cast ``ls`` when you get into the next room!
$
Bashcrawl 설치하기
Bashcrawl을 플레이하려면 시스템에 Bash 또는 Zsh가 설치되어 있어야 합니다. 리눅스, BSD, macOS에는 Bash가 기본 탑재되어 있습니다. Windows 사용자는 Cygwin이나 WSL을 다운로드해 설치하거나 리눅스를 직접 사용해 볼 수 있습니다.
Bashcrawl을 설치하려면 Firefox 또는 선호하는 웹 브라우저로 GitLab 페이지에 접속합니다. 페이지 오른쪽에서 Download 아이콘(Find file 버튼 오른쪽)을 클릭합니다.
Download 팝업 메뉴에서 Zip 버튼을 클릭하면 최신 버전의 게임을 다운로드할 수 있습니다.
다운로드가 완료되면 압축 파일의 압축을 해제합니다.
또는 바로 터미널에서 작업을 시작하고 싶다면 Git을 사용할 수도 있습니다:
$ git clone https://gitlab.com/slackermedia/bashcrawl.git bashcrawl시작하기
새로운 소프트웨어 패키지를 다운로드했을 때와 마찬가지로, 가장 먼저 할 일은 README 파일을 읽는 것입니다. bashcrawl 디렉터리 안의 README.md 파일을 더블클릭하면 됩니다. Mac에서는 해당 파일을 열 애플리케이션이 지정되어 있지 않을 수 있는데, 아무 텍스트 편집기나 LibreOffice로 열면 됩니다. README.md에는 터미널에서 게임에 접근하는 방법과 게임을 시작하기 위해 입력해야 할 첫 번째 명령어까지 상세히 안내되어 있습니다. README 파일을 읽지 않으면 게임이 부전승으로 이기게 됩니다(플레이하지 않았으니 알려줄 방법도 없지만요).
Bashcrawl은 지나치게 교묘하거나 고급스럽게 만들어진 게임이 아닙니다. 오히려 초보자에게 투명하게 다가가기 위해 최대한 단순하게 설계되었습니다. 이상적으로는 새로운 Bash 사용자가 게임을 통해 기본기를 익힌 후, 게임을 구동하는 간단한 스크립트를 비롯한 내부 메커니즘을 우연히 발견하면서 더 많은 Bash 지식을 습득하게 됩니다. 나아가 Bashcrawl의 기존 콘텐츠 예시를 참고해 자신만의 던전을 직접 설계할 수도 있는데, 게임을 만드는 것보다 좋은 코딩 학습법은 없습니다.
Command Line Heroes: BASH
Bashcrawl은 완전 초보자를 위한 게임입니다. Bash를 꾸준히 사용해 왔다면 초보자가 아직 모르는 방식으로 파일을 들여다보며 Bashcrawl을 '정답지 미리 보기'처럼 활용하려 할 가능성이 높습니다. 중급 이상의 Bash 사용자라면 Command Line Heroes: BASH를 시도해 보세요.
게임 규칙은 단순합니다. 주어진 시간 안에 생각나는 유효한 명령어를 최대한 많이 입력하는 것입니다. 간단해 보이죠? Bash 사용자라면 매일 수많은 명령어를 사용합니다. 리눅스 사용자라면 명령어 목록을 어디서 찾을 수 있는지도 압니다. util-linux 패키지만 해도 100개가 넘는 명령어를 담고 있습니다! 문제는 카운트다운 압박 속에서 그 명령어들을 손끝에서 즉석으로 끌어낼 수 있는가입니다.
단순해 보이는 이유는 실제로 단순하기 때문입니다! 원리적으로는 플래시카드 학습의 역방향과 비슷합니다. 실전에서는 지식과 회상 능력을 점검하는 재미있는 방법이 되며, Open Jam 제작진이 개발한 오픈소스 프로젝트이기도 합니다.
설치하기
Command Line Heroes: BASH는 온라인에서 바로 플레이하거나 GitHub에서 소스 코드를 다운로드할 수 있습니다.
게임은 Node.js로 작성되었으므로, 게임 개발에 기여할 계획이 아니라면 온라인으로 플레이하는 것이 가장 편리합니다.
Bash로 만드는 지뢰찾기
고급 Bash 사용자이고 이미 여러 Bash 스크립트를 작성해 왔다면, 이제는 Bash를 '배우는' 단계를 넘어섰을 것입니다. 진짜 도전을 원한다면 게임을 플레이하는 대신 직접 프로그래밍해 보는 건 어떨까요? 약간의 고민과 서너 번의 오후 시간만 투자하면 인기 게임 지뢰찾기(Minesweeper)를 순수하게 Bash만으로 구현할 수 있습니다. 먼저 스스로 작성해 본 후, Abhishek Tamrakar의 글을 참고해 그가 어떻게 구현했는지 살펴보는 것도 좋은 방법입니다.
때로는 프로그래밍이 교육적인 목적 외에 다른 목적을 가질 필요가 없습니다. Bash로 게임을 만드는 것이 평판을 걸고 도전할 프로젝트는 아닐지 몰라도, 그 과정은 즐겁고 계몽적입니다. 그리고 예상치 못한 문제에 직면하는 것야말로 새로운 기술을 배우는 최고의 방법입니다.
Bash를 배우고, 즐기세요
어떤 방식으로 접근하든, Bash는 강력한 인터페이스입니다. GUI 애플리케이션이라는 '중개자'를 거치지 않고 컴퓨터에 원하는 작업을 직접 지시할 수 있기 때문입니다. GUI가 매우 유용할 때도 있지만, 때로는 너무나 잘 아는 방식에서 벗어나 더 빠르게 처리하거나 자동화할 수 있는 방법으로 넘어가고 싶어집니다. Bash는 텍스트 기반이라 스크립트 작성이 쉬워 자동화 작업의 훌륭한 출발점이 됩니다.
Bash를 배워 파워 유저로 성장해 보세요. 그리고 그 과정에서 반드시 즐거움을 잃지 마세요.