Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

सरल बैश स्क्रिप्ट के साथ घर पर आसानी से डबल-साइडेड दस्तावेज़ प्रिंट करें

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

लेजरजेट मेरे होम ऑफिस के लिए एक बढ़िया अतिरिक्त रहा है। पिछले साल अपनी कंपनी शुरू करने के बाद से, मैंने क्लाइंट मीटिंग्स, वर्कशॉप और प्रशिक्षण सत्रों के लिए हैंडआउट्स और अन्य सामग्री प्रिंट करने के लिए इस छोटे लेजर प्रिंटर पर भरोसा किया है।

इस प्रिंटर के साथ मेरी एकमात्र शिकायत यह है कि यह केवल एक तरफ प्रिंट करता है। यदि आप डबल-साइडेड प्रिंट करना चाहते हैं, तो आपको इसे स्वयं करने के लिए एक कस्टम प्रिंट जॉब सेट करना होगा। यह असुविधाजनक है और मैन्युअल चरणों की आवश्यकता है। लिब्रेऑफिस में, मुझे विशेष रूप से प्रिंट जॉब को पहले विषम-पृष्ठों को प्रिंट करने के लिए सेट करना होगा, फिर कागज को रीलोड करना होगा और फिर सम-पृष्ठों को रिवर्स ऑर्डर में दूसरी तरफ प्रिंट करना होगा।

सरल बैश स्क्रिप्ट के साथ घर पर आसानी से डबल-साइडेड दस्तावेज़ प्रिंट करें

यदि मुझे कोई पीडीएफ प्रिंट करना है जो किसी ने मुझे भेजा है, तो प्रक्रिया वही है। चार-पृष्ठ के दस्तावेज़ के लिए, मुझे पहले पेज 1 और 3 प्रिंट करने होंगे, फिर कागज को रीलोड करना होगा और पेज 2 और 4 को रिवर्स ऑर्डर में प्रिंट करना होगा। GNOME प्रिंट डायलॉग में, आपको विषम पृष्ठों या सम पृष्ठों को प्रिंट करने के लिए "पेज सेटअप" का चयन करना होगा।

सरल बैश स्क्रिप्ट के साथ घर पर आसानी से डबल-साइडेड दस्तावेज़ प्रिंट करें

सरल बैश स्क्रिप्ट के साथ घर पर आसानी से डबल-साइडेड दस्तावेज़ प्रिंट करें

चाहे मैं कैसे भी प्रिंट करूँ, समग्र प्रक्रिया विषम-पृष्ठों को प्रिंट करना, प्रिंट किए गए पृष्ठों के स्टैक को पेपर ट्रे में रीलोड करना, फिर सम-पृष्ठों को रिवर्स ऑर्डर में प्रिंट करना है। यदि मैं चार-पृष्ठ का दस्तावेज़ प्रिंट कर रहा हूँ, तो सम-पृष्ठों को रिवर्स ऑर्डर में प्रिंट करने का मतलब है कि पेज 4 पेज 3 के पीछे और पेज 2 पेज 1 के पीछे प्रिंट होता है। उन कुछ उदाहरणों में मेरी निराशा की कल्पना करें जब मैं सम-पृष्ठों को प्रिंट करते समय रिवर्स ऑर्डर में प्रिंट करने का विकल्प चुनना भूल गया और एक लंबे प्रिंट जॉब को बर्बाद कर दिया।

इसी तरह, विषम संख्या में पृष्ठों वाले दस्तावेज़ों से निपटना भूलना आसान है। पांच-पृष्ठ के दस्तावेज़ में, आप पहले पेज 1, 3, और 5 प्रिंट करते हैं। लेकिन जब आप प्रिंट किए गए पृष्ठों को प्रिंटर में रीलोड करते हैं, तो आप पेज 5 नहीं चाहते। इसके बजाय, आप केवल पेज 1 और 3 लोड करना चाहते हैं। अन्यथा, पेज 4 पेज 5 के पीछे, पेज 2 पेज 3 के पीछे प्रिंट होगा, और पेज 1 के पीछे कुछ भी प्रिंट नहीं होगा।

चीजों को आसान और अधिक विश्वसनीय बनाने के लिए, मैंने एक सरल बैश स्क्रिप्ट लिखी जो डुप्लेक्स प्रिंटिंग को स्वचालित करती है। यह मूल रूप से प्रिंटिंग को आसान बनाने के लिए lpr कमांड का एक रैपर है। यह पहले विषम पृष्ठों को प्रिंट करता है, मुझे कागज रीलोड करने के लिए प्रेरित करता है, फिर सम पृष्ठों को प्रिंट करता है। यदि दस्तावेज़ में विषम संख्या में पृष्ठ हैं, तो यह मुझे प्रिंट किए गए पृष्ठों को रीलोड करते समय अंतिम पृष्ठ को हटाने की याद भी दिलाता है। यह बहुत सरल है।

जब भी मुझे किसी दस्तावेज़ को डुप्लेक्स के रूप में प्रिंट करने की आवश्यकता होती है, मैं पहले दस्तावेज़ को पीडीएफ में बदल देता हूँ। यह करना बहुत आसान है। लिब्रेऑफिस में, सीधे पीडीएफ के रूप में निर्यात करने के लिए एक टूलबार आइकन है। आप फ़ाइल— निर्यात करें—पीडीएफ के रूप में निर्यात करें के तहत नेविगेट करके भी ऐसा कर सकते हैं। या किसी अन्य एप्लिकेशन में, आमतौर पर एक पीडीएफ के रूप में सहेजें सुविधा होती है। संदेह होने पर, GNOME प्रिंटर के बजाय पीडीएफ फाइल में प्रिंट करने का समर्थन करता है।

सरल बैश स्क्रिप्ट के साथ घर पर आसानी से डबल-साइडेड दस्तावेज़ प्रिंट करें

सरल बैश स्क्रिप्ट के साथ घर पर आसानी से डबल-साइडेड दस्तावेज़ प्रिंट करें

यह कैसे काम करता है

एक बार जब मैं पीडीएफ के रूप में सहेज लेता हूँ, तो मैं अपनी बैश स्क्रिप्ट को बाकी काम करने देता हूँ। यह वास्तव में प्रिंटिंग को आसान बनाने के लिए lpr कमांड को स्वचालित करता है। यह पहले विषम पृष्ठों को प्रिंट करता है, मुझे कागज रीलोड करने के लिए प्रेरित करता है, फिर सम पृष्ठों को प्रिंट करता है। यदि दस्तावेज़ में विषम संख्या में पृष्ठ हैं, तो यह मुझे अंतिम पृष्ठ को हटाने की याद दिलाता है जब मैं प्रिंट किए गए पृष्ठों को रीलोड करता हूँ। यह बहुत सरल है।

स्क्रिप्ट का एकमात्र "प्रोग्रामिंग" भाग पृष्ठ संख्या निर्धारित करना है, और यह पता लगाना है कि यह सम या विषम संख्या है। दोनों करना आसान है।

पृष्ठ संख्या निर्धारित करने के लिए, मैं pdfinfo कमांड का उपयोग करता हूँ। यह पीडीएफ दस्तावेज़ के बारे में उपयोगी जानकारी उत्पन्न करता है। यहाँ कुछ नमूना आउटपुट है:

$ pdfinfo All\ training\ -\ catalog.pdf
Creator: Writer
Producer: LibreOffice 6.3
CreationDate: Fri Oct 18 16:06:07 2019 CDT
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 11
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 65623 bytes
Optimized: no
PDF version: 1.5

आउटपुट पार्स करना बहुत आसान है। पृष्ठ संख्या प्राप्त करने के लिए, मैं Pages: को देखने और दूसरा फ़ील्ड प्रिंट करने के लिए एक AWK वन-लाइनर स्क्रिप्ट का उपयोग करता हूँ।

pages=$( pdfinfo "$1" | awk '/^Pages:/ {print $2}' )

यह पता लगाने के लिए कि यह सम या विषम संख्या है, मैं मॉड्यूलो (%) अंकगणितीय ऑपरेटर का उपयोग करके दो से विभाजित करता हूँ और शेषफल बताता हूँ। दो का मॉड्यूलो सम संख्या के लिए हमेशा शून्य होगा, और विषम संख्या के लिए एक। मैं यह निर्धारित करने के लिए इस सरल परीक्षण का उपयोग करता हूँ कि दस्तावेज़ में विषम संख्या में पृष्ठ हैं, इसलिए शेष दस्तावेज़ को प्रिंट करने से पहले मुझे अंतिम पृष्ठ को हटाने की आवश्यकता होगी:

if [ $(( $pages % 2 )) -ne 0 ] ; then

इसके साथ, print-duplex.sh बैश स्क्रिप्ट लिखना lpr को मेरे प्रिंटर (lpr -P "HP_LaserJet_CP1525nw") पर आउटपुट भेजने के लिए सही विकल्पों के साथ कॉल करने, विषम-पृष्ठों को प्रिंट करने (-o page-set=odd) या सम-पृष्ठों को प्रिंट करने (-o page-set=even), और रिवर्स ऑर्डर में प्रिंट करने (-o outputorder=reverse) का एक सरल मामला है।

बैश स्क्रिप्ट

#!/bin/sh
# print-duplex.sh
# डुप्लेक्स प्रिंट करने के लिए सरल रैपर

cat<<EOF
$1 ($pages पृष्ठ)
-------------------------------------------------------------------------------
पहले विषम पृष्ठ प्रिंट कर रहा हूँ
कृपया प्रिंटिंग समाप्त होने तक प्रतीक्षा करें...
-------------------------------------------------------------------------------
EOF

lpr -P "HP_LaserJet_CP1525nw" -o page-set=odd "$1"
sleep $pages

cat<<EOF
===============================================================================
कागज को प्रिंटर में सटीक आउटपुट ऑर्डर में वापस रखें (ट्रे में फेस डाउन)
फिर ENTER दबाएँ
===============================================================================
EOF

pages=$( pdfinfo "$1" | awk '/^Pages:/ {print $2}' )

if [ $(( $pages % 2 )) -ne 0 ] ; then
echo '!! अंतिम पृष्ठ हटाएँ - इस दस्तावेज़ में विषम संख्या में पृष्ठ हैं'
fi

echo -n '>'
read x

cat<<EOF
-------------------------------------------------------------------------------
सम पृष्ठ प्रिंट कर रहा हूँ
कृपया प्रिंटिंग समाप्त होने तक प्रतीक्षा करें...
-------------------------------------------------------------------------------
EOF

lpr -P "HP_LaserJet_CP1525nw" -o page-set=even -o outputorder=reverse "$1"
  1. पहेली-आधारित शिक्षण के साथ बैश कौशल में महारत हासिल करें पहेली-आधारित शिक्षण के साथ बैश कौशल में महारत हासिल करें

    कंप्यूटर मेरा शौक और मेरा पेशा दोनों हैं। मेरे अपार्टमेंट में लगभग 10 कंप्यूटर बिखरे हुए हैं, सभी लिनक्स चल रहे हैं (मेरे मैक सहित)। चूंकि मुझे अपने कंप्यूटर और कंप्यूटर कौशल को अपग्रेड करने में मजा आता है, जब मुझे सिल्वेन लेरॉक्स की Bash it out मिली, तो मैंने इसे खरीदने का मौका नहीं छोड़ा। मैं डेबि

  1. लिनक्स पर स्टारगेजिंग के दौरान नाइट विजन बनाए रखने के लिए बैश स्क्रिप्ट लिनक्स पर स्टारगेजिंग के दौरान नाइट विजन बनाए रखने के लिए बैश स्क्रिप्ट

    हम अक्सर सर्वरों पर और डेवलपर्स द्वारा लिनक्स के उपयोग के बारे में बात करते हैं, लेकिन इसका उपयोग खगोल विज्ञान सहित कई अन्य क्षेत्रों में भी किया जाता है। लिनक्स के लिए बहुत सारे खगोल विज्ञान उपकरण उपलब्ध हैं, जैसे स्काई मैप, स्टार चार्ट, और आपके टेलीस्कोप को नियंत्रित करने के लिए टेलीस्कोप ड्राइव स

  1. Bash स्क्रिप्टिंग में मास्टर करें: 5 वास्तविक-विश्व उदाहरणों के साथ एक व्यावहारिक परिचय Bash स्क्रिप्टिंग में मास्टर करें: 5 वास्तविक-विश्व उदाहरणों के साथ एक व्यावहारिक परिचय

    हमारे चल रहे Unix Sed और Unix Awk सीरीज़ के समान, हम Bash स्क्रिप्टिंग पर कई लेख पोस्ट करेंगे, जो व्यावहारिक उदाहरणों के साथ सभी Bash स्क्रिप्टिंग तकनीकों को कवर करेंगे। शेल एक प्रोग्राम है, जो उपयोगकर्ता कमांड्स की व्याख्या करता है। कमांड्स या तो उपयोगकर्ता द्वारा सीधे दर्ज की जाती हैं या शेल स्क्र