Mac की मौजूदा टेक्स्ट फ़ाइल में किसी खास पंक्ति पर टेक्स्ट डालने के लिए, Shortcuts की shell action का उपयोग करके संपादित प्रति बनाएँ, उसका निरीक्षण करें, फिर Finder में उसका नाम बदलें। इस चरण-दर-चरण निर्देश में एक अस्थायी उदाहरण का उपयोग करके पंक्ति 3 से पहले एक पंक्ति डाली जाती है।
यहाँ काम एक छोटी, स्थानीय सादे टेक्स्ट फ़ाइल में पंक्ति जोड़ना है, जबकि आसपास की पंक्तियों का क्रम बनाए रखना है। आप Finder का एक शॉर्टकट बनाएँगे जो ठीक एक फ़ाइल स्वीकार करेगा। डालने वाला टेक्स्ट और पंक्ति संख्या स्क्रिप्ट में रखे जाएँगे, जिससे अस्थायी प्रतियों पर वही संपादन आसानी से दोहराया जा सकेगा।
“पंक्ति 3 पर डालें” का क्या अर्थ है?
इस लेख में, डालने का अर्थ है नया टेक्स्ट मौजूदा क्रमांकित पंक्ति से पहले रखना। तीन मूल पंक्तियों में पंक्ति 3 से पहले Birch डालने पर चार पंक्तियाँ बनती हैं:
| स्थान | मूल फ़ाइल | संपादित फ़ाइल |
|---|---|---|
| 1 | Cedar | Cedar |
| 2 | Maple | Maple |
| 3 | Willow | Birch |
| 4 | — | Willow |
पंक्ति वह रिकॉर्ड है जो नई पंक्ति के चिह्न से अलग होता है, न कि किसी संपादक में दृश्य रूप से लपेटे जाने से बनी पंक्ति। खाली पंक्तियाँ भी गिनी जाती हैं। उदाहरण में सामान्य UTF-8 सादा टेक्स्ट, LF पंक्ति-अंत और अंतिम पंक्ति के बाद एक नई पंक्ति का चिह्न है। इस अभ्यास के लिए इन्हीं शर्तों को बनाए रखें; रिच-टेक्स्ट दस्तावेज़ों और अन्य एन्कोडिंग या पंक्ति-अंत वाली फ़ाइलों के लिए अलग तरीका चाहिए।
संपादन करने वाला कमांड macOS sed है। इसके संख्यात्मक पते पंक्तियों को 1 से गिनते हैं, और इसका i कमांड निर्दिष्ट पंक्ति से पहले डालने वाला टेक्स्ट लिखता है। सामान्यतः यह बदली हुई सामग्री को मानक आउटपुट में लिखता है। ये दस्तावेज़ीकृत व्यवहार शॉर्टकट को अलग परिणाम फ़ाइल बनाने देते हैं। Apple का वितरित sed मैनुअल
अस्थायी टेक्स्ट फ़ाइल बनाएँ
Terminal खोलें और सेटअप का यह पूरा ब्लॉक चिपकाएँ। यह आपके Desktop पर Line Insert Demo नाम का फ़ोल्डर और notes.txt नाम की तीन-पंक्ति वाली फ़ाइल बनाता है। यदि उस नाम का फ़ोल्डर पहले से मौजूद है, तो सेटअप रुक जाएगा; दोबारा प्रयास करने से पहले नया फ़ोल्डर नाम चुनें।
/bin/sh <<'SH'
set -e
demo_dir="$HOME/Desktop/Line Insert Demo"
/bin/mkdir "$demo_dir"
printf '%s\n' 'Cedar' 'Maple' 'Willow' > "$demo_dir/notes.txt"
printf 'Created: %s\n' "$demo_dir/notes.txt"
SH
फ़ोल्डर बनाने के चरण में जानबूझकर वह विकल्प शामिल नहीं है जो मौजूदा डायरेक्टरी को स्वीकार करता है। फ़ाइल लिखने का चरण तभी चलता है जब नया फ़ोल्डर बन चुका हो, इसलिए यह सेटअप पहले के उदाहरण को अधिलेखित नहीं करता। Apple के shell दस्तावेज़ बताते हैं कि टेक्स्ट फ़ाइलें बनाने के लिए printf और आउटपुट रीडायरेक्शन का उपयोग कैसे करें। Shell इनपुट और आउटपुट
इस अभ्यास को उसी अस्थायी फ़ोल्डर तक सीमित रखें। Finder में अपना Desktop खोलें और Line Insert Demo ढूँढ़ें; शॉर्टकट बनाने के बाद आप उसकी notes.txt फ़ाइल चुनेंगे।
सही इनपुट प्रकार वाला Finder शॉर्टकट बनाएँ
Shortcuts में Insert Birch Before Line 3 नाम का शॉर्टकट बनाएँ। Apple बताता है कि टूलबार के Add बटन से शॉर्टकट कैसे बनाएँ, उसका नाम कैसे रखें और साइडबार से actions कैसे जोड़ें। Mac पर कस्टम शॉर्टकट बनाएँ
इसे इस प्रकार कॉन्फ़िगर करें:
- शॉर्टकट का
Detailsखोलें औरUse as Quick Actionचालू करें;Finderचुना हुआ हो। - शॉर्टकट के इनपुट हेडर में स्वीकार की जाने वाली सामग्री को
Filesकरें और अन्य प्रकार बंद कर दें। Run Shell Scriptaction जोड़ें।- इसका
Shell/bin/sh,InputShortcut InputऔरPass Inputas argumentsपर सेट करें। - action की नमूना स्क्रिप्ट को अगले अनुभाग में दिए पूरे प्रोग्राम से बदलें।
Apple Finder शॉर्टकट सक्षम करने और उनके स्वीकार्य इनपुट प्रकार सीमित करने का तरीका बताता है। इसके Files प्रकार में कई तरह के दस्तावेज़ शामिल हैं, इसलिए यह सेटिंग फ़ाइलों को शॉर्टकट के लिए उपलब्ध करती है; यह उनके टेक्स्ट फ़ॉर्मैट की पुष्टि नहीं करती। स्क्रिप्ट में इससे अधिक विशिष्ट जाँचें हैं। Mac पर काम करते समय शॉर्टकट चलाएँ, शॉर्टकट के इनपुट को सीमित करें, इनपुट प्रकारों को समझें
इनपुट की कड़ी मायने रखती है: Finder Shortcuts को एक फ़ाइल देता है और shell action उसका पथ एक तर्क के रूप में आगे भेजता है, जो स्क्रिप्ट में $1 के रूप में उपलब्ध होता है। shell action से पहले टेक्स्ट पढ़ने वाला action न रखें: इस प्रोग्राम को फ़ाइल का पथ चाहिए, ताकि यह मौजूदा फ़ाइल पढ़ सके और पास में आउटपुट का नाम चुन सके।
Apple पुष्टि करता है कि Mac के लिए Shortcuts, एडिटर में सीधे shell scripts चलाने का समर्थन करता है। यदि स्क्रिप्टिंग बंद है, तो Shortcuts > Settings चुनें, Advanced खोलें और Allow Running Scripts चालू करें। macOS के लिए Shortcuts से परिचित हों, Shortcuts की उन्नत सेटिंग्स
पंक्ति डालें और अलग परिणाम बनाएँ
यह पूरा प्रोग्राम Run Shell Script में चिपकाएँ। इसे एक मौजूदा सामान्य फ़ाइल चाहिए; यह पंक्ति 3 से पहले Birch डालता है और स्रोत पथ के अंत में .inserted.txt जोड़कर पास में एक फ़ाइल लिखता है।
#!/bin/sh
set -eu
fail() {
printf '%s\n' "$1" >&2
exit 1
}
[ "$#" -eq 1 ] || fail 'Select exactly one example text file.'
file=$1
line=3
case "$file" in
/*) ;;
*) fail 'The input must be an absolute file path.' ;;
esac
[ -f "$file" ] || fail 'The input file does not exist or is not a regular file.'
[ ! -L "$file" ] || fail 'Select the example file itself, not a symbolic link.'
[ -r "$file" ] || fail 'The input file cannot be read.'
count=$(/usr/bin/sed -n '$=' "$file") || fail 'Could not count the input lines.'
[ -n "$count" ] || fail 'The input file is empty.'
[ "$line" -le "$count" ] || fail 'The insertion line is beyond the end of the file.'
output="${file}.inserted.txt"
if [ -e "$output" ] || [ -L "$output" ]; then
fail 'The output name already exists. Inspect or rename that result first.'
fi
if (
set -C
/usr/bin/sed "${line}i\\
Birch
" "$file" > "$output"
); then
printf 'Created edited copy: %s\n' "$output"
else
fail 'Could not finish the edited copy. Inspect any partial output before retrying.'
fi
sed अभिव्यक्ति के भीतर की वास्तविक पंक्ति-विभाजन जानबूझकर रखी गई हैं। i के बाद का बैकस्लैश, उसके बाद की नई पंक्ति और डाला जाने वाला टेक्स्ट अपनी अलग पंक्ति पर ही रखें। कमांड की संरचना Apple के वितरित मैनुअल के अनुसार है; यह किसी अलग sed कार्यान्वयन से ली गई संक्षिप्त insertion शैली पर निर्भर नहीं करती। sed मैनुअल: कमांड और insertion टेक्स्ट
आसपास की जाँचें इस कार्यप्रवाह के निर्णय नियम हैं। किसी क्रमांकित पंक्ति से पहले डालने के लिए उस पंक्ति का मौजूद होना ज़रूरी है। इसलिए यह प्रोग्राम खाली फ़ाइल और अंतिम पंक्ति से आगे के लक्ष्य को अस्वीकार करता है। यह पहले से मौजूद आउटपुट नाम का भी उपयोग नहीं करता; आउटपुट खोलते समय shell का noclobber मोड एक और जाँच करता है।
स्क्रिप्ट मूल फ़ाइल पढ़ती है और अलग फ़ाइल लिखती है। लिखने में विफलता होने पर मूल फ़ाइल उपलब्ध रहती है, लेकिन अधूरी आउटपुट फ़ाइल बच सकती है। त्रुटि को अधूरा काम मानें और उस आउटपुट को हटाने या फिर से प्रयास करने से पहले उसकी जाँच करें। एक समय में केवल एक instance चलाएँ और प्रक्रिया के दौरान स्रोत फ़ाइल में बदलाव न करें।
action का आउटपुट पथ वाला टेक्स्ट स्थिति संदेश है, Shortcuts फ़ाइल ऑब्जेक्ट नहीं। संपादित फ़ाइल स्क्रिप्ट के रीडायरेक्शन से बनती है। इसके बाद Save File जोड़ने पर इच्छित पंक्ति डालने के बजाय action का आउटपुट सहेजा जाएगा। Apple Save File को फ़ाइल प्रबंधन वाली sharing action के रूप में दस्तावेज़ीकृत करता है; उसके दस्तावेज़ में इसे क्रमांकित-पंक्ति संपादक नहीं बताया गया है। Mac पर Shortcuts की share actions के बारे में
इसे चलाएँ, परिणाम जाँचें और मूल फ़ाइल का नाम बनाए रखें
Finder में अस्थायी notes.txt फ़ाइल पर Control-click करें और Quick Actions, फिर Insert Birch Before Line 3 चुनें। Apple इस तरीके से शॉर्टकट चलाने का निर्देश देता है। यदि शॉर्टकट दिखाई नहीं देता, तो जाँचें कि उसके विवरण में Finder सक्षम है और स्वीकार्य इनपुट में Files शामिल है। Mac पर काम करते समय शॉर्टकट चलाएँ
सफलतापूर्वक चलने के बाद, डेमो फ़ोल्डर में notes.txt और notes.txt.inserted.txt दोनों होंगे। दूसरी फ़ाइल खोलें और जाँचें कि उसकी सामग्री ठीक यह है:
Cedar
Maple
Birch
Willow
आप Terminal से इस पूरे कमांड द्वारा भी आउटपुट देख सकते हैं:
/bin/cat "$HOME/Desktop/Line Insert Demo/notes.txt.inserted.txt"
संपादित सामग्री को मूल पथनाम पर रखने के लिए, उदाहरण वाले दस्तावेज़ बंद करें और Finder में ये दो नाम परिवर्तन करें। पहले पुष्टि करें कि notes.original.txt नाम उपयोग में नहीं है; यदि वह मौजूद है, तो कोई दूसरा अप्रयुक्त बैकअप नाम चुनें।
notes.txtचुनें,Returnदबाएँ, उसका नाम बदलकरnotes.original.txtकरें और फिरReturnदबाएँ।notes.txt.inserted.txtचुनें,Returnदबाएँ, उसका नाम बदलकरnotes.txtकरें और फिरReturnदबाएँ।- नए नाम वाली
notes.txtखोलें और चारों पंक्तियाँ जाँचें।
Apple किसी आइटम को चुनकर उसका नाम बदलने के लिए Return दबाने का तरीका बताता है। दोनों नामों में .txt अंतिम एक्सटेंशन बनाए रखें। यदि Finder बताए कि नाम पहले से मौजूद है, तो रुकें और अप्रयुक्त नाम चुनने से पहले मौजूदा आइटम की जाँच करें। Mac पर फ़ाइलों, फ़ोल्डरों और डिस्क का नाम बदलें
इससे संपादित सामग्री notes.txt के अंतर्गत और मूल सामग्री notes.original.txt के अंतर्गत रहती है। मूल पथनाम पर कौन-सी फ़ाइल मौजूद है, यह बदल जाता है; मूल फ़ाइल की पहचान बनी रहने या Finder tags, extended attributes अथवा अन्य metadata आगे ले जाए जाने की गारंटी नहीं है।
अर्थ बदले बिना insertion को समायोजित करें
किसी दूसरी अस्थायी फ़ाइल के लिए, line=3 को किसी मौजूदा पंक्ति संख्या से बदलें और Birch को एक सरल, एक-पंक्ति वाले टेक्स्ट से बदलें। दिखाए गए insertion syntax को जस का तस रखें। उदाहरण के टेक्स्ट में जानबूझकर उद्धरण चिह्न, डॉलर चिह्न, backticks या बैकस्लैश नहीं हैं; मनमाने टेक्स्ट के लिए shell और sed में अतिरिक्त quoting चाहिए।
स्क्रिप्ट संपादित करने से पहले यह निर्णय तालिका देखें:
| इच्छित बदलाव | क्या करें |
|---|---|
| पहली पंक्ति से पहले टेक्स्ट रखें | किसी गैर-खाली उदाहरण फ़ाइल पर line=1 सेट करें। |
| किसी दूसरी मौजूदा पंक्ति से पहले टेक्स्ट रखें | line को उस धनात्मक पंक्ति संख्या पर सेट करें। |
| आखिरी पंक्ति के बाद टेक्स्ट जोड़ें | अलग append प्रक्रिया का उपयोग करें; यह प्रोग्राम गैर-मौजूद लक्ष्य पंक्ति को अस्वीकार करता है। |
| खाली फ़ाइल में डालें | उसकी शुरुआती सामग्री अलग से बनाएँ; संबोधित करने के लिए कोई मौजूदा पंक्ति नहीं है। |
| वही शॉर्टकट दो बार चलाएँ | पहले पिछले आउटपुट की जाँच करें। मूल फ़ाइल बदलने के बाद, अगली बार चलाने पर टेक्स्ट की एक और प्रति डाली जाएगी। |
डेस्कटॉप पर इस काम के लिए चुनी गई फ़ाइल, insertion की जगह, पूरा परिणाम और अंतिम फ़ाइल नाम उपयोगी जाँच-बिंदु हैं। चार-पंक्ति वाला उदाहरण सही हो जाने के बाद, यही क्रम शुरुआती टेक्स्ट को उपलब्ध रखते हुए किसी दूसरे सरल insertion को जाँचने का स्पष्ट तरीका देता है।
स्रोत
- sed — stream editor — Apple Open Source Distributions
- Shell इनपुट और आउटपुट — Apple Developer Documentation Archive
- Mac पर कस्टम शॉर्टकट बनाएँ — Apple Support
- Mac पर काम करते समय शॉर्टकट चलाएँ — Apple Support
- Mac पर किसी अन्य ऐप से चलाए जाने पर शॉर्टकट के इनपुट को सीमित करें — Apple Support
- Mac पर Shortcuts में इनपुट प्रकारों को समझें — Apple Support
- macOS के लिए Shortcuts से परिचित हों — Apple Developer
- Mac पर Shortcuts की उन्नत गोपनीयता और सुरक्षा सेटिंग्स — Apple Support
- Mac पर Shortcuts की share actions के बारे में — Apple Support
- Mac पर फ़ाइलों, फ़ोल्डरों और डिस्क का नाम बदलें — Apple Support