В системе на основе Unix ряд команд доступен по умолчанию (либо в , либо в /bin
) /usr/bin
. Предположим, через какое-то время я установил больше инструментов, таких как git, svn…
В OS X, если я установлю XCode, а затем пакет инструментов командной строки, в систему будет установлен пакет инструментов разработки. Итак, как я могу узнать, какие команды доступны во время установки ОС?
Доступен ли netcat
он nc
по умолчанию в Mac OSX или он устанавливается вместе с инструментами командной строки?
Итак, как я могу узнать, какие команды доступны во время установки?
Команды, доступные после новой установки Mavericks (OS X 10.9), относятся к одному из этих четырех пакетов:
com.apple.pkg.BSD
com.apple.pkg.BaseSystemBinaries
com.apple.pkg.BaseSystemResources
com.apple.pkg.Essentials
(Обратите внимание, что начиная с High Sierra (macOS 10.13) команды были перемещены в этот пакет com.apple.pkg.Core
.)
Вы можете перечислить команды, включенные в каждый пакет, с помощью этой команды:
pkgutil --files <package name> | egrep '^usr/s*bin|^s*bin/'
Доступны ли netcat
по nc
умолчанию в Mac OS X или они устанавливаются вместе с инструментами командной строки?
Я нашел nc
с:
pkgutil --files com.apple.pkg.BaseSystemBinaries | egrep '^usr/bin/nc'
(На High Sierra pkgutil --files com.apple.pkg.Core | egrep '^usr/bin/nc'
вместо этого бегите.)
так что да, nc
относится к базовой установке ОС.
Я не смог найти 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
netcat
является частью двоичных файлов базовой системы, как вы можете видеть с помощью
pkgutil --files com.apple.pkg.BaseSystemBinaries | grep "usr/bin/nc"
На самом деле вы не можете сказать, какие исполняемые файлы были частью исходной ОС, а какие были установлены позже.
Однако просмотр справочной страницы, как правило, даст вам хорошее представление. Если справочная страница начинается с чего-то вроде «Руководство по основным командам BSD», она почти наверняка является частью исходной ОС. Вы заметите, что они также заканчиваются строкой, содержащей либо «BSD», либо «Mac OS X» на каждом конце.
Матье Риглер
nc
ЕСТЬnetcat
.жауме
netcat
, в OS X она называетсяnc
, в Ubuntu 12.04netcat
это символическая ссылка наnc
. И, конечно же, у вас естьncat
, доступный на nmap.org.nc
кажется предпочтительным именем BSD, в то время как GNU и некоторые дистрибутивы используютnetcat
. Хотя SUSEnetcat
кажется оригинальной реализацией hobbit@avian.org, OS Xnc
была переписана Эриком Джексоном (раздел AUTHOR на странице руководства), поэтому я рассматриваюnc
иnetcat
как разные программы.вт
pkgutil --file-info /usr/bin/nc
для получения пакетов, в которых он был установлен. Команда также выводит список обновлений ОС, которые обновили файл с момента установки. В 10.11 пакет, содержащийnc
,com.apple.pkg.Essentials
так что да, он включен по умолчанию.Лео Никкиля
com.apple.pkg.Core
.жауме