linux-bash
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.
When & Why to Use This Skill
This Claude skill provides expert-level guidance for Linux Bash operations, shell scripting, and system administration. It empowers users to master command-line utilities, automate complex IT workflows, and manage system resources efficiently. By offering best practices for script safety and error handling, it serves as a comprehensive resource for building reliable automation and performing advanced file and process management tasks.
Use Cases
- Automating System Maintenance: Creating robust shell scripts for scheduled backups, log rotation, and automated cleanup of temporary system files.
- System Monitoring and Troubleshooting: Utilizing commands like top, htop, and ps to identify resource bottlenecks and manage running processes in real-time.
- Advanced Text Processing: Leveraging sed, awk, and grep to parse large log files, extract specific data points, and perform bulk text replacements.
- Environment Configuration: Managing file permissions, ownership, and directory structures to ensure secure and organized system environments.
- DevOps Pipeline Scripting: Writing 'set -euo pipefail' compliant scripts to automate deployment steps and ensure CI/CD pipeline reliability.
| 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 hiddenfind /path -name "pattern"- Find files by namegrep -r "pattern" /path- Recursive text searchchmod +x file- Make file executablechown user:group file- Change ownershiptar -czf archive.tar.gz dir/- Create compressed archivetar -xzf archive.tar.gz- Extract archive
Process Management
ps aux | grep process- Find running processestop/htop- Monitor system resourceskill -9 PID- Force kill processnohup command &- Run command in backgroundjobs- List background jobsfg %1- Bring job to foreground
System Information
df -h- Disk usage human-readabledu -sh dir/- Directory sizefree -h- Memory usageuname -a- System informationlsb_release -a- Distribution info
Text Processing
cat file | head -n 10- First 10 linestail -f log.txt- Follow log filesed 's/old/new/g' file- Replace textawk '{print $1}' file- Print first columnsort file | uniq- Remove duplicates
Shell Scripting Best Practices
Script Template
#!/bin/bash
set -euo pipefail # Exit on error, undefined vars, pipe failures
# Script description
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
main() {
# Your logic here
echo "Hello, World!"
}
main "$@"
Error Handling
# Check command success
if ! command -v tool &> /dev/null; then
echo "Error: tool not found" >&2
exit 1
fi
# Trap errors
trap 'echo "Error on line $LINENO"' ERR
Variables
# Constants (uppercase)
readonly CONFIG_FILE="/etc/app.conf"
# Variables (lowercase)
user_input="$1"
# Arrays
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.shto validate scripts - Exit codes: Use
$?to check last command status - Debugging: Use
set -xto trace execution
Safety First
- Always test scripts in safe environment first
- Use
set -eto exit on errors - Validate input parameters
- Quote file paths to handle spaces
- Use absolute paths when possible