마크 다운 구문에서 디렉토리 및 파일 구조 표현


215

Jekyll 블로그 게시물 중 일부에서 디렉토리 및 파일 구조를 설명하고 싶습니다. Markdown은 그러한 것을 출력하는 깔끔한 방법을 제공합니까?

예를 들어, Jekyll 웹 사이트 의이 링크 에서 디렉토리 및 파일 구조가 페이지에서 매우 깔끔하게 출력되는 것을 볼 수 있습니다.

.
├── _config.yml
├── _drafts
│   ├── begin-with-the-crazy-ideas.textile
│   └── on-simplicity-in-technology.markdown
├── _includes
│   ├── footer.html
│   └── header.html
├── _layouts
│   ├── default.html
│   └── post.html
├── _posts
│   ├── 2007-10-29-why-every-programmer-should-play-nethack.textile
│   └── 2009-04-26-barcamp-boston-4-roundup.textile
├── _data
│   └── members.yml
├── _site
└── index.html

위의 라인 블록 문자는 유니 코드 ( 이 답변에 설명되어 있음 )라고 생각하지만 Markdown 또는 다른 브라우저에서 처리하는 방법을 잘 모르겠습니다. Markdown에 위의 유니 코드 문자로 출력되는 방법이 포함되기를 바랐습니다.



1
jekyll에 대해 구체적으로 언급 한 이래,이 비 풍성 예제 와 그 출처 는 법안에 맞을 것입니다.
user3276552

답변:


144

유니 코드 문자에 관심이있는 경우 ASCII를 사용하여 구조를 작성할 수 있으므로 예제 구조가됩니다.

.
+-- _config.yml
+-- _drafts
|   +-- begin-with-the-crazy-ideas.textile
|   +-- on-simplicity-in-technology.markdown
+-- _includes
|   +-- footer.html
|   +-- header.html
+-- _layouts
|   +-- default.html
|   +-- post.html
+-- _posts
|   +-- 2007-10-29-why-every-programmer-should-play-nethack.textile
|   +-- 2009-04-26-barcamp-boston-4-roundup.textile
+-- _data
|   +-- members.yml
+-- _site
+-- index.html

출력 tree을 선택할 때 사용 하는 형식과 유사한 것입니다 ANSI.


1
고마워 그래도 유니 코드 문자 사용에 대한 우려가 있습니까? 이전 브라우저의 알려진 문제와 같이 Markdown 렌더링이 잘못되었습니다.
Matt Rowles

2
Markdown에는 아무런 문제가 없어야합니다. Jekyll 템플릿과 사용자 웹 브라우저에있을 것입니다.
RobertKenny

1
이 선택의 또 다른 장점은 외관상의 이유로 만 다른 기호를 사용하는 다른 선택과 비교하여 더 작은 diff가 있다는 것 tree입니다.
villasv

1
이 답변을 사용할 때 트리는 몇 개의 텍스트 줄로 렌더링됩니다. md 플러그인을 사용하여 VSCode 및 VisualStudio에서 테스트되었습니다. 또한 GitHub에서는 작동하지 않습니다
Danny

237

다른 저장소 의 예를 따라 디렉토리 구조를 한 쌍의 삼중 백틱 ( ```)으로 묶었습니다 .

```
project
│   README.md
│   file001.txt    
│
└───folder1
│   │   file011.txt
│   │   file012.txt
│   │
│   └───subfolder1
│       │   file111.txt
│       │   file112.txt
│       │   ...
│   
└───folder2
    │   file021.txt
    │   file022.txt
```

5
스택 오버플로는 최신 트리플 백틱 구문을 지원하지 않습니다. 그것들을 단일 백틱으로 해석합니다. 단일 백틱은 코드를 한 줄 내에서만 인라인 텍스트로 표시합니다. 그렇기 때문에 예제에 각 줄 사이에 흰색 줄무늬가 있습니다. 여러 줄로 된 코드를 표시하는 호환 가능한 방법을 위해 텍스트를 네 칸 들여 쓰기하십시오.
Rory O'Kane

3
SO는 트리플 백틱을 지원하지 않지만 대부분의 다른 MD 구현은 (Github / BitBucket과 같은) 대부분의 MD 구현은 각 항목이 무엇인지에 대한 인라인 주석이있는 트리 작동을 얻을 수있는 유일한 방법이었습니다. 여기에서 +1!
Scott Byers

1
이 답변에 엄지 손가락. 트리플 프레 스틱 마크 다운은 Wordpress에서도 작동합니다.
Binita Bharati

트리플 백틱 지원은 이제 SO에서 작동하는 것으로 보입니다.
StriplingWarrior

41

트리 를 사용 하여 예제와 매우 유사한 것을 생성 할 수 있습니다 . 출력이 있으면 <pre>일반 텍스트 형식을 유지하기 위해 태그로 묶을 수 있습니다.


멋지다, 이것은 도움이된다고 보인다! 그러나 이론적 인 파일 구조는 어떻습니까? 이것이 현재 유일한 해결책이라면 필요한 문자를 복사하여 붙여 넣어야 할 수도 있습니다. 다시 건배.
매트 Rowles

나는이 해결책을 좋아한다. 마크 다운에 깔끔한 봐
안 투안에게


22

이 작업을 자동화하기 위해 노드 모듈을 만들었습니다. mddir

용법

노드 mddir "../relative/path/"

설치하려면 다음을 수행하십시오. npm install mddir -g

현재 디렉토리에 대한 마크 다운을 생성하려면 : mddir

절대 경로를 생성하려면 다음을 수행하십시오. mddir / absolute / path

상대 경로를 생성하려면 : mddir ~ / Documents / whatever.

md 파일은 작업 디렉토리에 생성됩니다.

현재 node_modules 및 .git 폴더는 무시합니다.

문제 해결

'node \ r : No such file or directory'오류가 표시되면 운영 체제에서 다른 줄 끝을 사용하고 줄 끝 스타일을 Unix로 명시 적으로 설정하지 않으면 mddir에서 구문을 분석 할 수 없다는 것입니다. 이것은 일반적으로 Windows뿐만 아니라 일부 Linux 버전에도 영향을 미칩니다. 줄 끝을 Unix 스타일로 설정하려면 mddir npm 전역 bin 폴더 내에서 수행해야합니다.

줄 끝 수정

다음을 사용하여 npm bin 폴더 경로를 가져옵니다.

npm config get prefix

해당 폴더에 CD

brew install dos2unix

dos2unix lib / node_modules / mddir / src / mddir.js

이것은 줄 끝을 Dos 대신 Unix로 변환합니다.

그런 다음 node mddir "../relative/path/"를 사용하여 정상적으로 실행하십시오.

생성 된 마크 다운 파일 구조 'directoryList.md'

    |-- .bowerrc
    |-- .jshintrc
    |-- .jshintrc2
    |-- Gruntfile.js
    |-- README.md
    |-- bower.json
    |-- karma.conf.js
    |-- package.json
    |-- app
        |-- app.js
        |-- db.js
        |-- directoryList.md
        |-- index.html
        |-- mddir.js
        |-- routing.js
        |-- server.js
        |-- _api
            |-- api.groups.js
            |-- api.posts.js
            |-- api.users.js
            |-- api.widgets.js
        |-- _components
            |-- directives
                |-- directives.module.js
                |-- vendor
                    |-- directive.draganddrop.js
            |-- helpers
                |-- helpers.module.js
                |-- proprietary
                    |-- factory.actionDispatcher.js
            |-- services
                |-- services.cardTemplates.js
                |-- services.cards.js
                |-- services.groups.js
                |-- services.posts.js
                |-- services.users.js
                |-- services.widgets.js
        |-- _mocks
            |-- mocks.groups.js
            |-- mocks.posts.js
            |-- mocks.users.js
            |-- mocks.widgets.js

1
슬프게도, 나는 이것을 시도했는데 내 Windows 10 컴퓨터에서 작동하지 않으며 프로젝트가 포기 된 것 같습니다.
Rich Hopkins

1
안녕하세요. 도서관을 이용해 주셔서 감사합니다. 다른 프로젝트에 바빠서 복제 할 수는 없지만 가능한 해결책을 찾았습니다. 'npm config get prefix'를 사용하여 npm bin 폴더 경로를 가져옵니다. 해당 폴더에 CD를 넣은 다음 'brew install dos2unix'를 실행하고 'dos2unix lib / node_modules / mddir / src / mddir.js'를 실행하십시오. 이것은 줄 끝을 Dos 대신 Unix로 변환합니다. 그런 다음 node mddir "../relative/path/"를 사용하여 정상적으로 실행하십시오.
John Byrne

내 Windows 10 컴퓨터에서 작업 한 깔끔한 작은 유틸리티-감사합니다!
John Kattenhorn

19

이미 권장 한대로을 사용할 수 있습니다 tree. 그러나 텍스트를 재구성 된 텍스트와 함께 사용하려면 몇 가지 추가 매개 변수가 필요했습니다.

pdf 제작에 tree사용 pandoc하는 경우 표준 출력이 인쇄되지 않습니다 .

tree --dirsfirst --charset=ascii /path/to/directoryASCII다음과 같이 문서에 통합 할 수 있는 멋진 트리를 생성합니다 .

.. code::
.
|-- ContentStore
|   |-- de-DE
|   |   |-- art.mshc
|   |   |-- artnoloc.mshc
|   |   |-- clientserver.mshc
|   |   |-- noarm.mshc
|   |   |-- resources.mshc
|   |   `-- windowsclient.mshc
|   `-- en-US
|       |-- art.mshc
|       |-- artnoloc.mshc
|       |-- clientserver.mshc
|       |-- noarm.mshc
|       |-- resources.mshc
|       `-- windowsclient.mshc
`-- IndexStore
    |-- de-DE
    |   |-- art.mshi
    |   |-- artnoloc.mshi
    |   |-- clientserver.mshi
    |   |-- noarm.mshi
    |   |-- resources.mshi
    |   `-- windowsclient.mshi
    `-- en-US
        |-- art.mshi
        |-- artnoloc.mshi
        |-- clientserver.mshi
        |-- noarm.mshi
        |-- resources.mshi
        `-- windowsclient.mshi

8

Dropbox 파일 목록을 위해이 스크립트를 작성했습니다.

sed 다음에 오는 심볼릭 링크 된 파일 / 폴더 경로의 전체 경로를 제거하는 데 사용됩니다 ->

불행히도 탭이 손실됩니다. 사용 zsh탭을 보존 할 수 있습니다.

! / usr / bin / env bash

#!/usr/bin/env zsh

F1='index-2.md' #With hyperlinks
F2='index.md'

if [ -e $F1 ];then
    rm $F1
fi

if [ -e $F2 ];then
    rm $F2
fi

DATA=`tree --dirsfirst -t -Rl --noreport | \
    sed 's/->.*$//g'`             # Remove symlink adress and ->

echo -e '```\n' ${DATA} '\n```' > $F1  # Markdown needs triple back ticks for <pre>

# With the power of piping, creating HTML tree than pipe it
# to html2markdown program, creates cool markdown file with hyperlinks.

DATA=`tree --dirsfirst -t -Rl --noreport -H http://guneysu.pancakeapps.com`
echo $DATA | \
    sed 's/\r\r/\n/g' | \
    html2markdown | \
    sed '/^\s*$/d' | \
    sed 's/\# Directory Tree//g' | \
        > $F2

다음과 같은 출력이 있습니다.

```
 .
├── 2013 
│   └── index.markdown
├── 2014 
│   └── index.markdown
├── 2015 
│   └── index.markdown
├── _posts 
│   └── 2014-12-27-2014-yili-degerlendirmesi.markdown
├── _stash 
└── update.sh 
```

[BASE_URL/](BASE_URL/)
├── [2013](BASE_URL/2013/)
│   └── [index.markdown](BASE_URL/2013/index.markdown)
├── [2014](BASE_URL/2014/)
│   └── [index.markdown](BASE_URL/2014/index.markdown)
├── [2015](BASE_URL/2015/)
│   └── [index.markdown](BASE_URL/2015/index.markdown)
├── [_posts](BASE_URL/_posts/)
│   └── [2014-12-27-2014-yili-degerlendirmesi.markdown](_posts/2014-12-27-2014-yili-degerlendirmesi.markdown)
├── [_stash](BASE_URL/_stash/)
├── [index-2.md](BASE_URL/index-2.md)
└── [update.sh](BASE_URL/update.sh)
* * *
tree v1.6.0 © 1996 - 2011 by Steve Baker and Thomas Moore
HTML output hacked and copyleft © 1998 by Francesc Rocher
Charsets / OS/2 support © 2001 by Kyosuke Tokoro

7

Atom 편집기를 사용하는 경우 ascii-tree 패키지로 이를 수행 할 수 있습니다 .

다음과 같은 트리를 작성할 수 있습니다.

root
+-- dir1
    +--file1
+-- dir2
    +-- file2

그것을 선택하고 눌러 다음과 같이 변환하십시오 ctrl-alt-t:

root
├── dir1
│   └── file1
└── dir2
    └── file2

5

OSX에서을 사용 reveal.js하면 사용자를 tree출력 한 다음 출력을 복사 / 붙여 넣기하면 렌더링 문제가 발생합니다 . 이상한 기호가 나타납니다.

가능한 두 가지 해결책을 찾았습니다.

1) charset ascii를 사용하고 단순히 마크 다운 파일에 출력을 복사 / 붙여 넣기

tree -L 1 --charset=ascii

2) 마크 다운 파일에서 HTML과 유니 코드를 직접 사용하십시오.

<pre>
.
&#8866; README.md
&#8866; docs
&#8866; e2e
&#8866; karma.conf.js
&#8866; node_modules
&#8866; package.json
&#8866; protractor.conf.js
&#8866; src
&#8866; tsconfig.json
&#8985; tslint.json
</pre>

도움이 되길 바랍니다.


4

와사비 를 사용하는 것이 좋습니다. 그러면 마크 다운 느낌을 사용할 수 있습니다.

root/ # entry comments can be inline after a '#'
      # or on their own line, also after a '#'

  readme.md # a child of, 'root/', it's indented
            # under its parent.

  usage.md  # indented syntax is nice for small projects
            # and short comments.

  src/          # directories MUST be identified with a '/'
    fileOne.txt # files don't need any notation
    fileTwo*    # '*' can identify executables
    fileThree@  # '@' can identify symlinks

과의 JS 도서관에서 그 정확한 구문을 던져

와사비 예



1

이를위한 NPM 모듈이 있습니다.

npm dree

디렉토리 트리를 문자열 또는 객체로 표현할 수 있습니다. 명령 행과 함께 사용하면 표현을 txt 파일로 저장할 수 있습니다.

예:

$ npm dree parse myDirectory --dest ./generated --name tree
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.