mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
Merge pull request #29536 from lkxed/20230612-1-Bash-Basics-Series-1-Create-and-Run-Your-First-Bash-Shell-Script
[手动选题][tech]: 20230612.1 ⭐️⭐️ Bash Basics Series 1 Create and Run Your First Bash Shell Script.md
This commit is contained in:
commit
6691dd9ff3
@ -0,0 +1,188 @@
|
||||
[#]: subject: "Bash Basics Series #1: Create and Run Your First Bash Shell Script"
|
||||
[#]: via: "https://itsfoss.com/create-bash-script/"
|
||||
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: " "
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
Bash Basics Series #1: Create and Run Your First Bash Shell Script
|
||||
======
|
||||
|
||||
This is the beginning of a new tutorial series on It's FOSS. In this one, you'll get familiar with bash scripting.
|
||||
|
||||
The series assumes that you are somewhat familiar with the Linux terminal. You don't have to be a master, but knowing the basics would be good. I advise going through Terminal Basics Series.
|
||||
|
||||
**Who is this series for?**
|
||||
|
||||
Anyone who wants to start learning bash shell scripting.
|
||||
|
||||
If you are a student with shell scripting as part of your course curriculum, this series is for you.
|
||||
|
||||
If you are a regular desktop Linux user, this series will help you understand most shell scripts you come across while exploring various software and fixes. You could also use it to automate some common, repetitive tasks.
|
||||
|
||||
By the end of this Bash Basics series, you should be able to write simple to moderate bash scripts.
|
||||
|
||||
All the chapters in the series have sample exercises so that you can learn it by doing it.
|
||||
|
||||
> 🚧 You'll learn bash shell scripting here. While there are other shells with mostly the same syntax, their behavior still differs at a few points. Bash is the most common and universal shell and hence start learning shell scripting with bash.
|
||||
|
||||
### Your first shell script: Hello World!
|
||||
|
||||
Open a terminal. Now [create a new directory][1] to save all the scripts you'll be creating in this series:
|
||||
|
||||
```
|
||||
mkdir bash_scripts
|
||||
```
|
||||
|
||||
Now [switch to this newly created directory][2]:
|
||||
|
||||
```
|
||||
cd bash_scripts
|
||||
```
|
||||
|
||||
Let's [create a new file][3] here:
|
||||
|
||||
```
|
||||
touch hello_world.sh
|
||||
```
|
||||
|
||||
Now, [edit the file][4] and add `echo Hello World` line to it. You can do this with the append mode of the cat command (using >):
|
||||
|
||||
```
|
||||
[email protected]:~/bash_scripts$ cat > hello_world.sh
|
||||
echo Hello World
|
||||
^C
|
||||
```
|
||||
|
||||
I prefer adding new lines while using the cat command for adding text.
|
||||
|
||||
Press Ctrl+C or Ctrl+D keys to come out of the append mode of the cat command. Now if you check the contents of the script `hellow_world.sh`, you should see just a single line.
|
||||
|
||||
![Creating first shell script][5]
|
||||
|
||||
The moment of truth has arrived. You have created your first shell script. It's time to [run the shell script][6].
|
||||
|
||||
Do like this:
|
||||
|
||||
```
|
||||
bash hello_world.sh
|
||||
```
|
||||
|
||||
The echo command simply displays whatever was provided to it. In this case, the shell script should output Hello World on the screen.
|
||||
|
||||
![Run first shell script][7]
|
||||
|
||||
Congratulations! You just successfully ran your first shell script. How cool is that!
|
||||
|
||||
Here's a replay of all the above commands for your reference.
|
||||
|
||||
![][8]
|
||||
|
||||
#### Another way to run your shell scripts
|
||||
|
||||
Most of the time, you'll be running the shell scripts in this manner:
|
||||
|
||||
```
|
||||
./hello_world.sh
|
||||
```
|
||||
|
||||
Which will result in an error because the file for you as the script doesn't have execute permission yet.
|
||||
|
||||
```
|
||||
bash: ./hello_world.sh: Permission denied
|
||||
```
|
||||
|
||||
Add execute permission for yourself to the script:
|
||||
|
||||
```
|
||||
chmod u+x hello-world.sh
|
||||
```
|
||||
|
||||
And now, you can run it like this:
|
||||
|
||||
```
|
||||
./hello_world.sh
|
||||
```
|
||||
|
||||
![Run shell scripts][9]
|
||||
|
||||
So, you learned two ways to run a shell script. It's time to focus on bash.
|
||||
|
||||
### Turn your shell script into a bash script
|
||||
|
||||
Confused? Actually, there are several shells available in Linux. Bash, ksh, csh, zsh and many more. Out of all these, bash is the most popular one and almost all distributions have it installed by default.
|
||||
|
||||
The shell is an interpreter. It accepts and runs Linux commands. While the syntax for most shell remains the same, their behavior may differ at certain points. For example, the handling of brackets in conditional logic.
|
||||
|
||||
This is why it is important to tell the system which shell to use to interpret the script.
|
||||
|
||||
When you used `bash hello_world.sh`, you explicitly used the bash interpreter.
|
||||
|
||||
But when you run the shell scripts in this manner:
|
||||
|
||||
```
|
||||
./hello_world.sh
|
||||
```
|
||||
|
||||
The system will use whichever shell you are currently using to run the script.
|
||||
|
||||
To avoid unwanted surprises due to different syntax handling, you should explicitly tell the system which shell script it is.
|
||||
|
||||
How to do that? Use the shebang (#!). Normally, # is used for comments in shell scripts. However, if #! is used as the first line of the program, it has the special purpose of telling the system which shell to use.
|
||||
|
||||
So, change the content of the hello_world.sh so that it looks like this:
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
|
||||
echo Hello World
|
||||
```
|
||||
|
||||
And now, you can run the shell script as usual knowing that the system will use bash shell to run the script.
|
||||
|
||||
![Run bash shell script][10]
|
||||
|
||||
> 💡 If you feel uncomfortable editing script files in the terminal, as a desktop Linux user, you can use Gedit or other GUI text editors for writing scripts and run them in the terminal.
|
||||
|
||||
### 🏋️ Exercise time
|
||||
|
||||
It is time to practice what you learned. Here are some basic practice exercises for this level:
|
||||
|
||||
- Write a bash script that prints "Hello Everyone"
|
||||
- Write a bash script that displays your current working directory (hint: use pwd command)
|
||||
- Write a shell script that prints your user name in the following manner: My name is XYZ (hint: use $USER)
|
||||
|
||||
The answers can be discussed in [this dedicated thread][11] in the Community forum.
|
||||
|
||||
The last practice exercise uses `$USER`. That's a special variable that prints the user name.
|
||||
|
||||
And that brings me to the topic of the next chapter in the Bash Basics Series: Variables.
|
||||
|
||||
Stay tuned for that next week.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/create-bash-script/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lkxed/
|
||||
[1]: https://itsfoss.com/make-directories/
|
||||
[2]: https://itsfoss.com/change-directories/
|
||||
[3]: https://itsfoss.com/create-files/
|
||||
[4]: https://itsfoss.com/edit-files-linux/
|
||||
[5]: https://itsfoss.com/content/images/2023/06/create-first-shell-script.png
|
||||
[6]: https://itsfoss.com/run-shell-script-linux/
|
||||
[7]: https://itsfoss.com/content/images/2023/06/run-first-shell-script.png
|
||||
[8]: https://itsfoss.com/content/images/2023/06/create-run-first-shell-script.svg
|
||||
[9]: https://itsfoss.com/content/images/2023/06/running-shell-scripts.png
|
||||
[10]: https://itsfoss.com/content/images/2023/06/run-bash-shell-script.png
|
||||
[11]: https://itsfoss.community:443/t/practice-exercise-in-bash-basics-series-1-create-and-run-your-first-bash-shell-script/10682
|
Loading…
Reference in New Issue
Block a user