A       afconvert Audio File Convert   afinfo Audio File Info   afplay Audio File Play   airport Manage Apple AirPort   alias Create an alias • ▫   alloc List used and free memory   apropos Search the whatis database for strings   arp Address resolution display and control   asr Apple Software Restore   atsutil Font registration system utility   autoload Autoload a function ▫   automator Run an Automator workflow   awk Find and Replace text within file(s) B       base64 Encode or Decode a binary file   basename Convert a full pathname to just a filename   bash Bourne-Again SHell   bc Arbitrary precision calculator language   bg Send to background • ▫   bind Set or display readline key and function bindings •   bless Set volume bootability and startup disk options   break Exit from a For, While, Until or Select loop •   brew Package manager   builtin Execute a shell builtin •   bzip2 Compress or decompress files C       caffeinate Prevent the system from sleeping   cal Display a calendar   calendar Reminder Service   caller Return the context of a subroutine call •   cancel Cancel print jobs   case Conditionally perform a command •   cat Concatenate and print (display) the content of files   cd Change Directory • ▫   chflags Change a file or folder’s flags   chgrp Change group ownership   chmod Change access permissions   chown Change file owner and group   chroot Run a command with a different root directory   chsh Add or change user database information, change default shell   cksum Print CRC checksum and byte counts   clear Clear terminal screen   cmp Compare two files   codesign Create and manipulate code signatures   col Filter reverse line feeds from input   comm Compare two sorted files line by line   command Run a command (not a function) • ▫   complete Edit a command completion [word/pattern/list] •   continue Resume the next iteration of a loop • ▫   cp Copy one or more files to another location   cpio Copy files to and from archives   createhomedir Create and populate home directories on the local computer   cron Daemon to execute scheduled commands   crontab Schedule a command to run at a later date/time   csplit Split a file into context-determined pieces   csrutil Configure System Integrity Protection (SIP)   cupsfilter Convert a file to another format using cups filters   curl Transfer data from or to a server   cut Divide a file into several parts D       date Display or change the date & time   dc Desk Calculator   dd Data Duplicator - convert and copy a file, clone disks   declare Declare variable & set attributes • ▫   defaults Set preferences, show hidden files   df Display free disk space   diff Display the differences between two files   diff3 Show differences among three files   dig DNS lookup   dirname Convert a full pathname to just a path   dirs Display list of remembered directories •   diskutil Disk utilities - Format, Verify, Repair   disown Unbind a job from the current login session •   ditto Copy files and folders   dot_clean Remove dot-underscore files   drutil Interact with CD/DVD burners   dscacheutil Query or flush the Directory Service/DNS cache   dseditgroup Edit, create, manipulate, or delete groups   dsenableroot Enable root access   dsmemberutil View user and group rights   dscl Directory Service command line utility   du Estimate file space usage E       echo Display text on screen • ▫   ed A line-oriented text editor (edlin)   enable Enable and disable builtin shell commands •   emulate Print current emulation mode (Zsh only) ▫   env List or Set environment variables   eval Evaluate several commands/arguments • ▫   exec Execute a command • ▫   exit Exit the shell •   execsnoop Snoop new process execution   expand Convert tabs to spaces   expect Programmed dialogue with interactive programs Also see AppleScript   export Set an environment variable •   expr Evaluate expressions F       false Do nothing, unsuccessfully   fc Fix command (history)   fdisk Partition table manipulator for Darwin UFS/HFS/DOS   fdesetup FileVault configuration, list FileVault users   fg Send job to foreground •   file Determine file type   find Search for files that meet a desired criteria   fmt Reformat paragraph text   fold Wrap text to fit a specified width   for Loop command •   fsck Filesystem consistency check and repair   fs_usage Filesystem usage (process/pathname)   ftp Internet file transfer program   function Define Function Macros   fuser List processes that have one or more files open G       GetFileInfo Get attributes of HFS+ files   getopt Parse positional parameters   getopts Parse positional parameters •   goto Jump to label and continue execution   gpt GUID partition table maintenance utility   grep Search file(s) for lines that match a given pattern   groups Print group names a user is in   gzip Compress or decompress files H       halt Stop and restart the Operating System   hash Refresh the cached/remembered location of commands •   head Display the first lines of a file   hdiutil Manipulate iso disk images   history Command History •   hostname Print or set system name I       iconv Convert the character set of a file   id Print user and group names/id’s   if Conditionally perform a command •   ifconfig Configure network interface parameters   iostat Report CPU and i/o statistics   ipconfig View and control IP configuration state   info Help info   install Copy files and set attributes   installer System software and .pkg package installer tool   iosnoop Snoop I/O events as they occur J       jobs List active jobs •   join Join lines on a common field   jot Print sequential or random data K       kextfind List kernel extensions   kextstat Display status of loaded kernel extensions (kexts)   kextunload Terminate driver instances and unload kernel extensions.   keytool Key and certificate management tool   kickstart Configure Apple Remote Desktop   kill Kill a process by specifying its PID   killall Kill processes by name   klist List cached Kerberos tickets L       l List files in long format (ls -l)   last Indicate last logins of users and ttys   launchctl Load or unload daemons/agents   ll List files in long format, showing invisible files (ls -la)   leave Remind you when you have to leave   less Display output one screen at a time   let Evaluate expression •   lipo Convert a universal binary   ln Make links between files (hard links, symbolic links)   local Set a local (function) variable •   locate Find files   log Access system wide log messages   logname Print current login name   login log into the computer   logout Exit a login shell (bye) •   look Display lines beginning with a given string   lp Print files   lpr Print files   lprm Remove jobs from the print queue   lpstat Printer status information   ls List information about file(s)   lsregister Reset the Launch Services database   lsbom List a bill of materials file   lsof List open files M       man Help manual   md5 Calculate a checksum for a file   mdfind Spotlight search   mdimport Import file hierarchies into the Spotlight datastore.   mdls List the metadata attributes for a specified file   mdutil Manage Spotlight metadata store   mkdir Create new folder(s)   mkfifo Make FIFOs (named pipes)   mkfile Make a file   mktemp Make a temporary file   more Display output one screen at a time   mount Mount a file system   mount_nfs Mount an NFS file system   mount_smbfs Mount a file share from a remote SMB server   msgs System messages   mtree Map a directory hierarchy   mv Move or rename files or directories N       nano Simple text editor   nc/netcat Read and write data across networks   netstat Show network status   networkQuality Network quality testing tool   networksetup Network and System Preferences   nice Set the priority of a command   nl Number lines and write files   nohup Run a command immune to hangups   ntfs.util NTFS file system utility   nvram Manipulate firmware variables O       onintr Control the action of a shell interrupt   open Open a file/folder/URL/Application   opensnoop Snoop file opens as they occur   openssl OpenSSL command line   osacompile Compile AppleScript   osascript Execute AppleScript P       passwd Modify a user password   paste Merge lines of files   pbcopy Copy data to the clipboard   pbpaste Paste data from the Clipboard   pbs General helper tool   pfctl Firewall - Control the packet filter and NAT device.   pgrep List processes by a full or partial name   ping Test a network connection   pkill Kill processes by a full or partial name   pkgbuild Build a macOS Installer component package   pkgutil Query and manipulate installed packages   plutil Property list utility   pmset Power Management settings   popd Restore the previous value of the current directory •   powermetrics Display CPU and power usage stats   pr Convert text files for printing   printenv List environment variables   printf Format and print data •   profiles Profiles Tool   ps Process status   purge Force disk cache to be purged (flushed and emptied)   pushd Save and then change the current directory   pwd Print Working Directory • Q       qlmanage Quick Look Server debug and management tool   quota Display disk usage and limits R       rcp Copy files between machines   read Read one line from standard input •   readonly Mark a variable or function as read-only •   realpath Return resolved physical path   reboot Stop and restart the system   repeat Loop command to repeat an action ▫   ReportCrash Enable/Disable crash reporting   return Exit a function •   rev Reverse lines of a file   rm Remove files   rmdir Remove folder(s)   route Manipulate the routing tables   rsync Remote file copy - Sync file tree S       say Convert text to audible speech   screen Multiplex terminal, run remote shells via ssh   screencapture Capture screen image to file or disk   scselect Switch between network locations   scutil Manage system configuration parameters   sdiff Merge two files interactively   security Administer Keychains, keys, certificates and the Security framework   sed Stream Editor   select Generate a list of items •   seq Print numeric sequences   serverinfo Server information   set Set a shell variable = value •   setfile Set attributes of HFS+ files   setopt Set the options for the shell (Zsh only) ▫   sharing Create share points for afp, ftp and smb services   shasum Print or Check SHA Checksums   shift Shift positional parameters •   shopt Set shell options •   shortcuts Manage macOS shortcuts   shutdown Shutdown or restart macOS   sips Scriptable image processing system   sleep Delay for a specified time   sfltool Test and debug SharedFileLists & Login items   sntp Simple Network Time Protocol client program   softwareupdate System software update tool   sort Sort text files   source Execute commands from a file •   spctl Security assessment policy/Gatekeeper   split Split a file into fixed-size pieces   sqlite3 SQL database (download history)   srm Securely remove files or directories   stat Display the status of a file   stop Stop a job or process   su Substitute user identity   sudo Execute a command as another user   sum Print a checksum for a file   suspend Suspend execution of this shell •   sw_vers Print macOS Operating System version   sysctl Get or set kernel state   system_profiler Report system configuration   systemsetup Computer and display system settings T       tabs Set terminal tabs   tab2space Expand tabs and ensure consistent cr/lf line endings   tail Output the last part of files   tar Tape ARchiver   taskpolicy

Control scheduling of processes

  tccutil Manage the privacy database   tcpdump Dump traffic on a network   tee Redirect output to multiple files   test Condition evaluation •   textutil Manipulate text files in various formats (Doc,html,rtf)   time Measure Program Resource Use   times Print shell & shell process times •   tmutil Time Machine utility   top Display process information   touch Change file timestamps   tput Set terminal-dependent capabilities, colour, position   tr Translate, squeeze, and/or delete characters   trap Execute a command when the shell receives a signal •   traceroute Trace Route to Host   traceroute6 Trace IPv6 Route to Host   trash Move files and directories to the trash   trimforce Enable TRIM commands on third-party drives   true Do nothing, successfully   tty Print filename of terminal on stdin   type Describe a command •   typeset Set or display attributes and values for shell parameters ▫ U       ufs.util Mount/unmount UFS file system   ulimit limit the use of system-wide resources •   umask Users file creation mask   umount Unmount a device   unalias Remove an alias •   uname Print the Darwin OS Kernel version / release / machine name   unexpand Convert spaces to tabs   uniq Uniquify files   units Convert units from one scale to another   unset Remove variable or function names •   until Loop command •   uptime Show how long system has been running   users Print login names of users currently logged in   until Execute commands (until error)   uuencode Encode a binary file   uudecode Decode a file created by uuencode   uuidgen Generate a Unique ID (UUID/GUID)   uucp Unix to Unix copy V       vi Text Editor   vifs Safely edit fstab W       w Show who is logged on and what they are doing   wait Wait for a process to complete •   wait4path Wait for given path to show up in the namespace   wall Write a message to users   wc Print byte, word, and line counts   wdutil Wireless Diagnostics command line utility   whatis Search the whatis database for complete words   whence Locate a program file in the user’s path (zsh)   whereis Locate a program   which Locate a program file in the user’s path   while Loop command •   who Print all usernames currently logged on   whoami Print the current user id and name ('id -un')   write Send a message to another user X       xargs Execute utility - passing arguments   xattr Display and manipulate extended attributes   xcode-select Install the command line developer tools   xcrun Run or locate development tools and properties   xxd Make a hexdump or do the reverse Y       yes Print a string until interrupted   zip Package and compress (archive) files   !! Run the last command again   # Comment / Remark

Commands marked • are bash built-in commands.
Commands marked ▫ are Zsh built-in commands.

In macOS Catalina the default shell was changed to Zsh and in time this page will be updated to include the Zsh variants. The shells supplied by Apple are often years out of date, so many people prefer to install the latest bash shell using homebrew.

“Mac OS X is a rock-solid system that’s beautifully designed. I much prefer it to Linux” ~ Bill Joy