निम्नलिखित को अपने में जोड़ें .bash_profile
या .bashrc
एक नया सत्र शुरू करें:
function _complete_open {
cur=$2
COMPREPLY=( );
[[ "$COMP_WORDS" = "open" ]] || return
[[ "${COMP_WORDS[ $(( $COMP_CWORD - 1 )) ]}" = "-a" ]] || return
OLDIFS="$IFS"
IFS=$'\n'
local _part="${COMP_WORDS[$COMP_CWORD]}"
if [[ "${_part:0:1}" = '"' || "${_part:0:1}" = "'" ]] ; then
COMPREPLY=( $( compgen -W "$( mdfind kMDItemKind==Application | sed -e 's|.*/||g' -e 's|.app$||' | sort -u )" -- $cur ) )
else
COMPREPLY=( $( compgen -W "$( mdfind kMDItemKind==Application | sed -e 's|.*/||g' -e 's|.app$||' -e 's| |\\\\ |g' | sort -u )" -- $cur ) )
fi
IFS="$OLDIFS"
}
complete -o default -F _complete_open open
कुछ भी स्थापित करने की आवश्यकता नहीं है। यह bash
बॉक्स से बाहर काम करता है ।
यह केवल स्वत: पूर्ण प्रोग्राम नाम होगा यदि पिछला विकल्प है -a
और अन्यथा डिफ़ॉल्ट व्यवहार दिखाता है, उदाहरण के लिए वर्तमान निर्देशिका में सभी फ़ाइलों की सूची लौटाएं या वर्तमान पथ उपसर्ग को पूरा करें।
परिणाम उत्पन्न किए जाते हैं system_profiler SPApplicationsDataType
, जो उन सभी अनुप्रयोगों को प्राप्त करने का सबसे आसान तरीका है जो आपके सिस्टम पर इस तरह लॉन्च किए जा सकते हैं। सूची को केवल प्रोग्राम नामों को वापस करने के लिए संसाधित किया जाता है, जिसमें रिक्त स्थान हो सकते हैं और बंडल नामों से भिन्न हो सकते हैं (भले ही अनदेखी करने पर .app
)
उपयोग: टाइप करें open -a
, उसके बाद एक स्पेस, उसके बाद दबाकर Tab
या Esc
(मेरे सिस्टम पर दो बार, सुनिश्चित नहीं है कि यह हर जगह है)।
मेरे स्कैनर के लिए सभी सहायक अनुप्रयोगों को दिखाने वाला उदाहरण:
$ open -a Scan
Scan to E-mail Scan to Excel Scan to Folder Scan to Print Scan to Searchable PDF Scan to Word ScanSnap Manager
इस समाधान की कमियां और समस्याएं:
आपके सिस्टम पर ऐसे कई कार्यक्रम हैं जिनके बारे में आपको जानकारी नहीं होगी, जैसे कि सब कुछ /System/Library/CoreServices
। आप उन सभी को सूचीबद्ध नहीं करना चाह सकते हैं। OTOH, उदाहरण के लिए CharacterPalette
और KeyboardViewer
इस तरह से देखना और लॉन्च करना वास्तव में आसान है । * तर्क से mdfind
कॉल (ओं) को उचित रूप से कॉन्फ़िगर करें -onlyin
।
यह धीमी गति के कारण है system_profiler SPApplicationsDataType
। शो पूरा होने से पहले आपको एक या दो इंतजार करना पड़ सकता है। अब mdfind
जल्दी से प्रोग्राम प्राप्त करने के लिए उपयोग करता है। धन्यवाद @Lri
यह एप्लिकेशन नामों और रिक्त स्थान संलग्न प्रोग्राम नामों में रिक्त स्थान को संभाल सकता है, लेकिन यह हैक करने योग्य है। इसके लिए पहले वर्ण का होना आवश्यक है: जबकि Scan" to "P
यह मान्य है bash
, यह प्रोग्राम इसका पता नहीं लगाएगा। पूर्णता बची हुई जगह (जैसे Scan\ to
) के बाद काम नहीं करता है , ऐसे मामलों में उद्धरण चिह्नों का उपयोग करें ( "Scan to
)। बची हुई जगहों के लिए समर्थन केवल पूरा DVD
करने के लिए अच्छा है DVD\ Player
।