Mac Commandline Tools

systemsetup

Manage a variety of configuration stuff.

sudo systemsetup -getdate    # view system date systemsetup -getcomputername    # display computer name

softwareupdate

Execute Apple Software update from the commandline

softwareupdate -l    # list available updates sudo softwareupdate -i -a    # install all available updates

networksetup

Manage the network configuration

sudo networksetup -listallhardwareports    # list all network interfaces with MAC addresses sudo networksetup -switchtolocation home    # switch network locations

dscl

Directory service management, for example users, groups etc. – complex stuff, mostly for use on OSX server

dscl localhost -list /Local/Default/Users    # list all local users

Users are added from the command line with dscl. In OSX, it is done as such:

dscl. -create /Users/username    # creates the new user entry. The "." specifies the local machine and "-create" is the verb which directs the command. dscl. -create /Users/username UserShell /bin/bash    # sets the default shell for said user dscl. -create /Users/username Realname "user name"    # the alternative name used optionally by OSX to log in dscl. -create /Users/username UniqueID 503    # set a unique number id for the user dscl. -create /Users/username PrimaryGroupID 1000    # sets the primary group id. In OSX the admin groups are usually either administrator or staff. dscl. -create /Users/username NFSHomeDirectory /Local/Users/username    # sets the user's home directory dscl. -passwd /Users/username password    # sets the user's password dscl. -append /Groups/admin GroupMembership username

As a note, to list all available groups and their ids, you can type

dscacheutil -q group

And passwords can be set or changed in the traditional linux way with

passwd username

dscacheutil

Manage DNS cache

dscacheutil -flushcache # clear local DNS cache

system_profiler

View system information (Like SystemProfiler.app in Utilities)

system_profiler    # list all information on system available. It is A LOT OF INFO!! system_profiler -detaillevel basic    # lists only hardware and network information system_profiler SPHardwareDataType    # lists a hardware overview of the local system system_profiler SPSoftwareDataType    # lists a software overview of the local system system_profiler -xml filename >/Users/username/Documents/sys-info.xml    # generates an xml file rather than plain text output.

sysctl

Display or set the kernel state. Commonly used to retrieve information on the system such as

sysctl -n machdep.cpu.brand_string    # display information on the processor sysctl -a | grep hw.memsize    # list the amount of memory in the system

chflags

Change file flags, like “hidden”, “archived”..

chflags -R -V hidden /some/file.txt    # hides the specified file from the gui ls -l0     # View flags in the current directory

GetFileInfo

View extended file attributes, like icon, creator and so on. To write these attributes use SetFileInfo

GetFileInfo any.txt # list the attributes

diskutil

Manage local disks

diskutil list # list local drives and partitions sudo diskutil repairPermissions / # repair permissions

hdiutil

Manage disk images

hdiutil burn animage.dmg # burn imagefile to cd/dvd hdiutil create -srcfolder path any.dmg # create dmg-image from folder

drutil

Interact with CD/DVD drives

drutil eject # eject media drutil status # show detailed information about drives and media

open

Open a file with a given application.

open example.txt # opens the file in the default text editor open. # opens a new finder window with the current commandline path

pbcopy/pbpaste

Access OSX clipboard

ls | pbcopy # copy dir listing to clipboard

mdutil/mdfind

Manage Spotlight and search it's cache

mdutil -s / # show indexing status on root drive mdfind -name "filename"

periodic

Run periodic system jobs

sudo periodic daily # run daily stuff

However, any such tasks can be done traditionally with cron as well.