Hacker News new | ask | show | jobs
by jfarmer 1132 days ago
One nice thing about macOS is that many of the system GUI tools are graphical wrappers around a command-line tool that does the real work.

Most of them live in /usr/sbin

I keep a list for my students. Here are some:

   diskutil
   mdfind
   mdutil
   plutil
   networksetup
   softwareupdate
   screencapture
   pmset
   hdiutil
   pkgutil
   caffeinate
   osascript
   defaults
   launchctl
For example, mdfind lets you use Spotlight search on the command line. diskutil powers "Disk Utility.app". pkgutil lets you install .pkg files and also get information about programs installed that way. screencapture lets you take screenshots from the command line (you can specify which windows, etc.)

Anyhow, there's a bunch.

There are also random useful executables not in $PATH. This program powers your WiFi menu:

   /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
Try "airport -I"

A silly one-liners to print out your overall WiFi strength:

   airport -I | grep -E 'agrCtlRSSI|agrCtlNoise' | awk '{print $2}' | sed -e 'N;s/\n/ - /' | bc
Put that in a script called "wifi-strength" and walk around your house with a laptop while running the following:

   watch -n1 "wifi-strength | say"
3 comments

Nitpick: In general, the graphical tools don’t literally invoke the command-line tools. Rather, both the graphical tool and the command-line tool use the same C or Objective-C API (usually private and undocumented) provided by some system framework. But the command-line tools do tend to be more direct reflections of the underlying API, and more flexible.
Oops.

Yeah, I knew some of them did and then at some point I just started tossing more programs in the list as I ran across them.

Very Nice! One caveat is that say won't speak the "minus" if your SNR became negative.

echo '-30' | say

echo '\-30' | say

Thanks!
What a goldmine, thanks!