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á disponible netcat
de nc
forma predeterminada en Mac OSX o se instala junto con las herramientas de línea de comandos?
Entonces, ¿cómo puedo saber qué comandos están disponibles en el momento de la instalación?
Los comandos disponibles después de una instalación nueva 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 trasladado a este paquete com.apple.pkg.Core
).
Puede enumerar los comandos incluidos en cada paquete con este comando:
pkgutil --files <package name> | egrep '^usr/s*bin|^s*bin/'
¿Están disponibles netcat
de nc
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, corre pkgutil --files com.apple.pkg.Core | egrep '^usr/bin/nc'
en su lugar).
entonces sí, nc
pertenece a la instalación del sistema operativo base.
No pude encontrar netcat
, por lo que si lo tiene en su sistema, se instaló más tarde.
Para enumerar todos los comandos provistos 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 posterior:
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
netcat
es parte de los binarios del sistema base como puede ver con
pkgutil --files com.apple.pkg.BaseSystemBinaries | grep "usr/bin/nc"
En realidad, no puede saber qué ejecutables formaban parte del sistema operativo original y cuáles se instalaron más tarde.
Sin embargo, mirar la página del manual generalmente le dará una buena idea. Si la página de manual comienza con algo así como "Manual de comandos generales de BSD", es casi seguro que sea parte del sistema operativo original. Notará que estos también terminarán con una línea que contiene 'BSD' o 'Mac OS X' en cada extremo.
Matthieu Riegler
nc
ESnetcat
.jaume
netcat
, en OS X se llamanc
, en Ubuntu 12.04netcat
es un enlace simbólico anc
. Y luego, por supuesto, tienencat
, disponible en nmap.org.nc
parece ser el nombre BSD preferido, mientras que GNU y algunas distribuciones usannetcat
. Aunque SUSEnetcat
parece ser la implementación original de hobbit@avian.org, OS Xnc
fue reescrito por Erick Jackson (sección AUTOR en la página de manual), es por eso que lo tratonc
comonetcat
programas diferentes.vjt
pkgutil --file-info /usr/bin/nc
para obtener los paquetes que lo tenían instalado. El comando enumera también las actualizaciones del sistema operativo que han actualizado el archivo desde la instalación. El 10.11, el paquete que contienenc
escom.apple.pkg.Essentials
, por lo que sí, está incluido de forma predeterminada.Leo Nikkila
com.apple.pkg.Core
.jaume