In einem Unix-basierten System sind eine Reihe von Befehlen standardmäßig verfügbar (entweder in /bin
oder /usr/bin
). Angenommen, ich habe irgendwann mehr Tools wie git, svn … installiert.
Wenn ich in OS X XCode und dann das Befehlszeilen-Tools-Paket installiere, wird ein Bündel von Entwicklungstools auf dem System installiert. Wie kann ich also wissen, welche Befehle zum Zeitpunkt der Installation des Betriebssystems verfügbar sind?
Ist netcat
standardmäßig nc
auf Mac OSX verfügbar oder wird das zusammen mit Befehlszeilen-Tools installiert?
Wie kann ich also wissen, welche Befehle zum Zeitpunkt der Installation verfügbar sind?
Befehle, die nach einer Neuinstallation von Mavericks (OS X 10.9) verfügbar sind, gehören zu einem dieser vier Pakete:
com.apple.pkg.BSD
com.apple.pkg.BaseSystemBinaries
com.apple.pkg.BaseSystemResources
com.apple.pkg.Essentials
(Beachten Sie, dass ab High Sierra (macOS 10.13) Befehle in dieses Paket verschoben wurden com.apple.pkg.Core
.)
Mit diesem Befehl können Sie die in jedem Paket enthaltenen Befehle auflisten:
pkgutil --files <package name> | egrep '^usr/s*bin|^s*bin/'
Sind netcat
, nc
standardmäßig unter Mac OS X verfügbar oder werden diese zusammen mit den Befehlszeilentools installiert?
Ich fand nc
mit:
pkgutil --files com.apple.pkg.BaseSystemBinaries | egrep '^usr/bin/nc'
(Auf High Sierra pkgutil --files com.apple.pkg.Core | egrep '^usr/bin/nc'
stattdessen ausführen.)
also ja, nc
gehört zur Basis-OS-Installation.
Ich konnte es nicht finden netcat
. Wenn Sie es also auf Ihrem System haben, wurde es später installiert.
Um alle Befehle aufzulisten, die von allen Paketen bereitgestellt werden, führen Sie im Terminal Folgendes aus:
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
Sie können den Befehl auch zur späteren Referenz an eine Datei auf Ihrem Desktop weiterleiten:
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
ist Teil der Basissystem-Binärdateien, wie Sie mit sehen können
pkgutil --files com.apple.pkg.BaseSystemBinaries | grep "usr/bin/nc"
Sie können nicht wirklich sagen, welche ausführbaren Dateien Teil des ursprünglichen Betriebssystems waren und welche später installiert wurden.
Ein Blick auf die Manpage gibt Ihnen jedoch im Allgemeinen eine gute Vorstellung. Wenn die Manpage so etwas wie "BSD General Commands Manual" beginnt, ist sie mit ziemlicher Sicherheit Teil des ursprünglichen Betriebssystems. Sie werden feststellen, dass diese auch mit einer Zeile enden, die an jedem Ende entweder „BSD“ oder „Mac OS X“ enthält.
Matthias Riegler
nc
ISTnetcat
.Jaume
netcat
, auf OS X heißt esnc
, auf Ubuntu 12.04netcat
ist ein Symlink zunc
. Und dann haben Sie natürlichncat
, verfügbar unter nmap.org.nc
scheint der bevorzugte BSD-Name zu sein, während GNU und einige Distributionennetcat
. Obwohl SUSEnetcat
die ursprüngliche Implementierung von hobbit@avian.org zu sein scheint, wurde OS Xnc
von Erick Jackson neu geschrieben (AUTHOR-Abschnitt in der Manpage), deshalb behandle ichnc
undnetcat
als unterschiedliche Programme.vjt
pkgutil --file-info /usr/bin/nc
, um die Pakete zu erhalten, die es installiert hatten. Der Befehl listet auch Betriebssystemaktualisierungen auf, die die Datei seit der Installation aktualisiert haben. Am 10.11 ist das Paket, das enthältnc
,com.apple.pkg.Essentials
also ja, es ist standardmäßig enthalten.Leo Nikkilä
com.apple.pkg.Core
.Jaume