टीसॉर्ट

From Vigyanwiki
Revision as of 08:38, 11 July 2023 by alpha>Indicwiki (Created page with "{{for|the Discworld location|Discworld (world)#Tsort}} {{lowercase|tsort}} {{Infobox software | name = tsort | logo = | screenshot...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
tsort
Initial release1979; 45 years ago (1979)
Operating systemUnix, Unix-like, V, Inferno
PlatformCross-platform
TypeCommand

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


इतिहास

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

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

tsort [-dlq] [फ़ाइल]

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

-डी डिबगिंग चालू करें
-l सबसे लंबे चक्र को खोजें और प्रदर्शित करें।
-q चक्रों के बारे में सूचनात्मक संदेश प्रदर्शित न करें।

GNU केवल निम्नलिखित विकल्प प्रदान करता है:

--help सहायता संदेश प्रदर्शित करें और बाहर निकलें
--संस्करण संस्करण जानकारी प्रदर्शित करें और बाहर निकलें

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

व्यवहार

tsort अपने इनपुट को (दी गई फ़ाइल से, या मानक स्ट्रीम से यदि कोई इनपुट फ़ाइल नहीं दी गई है या '-' की फ़ाइल के लिए) स्ट्रिंग के जोड़े के रूप में पढ़ता है, रिक्त स्थान से अलग किया जाता है, जो आंशिक क्रम का संकेत देता है। आउटपुट कुल ऑर्डरिंग है जो दिए गए आंशिक ऑर्डरिंग से मेल खाता है।[4] दूसरे शब्दों में: एक निर्देशित चक्रीय ग्राफ (निर्भरता ग्राफ के रूप में प्रयुक्त) के लिए, tsort एक सूची तैयार करता है शीर्षों को ताकि सभी किनारों 'a->b' के लिए, 'a' सूची में 'b' से पहले आए।

उदाहरण

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

$ 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


कॉल ग्राफ़

tsort किसी स्रोत फ़ाइल में फ़ंक्शंस को पुनर्व्यवस्थित करने में मदद कर सकता है ताकि जितना संभव हो उतना उपयोग करने से पहले परिभाषित किया जा सके (निम्नलिखित को इस प्रकार समझें: 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] BSD UNIX विशिष्ट ar (Unix) और ranlib कमांड इनवोकेशन (/usr/share/mk/bsd.lib.mk से) के एक सामान्य भाग के रूप में tsort का उपयोग करता है:

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

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

एक ए

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

$ 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 tsort on