टर्मिनल के लिए एक अनुरोध (एक फ़ाइल का उपयोग किए बिना) के बाद एक-दूसरे के बाद कई कमांड निष्पादित करने के लिए कैसे?


22

मैं (1) एक फाइल तैयार कर सकता हूं, जिसे टाइप-लाइन कमांड से अलग किया गया हो, (2) इसे एग्जीक्यूटेबल बनाते हैं, (3) इसे फाइल-सिस्टम मैनेजर या टर्मिनल से चलाते हैं।

लेकिन यह दोहराने योग्य और हर समय-आदेशों के अन्य सेटों के लिए हास्यास्पद है।

क्या मैं उन आदेशों को टर्मिनल के बजाय एक अनुरोध में टाइप कर सकता हूं?

मुझे पता नहीं है कि टर्मिनल के लिए एंड-लाइन कैरेक्टर - Ctrl, Shift या Alt with Enter काम नहीं करता है।  


1
एक कमांड लाइन पर, कमांड को अर्धविराम से अलग किया जा सकता है।
जॉन 1024

जवाबों:


27

आप के साथ &&या कमांड को अलग कर सकते हैं ;

  • && केवल अगला कमांड चलाता है यदि पहले वाला स्टेटस 0 से बाहर निकला (सफल रहा):

    command1 && command2 && command3
    
  • ; हर कमांड चलाता है, भले ही पिछला वाला गैर शून्य स्थिति से बाहर निकलता हो:

    command1; command2; command3
    

आप इन विभाजकों को अपनी इच्छानुसार मिला सकते हैं।


6
के लिए command1 && command2command2 केवल तभी command1 सफल हुआ निष्पादित किया जाएगा।
souravc

अच्छा विचार विमर्श, प्रासंगिक / समान पोस्ट: askubuntu.com/questions/334994/... stackoverflow.com/questions/13077241/...
gevang

@souravc: मैंने एक संपादन किया, धन्यवाद, मैंने कुछ सीखा।
MrVaykadji

यदि संयोजन sudo apt upgradeऔर sudo systemctl reboot, क्या आपको दो बार 'sudo' जोड़ने की आवश्यकता होगी, या क्या यह दूसरी कमांड के लिए sudo को याद रखेगा?
कोएन

9

यदि आप एक ही अनुरोध में प्रत्येक कमांड को अपनी लाइन पर टाइप करने के इच्छुक हैं, तो आप निम्न विधि का उपयोग कर सकते हैं:

  • अपने अनुरोध (पहली पंक्ति) के साथ शुरू करें ( if :; thenइसका मतलब है: यदि सच है, तो करें) और दबाएं Enter; आपका संकेत अब बदल जाएगा >और कुछ भी निष्पादित नहीं किया जाएगा।

  • अपने आदेश टाइप करें, हर एक के बाद Enter

  • fi(उपरोक्त ifशर्त के अंत) के साथ अपना अनुरोध समाप्त करें और दबाएं Enter। अब आपके सभी कमांड दिए गए क्रम में निष्पादित किए जाएंगे।

उदाहरण:

radu@Radu: ~ $ if :; then
> echo 'something'
> echo 'something else'
> echo 'List current directory contents:'
> ls
> echo 'Change current directory with root directory:'
> cd
> #finish
> fi
something
something else
List current directory contents:
Backups            Desktop           forma3d  Public      Untitled txt.txt~
bin                Documente         Music    Templates   Videos
configuration.php  examples.desktop  passwd~  tmp~
Downloads          file~             Poze     Ubuntu One
Change current directory with root directory:
radu@Radu: / $

if true; thenयदि वांछित है तो पढ़ने के लिए स्पष्ट हो सकता है। पहली नज़र में :भ्रमित हो सकते हैं ;
किरी

4

सबसे पहले, {अपनी स्वयं की लाइन पर रखें।
फिर, अपनी कमांड डालें।
फिर, }एक नई लाइन पर रखें और दबाएं Enter। आपकी आज्ञाओं का पालन किया जाएगा।

उदाहरण:

{
echo list
echo of
echo commands
echo to run at once
}

जो प्रिंट करेगा (एक ही बार में, बिना किसी संकेत के)

list
of
commands
to run at once

एक साइड नोट के रूप { .. }में, बैश कमांड ग्रुपिंग सिंटैक्स है। यह अक्सर ( &&या ||'और' और 'या') के साथ संयोजन में उपयोगी होता है


क्या यह वही है जिसका if :; thenपहले ही उल्लेख किया जा चुका है? या यह थोड़ा अलग है?
MrVaykadji

1
@MrVaykadji यह एक ही परिणाम है, लेकिन एक अलग तरीका है। if :अशक्त आदेश पर एक परीक्षण चलाता है, जो हमेशा सच लौटेगा। { .. }बस आदेशों को एक साथ समूहित करता है। मुझे व्यक्तिगत रूप { .. }से याद रखना आसान है।
किरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.