본문으로 건너뛰기
피드

순수 Bash로 만든 터미널 할 일 관리자, Tashk

open-source 약 5분

Tashk는 Bash 4 이상과 표준 POSIX 도구만으로 돌아가는 미니멀 터미널 할 일 관리자다. 작업 CRUD, 프로젝트 태그, 마감일, 통계, 달력, CSV 저장소까지 갖췄지만 JSON, 데이터베이스, npm 설치는 전혀 쓰지 않는다.

  • 1

    순수 Bash로 작성된 터미널 기반 할 일 관리자

  • 2

    작업 추가·수정·삭제, 프로젝트 이동, 완료 상태, 마감일, 통계, 달력 기능 제공

  • 3

    저장소는 기본적으로 ~/.tasks CSV 파일이고 설정은 ~/.tashkrc key=value 파일을 사용

  • 4

    GNU date와 BSD date를 자동 감지해 리눅스와 macOS 계열 이식성을 챙김

  • Tashk는 “그냥 Bash로 어디까지 만들 수 있나”에 가까운 터미널 할 일 관리자임

    • Bash 4 이상과 표준 POSIX 도구만 있으면 돌아감
    • JSON, 데이터베이스, npm 설치 같은 건 없음
    • 이름도 task와 bash를 섞은 말장난인데, 프로젝트 성격 자체가 꽤 셸 덕후 감성임
  • 기능은 장난감치고 꽤 갖춰져 있음

    • 작업 추가, 수정, 삭제, 이름 변경 같은 기본 CRUD를 지원함
    • @project 태그로 작업을 프로젝트별로 묶을 수 있음
    • 상태는 TODO와 DONE으로 관리하고, 완료 시각도 자동으로 남김
    • 마감일을 넣으면 지난 작업을 시각적으로 경고해줌
  • 터미널 도구답게 출력 쪽도 신경 썼음

    • 프로젝트별 완료율을 막대 형태로 보여주는 통계 화면이 있음
    • 월간 달력으로 마감 작업을 볼 수 있고, 월말에 가까워지면 다음 달도 자동으로 보여줌
    • 완료는 초록색, 마감 초과는 노란색, 프로젝트는 파란색처럼 ANSI 색상을 활용함

💡

> 이런 류의 도구는 “내가 매일 쓸 생산성 앱”이라기보다, Bash로 상태 관리와 파일 저장, 날짜 처리를 어떻게 엮는지 보는 샘플로 읽으면 더 재밌음.

  • 저장 방식은 일부러 단순하게 잡았음

    • 기본 데이터 파일은 ~/.tasks CSV 파일임
    • 설정은 ~/.tashkrc에 key=value 형태로 저장됨
    • 런타임에서는 모든 작업을 Bash 배열에 올렸다가 변경 시 CSV로 다시 씀
    • CSV 필드는 id, status, create_date, end_date, due_date, project, object의 7개 구조임
  • 날짜 이식성도 챙긴 점이 포인트임

    • 리눅스의 GNU date와 macOS·BSD 계열 date는 옵션이 다르게 동작하는 경우가 많음
    • Tashk는 시작 시점에 GNU/BSD date를 감지해서 포터블하게 처리함
    • 작은 CLI 도구라도 날짜가 들어가는 순간 플랫폼 차이가 바로 튀어나온다는 걸 보여주는 대목임
  • 명령어 인터페이스는 셸 도구답게 직관적인 편임

    • tashk add "buy milk"처럼 작업을 추가함
    • tashk <UUID> done으로 완료 처리하고, todo로 되돌릴 수 있음
    • tashk @project add "task description"처럼 프로젝트 기준으로도 작업을 다룸
    • stats, calendar, calendar next, calendar 2026/12 같은 조회 명령도 있음
  • MIT 라이선스라 뜯어보고 고쳐 쓰기 좋음

    • 개인용 할 일 관리자라기보다, 셸 스크립트로 작은 상태ful 앱을 만드는 레퍼런스에 가까움
    • 특히 Bash associative array, CSV 파싱, ANSI 출력, 날짜 호환성 처리에 관심 있으면 코드 읽는 맛이 있을 듯

기술 맥락

  • Tashk가 고른 핵심 선택은 “데이터베이스 없이 CSV, 런타임 상태는 Bash 배열”이에요. 할 일 관리자는 데이터 모델이 단순하니까 SQLite 같은 걸 붙이지 않아도 충분히 굴러가거든요.

  • 대신 이 선택은 장단점이 분명해요. CSV는 사람이 직접 열어보고 백업하기 쉽고 awk, sed, cut 같은 도구와 잘 맞아요. 반대로 동시 수정, 복잡한 검색, 필드 안의 특수문자 처리 같은 문제는 앱이 직접 조심해야 해요.

  • GNU date와 BSD date를 감지하는 부분도 현실적인 선택이에요. 날짜 계산은 CLI에서 자주 필요하지만, 리눅스와 macOS가 같은 명령어 이름으로 다른 옵션을 받는 경우가 많거든요. 작은 도구라도 여러 개발자 환경에서 쓰려면 이런 차이를 피할 수 없어요.

  • 그래서 Tashk는 “Bash로 만든 투두 앱”보다 “셸 철학으로 만든 작은 로컬 앱”에 가까워요. 입력과 출력은 텍스트고, 저장소도 텍스트고, 설치도 심볼릭 링크나 alias면 끝나는 구조라서요.

거대한 생산성 앱의 반대편에 있는 장난감 같은 프로젝트지만, 셸 철학을 좋아하는 개발자에게는 꽤 매력적인 예제다. Bash 배열, ANSI 출력, CSV 영속화, 날짜 호환성 같은 현실적인 잡기술이 한 파일 안에 모여 있다.

댓글

댓글

댓글을 불러오는 중...

open-source

뱀부랩, 오픈소스 슬라이서 개발자에게 법적 압박 걸었다가 역풍 맞음

3D 프린터 제조사 뱀부랩이 OrcaSlicer-BambuLab 개발자에게 중단 요구서를 보내면서 오픈소스와 수리권 커뮤니티의 반발을 샀다. GamersNexus와 Louis Rossmann은 개발자의 허락을 받아 소프트웨어를 다시 호스팅하고, 소송이 걸리면 각각 1만 달러씩 법률 지원을 하겠다고 나섰다.

open-source

OrcaSlicer 포크, Bambu Lab 프린터의 인터넷 연결 기능 되살림

FULU Foundation의 OrcaSlicer-bambulab 포크가 Bambu Lab 프린터에서 LAN 전용 제한 없이 BambuNetwork 기반 인터넷 연결을 다시 지원한다고 밝힘. Windows에서는 WSL 2 설정이 필요하고, Linux에서는 일반 설치만으로 충분하다고 안내함.

open-source

코넬대가 공개한 정확히 2,000줄짜리 교육용 운영체제

코넬대 기반 프로젝트인 egos-2000은 학생이 교육용 운영체제 전체 코드를 직접 읽을 수 있게 만드는 걸 목표로 한다. C, 헤더, 어셈블리, make 파일을 합쳐 정확히 2,000줄이며, QEMU와 RISC-V 보드에서 동작하고 9개 코스 프로젝트가 붙어 있다. 운영체제 수업에서 ‘작지만 전체 구조가 보이는 코드베이스’가 필요했던 사람에게 꽤 반가운 자료다.

open-source

이맥스가 Git 대신 Bazaar를 붙잡았던 6년짜리 오픈소스 드라마

이맥스는 2008년 CVS에서 벗어나면서 Git 대신 GNU 프로젝트인 Bazaar를 선택했고, 이 결정은 성능 벤치마크와 개발자 반발을 압도한 정치적 판단에 가까웠다. Bazaar는 느리고 유지보수도 흔들렸지만, GNU 패키지는 GNU 도구를 써야 한다는 원칙 때문에 전환은 2014년까지 미뤄졌다. 결국 ELPA 브랜치 문제와 Bazaar 개발 중단, 변환 스크립트 준비 끝에 이맥스는 Git으로 옮겨갔다.

open-source

현대차·기아, 오픈소스 특허 방어망 넓혀 소프트웨어 중심 차량 전환 준비

현대차·기아가 오픈소스 소프트웨어 특허 분쟁을 줄이기 위해 글로벌 특허 네트워크 OIN 2.0에 가입했다. 소프트웨어 중심 차량, 클라우드, 커넥티드 서비스처럼 오픈소스 의존도가 큰 영역에서 법적 리스크를 미리 관리하려는 움직임이다.