Bash Scripting: From Basic to Advanced
Bash (Bourne Again SHell) is a powerful command-line interpreter and scripting language commonly used in Linux and macOS environments. This post covers Bash scripting from basic commands to more advanced techniques.
I. Basic Commands
These commands are the building blocks of Bash scripting:
Command | Description |
---|---|
ls | Lists files and directories. |
cd | Changes the current directory. |
pwd | Prints the current working directory. |
mkdir | Creates a new directory. |
rm | Removes files or directories (use with caution!). |
cp | Copies files or directories. |
mv | Moves or renames files or directories. |
cat | Displays file content. |
echo | Prints text to the console. |
II. Variables
Variables store data that can be used in your scripts:
name="John Doe" echo "Hello, $name!" age=30 echo $((age + 5)) # Arithmetic operations
III. Input/Output Redirection
Redirect input and output of commands:
Operator | Description |
---|---|
> | Redirects output to a file (overwrites existing content). |
>> | Appends output to a file. |
< | Redirects input from a file. |
2>&1 | Redirects standard error to standard output. |
ls -l > filelist.txt # Save the output of ls -l to filelist.txt cat < input.txt # Read content from input.txt command 2>/dev/null # Suppress error messages
IV. Control Flow
Control the execution flow of your scripts:
If/Else Statements
if [ $age -gt 18 ]; then echo "You are an adult." elif [ $age -gt 12 ]; then echo "You are a teenager." else echo "You are a child." fi
For Loops
for i in {1..5}; do echo "Number: $i" done for file in *.txt; do echo "Processing $file" done
While Loops
count=0 while [ $count -lt 5 ]; do echo "Count: $count" count=$((count + 1)) done
V. Functions
Group code into reusable blocks:
greet() { echo "Hello, $1!" } greet "Alice"
VI. Advanced Topics
Regular Expressions (Regex)
Powerful pattern matching for text processing (using grep
, sed
, awk
):
grep "^a.*z$" file.txt # Lines starting with 'a' and ending with 'z'
Process Management
Controlling running processes:
ps aux | grep process_name # Find a process kill <PID> # Kill a process
Working with Arrays
my_array=("apple" "banana" "cherry") echo ${my_array[0]} # Access the first element echo ${my_array[@]} # Access all elements
VII. Example Script
#!/bin/bash # A simple script to backup a directory backup_dir="/path/to/backup" target_dir="/path/to/target" timestamp=$(date +%Y%m%d%H%M%S) archive_file="$backup_dir/backup_$timestamp.tar.gz" tar -czvf "$archive_file" "$target_dir" echo "Backup created: $archive_file"
This is just a starting point. There are many more advanced features in Bash scripting. Explore the man bash
pages for the full documentation.
Comments
Post a Comment