나무껍질 분경

4515 단어 gitlinuxbash
셸은 내가 일상적으로 컴퓨터를 조작하는 데 필요한 모든 도구를 제공합니다. 디렉터리와 파일, 텍스트 편집, 그리고 내가 처리하고 있는 프로젝트를 구축, 테스트, 실행합니다.이것은 레이아웃이나 텍스트 파일이 아닌 모든 것을 표시하는 데 그다지 뛰어나지 않다. (재미있지만, 나는 tiv 적당한 이미지 뷰어를 바꾸고 싶지 않다.)
카탈로그 트리는 단일 간격 ASCII를 사용할 때 효과가 좋지 않은 가장 일반적인 레이아웃 중 하나입니다.여기에는 오래된 tree 이 있다. 이것은 거의 여러 가지 가능성을 포함하고 있다. 왜냐하면 이러한 제한 조건 하에서 이런 구조를 보여주는 방법이 더 이상 없기 때문이다.다행히 tree에는 편의시설from pattern-matching to JSON output이 갖춰졌다.
나도 내가 관심 없는 일부 문서를 포함하는 프로젝트에 많은 일을 했다.git에 대해 프로젝트 루트 디렉터리에 .gitignore 파일을 사용해서 의외로 추가하고 제출하지 않도록 합니다.이 파일은 my search utility of choiceripgrep, 규칙 준수.gitignore, 도형 IDE까지 다양한 도구가 사용되고 있습니다.treegit보다 적어도 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의 모든 내용을 배제했다.

좋은 웹페이지 즐겨찾기