A bash shell script is a file that holds a set of bash commands to be read and executed by
Bash files are commonly denoted with a
.sh file extension for example:
Additionally the first line of a Bash script commonly contains a shebang. A shebang is a line that informs the operating system of the exact shell to use when executing the script. The shebang simply points to the absolute path of the shell.
Any valid bash syntax can be run in a file without the
.sh extension and without a shebang when the
bash command is invoked. However, to run a file without explicitly invoking the bash command, the bash script file requires a shebang and must be executable.
Once these conditions are met the script can be invoked directly without the
The following examples are complete
bash scripts that can be executed on any machine with the
Create new directory/new file script
The first example:
- navigates to a specific directory
- creates a new directory
- changes into the new directory
- creates a new file
Create a new file called
create-dir-file.sh and add the following contents:
#!/bin/bash ## navgiate to /home/student/Desktop cd /home/student/Desktop ## create new directory inside of /home/student/Desktop mkdir new-directory ## navigate to new-directory inside of /Desktop cd new-directory ## create new file inside of new-directory touch new-file
Execute the script by invoking the
bash package and providing the path to the newly created script as the argument:
Upon creating and executing the
create-dir-file.sh script a new directory and file will be created in one fell swoop!
Look at the contents of the
LaunchCode Employee Script
The first script was pretty basic. Let’s create a more complex script that combines multiple tools we’ve learned in this class. Let’s scrape, extract, and transform some data into a more usable state.
The LaunchCode website provides an about page, and on the page is a listing of all current LaunchCode employees.
It looks similar to the following image:
Say we want a script that will:
- make a request for the raw
- extract the data we want with
- trim the data using
- write the output to a new file
The about page of the LaunchCode website is subject to change. To ensure the provided script will work we have provided the raw
HTML as a part of this curriculum.
The file the script will be requesting is found at the link of the following attachment.
By hovering over the file you can find the URL of this specific resource, in the bottom left corner of your web browser.
You can add that specific resource to the wget command inside of the following script! As I was creating this walkthrough the specific link for me was
Create a new file called
lc-employee.sh and add the following code:
cd /home/student/Desktop mkdir launchcode-roster cd launchcode-roster wget http://lctt-linux.netlify.app/bash-scripting/walkthrough/script/_index.files/about.html cat about.html | grep '<p style="line-height: 1.4;"><strong>.*</strong><br/>.*<br/>' | sed 's/^.*<strong>//g' | sed 's/<\/strong><br\/>/: /g' | sed 's/<br\/>.*$//g' > lc-employees.txt cat lc-employees.txt | grep "^John\|Paul" > john-paul.txt
The url you provide for the wget command must be correct in order for this to work properly! Make sure you copy the correct url from the
about.html file! The
lctt-linux.netlify.app portion of the URL has likely changed!
Execute the newly created script:
Check to see if the script worked!
- Navigate to your
Desktopfolder to view the newly created
launchcode-rosterdirectory and list the contents.
catout of the contents of the
Check the contents of the
lc-employees.txt file! Inside should be all of the employees of LaunchCode with their titles.
- Bash scripting description
- Example Bash Scripts:
- Script to change directories, create a new directory, add a file to new directory
- Script to create a list of LaunchCode Employees and also separate John and Paul from the list!