Terminal Command For Mac Os

Posted on  by 

Make things happen quickly without touching the mouse

  • Text wrapping
  • Default editor
  • Foreground processes and background jobs
  • Folders accessed by developers
  • Terminal File Listing Home Folder
  • Create Terminal Aliases
  • Root user for sudo commands
  • Create Windows-like shortcuts with parameters using text editor

This tutorial describes how to make use of the macOS Terminal to make your life easier and less frustrating.

What Apple calls the Terminal is what Linux people call the shell console (more specifically, the Bash shell). It’s also called a command-line terminal, abbreviated as CLI.

Basic Mac commands in Terminal. Type cd /Documents then and press Return to navigate to your Home folder. Type ls then Return (you type Return after every command). Ping is probably one of the more useful Terminal commands that an everyday Mac user might actually use. This command lets you check the response of a domain or IP address, such as “www.google.com” and see how quickly it takes for the server to respond. To perform a Ping command, you’ll enter the following in Terminal.

Information here is often used in interview questions.

Open Terminal (several ways)

On the Mac, the Terminal app is kinda buried, probably perhaps because those who use a MacOS laptop just for social media probably won’t need a Terminal.

But if you’re a developer, it’s hard to get away from using a CLI.

There are different ways to open a Terminal command line.

My preferrence is a way that doesn’t require reaching for a mouse and using the least number of keystrokes:

  1. Press command+space keys (at the same time) to bring up Apple’s Spotlight universial search, then
  2. Type “termin” so “Terminal.app” appears.
  3. Press the space bar to select it.

Alternately, if you prefer moving your mouse:

  1. Click the Finder icon on the app bar.
  2. Click Applications on the left pane.
  3. Click Utilities.
  4. Click Terminal.

PROTIP: If you are at the Finder program (since Yosemite) you can open a Terminal to a folder listed within Finder by pointing your mouse on it, then tapping with two fingers on the touchpad/mousepad.To enable that:

  1. Click the Apple icon, System Preferences....
  2. Press K and select Keyboard.
  3. Click Shortcuts, Services.
  4. Scroll to the Files and Folders section.
  5. Check on New Terminal at Folder.
  6. Close the dialog by clicking the red dot at the upper left corner.

Bash shell invocations

I put in an echo in the various files that macOS executes upon user login, when a new terminal is opened, and when a bash shell is invoked:

When macOS logs in a user, it executes file /etc/profile. That file’s code:

echo ${BASH-no} resolves to /usr/local/bin/bash.

The /etc/bashrc file contains:

The above defines the $PS1 variable which sets the Terminal’s prompt to the left of the cursor.

NOTE: On Ubuntu, instead of /etc/bashrc, the file is /etc/bash.bashrc.

RedHat also executes /etc/profile.d if the shell invoked is an “Interactive Shell” (aka Login Shell) where a user can interact with the shell, i.e. your Terminal bash prompt.

Thus, whatever is specified in /etc/profile is NOT invoked for “non-interactive” shells invoked when a user cannot manually interact with it, i.e. a Bash script execution.

PROTIP: One can change those files, but since operating system version upgrades can replace them without notice, it’s better to create a file that is not supplied by the vendor, and within each user’s $HOME folder: ~/.bash_profile

In other words, file /etc/profile is the system wide version of ~/.bash_profile for all users.

Examples of custom settings include:

export HISTSIZE=1000 # sets the size of .bash_history lines of command history (500 by default)

User Mask for permissions

Wikipedia says umask controls how file permissions are set for newly created files. Please read it for the whole story on this.

  1. To identify the User Mask for permissions:

    Since the default is “0022”:-S shows the symbolic equivalent to “0022” for u=user, g=group, o=others :

    r is for readable, x is for eXecutable by the user.

  2. To set the User Mask for permissions:

    UMASK 077

Within Text Editors/IDEs

Many prefer the terminals built into VS Code and other editors/IDEs.

Text wrapping

This page contains notes for system administrators and developers,who need to control Macs below the UI level, which requiretyping commands into a command-line terminal screen.

  1. To avoid text wrapping, cursor on the right edge to expand the screen width.

Hyper terminal app

Get the .dmg installer from the websitehttps://hyper.is. It’s used by tutorials author Wes Bos.

Unlike Apple’s Terminal, which is closed-source, Hyper is an open-source and extensible terminal emulator. It is available on MacOS, Windows, and Linux because it’s built using Electron (the same platform that powers Atom, Slack, and Brave). So it can be slow.

To customize Hyper, add the name of many packages to its config file ~/.hyper.js. Build an extension based on hyper.is/#extensions-api.

iTerm2 for split pane

Many prefer to install and use iTerm2 instead of the built-in Terminal program.Install iTerm2 using Homebrew:

Terminal does not support but iTerm2 does support dividing the CLI into several rectangular “panes”, each of which is a different terminal session:

  • split window vertically with Command+D
  • split window horizontally with Command+Shift+D
  • Navigate among panes with command-opt-arrow or cmd+[ and cmd+]
  • Temporarily toggle maximize the current pane (hiding all others) with command-shift-enter
  • Exit out a pane by typing exit in that pane

Pressing the shortcut again restores the hidden panes.

On Linux, there is the screen command.

See Iterm2 Cheat Sheet of iTerm2 keyboard shortcuts. https://github.com/nobitagit/iterm-cheat-sheet/blob/master/README.md

Alphabetical Commands list

A list of all commands native to macOS is listed alphabetically at https://ss64.com/osx.

Exit

To exit from the Terminal shell:

exit

Get back in for the remainder of this tutorial.

Shutdown

CAUTION: To kill all apps and shutdown a Mac right away (with no warning and no dialog):

sudo shutdown -h now

Text Command Line Bash Shortcuts

These come from the bash terminal on Linux machines here: Press control with your pinkie, then …

  • control + C = Close processing
  • control + L = cLear screen
  • control + A = Go to Beginning of line (as in A to Z)
  • control + E = Go to End of line (hit E using longest finger)
  • control + F = Forward cursor
  • control + B = Backward
  • control + H = Backspace left of cursor
  • control + D = Delete right of cursor
  • control + K = Kill line from under the cursor to the end of the line.
  • control + U = 'U get out of here' - Clear entire line
  • control + P = Previous line
  • control + N = Next line
  • control + Y = Retrieve line
  • control + ` = cycle through session windows
  • control + left = previous session
  • control + right = previous session

Environment Variables

A big reason to use a command-line terminal is to set environment variables.

Like on PCs, the PATH system environment variable storeswhere the operating system should look to find a particular program to execute.

  1. To see what is already defined:

    The listing such as this, which declares the “XPC_FLAGS” system variable:

    declare -x XPC_FLAGS=”0x0”

    This talks about setting launchd.conf and rebooting.This applies to all users.

  2. To see what is defined:

    PROTIP: $PATH must be upper case.

    The response I’m getting includes:

    /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

    Notice colon (:) separator used in Mac and Linux vs. semicolons used in Windows PATH.

Mac

Default editor

  1. The command to invoke the default editor is defined by a variable:

    By default, it’s TextMate:

    If you want to change it to nano or other editor, see My tutorial on text editors.

  2. On Terminal session, copy what has been typed and open the default text editor so you can edit the command:

    Alternately, (which also works in Linux) while holding down the control key, press X and E together:

    control + X + E

  3. Make changes, then copy all, switch or exit to the Terminal, then paste.

    Switch among programs

  4. To switch among programs already running in macOS, hold down the command key while pressing tab multiple times until the program you want is highlighted (with its name) in the pop-up list. This is equivalent to the Windows control+Esc key combo.

Command history

  1. List previous command history:

    This is the same as:

    PROTIP: History does not display commands entered with a leading space.

  2. Cursor up and press Enter to re-execute.

  3. Press control + R to begins a “reverse incremental search” through your command history,then type, it retrieves the most recent command that contains all the text you enter. Much better than something like:

  4. Press control + S to reverse the mode.

  5. Clear history:

    The clear command does not clear history.

    See history at sstr.com

  6. Clear the terminal history:

    clear

Foreground processes and background jobs

  1. List the first process (with Parent process ID of 0) launched (into user space) at boot by the system kernel:

    f adds columns for status of the command (CMD) to invoke the process:

    By contrast, on Linux system, the first CMD is /lib/systemd/systemd.

  2. To list all processes, don’t specify 1

    PID given process name

  3. To list the process ID given a process name such as “firefox”:

    This can be generalized in a shell program containing:

    Alternately, Linux has a command which returns the PID associated with a process name. But it’s not avaiable on macOS, so:

  4. install it using Homebrew:

  5. To emulate a long-running process in the foreground:

    No additional commands can be accepted.

  6. To kill the current process, press control + C.

    background jobs

  7. Run a program in the background with the &:

  8. List jobs (processes) running in the background:

    Suspend control+Z

  9. Do it again:

  10. To suspend the process, press control + Z. The response is like:

    [1] shows the PID.

    Internally, this sends a “20) SIGTSTP” signal to the process.

  11. To have the process continue (internally sending a “18) SIGCONT”:

  12. List processes

  13. Copy the PID (Process Identifier) number for use in the kill command, such as:

  14. There are many ways to kill a process:

  15. To kill a specific process, ee need to specify its PID (Process Identifier):

    Some applications are written to receive a sigterm so that it can take steps to gracefully cleanup and exit.

    The key ones, in order of aggressiveness:

    kill 289 # sends sigterm
    kill -15 289 # sends sigterm
    kill -2 289 # sends sigint
    kill -1 289 # sends sighup
    kill -9 289 # sends sigkill signal to the kernel without notifying the app, a “dirty shutdown” used when the app is misbehaving.

    List open files

  16. To list process id’s and port (such as 8080), use the “list open files” command:

    PROTIP: Use grep to filter because the response is usually too many lines.

    (You’ll need to provide your password).

    The right-most column heading 'NAME' shows the port(either TCP or UDP).

Folders accessed by developers

  1. In Finder, select from the left panel the first item under the Devices list.

  2. Click on Macintosh HD.

    • Applications hold apps installed.
    • Incompatible Software hold apps which cannot be installed,such as Amazon Kindle, which competes with Apple's iBooks.This occured during upgrade to Yosemite.
    • Library/Library holds Apple internal apps.
    • System hold apps installed.
    • Users hold data for each user defined,as well as a Shared folder accessible by all users.


  3. Click on your username (wilsonmar in my case).

    This action is the same as clicking on the last default item under theFavorites list.

    Many WordPress developers prefer to add a folder named Siteswhich holds the wordpress folder expanded from download.

    vs. /etc in Linux

    VIDEO:On both Mac and Linux, the “et-see” folder contains system and program configuration files,for both default system and programs you install (such as “teamviewer”, etc.)

    /bin contains system

    /sbin are for system administrators such as ping, fdisk, mount, umount, etc.

Terminal File Listing Home Folder

By default, the Terminal shows the hard drive and lowest level file folder name, in white letters over black.

  1. To show the present (current) working directory (folder):

    The response for me is:

    /Users/wilsonmar

    You will of course have a different machine user name than wilsonmar.

  2. Note the pwd command is built internally to the Bash shell:

    The response:

    pwd is a shell builtin

  3. To get back to the home folder:

    Alternately:

    Alternately, use the $OLDPWD environment variable that MacOS automatically maintains toremember the previous working directory so that you can switch back to it:

    List files and folders

  4. List all file names (without any metadata):

    Folders available by default include Documents, Downloads, Pictures, Desktop, Music, Movies.

  5. Note the ls command is an external command added to the Bash shell:

    The response lists where ls is defined:

    ls is hashed (/bin/ls)

  6. Dive into a folder type:

  7. Press Enter.

    Nothing happens because upper case letters are important.

  8. Press delete to remove the mu and type:

  9. Press Enter for the Music folder.

  10. Go back up a level:

  11. Create a Projects folder to hold projects downloaded from Github:

    -p specifies creating the parent folder if it doesn’t exist.

    This only needs to be done once.

    List files and folders

  12. List all files with their permission settings:

    Notice that no hidden files are listed.

  13. List all hidden files with permission settings,piping the listing to more instead of having results flying by:

    A colon appears at the bottom if there is more to show.

  14. Cancel the listing, press control + C.

    Notice the .bashrc on the first page, something like:

    (It’s for the Bash Shell.)

  15. If a file is not listed, create it with:

  16. To make it rw r r:

  17. List only hidden files in the current folder:

Show Hidden Invisible Files in Finder

By default, the Mac’s Finder does not show hidden files.

  1. Close all Finder folders.

  2. Enter this in Terminal before typing Return:

    This causes all Finder windows to be reset.

    To make invisible files visible again:

    A description of each keyword:

    defaults - OSX’s command to change defaults, apple’s low-level preference system.

    write - tells defaults you want to change a preference, or write it

    com.apple.finder - defaults that the application’s preferences you want to change is Finder, specified by the application’s bundle identifier.

    AppleShowAllFiles - specifies which preference you want to change within the application.

    TRUE or FALSE - the value you want to set the preference to. In this case, it is a boolean, so the values must be TRUE or FALSE. I think you might be able to use YES or NO, but I’m not sure.

    && - a terminal operator to run whatever’s after this if the command to its left is successful.

    killall - kills processes or closes applications.

    Finder - specifies the process or application to close.

For more on this, see this.

Create Terminal Aliases

Wireless up and down

Most developers leave files un-hidden.

  1. To set wireless (device en0) up or down without clicking on the icon at the top:

    ifconfig en0 down

    This command requires sudo permissions.

  2. Set alias command to just type showFiles andhideFiles to show and hide Mac OS X’s hidden files, considerthis article to create such terminal aliasesin the ~/.bash_profile script.

tree alias or brew install

OSX does not come with the tree command that many other Linux distributions provide. So add it using:

If you don’t want to install a program, add an alias for a tree command by adding this in the ~/.bash_profile script:

Alternately, add it by installing a command using brew:

Active Terminal sessions need to be closed so new Terminal | Shell | New Window | Shell has this activated.

See list of parameters:

List only 2 levels deep with human-readable file size kilobytes and sort by last modified date:

Cursor to Screen Hot Corners

By default, if you move the mouse to one of the corners of the screen,stuff happens. It can be annoying.

  1. Click the Apple menu at the upper left corner.
  2. Select System Preferences.
  3. Select Desktop & Screen Saver.
  4. Select the “Screen Saver” tab.
  5. Click “Hot Corners” at the lower-right corner.
  6. Select actions for each of the corners.

    PROTIP: Disable each by selecting the dash (last choice) so they don’t show up when you’re just trying to navigate to something near the edge.

  7. Exit out the Preferences diaglog.
  8. Move your cursor to the lower-left corner to bring it back to life.
  9. Press Esc to bring the screen back.

    PROTIP: NOT having a quick way to “Put display to sleep” is considered a security vulnerability by CIS. The lower-left corner is less popular location on Mac than Windows.

Hosts file

Mac, Windows, and Linux systems have a hosts file that locally does the work of the public DNS– translating host names (typed on browser address field) to IP address numbers.

  1. Show text file contents to the Terminal console:

    The default contents:

    PROTIP: fe80:: is a block of IPV6 addresses reserved for link-local addresses used for packets sent only to directly connected devices (not routed). The network discovery protocol (NDP), which replaces ARP and DHCP in IPv4, is the biggest user of link-local addresses (NDP sorta .

    fe80::1 is like 127.0.0.1 for IPV4, butactually IP address 169.254.. in IPV4, an address not often used.

    Each IPV6 interface has a different link-local address starting with fe80:: and (typically) ending with a modified version the interface’s MAC address (EUI-64 format) to ensure a unique address on a segment.

    Programs such as OpenVPN add to the bottom of the file:

    BLAH: The Linux tac command to list backward is not in Mac:

  2. Show a file in -reverse (bottom-up):

    Change n2 to a different number of lines to show.

    PROTIP: This command is useful to see the lastest entries appended to the end of a large log file.

  3. Expose spaces at end of lines by showing at end of every line $ end-of-line characters that are otherwise not shown. For example, in a file on every macOS:

  4. Edit the hosts file on a Mac using the Atom text editor:

Terminal Ping Host

Find the IP address of a website host name:

SSH tunnel

To access a remote server through a port that is not open to the public:

  1. VIDEO: Bind local port 3337 to remote host 127.0.0.1 port 6379 using user root in emkc.org

    BTW 6379 is the default port for a Redis instance.

DNS Configuration with NameBench

Analysis at one time showed this ranking by speed:

  1. UltraDNS at 156.154.70.1
  2. Google at 8.8.4.4, 8.8.8.8
  3. OpenDNS at 208.67.222.222, 208.67.220.220, 208.67.222.220

Google Namebench tries the speed of various DNS servers from YOUR machine (which takes some time) and pops up in your browser this:

  1. If you don't see the Apple icon at the top of the screen,move the cursor to the very top of the screen for a few seconds.
  2. Click on the Apple icon at the upper left corner.
  3. Select System Preferences.
  4. Click Network.
  5. Click Advanced.
  6. Click DNS.
  7. Click [+], copy, and paste

An example:

  1. 205.171.3.65
  2. 216.146.35.35
  3. 192.168.0.1

Clear DNS Cache

  1. Flush the DNS cache (since OSX 10.9):

    sudo dscacheutil -flushcache

    dscacheutil is the Directory Service cache utility used to Gather information, statistics, initiate queries, flush the cache:

    BTW, the equivalent for Ubuntu is
    sudo service network-manager restartwhile other Linux flavors uses
    sudo /etc/init.d/nscd restart.
    Windows uses
    ipconfig /flushdns.

Different commands are needed for different versions of OS.OSX 10.10 added requirement for sudo when using the built-in discoveryutil:

sudo discoveryutil udnsflushcaches

Bash Profile Configuration

The profile file is run during boot-upto configure the terminal to define file path, shims, and autocompletion handlers.

This is the single biggest frustration with people using Linux on Mac.

One of the earliest articles on bash hereshows shell variables, environment variables, and aliases.

Each operating system has its own file name for its profile:

  • With Ubuntu: Modify ~/.profile instead of ~/.bash_profile.
  • With Zsh: Modify ~/.zshrc file instead of ~/.bash_profile.
  • With Fish: Modify `~/.conf/fish/config.sh` to append.

PROTIP: If there is both a .bash_profile and a .profile file, boot-up only executes the first one it finds.

  1. On my Yosemite Mac, open a terminal and:

  2. View the file using the vi editor that comes with OSX:

According to the bash man page, .bash_profile is executed during login before the command prompt,while .bashrc is executed for interactive non-login shells such aswhen you start a new bash instance by typing /bin/bash in a terminal.

Here’s what my profile file begins:

  1. Exit vi by typing :q

  2. Some installers request that adding a $PATH using a command such as:

  3. To execute profile with the changes:

    Alternately, to install GHC copy and paste into ~/.bash_profile:

https://github.com/gcuisinier/jenv/blob/master/README.md

  • To run a Bash script while avoiding the confirmation prompt:

    set -- -f; source bootstrap.sh

Operating System Kernel

I can use Linux commands in my version of the operating system:

uname -a (a for all) or uname -rvm

returns:

14.3.0 Darwin Kernel Version 14.3.0: Mon Mar 23 11:59:05 PDT 2015; root:xnu-2782.20.48~5/RELEASE_X86_64 x86_64

which is a combination of:

uname -r for release number,
uname -v for kernel version,
uname -m for model:

x86_64 for Intel or AMD 64-bit or
i*86 for 32-bit.

For more information about Darwin operating systemdeveloped at Apple, see:

  • http://www.wikiwand.com/en/XNU and
  • https://www.wikiwand.com/en/Comparison_of_operating_system_kernels

NOTE: lsb_release -awhich works on Debian, RHEL 6.6, and Ubuntu is not recognized on Gentoo nor CentOS 6,which has no folder /etc/lsb-release.

See Distriwatch.com,which describes releases of different Linux distributions.

Setup Your Mac Like a Pro

Paul Irish is one of top pros among developers, and now a Google Evangelist.He put his Mac configuration settings ongithub.com/paulirish/dotfiles. But he recommends cloning github.com/mathiasbynens/dotfiles/.

On the Git page notice that he has established an industry convention of usingProjects folder we defined earlier.

On the Git page I clicked on Clone in Desktop.

The library is called dotfiles because that’s what hidden files are called,and most configuration files are hidden.

PS1 terminal prompt setting

Paul Irish offers his setup-a-new-machine.sh athttps://github.com/paulirish/dotfilesZShell (included with Mac and can be set as the default in Terminal)* oh-my-zsh as a ZShell framework* The oh-my-zsh Git plugin* And the oh-my-zsh theme called jnrowe</p>

By default, if you have a long file name, it would leave little room to type in commands before it wraps to the next line.

To redefine what appears in the prompt,edit this file using the vi editor that comes with each Mac:vi .bashrc Copy this and paste to the bottom of the .bashrc file:

The command above uses global parameters $USER and $PWD,plus colors from this list.

Root user for sudo commands

If you try a command that responds about “permissions denied”, you need to execute as a root user.

The root user has the ability to relocate or remove required system files and to introduce new files in locations that are protected from other users. A root user has the ability to access other users’ files.

Any user with an administrator account can become the root user or reset the root password.

Under a *nix system like MacOS you must have “root” (administrative) privileges to start IP-services using ports smaller than 1024.

After MacOS install, the root or superuser account is not enabled. While it is possible to enable the root account, once enabled, if forgetten, you’ll have to reboot from the installer drive (a hassle).

  1. The easiest way it to have the last command (in history) automatically retrieved so you don’t have to retype it to
    execute again under root:

    sudo !!

    It is safer and easier to use the sudo command to gain temporary root access to the system rather than logging out and logging in using root credentials.

  2. Alternately, this command only reads the $SHELL variable and executes the content:

    sudo -s

    You would be prompted for a password.

    • To determine whether you’re in sudo:

    whoami

    The response “root” says you’re still in sudo rather than your user name.

    • To demote out of root:

    exit

PROTIP: There are several ways to invoke sudo*

Terminal
  1. This command is my preferred way to get into root for awhile because it keeps the environment variables intact:

    sudo /bin/bash

    The command above uses a non-login shell, and reads just the .bashrc of the calling user. Not all dot-files are executed.

  2. If you want environment variables specific to root and be in the root home directory (rather than your user’s $HOME directory), this command executes /etc/profile, .profile, and .bashrc which defines them:

    sudo su -s

  3. If you switch between Zsh and Bash, this command runs the shell specified by the password database entry of the target user as a login shell:

    sudo -i

  4. If you switch between Zsh and Bash, this command runs the shell specified by the password database entry of the target user as the login shell, then executes login-specific resource files .profile, .bashrc (or .login):

    sudo -s

PATH

NOTE: The folders that bash looks into are in bin:

Terminal Command For Mac Os 10.10

/bin/echo $PATH

On a fresh Yosemite, that would contain:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Each additional app adds to the front of the list:

/Library/Frameworks/Python.framework/Versions/3.4/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Separating the folders between colon separator:

  • /Library/Frameworks/Python.framework/Versions/3.4/bin
  • /opt/local/bin
  • /opt/local/sbin
  • /Applications/MAMP/bin/php5/bin
  • /Applications/MAMP/Library/bin
  • /Applications/Adobe AIR SDK/bin
  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin

New folders are added to the front of the PATH using a command such as:

export PATH=&LT;new folders>:$PATH

Depending on how you’re setup, file ~/.profile or ~/.bash_profile or ~/.bash_login contains the path echo’d.

Or your PATH may be set in /etc/profile for all users

Create Windows-like shortcuts with parameters using text editor

http://www.jesseweb.com/coding/automator/create-windows-like-shortcuts-with-parameters/

Mac OSX doesn’t allow you to create shortcuts like Windows.OSX alias don’t allow parameters (ex. create a Screen Sharing shortcut that connects to a specific computer).

Jessie suggests this to create a Windows like shortcut with parameters in the Comments field.

Another alternativeis to use a text editor to create URL shortcut fileslike the ones Windows Internet Explorer stores its bookmarks. Apple Safari recognizes them when clicked within Finder.So they are cross-platform.

  1. Copy the URL to the clipboard by pressing Command+C.
  2. From within a text editor, open a new text file.
  3. Type at the top of the file: [InternetShortcut]
    URL=
  4. Paste from clipboard by pressing Command+V
  5. Press enter/return to add a blank line under the URL line.
  6. Save the file with a .url file extension.
  7. From within Finder, click on the file to see it display by Safari.

Mount .dmg files using hdiutil tool

  1. Mount a .dmg (Disk Image) file (substituting for /path/to/diskimage):

    The response is like:

    Note the disk from the message above to unmount (detatch):

    The same utility can mount .iso images:

Command

IPv6 compatibility with Curl command line apps

curl http://localhost:3000

Previously, when invoked on Mac OS 10.10 (Yosemite), you needed to add a parameter to make the request use IPv4:

curl http://localhost:3000 –ipv4

Otherwise, even if the URL loads fine in a browser, you will see an error message such as:

curl: (7) Failed to connect to localhost port 3000: Connection refused

This occurs because curl, under Yosemite, uses IPv6 by default but some apps, such as LoopBack.io, by default uses IP v4.

See if you see IP v6 entries in your hosts file (::1 localhost, fe80::1%lo0 localhost). If they are there it is likely that curl is making requests using IP v6.

You can make your LoopBack app use IPv6 by specifying an IPv6 address as shown below:

Largest files taking up disk space

Linux has a ncdu (NCurses Disk Usage) utility to list files in order of how much space they occupied.

Terminal Command To Install Mac Os

  1. It’s not in macOS by default, so:

    See https://mac.softpedia.com/get/Utilities/ncdu.shtml

  2. Now list files within a folder by space used:

    The command takes up the whole screen (like top), so press control+C to exit.

  3. To get the directory utilitization size of the current directory:

    The response is like:

    The dot means the current folder.

  4. You can specify a sub-folder named, for example, “code”:

Empty Trash

When files or folders are moved to Trash, they are sent to folder ~/.Trash.

  • The ~ means it is at your user HOME folder.
  • The . means it is a hidden folder.
  1. List the files.

  2. Count the number files in the folder by piping to the “word count” utility:

    (The -al includes hidden files and folders)

    (The find . includes files nested within folders as well)

    The above command is aliased as cf in my ~/.bash_profile.

To recover disk space taken up by files which have been moved to Trash, there are several ways:

  1. Switch to the Finder and click the Finder menu to expose the menu:

  2. You can click on “Empty Trash” or press the Keyboard sequence shift + command + delete.

  3. If you rather not use a mouse within Finder, switch to Terminal and type this AppleScript command (which will take a while to run if there are a lot of files):

    NOTE: How to put the above command is aliased as empty in my ~/.bash_profile.

    Schedule Timed Jobs on macOS with launchd within a plist (XML) file.

Ulimit Too Many Files

By default, operating systems limit how many file descriptors to allow.Each operating system version has a different approach.

Linux operating systems have this command:

ulimit -a

On my Sierra the response was:

  1. Check how many file descriptors you have:

    launchctl limit maxfiles

    On Sierra the response was:

    The first number is the “soft” number, the second one is the “hard” number.

    After fixing, the numbers I now see are:

  2. Such numbers were set with a command such as:

    sudo launchctl limit maxfiles 10240 10240

    The maximum setting is 12288?

    NOTE: To change maxfiles on Sierra, define a plist. TODO: verify

    Due to security, OSX Lion removed the “unlimited” option and now requires a number to be specified.

PROTIP: launchctl is a rough equivalent to the systemctl command used in Linux systems.launchctl interfaces with launchd to load, unload daemons/agents and generally control launchd.

Disable System Integrity Protection

Some programs make calls to the operating system which OSX began to see as a threat, beginning with El Capitan.

Apple says System Integrity Protection blocks code injection (and many other things).

But what about useful programs (such as XtraFinder)which works by injecting its code into Finder and other application processes?

  • For example, OpenVPN issues a JSONDialog Error “DynamicClientBase: JSONDialog: Error running jsondialog”.

To get around this, you need to partially disable System Integrity Protection in OS X El Capitan.See Apple’s article on how:

  1. Run a full backup to an external USB drive.
  2. Shut down all apps, then the operating system (from the Apple icon).
  3. Reboot the Mac.

    This is needed because System Integrity Protection settings are stored in NVRAM on each individual Mac.So it can only be modified from the recovery environment running in NVRAM.

  4. Boot OS X into Recovery Mode: hold down the command + R keys simultaneously after you hear the startup chime.
  5. When the OS X Utilities screen appears, pull down the Utilities menu at the top of the screen.

  6. Choose Terminal.
  7. Type the following command into the terminal before hitting the return key.

  8. For XtraFinder:

  9. To revert SIP to original state:

Skill Certification

Video course Mac OS X Support: Installation and Configureis the first of courses on Plurasight towardApple Certified Support Professional (ACSP)

Dotfile Settings from others

  • https://github.com/afranken/dotfiles
  • https://github.com/mathiasbynens/dotfiles

Daemons and Agents

  • https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html

Resources:

[2] VIDEO

[3] Advanced Bash-Scripting Guide by Mendel Cooper 2012

[4] CommandLineFu.com

https://zwischenzugs.com/2018/01/06/ten-things-i-wish-id-known-about-bash/https://leanpub.com/learnbashthehardway

https://blog.flowblok.id.au/2013-02/shell-startup-scripts.htmlhttps://bitbucket.org/flowblok/shell-startup/src/default/

https://linuxaria.com/howto/7-hidden-features-of-bash

More on OSX

This is one of a series on Mac OSX:

Please enable JavaScript to view the comments powered by Disqus.

This is a complete A- Z index of all Mac commands and the terminal events associated with those commands. We have compiled this list by using official sources and have explained more clearly and elaborately about each of them. We have also added two additional columns specifying whether or not the command is an inbuilt system one. The final column also displays the Mac version support for each of these commands.

IMPORTANT: If you are not an advanced user and have no knowledge on how to use the terminal commands, please do not try to experiment. These are meant for medium and advanced users ONLY.

Mac Terminal Commands – A to Z

Command

InBuilt

Command Action and Event

All

alias

Yes

Creation of a Alias for current User

Yes

alloc

No

Free Memory is Listed

Yes

apropos

No

String search in What is database

NA

awk

No

Scan and overwrite Text inside file and files

NA

basename

No

Change full path name to path name

NA

bash

No

Bourne-Again Shell

NA

bg

Yes

Send to background

Yes

bind

Yes

Read line Key is displayed

Yes

bless

No

Assign Boot and start-up options

NA

break

Yes

Exit a redundant loop

Yes

builtin

Yes

Execute a built in shell command

Yes

bzip2

No

Compress and decompress a file

Yes

cal

No

The calendar is displayed

Yes

caller

Yes

Subroutine call context is returned

Yes

case

Yes

Conditional statement

Yes

cat

No

Append and Display file content

Yes

cd

Yes

Change current Directory

Yes

chflags

No

Change flags

NA

chgrp

No

Modify Group Ownership

NA

chmod

No

Change group permissions

NA

chown

No

Modify File owner and permissions

NA

chroot

No

Execute a command using another root directory

NA

cksum

No

Print and display checksum

NA

clear

No

Clear current terminal screen contents

NA

cmp

No

Simply compares two files

NA

comm

No

Line by line comparison of two sorted lines

Yes

command

Yes

Run or Execute a command

Yes

complete

Yes

Edit or modify completion of a command

Yes

continue

Yes

Resume a loop

Yes

cp

No

Copy Command

NA

cron

No

Run or Execute a prescheduled command

NA

crontab

No

Schedule command for execution after an assigned time

NA

csplit

No

Split a file into context-determined pieces

NA

curl

No

Upload or download data from a server

NA

cut

No

Cut a file into parts

Yes

date

No

Display or modify date time

Yes

dc

No

Display Desk Calculator

NA

dd

No

(Copy a file) Data Dump

NA

declare

Yes

Declare and assign attributes for a variable

Yes

defaults

No

Set visual preference options for hidden files

NA

df

No

Show unused disk space

Yes

diff

No

Show difference between two files

Yes

diff3

No

Show difference between three files

NA

dig

No

Command to lookup DNS details

NA

dirname

No

Convert full path name to path

NA

dirs

Yes

Display cached directories

Yes

diskutil

No

Disk utility command

Yes

disown

Yes

Remove a job from current session

Yes

ditto

No

Same as copy command

Yes

dot_clean

No

Remove dots and underscores from a context files

NA

drutil

No

Disk drive utility command

NA

dscacheutil

No

Flush DNS or cache

NA

dscl

No

Command-line utility for directory service

Yes

dseditgroup

No

Manage groups and users

Yes

dsenableroor

No

Command to enable root access for a terminal

NA

dsmemberutil

No

Show groups and users rights

NA

du

No

File space usage estimation

NA

echo

Yes

Display an entered message on the screen

Yes

ed

No

A text editor program

Yes

enable

Yes

Enable or disable system shell commands

Yes

env

No

Display or Modify environment variables

Yes

eval

Yes

Evaluate one or more commands or arguments

Yes

exec

Yes

Execute command

Yes

exit

Yes

Exit shell

Yes

expand

No

Expand a Tab

NA

expect

No

Pre assigned dialogue exchange for interactive programs

NA

export

Yes

Assign environment variable

Yes

expr

No

Evaluate an expression or set of expressions

Yes

fc

No

Fix command

NA

fdisk

No

Format disk command

NA

fg

Yes

Bring a job to front

Yes

file

No

Analyse file type

Yes

find

No

File search matching requested criteria

NA

fmt

No

Reformat Text in a paragraph

NA

fold

No

Wrap text to automatically adjust with working area

NA

for

Yes

Simple Loop command

Yes

fs_usage

No

File system display usage

Yes

fsactl

No

Enable or disable ACL support for File System

NA

fsck

No

Check and repair file systems

NA

ftp

No

FTP manager

NA

getfileinfo

No

Get file attributes

Yes

getopts

Yes

Parse the positional parameters

Yes

goto

No

Jump to an assigned point and then continue program execution

NA

grep

No

Search file with a certain pattern

NA

groups

No

Display a user’s group name

NA

gzip

No

Compress and decompress a file

Yes

halt

No

Shutdown and Restart the system

NA

hash

Yes

Refresh command cache and path names

Yes

hdiutil

No

Hard drive interface Utility Tool

Yes

head

No

Print first line from a text file

Yes

history

Yes

History Command

Yes

hostname

No

Display or modify System name

NA

iconv

No

Convert character set of file(s)

NA

id

No

Display user and group IDs

Yes

if

Yes

Conditional Command statement

Yes

info

No

Display help information

NA

install

No

Copy and assign attributes of a file

Yes

ipconfig

No

Configure network attributes and assign values

NA

jobs

Yes

List all currently active jobs

Yes

join

No

Join command

NA

kextfind

No

List the kernel extension

NA

kickstart

No

Configure and set Apple Remote Desktop properties

NA

kill

No

Terminate a process directly

Yes

l

No

List file in original long format

NA

last

No

Indicate last login information of a users and additional info

NA

launchctl

No

Launch daemons or agents

NA

less

No

Display output on screen accommodating data per window

NA

let

Yes

Evaluate an expression or set of expressions

Yes

lipo

No

Convert binary format

Yes

ll

No

List file in original long format, also display hidden files

Yes

ln

No

Interlink files

NA

local

Yes

Assign local variable

Yes

locate

No

Find a file or files

Yes

login

No

log-in your system

NA

logname

No

Display current users login name

NA

logout

Yes

Exit login shell

Yes

lpr

No

Print file or files

Yes

lprm

No

Remove queued print jobs

Yes

lpstat

No

Printer info and current status

Yes

ls

No

List a file information

NA

lsof

No

List currently opened files

NA

lsregister

No

Reset Launch Service database

NA

man

No

Display Help manual

Yes

mdfind

No

Spotlight search command

Yes

mdutil

No

Spotlight search command utility

Yes

mkdir

No

Create new directory

Yes

mkfifo

No

Build FIFOs

Yes

more

No

Display output data one screen at one time

NA

mount

No

Mount a file system

NA

mv

No

Cut or rename directories or files

NA

nano

No

Bring up text editor

Yes

net

No

Configure network resources

NA

netstat

No

Display network information

NA

networksetup

No

Assign network attributes

Yes

nice

No

Set command priority

NA

nohup

No

Hang-up a command

NA

ntfs.util

No

NTFS utility command

Yes

onintr

No

Control shell action

NA

open

No

Open up a file or location

NA

osacomplie

No

Command to Compile an Apple script

NA

osasdript

No

Execute an AppleScript

NA

passwd

No

Modify user password directly

Yes

paste

No

Merge lines from two or more files

Yes

pbcopy

No

Copy the data to clipboard

NA

pbpaste

No

Paste the data from Clipboard

NA

ping

No

Check a network connection

NA

pkgutil

No

Display or change Installed packages info

NA

plutil

No

Property list command utility

Yes

pmset

No

Configure Power Management settings

Yes

popd

Yes

Restore previous value of current directory

Yes

pr

No

Modify Text files to print

Yes

printenv

No

Display all environment variables

Yes

printf

Yes

Print command

Yes

ps

No

Display Process status

Yes

pushd

No

Save and change current directory

NA

pwd

Yes

Print currently Working Directory

Yes

quota

No

Display disk limitation and usage

Yes

rcp

No

Copy files across machines/systems

Yes

read

Yes

Read first line from an output file

Yes

readonly

Yes

Assign read only attribute to a file/directory

Yes

reboot

Yes

Reboot a system

Yes

return

Yes

Exit Function

Yes

rev

No

Reverse file lines

NA

rm

No

Remove file(s)

NA

rmdir

No

Remove directory(ies)

Yes

rpm

No

Bring up Remote Package Manager tool

Yes

rsync

No

Remotely copy a file

NA

say

No

Text to speech conversion

NA

screen

No

Manage Multiplex terminal and run remote shells via ssh

NA

screencapture

No

Capture the screen image

Yes

sdiff

No

Merge or modify two files

Yes

security

No

Configure security options for a system

Yes

sed

No

Stream Editor Utility

NA

select

Yes

Display list of Items

Yes

set

Yes

Set shell variable

Yes

setfile

No

Set file attributes

NA

shift

Yes

Shift positional parameters

Yes

shopt

Yes

Configure shell options

Yes

shutdown

No

Shutdown/restart Mac OS X

NA

sleep

No

Sleep after an assigned time frame

Yes

softwareupdate

No

Software Update Command

Yes

sort

No

Sort the text files

Yes

source

Yes

Execute command from file

Yes

split

No

Split files into like sized pieces

NA

stop

No

Stop a process or currently running job

NA

su

No

Substitute a user identity

Yes

sudo

No

Execute command as some other user

Yes

sum

No

Print checksum value for a file

NA

suspend

Yes

Suspend shell execution

Yes

sw_vers

No

Print Mac Operating System version

NA

system_profiler

No

Report a system configuration

Yes

tail

No

Display the last lines from a file

NA

tar

No

Archiver Utility

Yes

tcpdump

No

Network Traffic dump

NA

tee

No

Redirect multiple file output

NA

test

Yes

Conditional evaluation

Yes

textutil

No

Modify Text file formats

NA

time

No

Calculate Program Resource Usage

Yes

times

Yes

Print shell along with shell process time

Yes

top

No

Display process related information

Yes

touch

No

Change the file timestamps info

Yes

tr

No

Modify Characters or delete them

NA

traceroute

No

Display Trace Route path to assigned host name

NA

trap

Yes

Execute command when shell receives signal

Yes

tty

No

Print terminal filename on stdin

NA

type

Yes

Describe command name and type

Yes

ufs.util

No

Mount or unmount a UFS file system

NA

ulimit

Yes

Limit system resources usage

Yes

unalias

Yes

Delete an alias

Yes

unamask

No

Mask User file creation

NA

uname

No

Print System Info

Yes

unexpand

No

Space to tab converter

Yes

uniq

No

Uniquify the files

Yes

units

No

Unit scale converter command

NA

unmount

No

Unmount a mounted device

NA

unset

Yes

Remove function or variable names

Yes

until

Yes

Loop command

Yes

uptime

No

Display System Runtime information

NA

users

No

Print all username of the current session

NA

uucp

No

Unix to Unix copy command

Yes

uudecode

No

Decode a file

NA

uuencode

No

Encode a file

NA

vi

No

Visual Text Editor

Yes

wait

Yes

Wait for process completion

Yes

whatis

No

Search what is database

NA

where

No

Report all command instances

NA

while

Yes

Loop command

Yes

who

No

Print all names of the users of the current session

NA

whoami

No

Display or Print current username and info details

NA

write

No

Send a user a message

NA

xargs

No

Execute utility by passing arguments

Yes

yes

No

Print a string value until and unless interrupted by a user

NA

Foot note: N/A – Data not available.

If you feel this list lacks any particular command which has been recently added to the Mac terminal, you can improve this article by mentioning it in the comment section.

Coments are closed