Panduan Lengkap Bash Scripting untuk Automasi Task Harian di Linux
Panduan Lengkap Bash Scripting untuk Automasi Task Harian di Linux
Bash scripting merupakan keterampilan fundamental yang wajib dikuasai setiap pengguna Linux. Dengan bash script, Anda dapat mengotomatisasi task berulang, meningkatkan produktivitas, dan menghemat waktu berjam-jam setiap minggu. Artikel ini akan membahas dari dasar hingga teknik advanced bash scripting.
1. Pengenalan Bash Script dan Struktur Dasar
Bash (Bourne Again Shell) adalah shell default di sebagian besar distribusi Linux. Script bash adalah file teks yang berisi kumpulan command yang dapat dieksekusi.
Membuat Script Pertama Anda
#!/bin/bash
# Ini adalah komentar
echo "Hello, World!"
echo "Tanggal hari ini: $(date)"
Save file sebagai hello.sh dan jalankan:
chmod +x hello.sh
./hello.sh
Shebang (#!/bin/bash) adalah baris pertama yang memberitahu sistem interpreter mana yang akan digunakan.
Best Practices Struktur Script
#!/bin/bash
# Author: Nama Anda
# Created: 2026-02-03
# Description: Script untuk backup otomatis
# Version: 1.0
set -euo pipefail # Exit on error, undefined vars, pipe failures
# Variabel
BACKUP_DIR="/backup"
LOG_FILE="/var/log/backup.log"
# Fungsi
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# Main script
main() {
log_message "Memulai proses backup..."
# Logic utama di sini
log_message "Backup selesai!"
}
# Jalankan main function
main "$@"
2. Variabel dan Tipe Data dalam Bash
Bash mendukung beberapa tipe variabel yang penting untuk dipahami.
Deklarasi dan Penggunaan Variabel
#!/bin/bash
# Variabel string
NAMA="Linux User"
EMAIL="user@example.com"
# Variabel angka
USIA=25
PI=3.14
# Mengakses variabel dengan $
echo "Nama: $NAMA"
echo "Email: ${EMAIL}"
# Variabel environment
export DATABASE_URL="mysql://localhost:3306/mydb"
# Command substitution
CURRENT_DIR=$(pwd)
DATE_NOW=`date`
echo "Direktori saat ini: $CURRENT_DIR"
echo "Waktu sekarang: $DATE_NOW"
Array dalam Bash
#!/bin/bash
# Array satu dimensi
FRUITS=("Apel" "Jeruk" "Mangga" "Pisang")
echo "Buah pertama: ${FRUITS[0]}"
echo "Semua buah: ${FRUITS[@]}"
echo "Jumlah buah: ${#FRUITS[@]}"
# Looping array
for fruit in "${FRUITS[@]}"; do
echo "Buah: $fruit"
done
# Array asosiatif (Bash 4.0+)
declare -A USER_INFO
USER_INFO[name]="Budi"
USER_INFO[email]="budi@example.com"
USER_INFO[age]=30
echo "Nama: ${USER_INFO[name]}"
3. Struktur Kontrol: Kondisi dan Looping
Kontrol alur program sangat penting untuk scripting yang kompleks.
Kondisional dengan if-else
#!/bin/bash
FILE="/etc/passwd"
# Cek file exists
if [ -f "$FILE" ]; then
echo "File $FILE ditemukan"
else
echo "File $FILE tidak ditemukan"
fi
# Multiple conditions
USER_COUNT=$(who | wc -l)
if [ "$USER_COUNT" -eq 0 ]; then
echo "Tidak ada user login"
elif [ "$USER_COUNT" -eq 1 ]; then
echo "1 user sedang login"
else
echo "$USER_COUNT user sedang login"
fi
# Test conditions dengan [[ ]] (modern syntax)
if [[ "$USER_COUNT" -gt 0 && "$USER_COUNT" -lt 10 ]]; then
echo "User count dalam range normal"
fi
Operator Perbandingan
# String comparison
if [ "$A" = "$B" ] # Equal
if [ "$A" != "$B" ] # Not equal
if [ -z "$A" ] # String kosong
if [ -n "$A" ] # String tidak kosong
# Numeric comparison
if [ "$A" -eq "$B" ] # Equal
if [ "$A" -ne "$B" ] # Not equal
if [ "$A" -gt "$B" ] # Greater than
if [ "$A" -lt "$B" ] # Less than
if [ "$A" -ge "$B" ] # Greater or equal
if [ "$A" -le "$B" ] # Less or equal
# File tests
if [ -e "$FILE" ] # File exists
if [ -f "$FILE" ] # Regular file
if [ -d "$FILE" ] # Directory
if [ -r "$FILE" ] # Readable
if [ -w "$FILE" ] # Writable
if [ -x "$FILE" ] # Executable
if [ -s "$FILE" ] # File not empty
Looping dengan for
#!/bin/bash
# For loop dengan range
for i in {1..5}; do
echo "Iterasi ke-$i"
done
# For loop dengan step
for i in {0..10..2}; do
echo "Nomor genap: $i"
done
# For loop files
for file in *.txt; do
echo "Processing: $file"
wc -l "$file"
done
# C-style for loop
for ((i=0; i<10; i++)); do
echo "Counter: $i"
done
While dan Until Loops
#!/bin/bash
# While loop
COUNTER=0
while [ $COUNTER -lt 5 ]; do
echo "Counter: $COUNTER"
((COUNTER++))
done
# Read file line by line
while IFS= read -r line; do
echo "Line: $line"
done < "input.txt"
# Until loop (berjalan sampai kondisi true)
COUNT=10
until [ $COUNT -eq 0 ]; do
echo "Countdown: $COUNT"
((COUNT--))
done
4. Fungsi dan Modularisasi Script
Membuat fungsi memungkinkan reuse code dan struktur yang lebih baik.
Membuat Fungsi
#!/bin/bash
# Fungsi sederhana
say_hello() {
echo "Hello, $1!"
}
# Fungsi dengan return value
get_disk_usage() {
local path="${1:-/}"
local usage=$(df -h "$path" | tail -1 | awk '{print $5}' | tr -d '%')
echo "$usage"
}
# Fungsi dengan multiple parameters
backup_directory() {
local src="$1"
local dest="$2"
local compression="${3:-gzip}"
if [ ! -d "$src" ]; then
echo "Error: Source directory tidak ditemukan" >&2
return 1
fi
local timestamp=$(date +%Y%m%d_%H%M%S)
local backup_name="backup_${timestamp}.tar.${compression}"
tar -czf "${dest}/${backup_name}" -C "$src" .
echo "Backup tersimpan: ${dest}/${backup_name}"
}
# Penggunaan
say_hello "Budi"
USAGE=$(get_disk_usage "/home")
echo "Disk usage: ${USAGE}%"
backup_directory "/var/www" "/backup" "gz"
Source File Eksternal
#!/bin/bash
# Load konfigurasi dari file eksternal
source "config.sh"
# atau
. "config.sh"
# Load library fungsi
source "lib/utils.sh"
# Gunakan fungsi dari library
check_root
log_info "Script dimulai"
Kesimpulan
Bash scripting adalah skill yang sangat powerful untuk automasi task di Linux. Dengan menguasai variabel, kondisi, looping, dan fungsi, Anda dapat membuat script yang robust dan maintainable.
Tips untuk Pemula:
- Selalu gunakan
set -euo pipefailuntuk error handling - Gunakan double quotes untuk variabel:
"$VAR" - Tambahkan komentar yang jelas
- Test script secara bertahap sebelum production
- Gunakan
shellcheckuntuk static analysis
Mulailah dengan task sederhana seperti backup file atau monitoring system, kemudian tingkatkan kompleksitas seiring dengan pengalaman Anda.
Artikel Terkait
Link Postingan: https://www.tirinfo.com/panduan-lengkap-bash-scripting-automasi-task-harian-linux/