Zshrc में एक फ़ंक्शन लिखें जो एक पैरामीटर ले सकता है और झंडे को संभाल सकता है


1

जब मैं विकसित हो रहा होता हूं तो मुझे आमतौर पर लोकलहोस्ट के लिए खोले गए क्रोम पेज की जरूरत होती है इसलिए, मैं सिर्फ निम्नलिखित cmd चलाता हूं: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --app=http://localhost:3000

चूंकि मैं इसका अक्सर उपयोग करता हूं और कभी-कभी मेरा पोर्ट बदल जाता है। मैं कहाँ zsh में एक समारोह लिखना चाहता हूँ ch में क्रोम खोलेंगे localhost:3000 जबकि ch 2500 में क्रोम खोलेंगे localhost:2500

अब तक, मैंने यही किया है:

ch () {
    command "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}

यह एक नई क्रोम विंडो खोलता है लेकिन कंसोल में एक त्रुटि / चेतावनी प्रदर्शित करता है: /Library/Caches/com.apple.xbs/Sources/AppleGVA/AppleGVA-9.1.12/Sources/Slices/Driver/AVD_loader.cpp: failed to get a service for display 3

लेकिन जब मैं एक ध्वज जोड़ता हूं:

ch () {
    command "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --app=http://localhost:3000"
}

कुछ नहीं होता है और मुझे एक त्रुटि मिल रही है: ch:1: no such file or directory: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --app=http://localhost:3000

जवाबों:


2

जोड़ा ध्वज के साथ काम नहीं करने का कारण यह है कि आपने ध्वज को दोहरे उद्धरण चिह्नों में जोड़ा है, अनिवार्य रूप से बता रहा है zsh यह कमांड नाम का हिस्सा है। किसी भी उद्धरण की आवश्यकता एकमात्र कारण यह है कि पथ और के नाम Google Chrome व्हॉट्सएप को सम्‍मिलित करें। व्हाट्सएप द्वारा उपयोग किया जाता है zsh (और किसी भी अन्य यूनिक्स शेल) के बीच विभाजक के रूप में शब्द । एक स्ट्रिंग उद्धृत करना बताता है zsh यह एक ही शब्द के रूप में व्याख्या की जानी चाहिए, चाहे इसमें कितने भी व्हाट्सएप (या अन्य सिंटैक्टिक तत्व) हों।

इसे सही तरीके से करने का एक तरीका है:

ch () {
    "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --app=http://localhost:${1:-3000}
}
  • यहाँ केवल करने के लिए रास्ता Google Chrome उद्धृत किया गया है, जबकि झंडा अलग है।
  • कीवर्ड command इसकी आवश्यकता नही है। यह तो बता ही देगा zsh एक फ़ंक्शन या एक ही नाम के उपनाम के बजाय किसी बाहरी आदेश का उपयोग करने के लिए, जो सबसे अधिक संभावना है कि यहां कोई जोखिम नहीं है (उपनाम या फ़ंक्शन का नाम देना होगा "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" )
  • ${1:-3000} पहले पैरामीटर के साथ प्रतिस्थापित किया जाता है ( $1 ) पास किया ch। यदि यह अपरिभाषित है या अशक्त-मूल्य है (उदा। "" ) "3000" के बदले प्रतिस्थापित किया जाएगा। तो चल रहा है

    ch 2500
    

    Chrome खोलेंगे http://localhost:2500, लेकिन चल रहा है

    ch
    

    Chrome खोलेंगे http://localhost:3000


मुझे अभी भी कमांड प्रॉम्प्ट में त्रुटि मिल रही है: /Library/Caches/com.apple.xbs/Sources/AppleGVA/AppleGVA-9.1.12/Sources/Slices/Driver/AVD_loader.cpp: failed to get a service for display 3
user7579349

मैं वास्तव में इस बारे में निश्चित नहीं हूं। लेकिन अगर बाकी सब कुछ ठीक काम करता है, तो मुझे लगता है कि यह एक डिबग संदेश से अधिक है जिसे अनदेखा किया जा सकता है। संभावना है कि जीयूआई से शुरू होने पर भी क्रोम यह संदेश जारी कर रहा है, आप इसे तब नहीं देख सकते।
Adaephon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.