कुछ लिनक्स टर्मिनल कमांड में इन प्रतीकों का क्या मतलब है? [बन्द है]


12

AskUbuntu पर, मैंने कुछ आदेश देखे हैं जो काफी जटिल हैं, उनमें बहुत सारे प्रतीक हैं। इन आदेशों का निर्माण कैसे किया जाता है, इसकी बेहतर समझ प्राप्त करने के लिए, मैं जानना चाहता हूं कि प्रतीक किस लिए खड़े हैं।

उदाहरण के लिए:

find ~/ -name \*.c -exec sed -i "s/cybernetnews/cybernet/g" {} \;

या इससे भी अधिक जटिल:

echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m"

मैं बहुत अच्छी तरह से है कि जोड़ने मापदंडों को समझने के रूप में -c, --debugमुख्य commmand पर कुछ प्रभाव है। इनका अर्थ लगभग सभी मामलों में manपृष्ठों में पाया जाना है , इसलिए यह वास्तव में नहीं है जो मैं देख रहा हूं।

कृपया, अपने उत्तर को परिभाषित करने का प्रयास करें कि प्रतीक विशेष रूप से क्या करते हैं, इसके बजाय मैंने जो उदाहरण दिए हैं, उन्हें समझाने के बजाय। जो इस तरह दिख सकता है:

" means 'argument': the main command uses anything within these symbols as its source
^ is used for ...
# is used for ...

अग्रिम में धन्यवाद


मुझे लगता है कि कमांड पर निर्भर करता -c -Dहै कमांड 1 में कुछ मतलब हो सकता है और कमांड 2 में पूरी तरह से अलग चीज हो सकती है
Uri Herrera

हे तुम 1 आदेश बदल दिया है? जहां संपादित करें: X
रिनजविंड

मैंने पहली टिप्पणी को बदल दिया, क्योंकि यह गैर-जानकारीपूर्ण सामान पकड़े हुए थी। मैं उन उदाहरणों को दिखाना चाहता हूं जो जितना संभव हो उतना रिश्तेदार हैं। मैंने उसके लिए उपयुक्त अनुभाग में एक टिप्पणी संपादित की। -C -D सामान के लिए धन्यवाद, मुझे वह मिल गया। मैंने सवाल अपडेट किया।
20:53 बजे एक्सलेरेशन-जी

जवाबों:


14

देखें बैश संदर्भ मैनुअल बुलाया अनुभाग शैल-ऑपरेशन और उन्नत बैश-पटकथा गाइड अध्याय 3 (विशेष वर्ण)

मैं उन लोगों को संदर्भित करता हूं, जब भी मुझे ubuntu / linux में शेल स्क्रिप्टिंग के बारे में कुछ नया सीखने की आवश्यकता होती है।

मुझे लगता है कि आपको ABS अध्याय 3 अपने उद्देश्यों के लिए नेविगेट करने में सबसे आसान लगेगा। सभी प्रतीकों को उनके नीचे तुरंत विवरण के साथ पृष्ठ के बाईं ओर देखा जाता है।


उन्नत बैश-स्क्रिप्टिंग गाइड - अध्याय 3 महान है। धन्यवाद।
13:08 बजे एक्सिलरेशन-जी

उन्नत बैश-स्क्रिप्टिंग गाइड के अध्याय 3 में सूची अधूरी और आंशिक रूप से गलत है। उन्नत बैश स्क्रिप्टिंग गाइड बैश सीखने के लिए एक अच्छा संसाधन नहीं है। इसके बजाय mywiki.wooledge.org/BashGuide और mywiki.wooledge.org/BashFAQ देखें ।
गरिहा

@geirha मैंने ABS को बहुत मददगार पाया, लेकिन एक विशिष्ट कमांड में प्रतीकों के बजाय मैं उस आदमी के पन्नों को देखना पसंद करता हूं, और आपके लिंक बहुत अच्छे हैं - बुकमार्क किए गए। धन्यवाद।
SaultDon

7

दुर्भाग्य से आपको मैन पेज पर जाना होगा, क्योंकि "प्रतीकों" के अलग-अलग अर्थ हो सकते हैं, जिनके आधार पर कमांड उन्हें पढ़ रहा है।

उदाहरण के लिए, आपके पहले आदेश में, {} और \ का अर्थ; खोज आदेश पर निर्भर करें (आदमी खोजें)। एक तर्क पर sed के उद्धरण के अर्थ या तो sed या bash पर निर्भर होते हैं (जैसा कि यह एक उद्धृत पैरामीटर है यह संभवतः एक शेल चीज़ हो सकता है)। ~ / निश्चित रूप से एक बैश पैटर्न विस्तार की बात है।

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

आपकी टिप्पणी का उत्तर देने के लिए, पुनर्निर्देशन वर्ण> <| से सामानों को पाइप करने के लिए उपयोग किया जाता है, और फाइलों में (संकेतों से अधिक और कम), और कमांड के आउटपुट को दूसरे के इनपुट (पाइप |) से जोड़ने के लिए। I / O पुनर्निर्देशन पर एक अच्छे ट्यूटोरियल के लिए यहां देखें , यह यूनिक्स शेल और टूलसेट की एक बहुत शक्तिशाली डिजाइन विशेषता है।


ठीक है, और क्या >? यह एक संकेत है जिसे मैं बार-बार देखता हूं, मुझे लगा कि इसका मतलब 'कॉपी' या कुछ और है। क्या यह एक आज्ञा-निर्भर भी है?
एक्सलेरेशन-जी


3

फाइलों पर समाप्त करने के लिए 1 एक खोज .cनिर्देशिका के भीतर से ~/और executes sed(कारगर संपादक) जहां sed sके लिए earches cybernetnewsऔर में यह परिवर्तन cybernet

दूसरा एक मुझे हटा देता है ... निष्पादित होने पर एक खाली परिणाम दिखाता है।


यह बहुत संभव है, क्योंकि यह यहां एक और सवाल से लिया गया है। संदर्भ के बिना, यह शायद कुछ भी नहीं करता है।
एक्सिलरेशन-जी

2

टर्मिनल कमांड सीखने के लिए मैंने जो सबसे अच्छा संसाधन खोजा है , वह है LinuxCommand , यह उपलब्ध सबसे अधिक उपयोग किए जाने वाले कमांड का विस्तृत विवरण देता है।


बुरा लिंक, कृपया अद्यतन करें या हटाएं।
फ्लाइंगिंगप्रिंटर

2

जब आप जटिल आदेशों को चिपका रहे हों, तो प्रतीकों का पूरा अर्थ बताना कठिन है।

विशेष रूप से प्रतिध्वनि।

-E के लिए आदमी इको देखें, यह भागने में सक्षम बनाता है, इसलिए लेटेर ई एक भागने है।

अन्य प्रतीकों में से अधिकांश स्ट्रिंग जोड़तोड़ हैं।

तो कल्पना कीजिए कि आपके पास एक चर है, जिसमें मैं एक स्ट्रिंग है "फू"

i=foo;echo $i
foo

लेकिन यह अधिक जटिल हो जाता है यदि आपका चर, $ i, भी एक स्ट्रिंग का एक हिस्सा है

echo $ibar # Note: no output

echo ${i}bar # we have output
foobar

अब आप स्ट्रिंग्स को भी हेरफेर कर सकते हैं, केवल एक भाग प्रिंट कर सकते हैं

आपके मामले में

$ {i # * =} = $ $ प्रिंट करें, * और = के बीच सबसे छोटा मैच स्ट्रिप करें, लेकिन * खुद एक वाइल्डकार्ड है ..

echo ${i#o}
foo

echo ${i#*o}
o

Http://tldp.org/LDP/abs/html/string-manipulation.html देखें

अगला हमने एक उप शेल (x ...) मारा

बैश सब शेल में कमांड प्रोसेस करेगा और कमांड का आउटपुट लौटाएगा।

x = (i का एक उप स्ट्रिंग); जारी रखें

अब हमारे पास एक परीक्षण है, ["$ {! X}"]

देखें: http://tldp.org/LDP/abs/html/testconstructs.html

और यहाँ है जहाँ मैं आपको और नहीं बता सकता।

बाश में, $ {! X} खाली स्ट्रिंग होने जा रहा है। && == तार्किक और || तार्किक है या

परीक्षण {खाली स्ट्रिंग} और खाली स्ट्रिंग या प्रतिध्वनि x को प्रतिध्वनित करें

आपको अधिक सिंटैक्स देने की आवश्यकता होगी, लेकिन ऐसा प्रतीत होता है कि यह प्रतिध्वनि कहीं न कहीं इसका आउटपुट है।

फिर से [] एक परीक्षा है, और हम शुरुआत में ही बच गए।

इसलिए मैं केवल इतना समझा सकता हूं कि गूंज क्या कर रही है।

जब आप किसी टर्मिनल में इको कमांड दर्ज करते हैं तो आउटपुट नहीं होता है, यह कोड का एक स्निपिट है, डिफ़ॉल्ट रूप से x या i को परिभाषित नहीं किया गया है, इसलिए सभी आउटपुट खाली है।


1

विशिष्ट भाषाओं में प्रतीकों के बारे में प्रश्नों के लिए, आप SymbolHound आज़माना चाहते हैं आप उन वर्णों के लिए वेब खोज सकते हैं, जो Google को नहीं मिले।

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