टीसॉर्ट

From Vigyanwiki
tsort
Initial release1979; 45 years ago (1979)
Operating systemUnix, Unix-like, V, Inferno
PlatformCross-platform
TypeCommand

टीसॉर्ट प्रोग्राम यूनिक्स और यूनिक्स जैसे प्लेटफार्मों पर एक कमांड लाइन इंटरफेस उपयोगिता है, जो अपने इनपुट पर सांस्थितिक सॉर्ट करता है। As of 2017, यह पोसिक्स1 मानक का हिस्सा है। [1]


इतिहास

इसकी जानकारी के अनुसार (यूनिक्स) [2] पेज, यह कमांड प्रारम्भ में ऑब्जेक्ट फ़ाइलों का क्रम प्रदान करने के लिए लिखा गया था जो लिंकर (कंप्यूटिंग) को उन्हें क्रमिक रूप से संसाधित करने की अनुमति देता था (प्रत्येक एक बिल्कुल एक बार, और क्रम में)। फ्रीबीएसडी मैनुअल पेज की उपस्थिति संस्करण 7 यूनिक्स पर आधारित है। [3]

ध्यान दें कि निम्नलिखित विवरण टीसॉर्ट के फ्रीबीएसडी कार्यान्वयन के व्यवहार का वर्णन कर रहा है और जीएनयू सुविधाओं का उल्लेख करता है जहां वे उपस्थित हो सकते हैं। अन्य कार्यान्वयन या संस्करण भिन्न हो सकते हैं.

वाक्यविन्यास

tsort [-dlq] [FILE]

फ्रीबीएसडी विकल्प हो सकते हैं:

-d         turn on debugging
-l         search for and display the longest cycle.
-q         Do not display informational messages about cycles.


जीएनयू केवल निम्नलिखित विकल्प प्रदान करता है:

--help     display help message and exit
--version  display version information and exit

पोसिक्स द्वारा कोई विकल्प निर्धारित नहीं हैं।

व्यवहार

टीसॉर्ट अपने इनपुट को (दी गई फ़ाइल से, या मानक स्ट्रीम से यदि कोई इनपुट फ़ाइल नहीं दी गई है या '-' की फ़ाइल के लिए) स्ट्रिंग के जोड़े के रूप में पढ़ता है, रिक्त स्थान से अलग किया जाता है, जो आंशिक क्रम का संकेत देता है। आउटपुट कुल क्रमण है जो दिए गए आंशिक क्रमण से मेल खाता है। [4]

दूसरे शब्दों में: एक निर्देशित चक्रीय आरेख (निर्भरता आरेख के रूप में प्रयुक्त) के लिए, टीसॉर्ट शीर्षों की एक सूची तैयार करता है ताकि सभी किनारों 'a->b' के लिए, 'a' सूची में 'b' से पहले आए।

उदाहरण

टीसॉर्ट एक निर्देशित चक्रीय आरेख के शीर्षों को इस तरह से सूचीबद्ध करता है कि सभी क्रम/दिशा संबंधों का सम्मान किया जाता है:

$ tsort <<EOF
> 3 8
> 3 10
> 5 11
> 7 8
> 7 11
> 8 9
> 11 2
> 11 9
> 11 10
> EOF
3
5
7
11
8
10
2
9
sample DAG


आह्वान आरेख़

टीसॉर्ट किसी स्रोत फ़ाइल में फलन को पुनर्व्यवस्थित करने में मदद कर सकता है ताकि जितना संभव हो उतना उपयोग करने से पहले परिभाषित किया जा सके (निम्नलिखित को इस प्रकार समझें: main() आह्वान करता है parse_options(), tail_file() और tail_forever(); tail_file() आह्वान करता है pretty_name(), और इसी तरह। नतीजा यह है कि dump_remainder() को पहले start_lines() दूसरा, आदि परिभाषित किया जाना चाहिए):

$ cat call-graph
main parse_options
main tail_file
main tail_forever
tail_file pretty_name
tail_file write_header
tail_file tail
tail_forever recheck
tail_forever pretty_name
tail_forever write_header
tail_forever dump_remainder
tail tail_lines
tail tail_bytes
tail_lines start_lines
tail_lines dump_remainder
tail_lines file_lines
tail_lines pipe_lines
tail_bytes xlseek
tail_bytes start_bytes
tail_bytes dump_remainder
tail_bytes pipe_bytes
file_lines dump_remainder
recheck pretty_name
$ # note: 'tac' reverses the order
$ tsort call-graph | tac
dump_remainder
start_lines
file_lines
pipe_lines
xlseek
start_bytes
pipe_bytes
tail_lines
tail_bytes
pretty_name
write_header
tail
recheck
parse_options
tail_file
tail_forever
main


पुस्तकालय

पारंपरिक एलडी (यूनिक्स) (यूनिक्स लिंकर) के लिए आवश्यक है कि उसके लाइब्रेरी इनपुट को सांस्थितिक क्रम में क्रमबद्ध किया जाए, क्योंकि यह एक ही पास में फाइलों को संसाधित करता है। यह स्थिर पुस्तकालय (*.a) और गतिशील पुस्तकालय (*.so) दोनों पर लागू होता है, और स्थैतिक पुस्तकालयों की स्तिथि में अधिमानतः भीतर निहित व्यक्तिगत ऑब्जेक्ट फ़ाइलों के लिए है। [5] बीएसडी यूनिक्स विशिष्ट एआर (यूनिक्स) और रैनलिब कमांड इनवोकेशन (/usr/share/mk/bsd.lib.mk से) के एक सामान्य भाग के रूप में टीसॉर्ट का उपयोग करता है:

lib${LIB}.a: ${OBJS} ${STATICOBJS}
    @${ECHO} building static ${LIB} library
    @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
    ${RANLIB} ${.TARGET}

यहाँ lorder (लाइब्रेरी ऑर्डर) का उपयोग प्रतीक तालिका का निरीक्षण करके अंतर-फ़ाइल निर्भरता सूची उत्पन्न करने के लिए किया जाता है।

उपयोग नोट्स

श्वेत स्थान विभाजकों की विनिमेयता पर ध्यान दें ताकि निम्नलिखित इनपुट समतुल्य हों:

a b
b c
a b b
c
a
b b c
a b b c
a
b
b
c

समान वस्तुओं के जोड़े एक शीर्ष की उपस्थिति का संकेत देते हैं, लेकिन क्रमबद्ध नहीं (इसलिए निम्नलिखित किनारों के बिना एक शीर्ष का प्रतिनिधित्व करता है):

a asammilit 

कड़ाई से कहें तो ऐसे आरेख़ का कोई सांस्थितिक ऑर्डर नहीं होता है जिसमें एक या अधिक चक्र (आरेख़ सिद्धांत) सम्मिलित हो। हालाँकि टीसॉर्ट एक चेतावनी मुद्रित करता है और जीएनयू टीसॉर्ट चक्र पहचान (आरेख सिद्धांत) को सत्देरर ('टीसॉर्ट:' से प्रारम्भ होने वाली पंक्तियाँ) पर मुद्रित करता है:

$ tsort <<EOF
> a b
> b c
> c a
> EOF
UX: tsort: INFORM: cycle in data
tsort: a
tsort: b
tsort: c
a
b
c


यह भी देखें

संदर्भ

  1. से लगाना.html "क्रम से लगाना". The Open Group Base Specifications Issue 7, 2018 edition. The Open Group. {{cite web}}: Check |url= value (help)
  2. "Tsort background (GNU Coreutils 9.0)".
  3. "Tsort".
  4. "Tsort invocation (GNU Coreutils 9.0)".
  5. "c++ - gcc ld: method to determine link order of static libraries". Stack Overflow.



अग्रिम पठन


बाहरी संबंध

manual page of टीसॉर्ट on