Terminal User Guide
Bash script to pull all interface MAC address. Ask Question Asked 3 years, 9 months ago. Active 3 years, 9 months ago. Viewed 4k times 2. I'm looking to create a bash script that I can use with live Ubuntu 16. I work in a manufacturing facility with multiple different type of board manufacturers and a lot of our customers request the MAC. To start an executable (which is any file with executable permission); you just specify it by its path: /foo/bar /bin/bar./bar. To make a script executable, give it the necessary permission: chmod +x bar./bar. When a file is executable, the kernel is responsible for figuring out how to execte it.
Instead of entering commands and waiting for a response, you can compose shell scripts that run without direct interaction.
A shell script is a text file that contains one or more UNIX commands. You run a shell script to perform commands you might otherwise enter at the command line.
Jul 13, 2017 This Bash script converts the currency based on realtime exchange rates. Enter the base currency code and the currency to exchange to, and the amount being exchanged one by one as shown below. Currently all the solution mentioned for getting the MAC address always use eth0. But what if instead of eth0 my interfaces start with eth1. Also on OS X the interface names are different. For example, here's a simple bash script that prints MAC addresses for active interfaces: #!/bin/bash # getmacifup.sh: Print active NICs MAC.
Shell scripts are useful because you can combine many common tasks into one script, saving you time and possible errors when performing similar tasks over and over. You can also automate shell scripts using tools such as launchd
or Apple Remote Desktop.
A shell script begins with a character combination that identifies it as a shell script—specifically the characters # and ! (together called a shebang) followed by a reference to the shell the script should be run with. For example, here’s the first line of a shell script that would be run with sh
:
You should document your shell scripts with comments. To add a comment, start the line with the number sign (#). Every line of a comment needs to begin with the number sign:
#This program returns the
#contents of my Home folder
You can put blank lines in a shell script to help visually distinguish different sections of the script.
You use the chmod
tool to indicate that the text file is executable (that is, its contents can run as a program). See Make a file executable in Terminal on Mac.
For information about how to write shell scripts, see the Shell Scripting Primer on the Apple Developer Connection website.
Bash scripting is an extremely useful and powerful part of system administration and development. It might seem extremely scary the first time you do it, but hopefully this guide will help ease the fear.
Bash is a Unix shell, which is a command line interface (CLI) for interacting with an operating system (OS). Any command that you can run from the command line can be used in a bash script. Scripts are used to run a series of commands.
Bash is available by default on Linux and macOS operating systems.
This is not meant to be an extensive guide to bash scripting, but just a straightforward guide to getting started with making your first script, and learning some basic bash syntax.
Note: Newer macOS installations (from Catalina) come installed with zsh (Z shell) as the new default, but everything in this article will still be applicable.
Prerequisites
- A basic command line knowledge is required. Everything you need to know to get started can be found in my How to Use the Command Line article.
This guide was created on macOS, and will be using /Users/you
as the default user directory for all examples. However, the concepts here will apply to any Unix-like operating system, including macOS and various Linux distributions.
Goals
In this tutorial, we're going to:
- Create a bash script
Learn about:
Create Your First Script
Making a bash script is a lot simpler than you might think.
Create a file called hello-world
, using the touch
command.
Edit the file with the program of your choice. Within the file, print a string that says 'Hello, world!' using echo
.
Now from the command line, run the script using the bash
interpreter:
Terminal Script Mac
You'll see the script has run successfully from the output.
That's it, you've created your first script!
Executable Scripts
So far, you've learned how to run a script from the command line prefixed with the bash
interpreter. However, if you want to run the script by name alone, it won't work. Try to run the file simply by typing the name of the file and pressing enter. Note that we're prefixing the file with ./
, which means a file in the current directory.
In order to run a file directly, we'll need to change the permissions to allow the script to be executable for the user. chmod
is a command that changes permissions on a file, and +x
will add execute rights to the script.
In order to interpret the file as an executable, you'll also have to add the shebang (#!
) at the top of the script. In Unix-like systems, a text file with a shebang is interpreted as an executable file. You can confirm where the bash interpreter is located with which bash.
We'll add #!/bin/bash
to the top of the script.
Note: You may also see #!/usr/bin/env bash
instead, which can be used if you don't know the exact path for bash.
Now you can run hello-world
directly.
Note: In order to run a bash script without specifying the directory (using ./
, for example) you would have to add the directory of the script to the PATH by running export PATH=$PATH:/path/to/script/directory
. However, this is generally not necessary for personal scripts.
Strings
A simple string in Bash does not require double quotes - you can write it directly.
A single or double quote will expect a closing match, so in order to use one in such a string, you would need to escape the quote.
However, if you want to use a single or double quote in a string without escaping characters, you can do so by wrapping your string in quotes.
With the -e
flag, bash will interpret strings with backslash-escaped characters, such as n
for newline. This also requires a quoted string.
Double quoted strings are also important for use with variables, as we'll see in the next section.
Variables
A variable is declared without a dollar sign ($
), but has one when invoked. Let's edit our hello-world
example to use a variable for the entity being greeted, which is World
.
Note that who = 'World'
with a space between the assignment is not valid - there must not be a space between variable and value.
Double quoted strings are required for interpolating variables. Within a single quoted string, the dollar sign would be interpreted literally
Another way you might see variables written is surrounded by curly brackets along with the dollar sign, which is known as parameter expansion.
This syntax is necessary for anything more complex you might do with a variable, such as getting one item from an array.
Shell Execution
If you would like to use the output of a shell execution within a string, you can do so with a dollar sign followed by parentheses. ($()
). For example the whoami
command will print out your current user. To use it within a string, wrap whoami
in the shell execution syntax.
User Input
We declared a variable in the last example, but we can also have the user set the value of a variable dynamically. For example, instead of just having the script say Hello, World!
, we can make it ask for the name of the person calling the script, then output that name. We'll do this using the read
command.
Comparison
Operators are slightly different in bash than what you might be used to.
In order to compare numbers, you will use the operators in the number comparison column, such as -lt
for less than.
In order to compare strings, you will use the operators in the string comparison column, such as <
for less than.
This is the opposite of what you might expect, but it's the way it works in bash.
Number Comparison | String Comparison | Description |
---|---|---|
-eq | Equal | |
-ne | != | Not equal |
-gt | > | Greater than |
-ge | >= | Greater than or equal |
-lt | < | Less than |
-le | <= | Less than or equal |
You can also use -z
to test for emptiness on a string.
Conditions
if
statements use the if
, then
, else
, and fi
keywords. The condition goes in square brackets.
Loops
Bash uses for
, while
, and until
loops. In this example, I'll use the for...in
loop to get all the files in a directory and list them.
Mac Shell Script Example
Arrays
An array in bash is defined inside parentheses. There are no commas between the items of the array.
To access an item from an array, you'll use square brackets ([]
). Arrays are 0-indexed in bash. It is also necessary to use the paramter expansion syntax.
Conclusion
I hope this article has been helpful for you to get started with bash scripting. The concept of having a script that has complete access to anything on my computer was initially a frightening thought for me, but once I got accustomed to it I learned how useful and efficient it can be.