Mac Shortcuts का उपयोग करके टेक्स्ट को एक शेल स्क्रिप्ट तक पहुँचाएँ, जो किसी एक स्थानीय फ़ोल्डर में हाल ही में संशोधित की गई टेक्स्ट फ़ाइल चुनती है और उसमें आपकी प्रविष्टि जोड़ती है। इस चरण-दर-चरण निर्देश में अस्थायी नमूना फ़ाइलें इस्तेमाल की जाती हैं और फ़ोल्डर खाली होने या सबसे नए समय में बराबरी होने पर प्रक्रिया रोक दी जाती है।
यहाँ काम स्पष्ट है: हर बार फ़ाइल को खुद चुने बिना किसी मौजूदा सादे टेक्स्ट फ़ाइल में एक छोटी प्रविष्टि जोड़ना। Apple, Mac Shortcuts के भीतर शेल स्क्रिप्ट के समर्थन का दस्तावेज़ देता है। नीचे दिया गया तरीका इस समर्थित क्षमता को zsh में फ़ाइल चयन और अंत में टेक्स्ट जोड़ने के दस्तावेज़ित व्यवहार के साथ जोड़ता है। macOS के लिए Shortcuts से परिचित हों
तय करें कि “सबसे नई फ़ाइल” का क्या अर्थ है
इस लेख में सबसे नई का अर्थ है हाल ही में संशोधित की गई। स्क्रिप्ट केवल उन दिखाई देने वाली सामान्य फ़ाइलों पर विचार करती है जिनके नाम छोटे अक्षरों वाले .txt पर समाप्त होते हैं और जो सीधे निर्धारित फ़ोल्डर में मौजूद होती हैं। यह सबफ़ोल्डरों और प्रतीकात्मक लिंक को शामिल नहीं करती। चयन के ये नियम zsh के फ़ाइलनाम पैटर्न और क्वालिफ़ायर से आते हैं। विस्तार
यह परिभाषा बार-बार चलाने पर असर डालती है। किसी फ़ाइल में टेक्स्ट जोड़ने के बाद उसका संशोधन समय बदल जाता है, इसलिए आम तौर पर वही सबसे नई पात्र फ़ाइल बनी रहती है। अगर आपका इरादा हाल ही में बनाई गई नई फ़ाइल पर काम करना है, तो संशोधन समय एक अलग नियम है; यह न मानें कि यह तरीका निर्माण-तिथि के आधार पर फ़ाइल चुनता है।
Shortcut बनाने से पहले वह नियम चुनें जो आपके काम के लिए सही हो:
| आपका इरादा | क्या यह उदाहरण उससे मेल खाता है? |
|---|---|
सबसे हाल में संपादित .txt फ़ाइल में टेक्स्ट जोड़ना |
हाँ |
| फ़ाइलनाम में सबसे नई तारीख वाली फ़ाइल में टेक्स्ट जोड़ना | नहीं; फ़ाइलनामों को तारीखों के रूप में नहीं पढ़ा जाता |
| सबसे हाल में बनाई गई फ़ाइल में टेक्स्ट जोड़ना | नहीं; निर्माण समय का उपयोग नहीं होता |
| सबफ़ोल्डरों के भीतर की फ़ाइलें शामिल करना | नहीं; चयन एक फ़ोल्डर तक सीमित है |
| रिच टेक्स्ट दस्तावेज़ या PDF में टेक्स्ट जोड़ना | नहीं; यह उदाहरण सादा टेक्स्ट लिखता है |
Finder से दृश्य रूप में उपयोगी जाँच की जा सकती है। फ़ोल्डर को सूची दृश्य में खोलें और Date Modified कॉलम शीर्षक पर क्लिक करें; ज़रूरत हो तो फिर से क्लिक करके सबसे नई वस्तु को सबसे ऊपर लाएँ। Apple कॉलम के अनुसार क्रमबद्ध करने और क्रम उलटने, दोनों का दस्तावेज़ देता है। Finder का प्रदर्शन नतीजे की जाँच में मदद करता है, लेकिन स्क्रिप्ट अपना चयन खुद करती है। Mac पर Finder में आइटम क्रमबद्ध और व्यवस्थित करें
अस्थायी उदाहरण फ़ोल्डर बनाएँ
इस उदाहरण में आपके होम फ़ोल्डर के भीतर Shortcut Append Demo नाम का फ़ोल्डर इस्तेमाल किया गया है। सेटअप जानबूझकर रुक जाता है अगर उस नाम का फ़ोल्डर पहले से मौजूद हो; उसकी सामग्री का दोबारा उपयोग नहीं करता। यह दो कृत्रिम टेक्स्ट फ़ाइलें बनाता है और उनके बीच दो सेकंड का अंतर रखता है, ताकि दूसरी फ़ाइल का संशोधन समय बाद का हो।
Terminal खोलें, सेटअप का यह पूरा ब्लॉक पेस्ट करें और Return दबाएँ। उद्धृत heredoc कमांड को अलग zsh प्रक्रिया में चलाता है, इसलिए सेटअप विफल होने पर वह प्रक्रिया बाहर निकल जाती है।
/bin/zsh <<'ZSH'
emulate -L zsh
setopt ERR_EXIT
folder="$HOME/Shortcut Append Demo"
if ! /bin/mkdir "$folder"; then
printf '%s\n' 'Setup stopped: use a new folder name if this one exists.' >&2
exit 1
fi
printf '%s\n' 'Sample entry: blue notebook.' > "$folder/older.txt"
/bin/sleep 2
printf '%s\n' 'Sample entry: green notebook.' > "$folder/newer.txt"
printf 'Example folder: %s\n' "$folder"
ZSH
सेटअप फ़ाइलें बनाने के लिए आउटपुट रीडायरेक्शन का उपयोग तभी करता है जब नया फ़ोल्डर सफलतापूर्वक बन चुका हो। Apple सामान्य आउटपुट रीडायरेक्शन में अंतर बताता है, जो कमांड का आउटपुट किसी फ़ाइल में लिखता है, और append रीडायरेक्शन में, जो आउटपुट को अंत में जोड़ता है। Mac पर Terminal के इनपुट और आउटपुट को रीडायरेक्ट करें
अगर सेटअप बताता है कि फ़ोल्डर पहले से मौजूद है, तो कोई दूसरा अस्थायी नाम चुनें और नीचे दिए गए सेटअप तथा Shortcut स्क्रिप्ट, दोनों में फ़ोल्डर असाइनमेंट बदलें। किसी मौजूदा फ़ोल्डर में अलग-अलग फ़ाइल-लेखन वाली पंक्तियाँ दोबारा न चलाएँ।
Shortcut बनाएँ और टेक्स्ट इनपुट सुरक्षित रखें
Shortcuts ऐप में एक नया Shortcut बनाएँ और उसका नाम Append to Newest Text File रखें। नीचे दिए गए ऐक्शन जोड़ने के लिए ऐक्शन खोज का उपयोग करें। Apple ऐक्शन लाइब्रेरी में खोजने और Show Info के ज़रिए हर ऐक्शन के स्वीकार किए गए इनपुट तथा उससे मिलने वाले आउटपुट की जाँच करने का दस्तावेज़ देता है। Mac पर Shortcuts में ऐक्शन सूची देखें
Textऐक्शन जोड़ें और उसमें कृत्रिम प्रविष्टिSample entry: orange notebook.डालें।- इसके तुरंत बाद
Run Shell Scriptजोड़ें। - शेल को
/bin/zshपर सेट करें। - स्क्रिप्ट का इनपुट पिछले
Textऐक्शन के आउटपुट पर सेट करें। Pass Inputकोas argumentsपर सेट करें।- स्क्रिप्ट फ़ील्ड में अगले अनुभाग की पूरी स्क्रिप्ट रखें।
इच्छित कनेक्शन है: एक Text मान स्क्रिप्ट के एक आर्ग्युमेंट में। स्क्रिप्ट उस आर्ग्युमेंट को $1 के रूप में पढ़ती है। सफल होने पर यह गंतव्य पथ की पुष्टि वाला टेक्स्ट आउटपुट देती है; वह पथ Shortcuts File ऑब्जेक्ट नहीं है और आउटपुट में फ़ाइल की पूरी सामग्री भी नहीं होती।
इनपुट को Text आउटपुट से जुड़ा रहने दें। फ़ाइल, फ़ाइलनामों की सूची या Shortcut का कोई असंबंधित इनपुट देने से स्क्रिप्ट तक पहुँचने वाली चीज़ बदल जाएगी। स्क्रिप्ट आर्ग्युमेंट की संख्या जाँचती है, ताकि अनपेक्षित इनपुट संग्रह कई प्रविष्टियों के रूप में न जुड़ जाए।
अगर स्क्रिप्ट बंद हैं, तो Shortcuts > Settings खोलें, Advanced चुनें और Allow Running Scripts चालू करें। Shortcut में स्क्रिप्ट चलाने की अनुमति देने के लिए Apple ने यही नियंत्रण बताए हैं। स्क्रिप्ट सेटिंग के लिए Apple के निर्देश
चयन और टेक्स्ट जोड़ने वाली स्क्रिप्ट डालें
यह पूरा प्रोग्राम Run Shell Script में पेस्ट करें। इसके लिए डाउनलोड किए गए टूल या अलग स्क्रिप्ट फ़ाइल की ज़रूरत नहीं है। फ़ोल्डर असाइनमेंट ऊपर दिए गए अस्थायी सेटअप से मेल खाता है।
emulate -L zsh
unsetopt CLOBBER APPEND_CREATE
fail() {
printf '%s\n' "$1" >&2
exit 1
}
(( $# == 1 )) || fail 'Expected exactly one text input.'
[[ -n "$1" ]] || fail 'The text input is empty.'
folder="$HOME/Shortcut Append Demo"
[[ -d "$folder" ]] || fail 'The example folder does not exist.'
files=( "$folder"/*.txt(N.om) )
(( ${#files} > 0 )) || fail 'No eligible .txt files were found.'
newest="${files[1]}"
if (( ${#files} > 1 )); then
[[ "$newest" -nt "${files[2]}" ]] ||
fail 'The newest timestamp is tied or the folder changed. Check the files.'
fi
[[ -f "$newest" && ! -L "$newest" ]] ||
fail 'The selected file is no longer an eligible regular file.'
[[ -w "$newest" ]] || fail 'The selected file is not writable.'
if ! printf '\n%s\n' "$1" >> "$newest"; then
fail 'Append failed; inspect the selected file before retrying.'
fi
printf 'Appended to: %s\n' "$newest"
चयन एक्सप्रेशन मेल खाने वाले फ़ाइल पथों की एक array बनाता है। (N.om) में N खाली मेल की अनुमति देता है, . मेल को सामान्य फ़ाइलों तक सीमित करता है और om संशोधन समय के अनुसार क्रमबद्ध करके सबसे नई फ़ाइल पहले रखता है। पथों को array में रखने से फ़ाइलनामों के बीच के रिक्त स्थान अलग नहीं होते। विस्तार
अगली जाँच के लिए पहली फ़ाइल का दूसरी से स्पष्ट रूप से नया होना ज़रूरी है। अगर दोनों के संशोधन समय बराबर हों, तो Shortcut चुपचाप किसी एक को चुनने के बजाय रुक जाता है। zsh फ़ाइलों की उम्र की तुलना के लिए -nt दस्तावेज़ित करता है; यहाँ सामान्य फ़ाइल, प्रतीकात्मक लिंक और लिखने योग्य फ़ाइल की जाँचें भी इस्तेमाल की गई हैं। सशर्त एक्सप्रेशन
Append कमांड एक तय printf फ़ॉर्मैट इस्तेमाल करता है और आपकी प्रविष्टि को उसके %s आर्ग्युमेंट के रूप में देता है। इसलिए प्रविष्टि में मौजूद प्रतिशत चिह्न और बैकस्लैश अतिरिक्त फ़ॉर्मैट निर्देशों के बजाय टेक्स्ट माने जाते हैं। शुरुआत का न्यूलाइन प्रविष्टि को मौजूदा टेक्स्ट से अलग करता है; आख़िरी न्यूलाइन उसे समाप्त करता है। अगर फ़ाइल पहले से न्यूलाइन पर समाप्त होती है, तो प्रविष्टियों के बीच एक खाली पंक्ति बनती है। शेल के बिल्ट-इन कमांड
स्क्रिप्ट CLOBBER और APPEND_CREATE को भी unset करती है। दोनों विकल्प unset होने पर, zsh के दस्तावेज़ के अनुसार गंतव्य मौजूद न होने पर append रीडायरेक्शन विफल हो जाता है। अगर append से पहले चुनी गई फ़ाइल गायब हो जाए, तो यह ज़रूरी है: स्क्रिप्ट पुराने पथ पर नई फ़ाइल बनाने के बजाय विफलता की सूचना देगी। रीडायरेक्शन
नमूना फ़ाइलों से नतीजा जाँचें
Shortcut एक बार चलाएँ। अगर नमूना फ़ोल्डर में कोई बदलाव नहीं हुआ है, तो अपेक्षित गंतव्य newer.txt है। उस फ़ाइल को खोलें और नीचे दी गई सामग्री जाँचें। यह उदाहरण से निकला अपेक्षित नतीजा है, Mac UI पर परीक्षण पूरा करने का दावा नहीं।
Sample entry: green notebook.
Sample entry: orange notebook.
older.txt भी खोलें। उसमें अब भी केवल Sample entry: blue notebook. होना चाहिए। दोनों फ़ाइलों की जाँच से काम के दो हिस्से सत्यापित होते हैं: एक गंतव्य चुनना और दूसरी फ़ाइल को जस का तस रखना।
दूसरी कृत्रिम प्रविष्टि आज़माने के लिए Text ऐक्शन को Sample entry: yellow notebook. में बदलें और Shortcut फिर चलाएँ। अगर कोई दूसरी पात्र फ़ाइल और नई नहीं हुई है, तो newer.txt में एक और अलग प्रविष्टि जुड़ने की अपेक्षा करें। एक ही इनपुट के साथ Shortcut दो बार चलाने पर वह इनपुट दो बार जुड़ता है; यह प्रोग्राम डुप्लिकेट प्रविष्टियों की जाँच नहीं करता।
यहाँ उपलब्ध दस्तावेज़ों के आधार पर इन उदाहरणों की जाँच की गई, लेकिन इन्हें चलाया नहीं गया: उपलब्ध वातावरण में macOS Shortcuts या zsh नहीं है। फ़ोल्डर असाइनमेंट को बदलने से पहले अपने Mac पर अस्थायी फ़ाइलों की जाँच पूरी करें।
खाली फ़ोल्डर, नाम टकराव और बदलती फ़ाइलें समझें
इस तरीके के लिए पहले से मौजूद गंतव्य ज़रूरी है। फ़ोल्डर मौजूद न हो, खाली हो या उसमें केवल अपात्र आइटम हों, तो append से पहले त्रुटि आती है। यह कोई डिफ़ॉल्ट फ़ाइल नहीं बनाता, सबफ़ोल्डर नहीं चुनता और किसी अलग नाम वाले दस्तावेज़ पर काम जारी नहीं रखता।
गंतव्य बनाने से पूरी तरह बचकर नाम टकराव से निपटा जाता है। सेटअप तब रुक जाता है जब फ़ोल्डर का नाम पहले से मौजूद हो। सामान्य Shortcut चलने पर चुनी गई फ़ाइल अपना मौजूदा नाम बनाए रखती है: स्क्रिप्ट न तो उसका नाम बदलती है, न ही दूसरी प्रति सहेजती है। फ़ाइल गायब होने पर व्यवहार zsh के दस्तावेज़ित append विकल्पों से नियंत्रित होता है। रीडायरेक्शन
अगर नतीजा आपकी अपेक्षा से अलग हो, तो जाँच के लिए यह छोटा क्रम अपनाएँ:
- फ़ोल्डर असाइनमेंट जाँचें। यह सेटअप में बनाए गए फ़ोल्डर से मेल खाना चाहिए।
- पात्रता जाँचें। नमूना पैटर्न में फ़ोल्डर के शीर्ष स्तर पर मौजूद दिखाई देने वाली सामान्य फ़ाइलें शामिल हैं, जिनके नाम छोटे अक्षरों वाले
.txtपर समाप्त होते हैं। - संशोधन क्रम जाँचें। Finder में
Date Modifiedदेखें और ध्यान रखें कि फ़ाइल संपादित करने से अगली बार वही गंतव्य बन सकती है। - बराबर समय जाँचें। इच्छित नमूना फ़ाइल को बाद में संपादित करके सहेजें, फिर क्रम दोबारा देखें।
- ऐक्शन कनेक्शन जाँचें। शेल तक टेक्स्ट का एक मान एक आर्ग्युमेंट के रूप में पहुँचना चाहिए।
यह स्क्रिप्ट ऐसे फ़ोल्डर के लिए है जिसमें चलने के दौरान बदलाव न हो। चयन और लेखन अलग-अलग काम हैं: कोई दूसरी प्रक्रिया इनके बीच फ़ाइल को संपादित, बदल या जोड़ सकती है। जाँचें इस तरीके को लेन-देन में नहीं बदलतीं, और लिखने में विफलता होने पर प्रविष्टि का कुछ हिस्सा जुड़ सकता है। Append त्रुटि के बाद फिर से चलाने से पहले फ़ाइल जाँचें।
मूल फ़ाइल फ़िल्टर कहाँ काम आते हैं
Apple Filter Files को ऐसे ऐक्शन के रूप में दस्तावेज़ित करता है जो सामग्री स्वीकार करता है, फ़िल्टर के ज़रिए उसे सीमित करता है और मेल खाने वाले नतीजे आगे भेजता है। इसके सामान्य फ़िल्टर नियंत्रण नतीजों को क्रमबद्ध कर सकते हैं और उनकी संख्या सीमित कर सकते हैं। ये काम फ़ाइल चुनने में मदद करते हैं; अपने आप टेक्स्ट नहीं जोड़ते। Find और Filter ऐक्शन का परिचय, फ़िल्टर पैरामीटर जोड़ें
इस चरण-दर-चरण निर्देश में चयन और लेखन को शेल स्क्रिप्ट के भीतर रखा गया है, ताकि फ़ाइल पैटर्न, बराबर समय का व्यवहार और पहले से मौजूद फ़ाइल की ज़रूरत स्पष्ट रहे। अगर आप फ़ाइल ऐक्शन की अलग शृंखला बनाते हैं, तो पहले हर ऐक्शन का Show Info देखें: File नतीजा, Text में बदली गई फ़ाइल की सामग्री और Text के रूप में दिखाया गया पथ, अलग-अलग मान हैं। Apple ने इनपुट और आउटपुट के प्रकार पहचानने के लिए ही ऐक्शन के विवरण दिए हैं। Mac पर Shortcuts में ऐक्शन सूची देखें
नमूना अपेक्षा के अनुसार चलने लगे, तो बदलाव करते समय भी यही स्पष्ट नियम बनाए रखें: एक टेक्स्ट प्रविष्टि, एक निर्धारित स्थानीय फ़ोल्डर और एक ऐसी पात्र फ़ाइल जिसका संशोधन समय बाकी सभी से स्पष्ट रूप से नया हो। इससे हर बार का नतीजा अनुमानित रहता है और Shortcut रुकने पर जाँच करने के लिए एक स्पष्ट जगह मिलती है।
स्रोत
- macOS के लिए Shortcuts से परिचित हों — Apple Developer।
- Mac पर Shortcuts में ऐक्शन सूची देखें — Apple Support।
- Mac पर Shortcuts में उन्नत गोपनीयता और सुरक्षा सेटिंग — Apple Support।
- Mac पर Finder में आइटम क्रमबद्ध और व्यवस्थित करें — Apple Support।
- Mac पर Terminal के इनपुट और आउटपुट को रीडायरेक्ट करें — Apple Support।
- Mac पर Shortcuts में Find और Filter ऐक्शन का परिचय — Apple Support।
- Mac पर Shortcuts में Find और Filter ऐक्शन के लिए फ़िल्टर पैरामीटर जोड़ें — Apple Support।
- 14 विस्तार — The Zsh Development Group।
- 12 सशर्त एक्सप्रेशन — The Zsh Development Group।
- 17 शेल के बिल्ट-इन कमांड — The Zsh Development Group।
- 7 रीडायरेक्शन — The Zsh Development Group।