| name | Linux Bash |
| description | Expert assistance with Linux bash commands, shell scripting, system administration, file operations, and command-line utilities. Use this when working with bash scripts, Linux system operations, or command-line tasks. |
Linux Bash
Expert guidance for Linux bash operations, scripting, and system administration.
Core Commands
File Operations
ls -lah - List files with details, including hidden
find /path -name "pattern" - Find files by name
grep -r "pattern" /path - Recursive text search
chmod +x file - Make file executable
chown user:group file - Change ownership
tar -czf archive.tar.gz dir/ - Create compressed archive
tar -xzf archive.tar.gz - Extract archive
Process Management
ps aux | grep process - Find running processes
top / htop - Monitor system resources
kill -9 PID - Force kill process
nohup command & - Run command in background
jobs - List background jobs
fg %1 - Bring job to foreground
System Information
df -h - Disk usage human-readable
du -sh dir/ - Directory size
free -h - Memory usage
uname -a - System information
lsb_release -a - Distribution info
Text Processing
cat file | head -n 10 - First 10 lines
tail -f log.txt - Follow log file
sed 's/old/new/g' file - Replace text
awk '{print $1}' file - Print first column
sort file | uniq - Remove duplicates
Shell Scripting Best Practices
Script Template
#!/bin/bash
set -euo pipefail
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
main() {
echo "Hello, World!"
}
main "$@"
Error Handling
if ! command -v tool &> /dev/null; then
echo "Error: tool not found" >&2
exit 1
fi
trap 'echo "Error on line $LINENO"' ERR
Variables
readonly CONFIG_FILE="/etc/app.conf"
user_input="$1"
files=("file1.txt" "file2.txt")
for file in "${files[@]}"; do
echo "$file"
done
Common Patterns
Check if file exists
if [[ -f "file.txt" ]]; then
echo "File exists"
fi
Loop through files
for file in *.txt; do
echo "Processing $file"
done
Read user input
read -p "Enter value: " user_value
Function definition
my_function() {
local arg1="$1"
echo "Received: $arg1"
}
Tips
- Quote variables: Always use
"$variable" to prevent word splitting
- Use [[ ]] for tests: More features than [ ]
- Shellcheck: Use
shellcheck script.sh to validate scripts
- Exit codes: Use
$? to check last command status
- Debugging: Use
set -x to trace execution
Safety First
- Always test scripts in safe environment first
- Use
set -e to exit on errors
- Validate input parameters
- Quote file paths to handle spaces
- Use absolute paths when possible