HeadlinesBriefing HeadlinesBriefing.com

once: कमांड एक बार चलाएँ, आउटपुट पुनः उपयोग करें

Hacker News •
×

once एक कमांड-लाइन टूल है जो आपकी वर्तमान डायरेक्टरी में कोई कमांड एक बार चलाता है, उसका stdout प्रिंट करता है, और आउटपुट को प्रति-उपयोगकर्ता एक छोटे बैकग्राउंड डेमन में मेमोरी में रखता है। एक ही कमांड, डायरेक्टरी और टेनेंट कुंजी के साथ बार-बार की गई कॉल्स का उत्तर तब तक मेमोरी से दिया जाता है जब तक एंट्री समाप्त नहीं हो जाती। अंतिम एंट्री समाप्त होने के बाद डेमन अपने-आप रुक जाता है।

इसका सामान्य उपयोग 1Password से गुप्त जानकारी (secrets) पढ़ना है, बिना हर पढ़ने को अपने फ़िंगरप्रिंट से स्वीकृत किए। ~/.zshrc में हर टर्मिनल सत्र के लिए एक बार सेट की गई टेनेंट कुंजी आपको `once --ttl 8h --no-dir -- op read op://Private/Git Hub/token` जैसे कमांड से GITHUB_TOKEN जैसा टोकन export करने देती है। पहली कॉल प्रमाणीकरण माँगती है; आठ घंटों के भीतर की अगली कॉल नहीं माँगती। यही पैटर्न mise के साथ भी काम करता है, चाहे वैश्विक रूप से हो या किसी प्रोजेक्ट-विशिष्ट mise.local.toml फ़ाइल में।

इंस्टॉलेशन के लिए Go 1.27 या उसके बाद का संस्करण चाहिए, `go install github.com/alex0ptr/once@latest` के माध्यम से। इस टूल की मानक लाइब्रेरी से अलग कोई निर्भरता नहीं है, और यह केवल macOS और Linux पर चलता है। इसके मुख्य कमांड हैं `once --ttl DURATION`, डेमन और उसकी एंट्री संख्या दिखाने के लिए `once status`, सभी कैश्ड मान हटाने के लिए `once clear`, और `once help`।

केवल stdout कैश होता है। जो कमांड शून्य-से-भिन्न निकास कोड के साथ समाप्त होते हैं, उनके परिणाम कभी कैश नहीं होते, और निकास कोड आगे भेजा जाता है। डिफ़ॉल्ट रूप से कार्यशील डायरेक्टरी कैश कुंजी का हिस्सा होती है, परंतु --no-dir इसे हटा देता है, जिससे एक कैश्ड मान हर डायरेक्टरी में काम आता है। --until विकल्प एक निरपेक्ष समाप्ति समय सेट करता है, जैसे आज रात 10 बजे या कल सुबह, जो भी --ttl के साथ पहले आए।

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित