나무껍질 분경
카탈로그 트리는 단일 간격 ASCII를 사용할 때 효과가 좋지 않은 가장 일반적인 레이아웃 중 하나입니다.여기에는 오래된
tree
이 있다. 이것은 거의 여러 가지 가능성을 포함하고 있다. 왜냐하면 이러한 제한 조건 하에서 이런 구조를 보여주는 방법이 더 이상 없기 때문이다.다행히 tree
에는 편의시설from pattern-matching to JSON output이 갖춰졌다.나도 내가 관심 없는 일부 문서를 포함하는 프로젝트에 많은 일을 했다.git에 대해 프로젝트 루트 디렉터리에
.gitignore
파일을 사용해서 의외로 추가하고 제출하지 않도록 합니다.이 파일은 my search utility of choiceripgrep, 규칙 준수.gitignore
, 도형 IDE까지 다양한 도구가 사용되고 있습니다.tree
git보다 적어도 10년 빠르다. 그것은 너를 상관하지 않는다.gitignore
.중간 크기의 무시 규칙 집합이나 유사node_modules
를 사용하여 저장소의 레이아웃을 검사할 때 거의 사용할 수 없습니다.tree
의 특징 중 하나는 -I
로고입니다. .gitignore
에서 사용한 어댑터 모델과 비슷한 일치하는 파일을 무시합니다.이것은 coreutils에서 함부로 하지 않는 상황에서 .gitignore
규칙을 준수하는 것들을 통합시킬 수 있다는 것을 의미한다. 다른 시스템 도구의 출력과 조작 파일, xargs
는 다른 명령의 파라미터를 관리할 수 있고 파이프는 모든 것을 연결할 수 있다.다음은 제
.zshrc
의 전체 별명입니다. 이 부분에 관심이 있으시다면(모든 내용은 한 줄에 있어야 합니다).alias trii="(cat .gitignore & echo '.git') |
sed 's/^\(.\+\)$/\1\|/' |
tr -d '\n' |
xargs printf \"-I '%s'\" |
xargs tree -C"
-I
를 제외하고는 tree
의 매개 변수를 trii
에 전달할 수 있기 때문에 도구 패키지의 나머지 부분은 여전히 사용할 수 있습니다.현재 디렉터리에서 파일을 무시하지 않았다면, 그것도 안전합니다.이제 좀 더 자세히 살펴보겠습니다.
(cat .gitignore & echo '.git')
cat
는 파일을 표준 출력 (컨트롤러) 에 저장하는 것을 무시하고 echo
문자열 '.git' 를 간단하게 반복하여 완전한 규칙 집합이 저장소 디렉터리 자체를 배제하도록 합니다. (숨겨진 파일과 디렉터리만 표시하는 -a
스위치에 문제가 있습니다.single &
은 두 명령이 순서대로 실행되는 것을 확보하는 데 사용되며, 더 흔히 볼 수 있는 더블 &&
은 첫 번째 0이 아닌 종료 코드에서 중단됩니다.괄호는 하위 셸에서 전체 과정을 실행하고 전체 출력을 되돌려주며 파이프를 통해 다음 단계로 전송됩니다.sed 's/^\(.\+\)$/\1\|/'
여러 개의 -I
값을 지정할 수 없습니다. 마지막 값은 항상 이기는 것입니다.반면-I
은 파이프|
문자로 연결된 여러 도안을 읽을 수 있다.이것은 가능하지만 약간의 조치를 취해야 한다.sed
는 s-tream-ed-itor로 앞의 모든 선을 수정합니다.여기서는 파이프 문자만 추가됩니다.sed
는 독립된 실체로서 각 노선에서 운행하기 때문에 그것들을 한데 연결할 수 없다.다음 섹션에 따라 다릅니다.tr -d '\n'
sed
와 달리 tr
(tr anslate)는 한 줄씩 조작하지 않고 입력할 때 표준 입력을 사용한다.-d
스위치 삭제 문자, 여기는 줄 바꿈 문자입니다.그러면 무시 모드가 완료되고 샘플 항목.gitignore
이 다음과 같이 변환됩니다..git|src|pkg|**/*.tar.xz|
단접 파이프가 하나 있지만, 그것은 tree
에 영향을 주지 않는다.이 행은 다른 명령으로 전달됩니다.xargs printf "-I '%s'"
xargs
행을 표준 입력에서 다른 명령으로 전달합니다.여기는 한 줄만 있습니다. tr
모든 줄 바꾸기를 삭제했기 때문에 printf
에 전달됩니다.이것은 C 표준 라이브러리 함수 printf
와 혼동해서는 안 된다. GNU coreutils 중의 독립된 프로그램이다. 비록 그의 기능은 그것의 근친차가 많지 않지만.이 명령의 최종 효과는 -I
스위치와 연결된 무시 목록을 인쇄하는 것입니다.xargs tree -C
마지막으로, 호출할 때가 되었습니다tree
!-C
로고는 출력에 색을 추가합니다.xargs
조합된 -I
과ignorelist를 명령 문자열에 전달한 결과 tree
로 .gitignore
의 모든 내용을 배제했다.
Reference
이 문제에 관하여(나무껍질 분경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dmfay/shell-bonsai-with-tree-24h4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)