Personal dotfiles for setting up and configuring development environments on Linux systems.
curl -sSL https://raw.githubusercontent.com/mike-aalyria/dotfiles/main/bootstrap.sh | bashgit clone https://github.com/mike-aalyria/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.shCore Setup:
- Bash as primary shell with advanced configuration
- Modern command-line tools with automatic fallbacks to standard commands
- Centralized alias management in
.aliases - Centralized PATH management in
.paths - Centralized package management in
.packages - Environment setup in
.profile
Enhanced Features:
- Advanced history management (100k entries with timestamps)
- Colorized prompt with git branch info
- Modern alternatives to standard commands (
exa,batcat,ripgrep,fzf) - Smart aliases that use enhanced tools when available, fall back to standard tools
- Comprehensive aliases for git, system, and development
- Robust PATH management for custom tools
- Configurable package installation for Debian/Ubuntu systems
~/.dotfiles/
βββ .bashrc β Primary shell configuration
βββ .profile β Login shell environment (PATH, locale)
βββ .aliases β Modern tool aliases (requires packages)
βββ .paths β Custom directories for PATH
βββ .packages β System packages to install
βββ install.sh β Installation and symlink script
βββ bootstrap.sh β Remote installation script
βββ README.md β This file
| File | Purpose | When It's Used |
|---|---|---|
~/.profile |
Environment variables, PATH setup, locale | Login shells |
~/.bashrc |
Interactive shell config, prompt, history | Interactive shells |
~/.aliases |
Smart aliases with automatic fallbacks | Sourced by .bashrc |
~/.paths |
Custom PATH directories | Processed by .profile |
~/.packages |
System packages to install | Read by install.sh |
Smart aliases that prefer modern tools but fall back gracefully:
| Standard Command | Modern Tool | What You Get |
|---|---|---|
ls |
exa |
Colors, icons, directory grouping |
cat |
batcat |
Syntax highlighting, line numbers |
grep |
ripgrep |
Much faster searching |
fd |
fdfind |
Simpler syntax, faster results (find unchanged for compatibility) |
tree |
exa --tree |
Better formatting |
Note: These aliases automatically detect and use modern tools when available. If tools aren't installed, they fall back to standard commands. Run ./install.sh to install modern tools for the best experience.
Required packages are defined in .packages:
# === IMPROVED COMMAND LINE TOOLS ===
ripgrep # rg - much faster grep alternative
fd-find # fdfind - better find command
fzf # fuzzy finder for files/history/commands
bat # better cat with syntax highlighting
exa # modern ls replacement with colors/icons
# === DEVELOPMENT TOOLS ===
tldr # simplified man pages
jq # JSON processorAdd custom directories to your PATH by editing ~/.paths:
# Add to ~/.paths
$HOME/my-tools
$HOME/.local/bin/customComprehensive aliases organized by category:
Navigation & Files:
..,...,....- Navigate up directoriesll,la,l- Directory listings withexadsize- Show directory sizes sorted by sizetree- Directory tree withexa
Enhanced Commands:
cat,less,more- File viewing withbatcat(fallback to standard)grep- Searching withripgrep(fallback to grep)fgrep,egrep- Preserved standard semanticsfd- Modern file finding (find unchanged for script compatibility)
Git Workflow:
gs,ga,gc,gp,gl- Git status, add, commit, push, pullglog- Beautiful git log with graph
Development:
fe- Fuzzy find and edit filesfh- Fuzzy search command historybashrc,aliases,profile- Quick edit config files
System & Network:
df,du,free- Human-readable system infomyip,localip- Get IP addressespsg- Search processes
- Git branch shown in prompt
- Comprehensive git aliases
- Colored output
Powerful fuzzy finding with fzf:
fe # Fuzzy find and edit files
fh # Fuzzy search command history- Linux (Debian/Ubuntu tested)
- Bash 4.0+
- Modern CLI tools (installed automatically via
.packages)
- Purpose: Remote installation from GitHub
- Use case: Setting up new machines
- What it does: Clones repo and runs
install.sh
- Purpose: Local installation and configuration
- Use case: Initial setup or updates
- What it does:
- Reads and installs packages from
.packages - Creates symlinks for all dotfiles
- Sets up directories
- Reads and installs packages from
# Run bootstrap for new machines
curl -sSL https://raw.githubusercontent.com/mike-aalyria/dotfiles/main/bootstrap.sh | bash
# Or clone and install manually
git clone https://github.com/mike-aalyria/dotfiles.git ~/.dotfiles
cd ~/.dotfiles && ./install.sh# Edit package list
nano ~/.packages
# Add/remove packages as needed
# Uncomment optional tools you want
# Comment out tools you don't need
# Reinstall packages
cd ~/.dotfiles && ./install.shecho '$HOME/my-tools' >> ~/.paths
source ~/.profileecho "alias myalias='my command'" >> ~/.aliases
source ~/.bashrccd ~/.dotfiles
git pull
./install.shAfter installation, commands use modern tools:
# Enhanced file listing
ls # Uses exa with colors and grouping
ll # Detailed listing with exa
tree # Directory tree with exa
# Better file viewing
cat file.txt # Syntax highlighting with bat
less file.txt # Paged viewing with bat
# Faster searching
grep "term" * # Uses ripgrep if available, otherwise standard grep
fd "*.txt" # Uses fd/fdfind for better syntax (find still works normally)
# Fuzzy finding
fe # Fuzzy find and edit files
fh # Fuzzy search command history
# Utility shortcuts
dsize # Directory sizes sorted
myip # Your external IP
psg firefox # Search for firefox processes- Smart fallbacks: Aliases automatically use modern tools when available, standard tools otherwise
- Script compatibility: Standard commands like
find,cat,grepwork normally in scripts - Best experience: Run
./install.shto install modern tools for enhanced features - Editor preference: VSCode preferred if available, nano as fallback
MIT License
Maintained by Mike Aalyria