12 पॉइंट द्वारा GN⁺ 2025-04-11 | 6 टिप्पणियां | WhatsApp पर शेयर करें
  • यह आलोचना आम है कि man पेज में "आपस में जुड़े लिंक नहीं होते" या "टर्मिनल विंडो छोटी करने पर टेक्स्ट दोबारा व्यवस्थित नहीं होता", लेकिन वास्तव में man फ़ॉर्मैट खुद लिंक और reflow दोनों को सपोर्ट करता है
  • असली समस्या यह है कि man पेज पढ़ने वाले टूल (man कमांड और less आदि) इन सुविधाओं को ठीक से लागू नहीं करते

man पेज फ़ॉर्मैट की संरचना

  • man दस्तावेज़ आम तौर पर दो फ़ॉर्मैट में लिखे जाते हैं:
    • mdoc(7): आधुनिक, अर्थ-आधारित markup फ़ॉर्मैट
    • man(7): 1979~1989 के दौरान इस्तेमाल हुआ पुराना फ़ॉर्मैट
  • उदाहरण (mdoc सिंटैक्स का एक हिस्सा):
    .Sh NAME  
    .Nm openrc  
    .Nd stops and starts services for the specified runlevel  
    .Sh SYNOPSIS  
    
  • .Sh, .Nm, .Nd क्रमशः section header, command name, और description को दर्शाते हैं
  • इसे सीधे संपादित करने के लिए mdoc macro सूची देखनी पड़ती है

reference (लिंक) सुविधा भी अंतर्निहित है

  • mdoc फ़ॉर्मैट में निम्न लिंक macros शामिल हैं:
  • .Xr: दूसरी man पेज को संदर्भित करने वाला cross-reference
  • .Sx: उसी पेज के भीतर किसी दूसरे section का संदर्भ
  • HTML में बदलने पर ये वास्तविक लिंक के रूप में render होते हैं और ब्राउज़र में क्लिक किए जा सकते हैं
  • .Sh section header को anchor की तरह माना जाता है, इसलिए वह .Sx लिंक का destination बन सकता है
  • लेकिन टर्मिनल में man कमांड से देखने पर यह लिंक सुविधा काम नहीं करती

निष्कर्ष: समस्या man फ़ॉर्मैट में नहीं, viewer में है

  • मौजूदा man कमांड पेज को less में pipe करके दिखाती है, और इस तरीके में लिंक हैंडलिंग संभव नहीं है
  • समाधान:
  • ऐसा नया पेज viewer चाहिए जो man फ़ॉर्मैट को समझे और लिंक सपोर्ट करे
  • टर्मिनल की चौड़ाई बदलने पर टेक्स्ट का automatic reflow भी साथ में लागू किया जाए तो और बेहतर होगा

पृष्ठभूमि जानकारी

  • mdoc(7) 1990 के दशक में 4.4BSD में पेश किया गया फ़ॉर्मैट है
  • man(7) 1979~1989 के बीच इस्तेमाल हुआ क्लासिक फ़ॉर्मैट है, और अब लगभग उपयोग में नहीं है

6 टिप्पणियां

 
scari 2025-04-11

मैंने Slackbot नोटिफिकेशन में सिर्फ पहली पंक्ति देखी और तुरंत सहमति महसूस होने पर क्लिक कर दिया। मैं भी इस बात से 100% सहमत हूँ कि समस्या रीडर में है.

...लेकिन लगता है कि आधुनिक इंसान man तो छोड़िए, टर्मिनल भी इस्तेमाल नहीं करते। rtfm अब रोमांस के दौर की एक धरोहर बन गया है।

 
winterjung 2025-04-11

मैंने mac पर इसे नीचे की तरह define कर रखा है और pman ls की तरह इस्तेमाल करके PDF में देखता हूँ.

pman() {  
  mandoc -Tpdf "$(man -w $@)" | open -f -a Preview  
}  
 
pcj9024 2025-04-15

ज़बरदस्त टिप... धन्यवाद

 
pkj3186 2025-04-11

वाह, बहुत धन्यवाद

 
bbulbum 2025-04-11

वाह, इससे मैं बहुत ज़्यादा जुड़ाव महसूस करता हूँ। man को अच्छी तरह पढ़ लें तो यह सच में बहुत काम का है, लेकिन इसे ठीक से पढ़ना बहुत मुश्किल है..

 
GN⁺ 2025-04-11
Hacker News राय
  • एक राय है कि mdoc और mandb फ़ॉर्मैट में दस्तावेज़ लंबे समय से लिखे जा रहे हैं, लेकिन इस भाषा में महारत हासिल करना कठिन है
    • mdoc और mandb, roff के ऊपर मौजूद macro set जैसे हैं
    • यह सुझाव देने का विचार है कि सभी man pages को Markdown में बदला जाए और सिस्टम में उसी रूप में दिखाया जाए
    • Markdown के लिए अधिक tools उपलब्ध हैं, इसलिए non-technical users भी आसानी से दस्तावेज़ लिख सकते हैं
    • लेकिन Markdown कम structured है, इसलिए अलग-अलग programs में उसकी अलग-अलग dialects मौजूद हैं
  • Emacs में info pages को navigate करना उपयोगी है, और man pages में भी ऐसा ही कुछ किया जा सकता है
    • मौजूदा man pages की समृद्धि एक ऐसा फ़ायदा है जिसे बहुत से लोग पहचानते नहीं हैं
    • जो लोग Markdown पर स्विच करना चाहते हैं, उनके प्रति कुछ अफ़सोस व्यक्त किया गया है
    • Markdown पर जाने से मौजूदा solution के links और सामान्य semantics को लागू करना कठिन होगा
    • डेटा को JSON में ले जाने के मामलों को देखें तो जटिल features जोड़ने की कोशिश दिखाई देती है
  • Vim का built-in ft-man-plugin डिफ़ॉल्ट man page viewer के रूप में इस्तेमाल करना समस्या समाधान में मददगार है
    • links काम करते हैं, और line wrap होने पर indentation बनी रहती है
    • less की डिफ़ॉल्ट settings को बेहतर बनाया जा सकता है, लेकिन horizontal scrolling की ज़रूरत पड़ती है
  • इस बात का अफ़सोस है कि man pages के कई web versions monospace font में सेट होते हैं
    • OpenBSD के online man pages बेहतरीन हैं
    • टर्मिनल में man pages पढ़ना भी अच्छा लगता है
    • ज़्यादातर search function और half-page scrolling का उपयोग किया जाता है
  • pinfo मूल रूप से GNU Info pages देखने के लिए है, लेकिन यह man pages भी दिखा सकता है
    • यह pages के बीच cross-reference को पहचान सकता है और navigate कर सकता है
  • एक राय है कि किसी खास flag के विवरण पर सीधे जाने की सुविधा होनी चाहिए
    • अभी regex का उपयोग करके flag का विवरण ढूँढ़ा जाता है
  • mandoc project पर विचार करने का सुझाव दिया गया है
    • pages को semantic तरीके से process करके बेहतर परिणाम मिल सकते हैं
  • एक राय है कि Markdown बेहतर solution है
    • लोग web या code editor में documents पढ़ने के आदी हो चुके हैं, इसलिए दूसरे interfaces असुविधाजनक लगते हैं
    • developers Markdown के अभ्यस्त हैं, और अधिकांश documents भी Markdown में लिखे जाते हैं
    • man pages, दस्तावेज़ लिखने वालों और पढ़ने वालों दोनों के लिए कमतर हैं