3 पॉइंट द्वारा GN⁺ 2024-12-14 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • हाल में यह सोचने लगा/लगी कि टर्मिनल में होने वाली लगभग हर चीज़ इन चार तत्वों के संयोजन से बनती है

    • operating system की भूमिका
    • shell की भूमिका
    • terminal emulator की भूमिका
    • चल रहे program की भूमिका (top, vim, cat आदि)
  • प्रोग्राम आश्चर्यजनक रूप से काफ़ी एकसमान व्यवहार करते हैं

    • POSIX मुख्य रूप से terminal emulator, OS और shell के काम करने के तरीकों को परिभाषित करता है, लेकिन अलग-अलग program कैसे व्यवहार करें, इसके लिए कोई मानक नहीं है
    • फिर भी terminal program आम तौर पर काफ़ी एकसमान तरीके से काम करते हैं
  • ये नियम वर्णनात्मक हैं, निर्देशात्मक नहीं

    • इसका उद्देश्य terminal program के लेखकों को यह समझाना नहीं है कि उन्हें इन नियमों का पालन करना ही चाहिए
    • नया terminal program इस्तेमाल करते समय किन बुनियादी नियमों की उम्मीद की जा सकती है, यह जानना उपयोगी है
  • कुछ मामलों में यह स्पष्ट नहीं होता कि ज़िम्मेदारी program की है या नहीं

    • उदाहरण के लिए, Ctrl-D दबाकर किसी REPL से बाहर निकलना ऐसा व्यवहार है जिसे program को स्पष्ट रूप से implement करना पड़ता है

नियम 1: non-interactive program को Ctrl-C दबाने पर बंद हो जाना चाहिए

  • non-interactive program आम तौर पर Ctrl-C दबाने पर बंद हो जाते हैं
  • interactive program में Ctrl-C की दूसरी भूमिका होती है

नियम 2: TUI को q दबाने पर बंद हो जाना चाहिए

  • less या htop जैसे TUI program q दबाने पर बंद हो जाते हैं

नियम 3: REPL को खाली पंक्ति पर Ctrl-D दबाने पर बंद हो जाना चाहिए

  • ज़्यादातर REPL खाली पंक्ति पर Ctrl-D दबाने पर बंद हो जाते हैं

नियम 4: 16 से ज़्यादा रंगों का इस्तेमाल नहीं करना चाहिए

  • terminal program आम तौर पर बुनियादी 16 ANSI रंगों के बाहर के रंगों का लगभग इस्तेमाल नहीं करते

नियम 5: readline key binding का कम-से-कम मोटे तौर पर समर्थन होना चाहिए

  • ज़्यादातर program readline key binding को support करते हैं

नियम 5.1: Ctrl-W को आख़िरी शब्द हटाना चाहिए

  • ऐसे program लगभग नहीं के बराबर हैं जिनमें Ctrl-W आख़िरी शब्द नहीं हटाता

नियम 6: pipe में लिखते समय रंग बंद कर देने चाहिए

  • ज़्यादातर program pipe में लिखते समय रंगों को disable कर देते हैं

नियम 7: - का मतलब stdin/stdout होता है

  • अगर file name की जगह - दिया जाए, तो program stdin से पढ़ता है या stdout में लिखता है

  • इन नियमों को सीखने में समय लगता है

    • यह समझना पड़ता है कि नियम कहाँ लागू होते हैं, अपवादों को पहचानना पड़ता है, और पैटर्न को अनजाने में पकड़ना पड़ता है
    • इन नियमों को साफ़ तौर पर लिख देने से दूसरे लोगों के सीखने की रफ़्तार तेज़ हो सकती है

1 टिप्पणियां

 
GN⁺ 2024-12-14
Hacker News की राय
  • यूज़र की डिफ़ॉल्ट foreground color और background color का सम्मान करना चाहिए

    • अगर color का उपयोग किया जाए, तो डिफ़ॉल्ट background color और foreground color चाहे जो भी हों, पठनीयता बनी रहनी चाहिए
    • केवल color के आधार पर जानकारी नहीं देनी चाहिए
    • emoji का उपयोग सावधानी से करना चाहिए
    • scrolling output में महत्वपूर्ण जानकारी हटनी नहीं चाहिए
    • यूज़र को color और visual elements चुनने के लिए settings देनी चाहिए
  • Command Line Interface Guidelines की सिफारिश की गई है

    • इसमें Ctrl-C से बाहर निकलना, stdin के लिए - स्वीकार करना, pipe में color disable करना जैसे नियम शामिल हैं
  • command-line tools के लिए अतिरिक्त नियम

    • terminal type मानकर नहीं चलना चाहिए
    • यह मानकर चलना चाहिए कि terminal हो भी नहीं सकता
    • arguments और output structure में सामान्य परंपराओं का पालन करना चाहिए
    • standard sysexits.h exit codes का उपयोग करना चाहिए
    • binary में --help और manual page शामिल होने चाहिए
  • readline/emacs key bindings के बारे में जानकारी

    • macOS में Ctrl-E, Ctrl-W, Ctrl-U का उपयोग किया जा सकता है
    • rlwrap प्रोग्राम इंस्टॉल करके line editing features जोड़ी जा सकती हैं
  • color उपयोग पर सलाह

    • 16 colors से अधिक का उपयोग नहीं करना चाहिए
    • colors configurable होने चाहिए
  • GHCi में Ctrl-D उपयोग करने पर आने वाली समस्या

    • बाहर निकलने के लिए :q कमांड का उपयोग करना चाहिए
  • ~ को home directory मानने के बारे में स्पष्टीकरण

    • shell में यह काम करता है, लेकिन POSIX API में नहीं
  • प्रोग्राम को home directory में फ़ाइलें नहीं जोड़नी चाहिए

    • XDG_CONFIG_HOME का सम्मान करना चाहिए
  • CLI की consistency पर राय

    • CLI, GUI की तुलना में अधिक consistent है
    • इस गुण को GUI में लाना कठिन है
  • लंबे समय तक चलने वाली process को SIGHUP पर configuration फिर से reload करनी चाहिए

  • SSH connection में उपयोगी टिप

    • SSH session बंद करने के लिए ~. का उपयोग किया जा सकता है