ls -R보다 읽기 쉬운 디렉터리 그림
ls -R도 하위 경로를 나열하지만 구조를 따라가기 어려워. tree는 ASCII 가지로 중첩을 보여 줘. macOS에서는 brew install tree로 설치하고, Linux 배포판에서는 패키지 관리자로 설치할 수 있어. 경로가 들여쓰인 가지로 보이기 때문에 부모와 자식 관계를 빠르게 읽을 수 있어.
자주 쓰는 플래그
-L 2: 깊이를 2단계로 제한해.-d: 디렉터리만 보여 줘.-a: 숨김 항목도 포함해.-h:-s나--du와 함께 읽기 쉬운 크기를 표시해.-I 'pattern|other': 이름 패턴을 제외해.--gitignore:.gitignore의 제외 규칙을 적용해.
다른 프로그램이 읽을 출력 형식
tree -J는 JSON, tree -X는 XML을 출력해. 디렉터리 구조를 스크립트나 문서 생성기에 넘길 때 사용할 수 있어.
프로젝트 구조를 설명할 때
tree -L 2 -I 'node_modules|.git'처럼 질문에 필요한 깊이와 제외 규칙을 정한 뒤 출력을 문서에 넣어. 작은 구조 그림이 긴 경로 설명보다 빠르게 경계를 보여 줄 때가 많아.
tree 출력은 파일 시스템 자체가 아니야
깊이 제한, 제외된 디렉터리, 읽을 수 없는 경로, 마운트 지점, 심볼릭 링크가 화면에 보이는 내용을 바꿔. 오류 메시지도 출력의 일부로 읽고, 지금 묻는 질문에 맞게 보기를 좁혀. 화면에 나오지 않았다는 사실만으로 실제 파일이 없다고 결론 내리면 안 돼.
디렉터리 구조도 민감한 정보야
파일 내용을 보여 주지 않아도 고객 이름, 내부 호스트, 비공개 프로젝트 이름이 경로에 드러날 수 있어. 다른 사람에게 공유하기 전에 출력 범위를 줄이고 이름을 검토해.
큰 저장소는 작은 범위부터 봐
전체 트리를 한꺼번에 펼치지 말고 깊이, 하위 경로, 명시적 제외 가운데 하나로 시작해. 작은 보기는 서로 비교하기 쉽고 질문과 관계없는 이름을 노출할 가능성도 줄여 줘. 범위를 바꿨다면 명령과 옵션도 함께 기록해야 다른 사람이 같은 보기를 재현할 수 있어.