# ~/.bashrc: executed by bash(1) for non-login shells. # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # ------------------------------------------------------------------------------ # ✅ Smart Command History Configuration # ------------------------------------------------------------------------------ HISTSIZE=100000 # Increase history size HISTFILESIZE=200000 # Store more commands in history HISTCONTROL=ignoredups:ignorespace # Ignore duplicate and space-prefixed commands shopt -s histappend # Append to history instead of overwriting export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" # Enable arrow key history search (search by typing & pressing Up/Down) bind '"\e[A": history-search-backward' bind '"\e[B": history-search-forward' # ------------------------------------------------------------------------------ # ✅ Enable Fuzzy Search for Command History (Ctrl+R) # ------------------------------------------------------------------------------ if command -v fzf &>/dev/null; then __fzf_history() { BUFFER=$(history | fzf --height 40% --reverse | sed 's/^[ ]*[0-9]*[ ]*//') echo $BUFFER } bind -x '"\C-r": __fzf_history' fi # ------------------------------------------------------------------------------ # ✅ Enable Colorized Command Output # ------------------------------------------------------------------------------ alias grep="grep --color=auto" alias fgrep="fgrep --color=auto" alias egrep="egrep --color=auto" alias ping="ping -c 5" # Limit ping output # ------------------------------------------------------------------------------ # ✅ Improved `ls` with `eza` (modern replacement for `ls`) # ------------------------------------------------------------------------------ if command -v eza &>/dev/null; then alias ls="eza --icons --group-directories-first" alias ll="eza -lh --icons --git" alias la="eza -lha --icons --git" alias lt="eza -T --icons" # Tree view fi # ------------------------------------------------------------------------------ # ✅ Useful Aliases for Faster Navigation and Commands # ------------------------------------------------------------------------------ alias ..="cd .." alias ...="cd ../.." alias ....="cd ../../.." alias ~="cd ~" alias cpuinfo="lscpu" alias meminfo="free -h" alias diskinfo="df -h" # Git Aliases alias gs="git status" alias ga="git add ." alias gc="git commit -m" alias gp="git push" alias gl="git log --oneline --graph --decorate --all" # Reload bashrc quickly alias reload="source ~/.bashrc && echo 'Bash config reloaded! ✅'" # ------------------------------------------------------------------------------ # ✅ Smart Git Prompt (Loads Only Inside Git Repos) # ------------------------------------------------------------------------------ if command -v git &>/dev/null && [ -f "$HOME/.bash-git-prompt/gitprompt.sh" ]; then GIT_PROMPT_THEME=x-files-time alias gpchange="bash $HOME/.bash-git-prompt/gpchange.sh" alias gpthemes="bash $HOME/.bash-git-prompt/gpthemes.sh" # Load git prompt only inside git repositories function __git_ps1_check() { git rev-parse --is-inside-work-tree &>/dev/null && source "$HOME/.bash-git-prompt/gitprompt.sh" } PROMPT_COMMAND="__git_ps1_check;$PROMPT_COMMAND" fi # ------------------------------------------------------------------------------ # ✅ Fancy Welcome Message # ------------------------------------------------------------------------------ echo -e "\nWelcome back, $USER! 🚀" echo "Today is $(date '+%A, %d %B %Y')." echo "Uptime: $(uptime -p)" echo "You are in: $(pwd)"