Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

इस साधारण बैश स्क्रिप्ट के साथ घर पर दो तरफा दस्तावेज़ प्रिंट करें

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

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

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

इस साधारण बैश स्क्रिप्ट के साथ घर पर दो तरफा दस्तावेज़ प्रिंट करें

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

इस साधारण बैश स्क्रिप्ट के साथ घर पर दो तरफा दस्तावेज़ प्रिंट करें

इस साधारण बैश स्क्रिप्ट के साथ घर पर दो तरफा दस्तावेज़ प्रिंट करें

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

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

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

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

इस साधारण बैश स्क्रिप्ट के साथ घर पर दो तरफा दस्तावेज़ प्रिंट करें

इस साधारण बैश स्क्रिप्ट के साथ घर पर दो तरफा दस्तावेज़ प्रिंट करें

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

एक बार जब मैंने पीडीएफ में सहेज लिया, तो मैंने अपनी बैश स्क्रिप्ट को बाकी काम करने दिया। यह वास्तव में केवल 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

वह आउटपुट पार्स करना बहुत आसान है। पृष्ठ संख्या प्राप्त करने के लिए, मैं 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 पृष्ठ-सेट=सम ), और उल्टे क्रम में प्रिंट करने के लिए (-o outputorder=reverse )।

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

#!/bin/sh
# print-duplex.sh
# simple wrapper to print duplex

cat<<EOF
$1 ($pages pages)
-------------------------------------------------------------------------------
Printing odd pages first
Please wait for job to finish printing...
-------------------------------------------------------------------------------
EOF

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

cat<<EOF
===============================================================================
Put paper back into the printer in EXACT OUTPUT ORDER (face down in tray)
then press ENTER
===============================================================================
EOF

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

if [ $(( $pages % 2 )) -ne 0 ] ; then
  echo '!! Remove the last page - this document has an odd number of pages'
fi

echo -n '>'
read x

cat<<EOF
-------------------------------------------------------------------------------
Printing even pages
Please wait for job to finish printing...
-------------------------------------------------------------------------------
EOF

lpr -P "HP_LaserJet_CP1525nw" -o page-set=even -o outputorder=reverse "$1"


  1. पहेली की इस किताब के साथ जानें बैश

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

  1. स्टारगेजिंग करते समय इस सहायक बैश स्क्रिप्ट का उपयोग करें

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

  1. बैश स्क्रिप्टिंग परिचय ट्यूटोरियल 5 व्यावहारिक उदाहरणों के साथ

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