डिफ़ॉल्ट रूप से उपलब्ध कमांड लाइन उपकरण


7

एक यूनिक्स आधारित प्रणाली में आदेशों की एक संख्या डिफ़ॉल्ट (या तो द्वारा उपलब्ध हैं /binया /usr/bin)। मान लीजिए कि कुछ समय में मैंने git, svn जैसे और उपकरण स्थापित किए हैं ...

ओएस एक्स में अगर मैं XCode और फिर कमांड लाइन टूल पैकेज स्थापित करता हूं, तो सिस्टम में विकास टूल का एक बंडल स्थापित हो जाएगा। तो मैं कैसे जान सकता हूं कि ओएस की स्थापना के समय कौन से कमांड उपलब्ध हैं?

है netcat, ncपर मैक OSX डिफ़ॉल्ट रूप से उपलब्ध या कमांड लाइन उपकरणों के साथ स्थापित है?

जवाबों:


9

तो मुझे कैसे पता चलेगा कि स्थापना के समय कौन से कमांड उपलब्ध हैं?

Mavericks (OS X 10.9) की नई स्थापना के बाद उपलब्ध कमांड इन चार पैकेजों में से एक हैं:

  • com.apple.pkg.BSD
  • com.apple.pkg.BaseSystemBinaries
  • com.apple.pkg.BaseSystemResources
  • com.apple.pkg.Essentials

(ध्यान दें कि, उच्च सिएरा (macOS 10.13) के रूप में, कमांड इस पैकेज में चले गए हैं com.apple.pkg.Core।)

आप इस कमांड के साथ हर पैकेज में शामिल कमांड को सूचीबद्ध कर सकते हैं:

pkgutil --files <package name> | egrep '^usr/s*bin|^s*bin/'

मैक ओएस एक्स पर डिफ़ॉल्ट रूप से उपलब्ध हैं netcat, ncया यह कमांड लाइन टूल के साथ स्थापित है?

मैंने पाया nc:

pkgutil --files com.apple.pkg.BaseSystemBinaries | egrep '^usr/bin/nc'

(हाई सिएरा पर, pkgutil --files com.apple.pkg.Core | egrep '^usr/bin/nc'इसके बजाय भागो ।)

हां, ncबेस OS इंस्टॉलेशन के अंतर्गत आता है।

मुझे नहीं मिला netcat, इसलिए यदि आपके पास यह आपके सिस्टम पर है तो इसे बाद में स्थापित किया गया था।


सभी पैकेजों द्वारा प्रदान की गई सभी कमांड को सूचीबद्ध करने के लिए, टर्मिनल में चलाएं:

for p in $(pkgutil --packages); do 
  list_of_cmds=$(pkgutil --files $p | egrep '^usr/s*bin|^s*bin/')
  if [ ! -z "$list_of_cmds" ]; then
    echo ">>>> $p <<<<"
    echo "$list_of_cmds"
  fi
done

आप बाद के संदर्भ के लिए अपने डेस्कटॉप पर एक फ़ाइल के लिए कमांड को पाइप कर सकते हैं:

for p in $(pkgutil --packages); do 
  list_of_cmds=$(pkgutil --files $p | egrep '^usr/s*bin|^s*bin/')
  if [ ! -z "$list_of_cmds" ]; then
    echo ">>>> $p <<<<"
    echo "$list_of_cmds"
  fi
done > ~/Desktop/cmds_from_pkgs.txt

ncआईएस है netcat
Matthieu Riegler

वास्तव में कई netcat प्रोग्राम हैं, SUSE लाइनेक्स सर्वरों पर मैं इसे प्रशासित करता हूं netcat, ओएस एक्स पर इसे कहा जाता है nc, उबंटू 12.04 पर netcatयह एक सिमलिंक है nc। और फिर निश्चित रूप से आपके पास ncatnmap.org पर उपलब्ध है। ncलगता है कि पसंदीदा बीएसडी नाम है, जबकि जीएनयू और कुछ वितरण उपयोग करते हैं netcat। हालांकि SUSE का netcatमूल hobbit@avian.org द्वारा मूल कार्यान्वयन है, ओएस एक्स ncको एरिक जैक्सन (मैन पेज में AUTHOR अनुभाग) द्वारा फिर से लिखा गया है, इसीलिए मैं इलाज करता हूं ncऔर netcatविभिन्न कार्यक्रमों के रूप में।
jaume

एक अन्य विकल्प pkgutil --file-info /usr/bin/ncउन पैकेजों को प्राप्त करने के लिए उपयोग करना है जो इसे स्थापित किया था। कमांड उन ओएस अपडेट को भी सूचीबद्ध करता है जो स्थापना के बाद से फाइल को अपडेट करते हैं। 10.11 पर पैकेज युक्त ncहै com.apple.pkg.Essentials, इसलिए हां यह डिफ़ॉल्ट रूप से शामिल है।
vtt

1
उच्च सिएरा पर (संभवतः पहले भी) उपरोक्त पैकेजों को प्रतिस्थापित किया गया लगता है com.apple.pkg.Core
सिंह निक्किल

1
@ LeoNikkilä हेड-अप के लिए धन्यवाद, मैंने बदलाव को प्रतिबिंबित करने के लिए अपना उत्तर अपडेट किया।
jaume

1

netcat बेस सिस्टम बायनेरिज़ का हिस्सा है जैसा कि आप देख सकते हैं

pkgutil --files com.apple.pkg.BaseSystemBinaries | grep "usr/bin/nc"

-4

आप वास्तव में नहीं बता सकते हैं कि कौन से निष्पादन मूल ओएस का हिस्सा थे और जो बाद में स्थापित किए गए थे।

हालांकि मैन पेज देखना आम तौर पर आपको एक अच्छा विचार देगा। अगर मैन पेज "बीएसडी जनरल कमांड्स मैनुअल" की तरह कुछ शुरू होता है, तो यह निश्चित रूप से मूल ओएस का हिस्सा है। आप देखेंगे कि ये भी एक पंक्ति के साथ समाप्त हो जाएंगे जिसमें प्रत्येक छोर पर 'BSD' या 'Mac OS X' होगा।

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