What is Shell Scripting?

Written by Coursera Staff • Updated on

Shell scripting is a powerful tool commonly used across industries to automate tasks, test solutions, and increase efficiency.

[Featured image] An IT support specialist is using a shell script on their laptop.

Shell scripting is a text file with a list of commands that instruct an operating system to perform certain tasks. A shell is an interface that interprets, processes, and executes these commands from the shell script. It can be particularly helpful to automate repetitive tasks, helping to save time and reduce human error. 

In this article, we will explore the basics of shell scripting, including key definitions, uses for shell scripting, common shells, and which professional industries use this type of programming.

What is shell scripting used for?

Shell scripting is primarily used to automate repetitive system tasks, such as backing up files, monitoring system resources, and managing user accounts. By turning a series of commands into a script, system administrators can save time, increase accuracy, and simplify complex tasks. 

Who uses shell scripting? 

Shell scripting is a valuable tool across several professions and fields due to its flexibility, power, and widespread support of operating systems. The following are some roles that use shell scripting: 

System administrators: System administrators often use shell scripts for automating administrative tasks like backups, system monitoring, user account creation and management, and many more routine activities. This allows for efficiency, consistency, and accuracy.

Developers: Developers often use shell scripting to automate development tasks, like automating file manipulation, deploying software to servers, running test suites, and more.

DevOps professionals: In the world of DevOps, shell scripting can benefit tasks such as automation, configuration management, troubleshooting, and rapid iteration. Shell scripts can run across operating platforms, which can be beneficial for those who work in several environments.

Read more: 7 DevOps Roles that Make a Team Successful

Basic shell scripting terms

Before we delve further into shell scripting, knowing a few definitions may come in handy when exploring this topic: 

  • Terminal: A terminal is a program that establishes a connection with the server.

  • Shell: This program interprets shell scripting commands from the terminal and runs on the server. This is the command-line user interface you choose and includes shells such as the Bourne shell, Korn shell, Bourne-Again shell, and C shell.

  • Script: A script is a short program that performs a specific task.

  • Command-line shell: A command-line shell (also known as a command prompt) allows you to instruct your computer through textual commands. 

  • Shell script: A shell script is a script run through a command-line shell

When you create a shell script, you might use text editors like Nano or Vim and save the file with a “.sh” extension. A shell interpreter interprets and executes these scripts; you can run them from the command line whenever necessary.

Read more: Information Technology (IT) Terms: A to Z Glossary

5 types of shells

Different types of shells have different capabilities, so choose the type of shell that works best for your applications. Your shell choice will affect how you can execute programs and which system resources you can access. Some common types of shells you can choose from include:

Type of shellDescription
Bourne shellThe Bourne shell, also known as ‘sh,’ was the original UNIX shell or command-line interpreter developed by Stephen Bourne at AT&T Bell Labs. While known for its high operation speed, this type of shell cannot reference previous commands and has limited built-in functionality.
C shellThe C shell, ‘csh,’ is a shell developed by Bill Joy at the University of California Berkeley. This shell uses a similar syntax as the C programming language and incorporates aliases into the available features.
Bash shellBash, short for “Bourne Again Shell,” is a shell created by Brian Fox as a combination of sh, csh, and ksh capabilities. Bash is the default shell on Linux and Mac OSX. This type of shell can recall previous commands and edit them.
Korn shellThe Korn shell, or ‘ksh,’ is a shell developed by David Korn in the 1980s. It combines features of both the Bourne and C shells, along with its own improvements, such as string and array manipulation.
Z shellThe Z shell, or ‘zsh,’ is a modern extension of the sh shell and offers extensive customization. Some notable features include plugins, function indexes, and theming support.

Capabilities of Shell Script

Shell scripts are incredibly versatile, capable of handling file manipulation, database monitoring, text printing, and more. While the language of shells has conditional operations, looping functions, and command-line arguments, much of the strength of shell programs comes from the ability to call any program through shell scripting. This allows you to design complex programs suited to your needs. 

Similar programs to shell scripts 

Several programming languages and environments share similarities with shell scripting. Python and JavaScript, for example, are able to write scripts in a similar way to shell scripts. Practical Extraction and Report Language, or Perl, is another scripting language commonly used to write shell scripts.

However, shell scripts interpret command lines and automate tasks, while professionals utilize high-level programming languages such as Python and JavaScript across several additional applications (e.g., web development). 

Pros and cons of shell scripting    

Shell scripting has strengths and weaknesses, depending on your field and application.

Pros   

Shell scripting benefits professionals, especially system administrators, DevOps developers, and related professionals. As mentioned previously, it automates repetitive tasks and can boost productivity. It’s ideal for rapidly prototyping complex applications. Shell scripts are simple to create, modify, and debug. They’re also highly portable and capable of running on any UNIX-like system with minimal modifications.

                                                                                                                          

Cons   

On the downside, shell scripts may be slower than programs written in compiled languages and less suited for complex computational tasks. Scripting languages may be more prone to costly errors than other programming languages.

If you are completing database tasks that require a high level of database access, you may also benefit from an approach outside of shell scripting. 

Examples of shell scripting 

Depending on your professional role, you might call on shell scripting for various functions. Here are a few scenarios in which you might choose to utilize the capabilities of shell scripting:

  • You have multiple databases on a single machine, or your requirements aren’t specific to a single database: Shell scripting allows you to meet requirements that aren’t advisable or secure to fulfill using a single database.

  • You need to perform tasks when the database isn’t running: In such cases, you can utilize a script to start or stop a database, as well as associated processes like listeners, which you can’t initiate from within the database itself.

  • You need to monitor the database’s status to ensure it’s running and ready to process queries: A script can serve this purpose, monitoring not only the database but also other system processes and resources, providing a comprehensive view of the system’s operations.

  • You need to automate backups of your database: For example, with Oracle's Recovery Manager (RMAN), you can create backup scripts that run on any platform. A shell script can call upon RMAN for a variety of backup and recovery activities.

Next steps

If you’re interested in expanding your knowledge of shell scripting and computer programming, consider the Hands-on Introduction to Linux Commands and Shell Scripting offered by IBM on Coursera. It’s designed for beginners to gain hands-on shell scripting experience. As you gain experience, you can move to intermediate-level Guided Projects, such as Shell Scripting with Bash: Basics offered by the Coursera Learning Network.

Keep reading

Updated on
Written by:

Editorial Team

Coursera’s editorial team is comprised of highly experienced professional editors, writers, and fact...

This content has been made available for informational purposes only. Learners are advised to conduct additional research to ensure that courses and other credentials pursued meet their personal, professional, and financial goals.