मार्कडाउन सिंटैक्स में निर्देशिका और फ़ाइल संरचना का प्रतिनिधित्व करना


214

मैं अपने कुछ Jekyll ब्लॉग पोस्ट में निर्देशिका और फ़ाइल संरचनाओं का वर्णन करना चाहता हूं, क्या मार्कडाउन इस तरह के उत्पादन का एक साफ तरीका प्रदान करता है?

उदाहरण के लिए, आप 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

मेरा मानना ​​है कि ऊपर दिए गए ब्लॉक ब्लॉक वर्ण यूनिकोड हैं (जैसा कि यहां इस उत्तर में वर्णित है ), लेकिन मुझे यकीन नहीं है कि मार्कडाउन या विभिन्न ब्राउज़र उन्हें कैसे संभालेंगे। मैं उम्मीद कर रहा था कि मार्कडाउन ने इसे करने का कुछ तरीका शामिल किया है जो कि यूनिकोड वर्णों के रूप में शायद ऊपर का आउटपुट देता है।



1
चूँकि आपने विशेष रूप से जेकिल का उल्लेख किया है, यह कोई फ़्लॉफ़ उदाहरण नहीं है और इसका स्रोत बिल फिट हो सकता है
user3276552

जवाबों:


143

यदि आप यूनिकोड वर्णों के बारे में चिंतित हैं तो आप संरचनाओं के निर्माण के लिए 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
इसके लिए धन्यवाद। हालांकि यूनिकोड वर्णों का उपयोग करने के बारे में कोई चिंता होनी चाहिए? जैसे कि पुराने ब्राउज़रों के साथ ज्ञात मुद्दे, गलत तरीके से मार्कडाउन रेंडरिंग आदि
मैट रॉल्स

2
मार्कडाउन के साथ कोई समस्या नहीं होनी चाहिए, यह आपके Jekyll टेम्पलेट्स और उपयोगकर्ताओं वेब ब्राउज़र पर होने जा रहा है।
रॉबर्टकेनी

1
इस विकल्प का एक और लाभ अन्य विकल्पों की तुलना में छोटा है, जो केवल कॉस्मेटिक कारणों के लिए विभिन्न प्रतीकों का उपयोग करते हैं (जैसे आउटपुट से tree)।
विलास

1
इस awser का उपयोग करते समय पेड़ केवल कुछ टेक्स्ट लाइनों के रूप में रेंडर किया जाता है। MSC प्लगइन के साथ VSCode और VisualStudio में परीक्षण किया गया। इसके अलावा GitHub पर यह काम नहीं कर रहा है
डैनी

237

मैंने एक और रिपॉजिटरी में एक उदाहरण का अनुसरण किया और ट्रिपल बैकटिक्स ( ```) की एक जोड़ी के भीतर निर्देशिका संरचना को लपेटा।

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

5
स्टैक ओवरफ्लो नए ट्रिपल-बैकटिक सिंटैक्स का समर्थन नहीं करता है; यह उन्हें एकल पीठिका के रूप में व्याख्या करता है। इनलाइन टेक्स्ट के रूप में सिंगल बैकटिक्स मार्क कोड, केवल एक लाइन के भीतर; इसलिए आपके उदाहरण में प्रत्येक पंक्ति के बीच सफेद धारियां हैं। मल्टी-लाइन कोड को चिह्नित करने के लिए एक संगत तरीके के लिए, चार स्थानों से पाठ को इंडेंट करें।
रोरी ओ'केन

3
जब एसओ ट्रिपल-बैकटिक का समर्थन नहीं करता है, तो अधिकांश अन्य एमडी कार्यान्वयन (जैसे गितूब / बिटबकेट) करते हैं और यह एकमात्र तरीका था जिससे मुझे एक पेड़ काम कर सकता था जिसमें प्रत्येक प्रविष्टि के रूप में इनलाइन टिप्पणियां थीं। तो .. यहाँ से +1!
स्कॉट बायर्स

1
इस उत्तर के लिए अंगूठे। ट्रिपल बैकटिक्स मार्कडाउन मेरे लिए वर्डप्रेस पर भी काम करता है।
बिनीता भारती

ट्रिपल- backtick सपोर्ट अब SO पर काम करता है।
स्ट्रिपिंगवर्यर

41

आप अपने उदाहरण के समान कुछ उत्पन्न करने के लिए पेड़ का उपयोग कर सकते हैं । एक बार जब आपके पास आउटपुट हो जाता है, तो आप इसे <pre>सादे पाठ स्वरूपण को संरक्षित करने के लिए एक टैग में लपेट सकते हैं ।


कूल, यह सहायक धन्यवाद लगता है! लेकिन सैद्धांतिक फ़ाइल संरचनाओं के बारे में क्या? यदि इस समय यह एकमात्र समाधान है, तो मुझे लगता है कि मुझे केवल उन वर्णों को कॉपी और पेस्ट करना पड़ सकता है जिनकी मुझे आवश्यकता है। फिर से चीयर्स।
मैट रोल्स

मुझे यह समाधान पसंद है। मार्कडाउन में साफ-सुथरा दिखें
Anh Tuan

27

यदि आप VS कोड का उपयोग कर रहे हैं, तो यह फ़ाइल ट्री जनरेट करने के लिए एक भयानक एक्सटेंशन है। https://marketplace.visualstudio.com/items?itemName=Shinotatwu-DS.file-tree-generator

मार्कडाउन में सीधे जोड़ा गया ...

📦quakehunter
 ┣ 📂client
 ┣ 📂node_modules
 ┣ 📂server
 ┃ ┗ 📜index.js
 ┣ 📜.gitignore
 ┣ 📜package-lock.json
 ┗ 📜package.json

22

मैंने इस कार्य को स्वचालित करने के लिए एक नोड मॉड्यूल बनाया: mddir

प्रयोग

नोड mddir "../relative/path/"

स्थापित करने के लिए: npm स्थापित mddir -g

वर्तमान निर्देशिका के लिए मार्कडाउन उत्पन्न करने के लिए: mddir

किसी भी निरपेक्ष पथ के लिए उत्पन्न करने के लिए: mddir / निरपेक्ष / पथ

एक रिश्तेदार पथ के लिए उत्पन्न करने के लिए: mddir ~ / दस्तावेज / जो भी हो।

Md फाइल आपके वर्किंग डायरेक्टरी में जेनरेट होती है।

वर्तमान में नोड_मॉड्यूल और .गित फ़ोल्डर्स को अनदेखा करता है।

समस्या निवारण

यदि आपको 'नोड \ r: ऐसी कोई फ़ाइल या निर्देशिका' प्राप्त नहीं होती है, तो समस्या यह है कि आपका ऑपरेटिंग सिस्टम अलग-अलग लाइन एंडिंग का उपयोग करता है और mddir आपको यूनिक्स को लाइन एंडिंग स्टाइल को स्पष्ट रूप से सेट किए बिना पार्स नहीं कर सकता है। यह आमतौर पर विंडोज को प्रभावित करता है, लेकिन लिनक्स के कुछ संस्करण भी। यूनिक्स शैली के लिए लाइन एंडिंग की स्थापना mddir npm वैश्विक बिन फ़ोल्डर में की जानी चाहिए।

लाइन अंत तय

साथ npm बिन फ़ोल्डर पथ प्राप्त करें:

npm config get prefix

उस फ़ोल्डर में सीडी

काढ़ा स्थापित dos2unix

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

यह डॉस के बजाय यूनिक्स के लिए लाइन एंडिंग को परिवर्तित करता है

फिर साथ में चलाएं: नोड 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
अफसोस की बात है, मैंने यह कोशिश की, और यह मेरे विंडोज 10 मशीन पर काम नहीं करता है, और ऐसा लगता है कि परियोजना को छोड़ दिया गया है।
रिच हॉपकिंस

1
नमस्ते, पुस्तकालय बाहर की कोशिश करने के लिए धन्यवाद। मैं अन्य प्रोजेक्ट्स में व्यस्त रहा हूं और फिर भी नकल नहीं कर सकता, लेकिन एक संभावित फिक्स ढूंढ लिया है। के साथ npm बिन फ़ोल्डर पथ प्राप्त करें: 'npm कॉन्‍फ़िगर उपसर्ग प्राप्त करें'। उस फ़ोल्डर में सीडी, फिर 'काढ़ा स्थापित करें dos2unix', 'dos2unix lib / node_modules / mddir / src / mddir.js' चलाएं। यह डॉस के बजाय यूनिक्स के लिए लाइन एंडिंग को परिवर्तित करता है। फिर साथ में चलाएं: नोड mddir "../relative/path/"।
जॉन

मेरे विंडोज 10 मशीन पर काम किया, स्वच्छ छोटी उपयोगिता - धन्यवाद!
जॉन काटेनहॉर्न

19

जैसा कि पहले से ही अनुशंसित है, आप उपयोग कर सकते हैं tree। लेकिन पुनर्गठन पाठ के साथ इसे उपयोग करने के लिए कुछ अतिरिक्त मापदंडों की आवश्यकता थी।

treeयदि pandocआपका उत्पादन pdf का उपयोग करने के लिए मानक आउटपुट प्रिंट नहीं होगा ।

tree --dirsfirst --charset=ascii /path/to/directoryएक अच्छा ASCIIपेड़ पैदा करेगा जिसे आपके दस्तावेज़ में इस तरह एकीकृत किया जा सकता है:

.. 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

मैंने अपनी ड्रॉपबॉक्स फ़ाइल सूची के लिए यह स्क्रिप्ट किया है।

sed सिम्लिंकड फ़ाइल / फ़ोल्डर पथ के पूर्ण पथ को हटाने के लिए प्रयोग किया जाता है ->

दुर्भाग्य से, टैब खो गए हैं। का उपयोग कर zshमैं टैब को संरक्षित करने में सक्षम हूं।

/ usr / bin / env बैश

#!/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

यदि आप एटम संपादक का उपयोग कर रहे हैं, तो आप इसे आस्की-ट्री पैकेज द्वारा पूरा कर सकते हैं ।

आप निम्नलिखित पेड़ लिख सकते हैं:

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

और इसे चुनकर निम्नलिखित में परिवर्तित करें और दबाएं ctrl-alt-t:

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

5

OSX के तहत, उपयोग करते हुए reveal.js, मुझे प्रतिपादन मुद्दा मिल गया है अगर मैं सिर्फ उपयोगकर्ता हूं treeऔर फिर आउटपुट को कॉपी / पेस्ट करता हूं : अजीब प्रतीक दिखाई देते हैं।

मुझे 2 संभावित समाधान मिले हैं।

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

और के लिए जे एस पुस्तकालय में है कि सटीक सिंटैक्स फेंक इस

वसाबी उदाहरण है



1

इसके लिए एक NPM मॉड्यूल है:

npm dree

यह आपको एक स्ट्रिंग या ऑब्जेक्ट के रूप में डायरेक्टरी ट्री का प्रतिनिधित्व करने की अनुमति देता है। कमांड लाइन के साथ इसका उपयोग करने से आप एक txt फ़ाइल में प्रतिनिधित्व को बचा पाएंगे।

उदाहरण:

$ npm dree parse myDirectory --dest ./generated --name tree
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.