कई कमांड निष्पादित करने के लिए -sh चलाना


9

मैं उत्सुक था कि मैं शेल स्क्रिप्ट के माध्यम से कई कमांड चलाने के बारे में कैसे जाऊंगा।

उदाहरण के लिए, बस इसे आज़माने के लिए, मैं एक .desktop को .sh से कनेक्ट करने में सक्षम होना चाहूंगा जो सभी अपडेट कोड चलाएंगे, इसलिए मुझे इसे टाइप करने की आवश्यकता नहीं है। मुझे पता है कि एक .sh के माध्यम से एक ही कमांड को निष्पादित करना है, एकाधिक नहीं।

कोई रास्ता?

जवाबों:


10

सरल वास्तव में - आपको कमांड को अलग करने की आवश्यकता है। उदाहरण के लिए यह:

#!/bin/bash
sudo apt-get update
sudo apt-get upgrade

पैकेज सूचियों को अद्यतन करेगा, और फिर संकुल को। एक और संभावना यह है (शायद बेहतर, के रूप में && केवल अनुमति देगा upgradeआदेश अगर चलाने के लिए updateबाहर निकलता है सफलतापूर्वक) :

#!/bin/bash
sudo apt-get update && sudo apt-get upgrade

इसे संकुल की सूची को अद्यतन करने के लिए कमांड को चलाना चाहिए और फिर पैकेज को स्वयं बनाना चाहिए। इसे टेक्स्ट फाइल (जैसे updatescriptहोम डायरेक्टरी में) में सेव करना होगा । फिर आप इसे चलाकर निष्पादन योग्य बना सकते हैं:

 chmod +x ./updatescript

या फ़ाइल पर राइट क्लिक करके और इसके गुणों में इसे निष्पादन योग्य बनाते हैं:

और इसे टर्मिनल में इसके साथ चलाएं:

 ./updatescript

टिप्पणियाँ):

एक विकल्प ( -y) उपलब्ध है जिसे upgradeकमांड के साथ प्रयोग किया जा सकता है इसलिए यह संकुल के उन्नयन से पहले संकेत नहीं देता है। apt-getपैकेजों को अपग्रेड करने से पहले यह जांचना अच्छा है कि यह क्या कर रहा है, क्योंकि यह कुछ बेवकूफी कर सकता है या आप ऐसा नहीं करना चाहते। इस तरह के विकल्पों पर अधिक जानकारी चल रही द्वारा पाया जा सकता है man apt-get

इसका मतलब यह भी है कि स्क्रिप्ट को चलाने के लिए टर्मिनल का उपयोग करना अधिक आदर्श है, क्योंकि आप जांच सकते हैं कि यह क्या अद्यतन कर रहा है, और फिर इसे चलाएं। यदि आप अपडेट चलाने के लिए GUI तरीका चाहते हैं, तो सॉफ़्टवेयर-सेंटर का उपयोग करें क्योंकि यह वही है जो इसके लिए है।


5

बस @Wilf द्वारा उत्कृष्ट उत्तर के लिए कुछ बिंदु जोड़ने के लिए,

यदि आप किसी भी कारण से autostartपार्सल में कमांड चला सकते हैं, उदाहरण के लिए, OpenBox की स्क्रिप्ट इस तरह दिख सकती है:

#!/bin/bash

nitrogen --restore &
tint2 &
tilda

यह एक पृष्ठभूमि छवि का उपयोग करके सेट करेगा nitrogen, पैनल tint2शुरू करेगा और tildaएक ही समय में क्वेक 3-शैली ड्रॉपडाउन कंसोल शुरू करेगा । यह उपयोगी है यदि आपको अगले एक को लॉन्च करने से पहले समाप्त करने के लिए एक कार्यक्रम की आवश्यकता नहीं है। के लिए मामला नहीं है apt-get updateऔर apt-get upgradeहालांकि!

&प्रत्येक पंक्ति के अंत में संकेत पर ध्यान दें । यह उस प्रक्रिया को पृष्ठभूमि में कांटा और निष्पादन जारी रखने के लिए शेल का कारण होगा। ध्यान दें कि यह कैसे अलग है &&, जो मूल रूप से एक andसंकेत है, command_1 && command_2निष्पादित करेगा command_1और यदि यह सफलता के साथ बाहर निकलता है, तो केवल चलाएं command_2, जबकि command_1 & command_2पहले के ठीक बाद दूसरा शुरू करेंगे।


इसके अलावा, आप बस उन्हें क्रमबद्ध रूप से निष्पादित करने के लिए आदेशों को ढेर कर सकते हैं, जैसे:

#!/bin/bash

apt-get update
apt-get upgrade

इस चलेंगे apt-get upgradeके बाद apt-get updateकिया जाता है समाप्त हो गया है, लेकिन परिणाम की परवाह किए बिना। इसलिए, भले ही, उदाहरण के लिए, अपडेट एक नेटवर्क त्रुटि के साथ होता है, फिर भी अपग्रेड चलाया जाएगा।

आप ;साइन का उपयोग करके एक पंक्ति में भी कर सकते हैं apt-get update ; apt-get upgrade:। फिर, यह समाधान इन विशेष आदेशों के लिए इष्टतम नहीं है , लेकिन यह अन्य स्थितियों में काम आ सकता है।


एक त्वरित अंतिम बिंदु, आप लाइनों को भी तोड़ सकते हैं &&जैसे:

command_1 &&
command_2

यह वैसा ही होगा command_1 && command_2

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.