Herramientas de línea de comandos disponibles de forma predeterminada

5

En un sistema basado en Unix, una serie de comandos están disponibles de forma predeterminada (ya sea en /bin o /usr/bin ). Supongamos que en algún momento instalé más herramientas como git, svn ...

En OS X, si instalo XCode y luego el paquete de herramientas de línea de comandos, se instalará un conjunto de herramientas de desarrollo en el sistema. Entonces, ¿cómo puedo saber qué comandos están disponibles en el momento de la instalación del sistema operativo?

¿Está netcat , nc disponible de forma predeterminada en Mac OSX o está instalado junto con las herramientas de línea de comandos?

    
pregunta rakeshNS 29.01.2014 - 07:59

3 respuestas

8

Entonces, ¿cómo puedo saber qué comandos están disponibles en el momento de la instalación?

Los comandos disponibles después de una nueva instalación de Mavericks (OS X 10.9) pertenecen a uno de estos cuatro paquetes:

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

(Tenga en cuenta que, a partir de High Sierra (macOS 10.13), los comandos se han movido a este paquete com.apple.pkg.Core .)

Puede listar los comandos incluidos en cada paquete con este comando:

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

¿Están netcat , nc disponibles de forma predeterminada en Mac OS X o se instalan junto con las herramientas de línea de comandos?

Encontré nc con:

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

(En High Sierra, ejecuta pkgutil --files com.apple.pkg.Core | egrep '^usr/bin/nc' en su lugar.)

así que sí, nc pertenece a la instalación del sistema operativo base.

No pude encontrar netcat , así que si lo tienes en tu sistema, se instaló más tarde.

Para enumerar todos los comandos proporcionados por todos los paquetes, ejecute en Terminal:

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

También puede canalizar el comando a un archivo en su escritorio para referencia futura:

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
    
respondido por el jaume 29.01.2014 - 08:57
1

netcat es parte de los Binarios del sistema base como se puede ver con

pkgutil --files com.apple.pkg.BaseSystemBinaries | grep "usr/bin/nc"
    
respondido por el Matthieu Riegler 29.01.2014 - 08:33
-4

En realidad, no puede saber qué archivos ejecutables formaban parte del sistema operativo original y cuáles se instalaron más adelante.

Sin embargo, mirar la página del manual generalmente te dará una buena idea. Si la página de manual comienza algo así como "Manual de comandos generales de BSD" es casi seguro que forma parte del sistema operativo original. Notará que estos también terminarán con una línea que contenga 'BSD' o 'Mac OS X' en cada extremo.

    
respondido por el Tony Williams 29.01.2014 - 08:50

Lea otras preguntas en las etiquetas