"शुद्ध" (7-बिट) ASCII आउटपुट के साथ "ट्री" कमांड आउटपुट


44

"ट्री" कमांड ट्री को दिखाने के लिए अच्छे बॉक्स-ड्रॉइंग कैरेक्टर का उपयोग करता है, लेकिन मैं आउटपुट को "कोड-पेज-न्यूट्रल" संदर्भ में उपयोग करना चाहता हूं (मुझे पता है कि वास्तव में हमेशा एक कोड पेज होता है, लेकिन इसे निचले तक सीमित करके पात्रों को मैं उन चिंताओं से मुक्त होने की उम्मीद करता हूं जो उलानबटोर में किसी को स्माइली चेहरे आदि देखता है)।

इसके बजाय उदाहरण के लिए:

├── include
│   ├── foo
│   └── bar

मुझे कुछ पसंद है:

+-- include
|   +-- foo
|   \-- bar

लेकिन "ट्री" स्विच संयोजनों में से कोई भी मैंने इसे देने की कोशिश नहीं की (ऐसा लगता है जैसे वे बॉक्स-ड्राइंग चार्ट को आधार रेखा के रूप में लेते हैं और इसे अभी तक प्रेटियर बनाते हैं)

मैंने ASCII कला :-) की एक अनंत राशि से परे कुछ भी खोजने के बिना इस तरह के रूपांतरण करने के लिए बॉक्स-ड्रॉइंग फिल्टर की तलाश की। एक जेनेरिक फ़िल्टर 15 मिनट में पकने वाली कुछ चीज़ों की तरह महक देता है - प्लस दो और वृद्धिशील दिन सभी मनोरंजक कोने के मामलों में ठोकर खा रहे हैं :-)


सवाल के लिए धन्यवाद। मैं तो मैं पाइप सका enscript में पेड़ के उत्पादन में प्रिंट का नियंत्रण स्वरूपण प्राप्त करने के लिए यह आवश्यक (मेरी duplexpr पैकेज से dprint / dprintm का उपयोग कर sourceforge.net/projects/duplexpr/। )
जो

जवाबों:


59

मुझे इस पर यकीन नहीं है, लेकिन मुझे लगता है कि आप सभी की जरूरत है

tree | sed 's/├/\+/g; s/─/-/g; s/└/\\/g'

उदाहरण के लिए:

$ tree
.
├── file0
└── foo
    ├── bar
    │   └── file2
    └── file1

2 directories, 3 files
$ tree | sed 's/├/\+/g; s/─/-/g; s/└/\\/g'
.
+-- file0
\-- foo
    +-- bar
    │   \-- file2
    \-- file1

2 directories, 3 files

वैकल्पिक रूप से, आप --charsetविकल्प का उपयोग कर सकते हैं :

$ tree --charset=ascii
.
|-- file0
`-- foo
    |-- bar
    |   `-- file2
    `-- file1

2 directories, 3 files

कोई GNU नहीं है tree, कोई Unix नहीं है tree, कोई POSIX नहीं है tree। एकमात्र treeकार्यान्वयन जो मुझे पता है, वह है mama.indstate.edu/users/ice/tree
स्टीफन चेज़लस

3
@StephaneChazelas धन्यवाद, इसलिए --charsetविकल्प हमेशा उपलब्ध होना चाहिए। उत्तर संपादित किया गया।
terdon

शानदार! (विशेष रूप से sed संस्करण - मेरे लिए sed अजीब भूमि से परे जंगली भूमि है)
टॉम गुडफेलो

1
मुझे पेड़ पसंद है - अशांति = अस्सी का विकल्प, धन्यवाद
ling

4
वास्तव में मुझे लगता है कि --charsetविकल्प का उल्लेख पहले किया जाना चाहिए - विकल्प का उपयोग sedशिक्षाप्रद है, लेकिन अधिक जटिल ...
rob74

30

किस बारे में tree --charset unicode?

|-- boot_print
|   |-- config-2.6.32-5-amd64
|   |-- grub
|   |   |-- 915resolution.mod
|   |   |-- acpi.mod
|   |   |-- affs.mod
|   |   |-- afs_be.mod
|   |   |-- afs.mod
|   |   |-- aout.mod
|   |   |-- ata.mod
|   |   |-- ata_pthru.mod
|   |   |-- at_keyboard.mod
|   |   |-- befs_be.mod
|   |   |-- befs.mod
|   |   |-- biosdisk.mod
|   |   |-- bitmap.mod
|   |   |-- bitmap_scale.mod
|   |   |-- blocklist.mod
|   |   |-- boot.img

2
यह उसी तरह है जैसेtree --charset nwildner
स्टीफन चेज़लस

हाँ। अन्य उत्तर को संपादित किया गया था, मैंने यह नहीं देखा कि @terdon ने मेरा लेखन करते समय अधिक पूर्ण उत्तर दिया;)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.