कैसे खोजक में चयनित फ़ाइलों / फ़ोल्डरों के साथ एक शेल स्क्रिप्ट निष्पादित करें?


13

मैं लिनक्स से आ रहा हूं, जहां एक फाइल को नौटिलस या डॉल्फिन में सेट करना आसान है, लेकिन मुझे यह देखकर आश्चर्य हुआ कि यह OSX में आसान नहीं है।

अधिमानतः, मैं खोजक में कुछ चयन पर ctrl- क्लिक करने में सक्षम होना पसंद करूंगा, अपनी स्क्रिप्ट चुनूंगा, और प्रगति या किसी भी उपयोगकर्ता इंटरैक्शन को दिखाने के लिए एक टर्मिनल विंडो पॉप अप करूंगा।

जवाबों:


8

ऐसा करने का सबसे आसान, बिल्ट-इन तरीका यह है कि सिर्फ फाइंडर से टर्मिनल विंडो में आइटम को खींचें । जब आप उन्हें छोड़ देते हैं, तो टर्मिनल उनके (बच गए) पथनाम को "टाइप" कर देगा। फिर आप अपने शेल के कमांड लाइन एडिटिंग का उपयोग बाकी कमांड में प्रवेश करने के लिए कर सकते हैं। या यदि आप आगे की सोच रहे हैं, तो आप पहले कमांड टाइप कर सकते हैं फिर आइटम में ड्रैग कर सकते हैं।

"पहले खींचें" संस्करण:

  1. कुछ खोजक आइटम को टर्मिनल विंडो में चुनें और खींचें जो शेल प्रॉम्प्ट दिखा रहा है। टर्मिनल (बच गए) पथनामों को सम्मिलित करेगा।
  2. टाइप Control+ A(पंक्ति की शुरुआत में जाएं; theA डिफ़ॉल्ट है, लेकिन शेल / कॉन्फ़िगरेशन द्वारा भिन्न होता है)।
  3. अपना कमांड और एक स्पेस टाइप करें (इसे पाथनेम्स से पहले डाला जाएगा)।

"आगे की सोच" संस्करण:

  1. किसी भी क्रम में, दोनों करें:
    • एक टर्मिनल विंडो में, अपने कमांड और स्पेस के शुरुआती भाग को टाइप करें (पैथनेम को छोड़कर)।
    • फाइंडर में कुछ आइटम का चयन करें ।
  2. खोजकर्ता से टर्मिनल विंडो पर चयनित आइटम खींचें जहां आपने कमांड टाइप किया है।
  3. टर्मिनल विंडो को सक्रिय करें और दबाएं Return

यदि आपको अधिक स्वचालित समाधान की आवश्यकता है तो आप (जैसा कि अन्य उत्तरों ने संकेत दिया है) AppleScript या Automator की ओर मुड़ सकते हैं। चूंकि अतिरिक्त "मूविंग पार्ट्स" समाधान में कुछ जटिलता जोड़ सकते हैं, इसलिए आपको एक या एक से अधिक स्वचालित समाधानों को लागू करने की जटिलता के खिलाफ उपरोक्त प्रक्रिया (मैनुअल, लेकिन लचीली) के लाभों को तौलना होगा।

स्वचालन की कुछ संभावनाओं में शामिल हैं:

  • एक AppleScript छोटी बूंद आवेदन
  • एक सादे AppleScript प्रोग्राम अंतर्निहित स्क्रिप्ट मेनू या अन्य लांचर द्वारा लॉन्च किया गया है
    • खोजक के चयन से पथनामें प्राप्त करें
  • एक स्वचालित वर्कफ़्लो, अनुप्रयोग, या खोजक प्लग-इन
  • एक निष्पादन योग्य .commandफ़ाइल (आमतौर पर एक शेल स्क्रिप्ट; इसे टर्मिनल में चलाने के लिए खोजक में खोलें )
    • खोजक के चयन ( ऑसस्क्रिप्ट के माध्यम से ) से पथनाम प्राप्त करें
  • कुछ तृतीय-पक्ष उपकरण जो पहले से ही आपको आवश्यक कार्यक्षमता प्रदान करते हैं

7

मुझे नहीं लगता कि सीधे तौर पर ऐसा करने का कोई तरीका है। आप एक "ऑटोमेकर" एप्लिकेशन का निर्माण कर सकते हैं, जो आप जो चाह रहे हैं, उसमें से कुछ करेंगे। यह दिखाता है कि ऑटोमेटर स्टैक कैसा दिखेगा:

यहाँ छवि विवरण दर्ज करें

परिणाम को एक एप्लिकेशन के रूप में सहेजें, फिर फाइंडर में फ़ाइलों का चयन करें, राइट-क्लिक करें और "ओपन विथ" चुनें और फिर अपना एप्लिकेशन चुनें। (आपको एप्लिकेशन सूची में सबसे नीचे "अन्य ..." का चयन करना पड़ सकता है।)

आप इस विधि के साथ स्क्रिप्ट के साथ बातचीत करने के लिए नहीं है, लेकिन आप कुछ शेल स्क्रिप्ट प्रदर्शन करने के लिए फ़ाइलों पर लूप कर सकते हैं।


यदि आप एप्लिकेशन आइकन पर फ़ाइलों को खींचते हैं, और उन्हें छोड़ते हैं तो यह और भी आसान है।
kiamlaluno

5

सेवाएँ हैं कि कैसे इस तरह की चीज़ को संभालता है।

एप्लिकेशन मेनू (इस मामले में 'खोजक') के तहत हमेशा (लगभग) एक Servicesमेनू विकल्प होता है जो वर्तमान एप्लिकेशन और इसकी वर्तमान स्थिति पर लागू होने वाली सेवाएँ प्रदान करेगा । आमतौर पर स्थिति यह है कि किस प्रकार की वस्तु का चयन किया जाता है (पाठ, फ़ाइलें / फ़ोल्डर, आदि)।

उन्हें सिस्टम प्राथमिकताएं पैनल में सक्षम, अक्षम और असाइन किए गए कीबोर्ड शॉर्टकट दिए जा सकते हैं, जो केवल उन तीनों में से आखिरी के लिए समझ में आता है Keyboard

कुंजीपटल अल्प मार्ग

खोजक में फ़ाइलों / फ़ोल्डरों पर शेल स्क्रिप्ट लागू करने वाली सेवा बनाने के लिए:

लॉन्च करें और एक नए Serviceप्रकार का दस्तावेज़ बनाएं ।

नई सेवा

  • सेवा जिस वस्तु पर लागू होती है उसका प्रकार सेट करें ( files or folders)
  • वह एप्लिकेशन सेट करें जिसमें सेवा उपलब्ध है ( )
    • वैकल्पिक रूप से एक Get Selected Finder Itemsकार्रवाई है।
  • की एक क्रिया जोड़ें Run Shell Script
  • तय करें कि आप इनपुट को तर्क या रूप में चाहते हैं

यह कुछ इस तरह दिखना चाहिए:

उदाहरण शेल स्क्रिप्ट

~/Library/Servicesजब आप सहेजते हैं तो स्वचालित रूप से इसे आपके फ़ोल्डर में रख देगा, जो इसे Application -> Servicesमेनू के माध्यम से तुरंत उपलब्ध (लगभग) या प्रासंगिक (राइट क्लिक) मेनू बना देगा।

फ़ोल्डर का परीक्षण करें

जिसके परिणामस्वरूप TextEdit दस्तावेज़



2

ऊपर दिए गए उत्तरों के आधार पर, मैंने इस चीज़ का निर्माण किया

https://github.com/commonpike/DropShell

मूल रूप से एक ऐप्पलस्क्रिप्ट ऐप जो ऐप में स्थित एक शेलफाइल को तर्कों के रूप में गिराई गई फ़ाइलों के साथ कहता है। आप आवश्यकतानुसार शेल स्क्रिप्ट को संशोधित कर सकते हैं।


2

कॉमनपाइक के उत्तर के आधार पर, मैंने एक AppleScript बनाया है, जो मेल नाम के साथ एक शेल स्क्रिप्ट के लिए सभी फाइलों को रीडायरेक्ट करता है। बस ऐप्पल के ScriptEditor के भीतर से एप्लिकेशन को सेव करें और अपनी script.sh को मेल करने के लिए script.app के रूप में नाम बदलें। https://github.com/PHolker/scripts/blob/master/DropScript.scpt


1

मैक ओएस एक्स में, पसंदीदा स्क्रिप्ट भाषा एप्सस्क्रिप्ट है। आप एक छोटी बूंद बना सकते हैं (एक स्क्रिप्ट जो आपके आइकन पर कुछ फ़ाइलों को छोड़ने पर कुछ करेगी), स्क्रिप्ट को रखें (जिसे एप्लिकेशन के रूप में सहेजा जा सकता है) आइकन को डेस्कटॉप पर रखें, और उन फ़ाइलों को खींचें और छोड़ें जिन्हें आप पास करना चाहते हैं। स्क्रिप्ट।

विकल्प के रूप में, आप फ़ोल्डर क्रियाओं का उपयोग कर सकते हैं। किसी स्क्रिप्ट को एक फ़ोल्डर में जोड़ना संभव है, जिसे हर समय कुछ फाइलों (या निर्देशिकाओं) को फ़ोल्डर के ऊपर गिरा दिया जाएगा।


1

मैं ऐसा करना चाहता हूं, हालांकि ऊपर दिए गए समाधानों के विपरीत, मैं एक शेल स्क्रिप्ट के लिए उद्धृत मापदंडों का उत्पादन करना चाहता था। वे अन्य तरीके ठीक हैं, लेकिन जब आप वास्तव में चाहते हैं तो "बस कमांड-वी इन टर्मिनल" का सुझाव देने की तरह है pbpaste

मैं एक शेल फ़ंक्शन बनाना चाहता था जिसका उपयोग मैं अपनी स्क्रिप्ट में कर सकता हूं जो प्रत्येक फाइंडर चयन के लिए फ़ाइल मापदंडों में विस्तारित हो। मैं मछली के खोल का उपयोग करता हूं और यह कुछ हद तक काम करता है:

function selection
    osascript -e "tell application \"Finder\" to set s to the selection as alias list" -e "repeat with f in s" -e "set contents of f to POSIX path of f" -e "end repeat" -e "set AppleScript's text item delimiters to linefeed" -e "s as string"
end

प्रयुक्त (फिर से मछली के खोल में) की तरह convert-video (selection)

एक बैश फ़ंक्शन में, | tr '\n' '\0' | xargs -0 printf "%q" {}उस ऑस्क्रिप्‍ट कमांड के अंत में कुछ के साथ आउटपुट को कोट करना पड़ सकता है , निश्चित नहीं।

(ध्यान दें: सब कुछ जो मुझे उन्नत एप्सस्क्रिप्ट और शेल स्क्रिप्टिंग के बारे में पता है जो मैंने पिछले 2 घंटों में फिर से सीखा है और कल तक भूल जाएगा)


हाल ही में bash में ऐसा करने की कोशिश कर रहा था, असफल रहा, यहाँ पूछा गया superuser.com/questions/1353966 पर , ऐसे उत्तर मिले जो संकेत देते हैं: नहीं, संभव नहीं: ^ (आप हारें, मेरे काम पर मछली के गोले पर स्विच करें मैक)। मैं क्रिस जॉन्सन द्वारा उल्लिखित ड्रैग-टू-फाइंडर ट्रिक का उपयोग करता हूं, काफी।
पियरे ह्यूस्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.