Skip to main content

Command Palette

Search for a command to run...

[ZSH] tree 사용해보기

Updated
•2 min read•View as Markdown
D

Web / iOS / Flutter Developer

들어가며

최근 프로덕트를 출시한 뒤, 앞으로의 유지보수를 위해서 더 늦기 전에 파일 정리 및 문서화를 진행해야겠다는 마음을 먹게 됐다.

문서화 작업을 하는 중에 기왕 정리하는 거 파일 구조를 이쁘게 트리 구조로 나열하여 코멘트를 달아두면 나중에 보더라도 이해하기 더 쉬울 것 같았다.

어떻게 해야 간지나는 트리 구조를 만들 수 있을까 방법을 찾다보니 역시나 파일 구조를 트리로 이쁘게 출력해주는 커맨드 툴이 존재했다.

tree 커맨드에 대해서 알아보고 알짜배기 내용만 정리했다.

설치

나는 Mac을 사용한다. 기본적으로 zsh에 내장되어있진 않으니 Homebrew를 이용해서 직접 tree를 설치한다.

brew install tree

사용법

사용법은 참으로 단순하다. 그냥 터미널에다가 tree dirPath 해주면 해당 경로 아래의 모든 파일 및 폴더 구조를 아래와 같이 이쁜 트리로 출력해준다.

tree ./lib/src
./lib/src
├── animation_widgets
├── common_widgets
│   ├── app_bar
│   ├── buttons
│   ├── dialog
│   ├── image_widgets
│   ├── indicators
│   ├── list_items
│   ├── modal
│   └── search_bar
├── constants
├── demo_widgets
├── error

... 생략 ...

옵션

파라미터를 추가하여 다양한 옵션을 설정할 수 있다. -a : 숨김 폴더 및 파일 표시 -d : 디렉토리만 표시

이외에도 다양한 옵션을 함께 활용할 수 있는데, 나는 이정도면 충분해서 더 알아보진 않았다.

더 자세한 정보가 필요하다면 man tree를 통해 확인해보자.

터미널에 출력되는 걸 복붙하는 건 조금 애송이 같으니까 파일을 따로 생성하여 tree 정보를 저장했다.

tree ./lib/src -d => tree.md

결론

유명한 오픈 소스 라이브러리 리드미에서 본 듯한 이쁜 디렉토리 구조를 이제 나도 출력할 수 있다!

7 views

etc.

Part 1 of 1

개발 관련 잡다한 포스트를 업로드합니다.

More from this blog

의사난수생성기(prng)를 활용한 클라이언트 사이드 데이터 셔플

모든 사용자에게 동일한 랜덤 순서를 보여줘야 하는데, DB나 서버에 의존하고 싶지 않다면? 문제 상황 팀의 신규 프로젝트를 맡아 작업 중인 와중에 이런 요구사항을 받았습니다. "캘린더에 표시되는 참여자 순서를 매일 다르게 섞어주세요. 단, 같은 날에는 모든 사용자가 동일한 순서를 봐야 해요." 아.. 아직 짬바가 부족한 저는 이 요구사항을 듣자마자 온갖 방법을 고민해보게 됐습니다. 저는 보통 일단 요구사항의 핵심을 단순화하여 로직으로 바꾼...

Jan 7, 20265 min read34

[TIL/Vite] 모노레포 process.env 이슈 해결, Pollyfill 활용

상황 정리 모노레포 프로젝트에서 어드민 앱(Vite, React.js)과 웹 앱(Next.js), React Native 모바일 앱 총 3가지 앱에서 공통으로 사용하는 types와 그 helper 들을 packages/database라는 공통 패키지로 관리하기 위해 리팩토링을 진행했습니다. 기존 코드는 ai를 적극 활용해서 만들어진 프로젝트라서, 속도감 있게 mvp 기능이 완성되었지만 QA를 진행하기 어려운 수준으로 구조가 망가져 있었거든요. ...

Dec 15, 20252 min read11

pendant-k 개발 블로그

108 posts

try { goHard(); } catch (failure) { makeOpportunity(failure); } finally { return success; }