Strumenti da riga di comando disponibili per impostazione predefinita

5

In un sistema basato su Unix sono disponibili per impostazione predefinita numerosi comandi (in /bin o /usr/bin ). Supponiamo che in qualche tempo ho installato più strumenti come git, svn ...

In OS X se installo XCode e successivamente il pacchetto di strumenti della riga di comando, nel sistema verrà installato un pacchetto di strumenti di sviluppo. Quindi, come posso sapere quali comandi sono disponibili al momento dell'installazione del sistema operativo?

È netcat , nc disponibile per impostazione predefinita su Mac OSX o è installato insieme agli strumenti da riga di comando?

    
posta rakeshNS 29.01.2014 - 07:59
fonte

3 risposte

8

Quindi, come posso sapere quali comandi sono disponibili al momento dell'installazione?

I comandi disponibili dopo una nuova installazione di Mavericks (OS X 10.9) appartengono a uno di questi quattro pacchetti:

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

(Si noti che, a partire da High Sierra (macOS 10.13), i comandi sono stati spostati in questo pacchetto com.apple.pkg.Core .)

Puoi elencare i comandi inclusi in ogni pacchetto con questo comando:

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

Sono netcat , nc disponibili per impostazione predefinita su Mac OS X o è installato insieme agli strumenti da riga di comando?

Ho trovato nc con:

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

(In High Sierra, esegui invece pkgutil --files com.apple.pkg.Core | egrep '^usr/bin/nc' .)

quindi sì, nc appartiene all'installazione del SO di base.

Non ho trovato netcat , quindi se lo hai sul tuo sistema è stato installato in seguito.

Per elencare tutti i comandi forniti da tutti i pacchetti, esegui in Terminale:

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

È anche possibile reindirizzare il comando a un file sul desktop per riferimento futuro:

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
    
risposta data 29.01.2014 - 08:57
fonte
1

netcat fa parte dei binari del sistema di base come puoi vedere con

pkgutil --files com.apple.pkg.BaseSystemBinaries | grep "usr/bin/nc"
    
risposta data 29.01.2014 - 08:33
fonte
-4

Non si può effettivamente sapere quali eseguibili facevano parte del sistema operativo originale e quali sono stati installati successivamente.

Tuttavia, guardare la pagina man in genere ti darà una buona idea. Se la pagina man inizia come "BSD General Commands Manual" è quasi certamente parte del sistema operativo originale. Noterai che anche queste terminano con una linea che contiene "BSD" o "Mac OS X" a ciascuna estremità.

    
risposta data 29.01.2014 - 08:50
fonte

Leggi altre domande sui tag