Whats in your .bashrc

Over the years I have been building out my bashrc file.

Tonight I added a new alias which honestly surprises me that I didn’t think of before.
It will download audio from a website using yt-dlp to my /music folder.

That alias is -
alias getaudio=‘read -p "Enter YouTube URL: " url; yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o “/home/mike/Music/%(title)s.%(ext)s” “$url”’

Here is my entire .bashrc file. I really like the prompt output. I’ll link to the screenshot in the appropriate sub.

#!/bin/bash

# Function to generate the pre-prompt line
function pre_prompt {
    newPWD="${PWD}"
    let promptsize=$(echo -n "┌─(\u@\h $(date '+%a, %d %b %y'))(${PWD})" | wc -c | tr -d " ")
    let fillsize=${COLUMNS}-${promptsize}
    fill=""
    while [ "$fillsize" -gt "0" ]; do 
        fill="${fill}─"
        let fillsize=${fillsize}-1
    done
    if [ "$fillsize" -lt "0" ]; then
        let cutt=3-${fillsize}
        newPWD="...$(echo -n $PWD | sed -e "s/\(^.\{$cutt\}\)\(.*\)/\2/")"
    fi
}

PROMPT_COMMAND=pre_prompt

# Define color escape sequences
export black="\[\033[0;38;5;0m\]"
export red="\[\033[0;38;5;1m\]"
export orange="\[\033[0;38;5;130m\]"
export green="\[\033[0;38;5;2m\]"
export yellow="\[\033[0;38;5;3m\]"
export blue="\[\033[0;38;5;4m\]"
export bblue="\[\033[0;38;5;12m\]"
export magenta="\[\033[0;38;5;55m\]"
export cyan="\[\033[0;38;5;6m\]"
export white="\[\033[0;38;5;7m\]"

# Define PS1 with colors and structure
PS1="${bblue}┌─(${cyan}\u@\h ${yellow}\$(date '+%a, %d %b %y')${bblue})${fill}(${cyan}\${newPWD}${bblue})─┐\n└─(${green}\$(date '+%H:%M') ${red}\$${bblue})─>${white} "

# Aliases and other settings
alias ls='ls --color=auto'
alias ll='ls -lh'
alias la='ls -A'
alias l='ls -CF'
alias getaudio='read -p "Enter YouTube URL: " url; yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "/home/mike/Music/%(title)s.%(ext)s" "$url"'

# Enable programmable completion features
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

fastfetch

Screenshot - Share Your Desktop [2025] - #109 by temetka

1 Like
alias up='sudo apt update && sudo apt upgrade && flatpak update -y'
alias reboot='systemctl reboot'
alias clean='sudo apt autoclean && sudo apt autoremove && flatpak uninstall --u>
alias poweroff='systemctl poweroff'

A lot of this I don’t use but i have editied for my taste, just never took out the unneeded stuff. It’s from linutil. https://github.com/ChrisTitusTech/linutil

#!/usr/bin/env bash
iatest=$(expr index "$-" i)

#######################################################
# SOURCED ALIASES AND SCRIPTS BY zachbrowne.me
#######################################################
if command -v fastfetch &> /dev/null; then
    # Only run fastfetch if we're in an interactive shell
    if [[ $- == *i* ]]; then
        fastfetch
    fi
fi

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# Enable bash programmable completion features in interactive shells
if [ -f /usr/share/bash-completion/bash_completion ]; then
	. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
	. /etc/bash_completion
fi

#######################################################
# EXPORTS
#######################################################

# Disable the bell
if [[ $iatest -gt 0 ]]; then bind "set bell-style visible"; fi

# Expand the history size
export HISTFILESIZE=10000
export HISTSIZE=500
export HISTTIMEFORMAT="%F %T" # add timestamp to history

# Don't put duplicate lines in the history and do not add lines that start with a space
export HISTCONTROL=erasedups:ignoredups:ignorespace

# Check the window size after each command and, if necessary, update the values of LINES and COLUMNS
shopt -s checkwinsize

# Causes bash to append to history instead of overwriting it so if you start a new terminal, you have old session history
shopt -s histappend
PROMPT_COMMAND='history -a'

# set up XDG folders
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_STATE_HOME="$HOME/.local/state"
export XDG_CACHE_HOME="$HOME/.cache"

# Seeing as other scripts will use it might as well export it
export LINUXTOOLBOXDIR="$HOME/linuxtoolbox"

# Allow ctrl-S for history navigation (with ctrl-R)
[[ $- == *i* ]] && stty -ixon

# Ignore case on auto-completion
# Note: bind used instead of sticking these in .inputrc
if [[ $iatest -gt 0 ]]; then bind "set completion-ignore-case on"; fi

# Show auto-completion list automatically, without double tab
if [[ $iatest -gt 0 ]]; then bind "set show-all-if-ambiguous On"; fi

# Set the default editor
if command -v micro &> /dev/null; then
    export EDITOR=micro
    export VISUAL=micro
    alias vim='nvim'
    alias vi='nvim'
    alias svi='sudo nvim'
    alias vis='nvim "+set si"'
else
    export EDITOR=vim
    export VISUAL=vim
fi
alias spico='sudo pico'
alias snano='sudo nano'
alias smicro='sudo micro'
alias edit="micro"
alias yeet='sudo pacman -Rsn'

# To have colors for ls and all grep commands such as grep, egrep and zgrep
export CLICOLOR=1
export LS_COLORS='no=00:fi=00:di=00;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:*.xml=00;31:'
#export GREP_OPTIONS='--color=auto' #deprecated

# Check if ripgrep is installed
if command -v rg &> /dev/null; then
    # Alias grep to rg if ripgrep is installed
    alias grep='rg'
else
    # Alias grep to /usr/bin/grep with GREP_OPTIONS if ripgrep is not installed
    alias grep="/usr/bin/grep $GREP_OPTIONS"
fi
unset GREP_OPTIONS

# Color for manpages in less makes manpages a little easier to read
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

#######################################################
# MACHINE SPECIFIC ALIASES
#######################################################

# aliases for SSH
# alias SERVERNAME='ssh YOURWEBSITE.com -l USERNAME -p PORTNUMBERHERE'

# aliases to change the directory
alias web='cd /var/www/html'

# aliases to mount ISO files
# mount -o loop /home/NAMEOFISO.iso /home/ISOMOUNTDIR/
# umount /home/NAMEOFISO.iso
# (Both commands done as root only.)

#######################################################
# GENERAL ALIASES
#######################################################
# To temporarily bypass an alias, we precede the command with a \
# EG: the ls command is aliased, but to use the normal ls command you would type \ls

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Edit this .bashrc file
alias ebrc='micro ~/.bashrc'

# Show help for this .bashrc file
alias hlp='less ~/.bashrc_help'

# alias to show the date
alias da='date "+%Y-%m-%d %A %T %Z"'

# aliases to modified commands
alias cp='cp -i'
alias mv='mv -i'
if command -v trash &> /dev/null; then
    alias rm='trash -v'
else
    alias rm='rm -i'  # fallback to interactive remove
fi
alias mkdir='mkdir -p'
alias ps='ps auxf'
alias less='less -R'
alias cls='clear'
alias apt-get='sudo apt-get'
alias multitail='multitail --no-repeat -c'
alias freshclam='sudo freshclam'
alias vi='nvim'
alias svi='sudo vi'
alias vis='nvim "+set si"'


# Change directory aliases
alias home='cd ~'
alias cd..='cd ..'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'

# cd into the old directory
alias bd='cd "$OLDPWD"'

# Remove a directory and all files
alias rmd='/bin/rm  --recursive --force --verbose '

# aliases for multiple directory listing commands
alias la='ls -Alh'                # show hidden files
alias ls='ls -aFh --color=always' # add colors and file type extensions
alias lx='ls -lXBh'               # sort by extension
alias lk='ls -lSrh'               # sort by size
alias lc='ls -ltcrh'              # sort by change time
alias lu='ls -lturh'              # sort by access time
alias lr='ls -lRh'                # recursive ls
alias lt='ls -ltrh'               # sort by date
alias lm='ls -alh |more'          # pipe through 'more'
alias lw='ls -xAh'                # wide listing format
alias ll='ls -Fls'                # long listing format
alias labc='ls -lap'              # alphabetical sort
alias lf="ls -l | egrep -v '^d'"  # files only
alias ldir="ls -l | egrep '^d'"   # directories only
alias lla='ls -Al'                # List and Hidden Files
alias las='ls -A'                 # Hidden Files
alias lls='ls -l'                 # List

# alias chmod commands
alias mx='chmod a+x'
alias 000='chmod -R 000'
alias 644='chmod -R 644'
alias 666='chmod -R 666'
alias 755='chmod -R 755'
alias 777='chmod -R 777'

# Search command line history
alias h="history | grep "

# Search running processes
alias p="ps aux | grep "
alias topcpu="/bin/ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10"

# Search files in the current folder
alias f="find . | grep "

# Count all files (recursively) in the current folder
alias countfiles="for t in files links directories; do echo \`find . -type \${t:0:1} | wc -l\` \$t; done 2> /dev/null"

# To see if a command is aliased, a file, or a built-in command
alias checkcommand="type -t"

# Show open ports
alias openports='netstat -nape --inet'

# aliases for safe and forced reboots
alias rebootsafe='sudo shutdown -r now'
alias rebootforce='sudo shutdown -r -n now'

# aliases to show disk space and space used in a folder
alias diskspace="du -S | sort -n -r |more"
alias folders='du -h --max-depth=1'
alias folderssort='find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn'
alias tree='tree -CAhF --dirsfirst'
alias treed='tree -CAFd'
alias mountedinfo='df -hT'

# aliases for archives
alias mktar='tar -cvf'
alias mkbz2='tar -cvjf'
alias mkgz='tar -cvzf'
alias untar='tar -xvf'
alias unbz2='tar -xvjf'
alias ungz='tar -xvzf'

# Show all logs in /var/log
alias logs="sudo find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f"

# SHA1
alias sha1='openssl sha1'

alias clickpaste='sleep 3; xdotool type "$(xclip -o -selection clipboard)"'

# KITTY - alias to be able to use kitty features when connecting to remote servers(e.g use tmux on remote server)

alias kssh="kitty +kitten ssh"

# alias to cleanup unused docker containers, images, networks, and volumes

alias docker-clean=' \
  docker container prune -f ; \
  docker image prune -f ; \
  docker network prune -f ; \
  docker volume prune -f '

#######################################################
# SPECIAL FUNCTIONS
#######################################################
# Extracts any archive(s) (if unp isn't installed)
extract() {
	for archive in "$@"; do
		if [ -f "$archive" ]; then
			case $archive in
			*.tar.bz2) tar xvjf $archive ;;
			*.tar.gz) tar xvzf $archive ;;
			*.bz2) bunzip2 $archive ;;
			*.rar) rar x $archive ;;
			*.gz) gunzip $archive ;;
			*.tar) tar xvf $archive ;;
			*.tbz2) tar xvjf $archive ;;
			*.tgz) tar xvzf $archive ;;
			*.zip) unzip $archive ;;
			*.Z) uncompress $archive ;;
			*.7z) 7z x $archive ;;
			*) echo "don't know how to extract '$archive'..." ;;
			esac
		else
			echo "'$archive' is not a valid file!"
		fi
	done
}

# Searches for text in all files in the current folder
ftext() {
	# -i case-insensitive
	# -I ignore binary files
	# -H causes filename to be printed
	# -r recursive search
	# -n causes line number to be printed
	# optional: -F treat search term as a literal, not a regular expression
	# optional: -l only print filenames and not the matching lines ex. grep -irl "$1" *
	grep -iIHrn --color=always "$1" . | less -r
}

# Copy file with a progress bar
cpp() {
    set -e
    strace -q -ewrite cp -- "${1}" "${2}" 2>&1 |
    awk '{
        count += $NF
        if (count % 10 == 0) {
            percent = count / total_size * 100
            printf "%3d%% [", percent
            for (i=0;i<=percent;i++)
                printf "="
            printf ">"
            for (i=percent;i<100;i++)
                printf " "
            printf "]\r"
        }
    }
    END { print "" }' total_size="$(stat -c '%s' "${1}")" count=0
}

# Copy and go to the directory
cpg() {
	if [ -d "$2" ]; then
		cp "$1" "$2" && cd "$2"
	else
		cp "$1" "$2"
	fi
}

# Move and go to the directory
mvg() {
	if [ -d "$2" ]; then
		mv "$1" "$2" && cd "$2"
	else
		mv "$1" "$2"
	fi
}

# Create and go to the directory
mkdirg() {
	mkdir -p "$1"
	cd "$1"
}

# Goes up a specified number of directories  (i.e. up 4)
up() {
	local d=""
	limit=$1
	for ((i = 1; i <= limit; i++)); do
		d=$d/..
	done
	d=$(echo $d | sed 's/^\///')
	if [ -z "$d" ]; then
		d=..
	fi
	cd $d
}

# Automatically do an ls after each cd, z, or zoxide
cd ()
{
	if [ -n "$1" ]; then
		builtin cd "$@" && ls
	else
		builtin cd ~ && ls
	fi
}

# Returns the last 2 fields of the working directory
pwdtail() {
	pwd | awk -F/ '{nlast = NF -1;print $nlast"/"$NF}'
}

# Show the current distribution
distribution () {
    local dtype="unknown"  # Default to unknown

    # Use /etc/os-release for modern distro identification
    if [ -r /etc/os-release ]; then
        source /etc/os-release
        case $ID in
            fedora|rhel|centos)
                dtype="redhat"
                ;;
            sles|opensuse*)
                dtype="suse"
                ;;
            ubuntu|debian)
                dtype="debian"
                ;;
            gentoo)
                dtype="gentoo"
                ;;
            arch|manjaro)
                dtype="arch"
                ;;
            slackware)
                dtype="slackware"
                ;;
            *)
                # Check ID_LIKE only if dtype is still unknown
                if [ -n "$ID_LIKE" ]; then
                    case $ID_LIKE in
                        *fedora*|*rhel*|*centos*)
                            dtype="redhat"
                            ;;
                        *sles*|*opensuse*)
                            dtype="suse"
                            ;;
                        *ubuntu*|*debian*)
                            dtype="debian"
                            ;;
                        *gentoo*)
                            dtype="gentoo"
                            ;;
                        *arch*)
                            dtype="arch"
                            ;;
                        *slackware*)
                            dtype="slackware"
                            ;;
                    esac
                fi

                # If ID or ID_LIKE is not recognized, keep dtype as unknown
                ;;
        esac
    fi

    echo $dtype
}


DISTRIBUTION=$(distribution)
if command -v bat &> /dev/null || command -v batcat &> /dev/null; then
    if [ "$DISTRIBUTION" = "redhat" ] || [ "$DISTRIBUTION" = "arch" ]; then
        alias cat='bat'
    else
        alias cat='batcat'
    fi
fi

# Show the current version of the operating system
ver() {
    local dtype
    dtype=$(distribution)

    case $dtype in
        "redhat")
            if [ -s /etc/redhat-release ]; then
                cat /etc/redhat-release
            else
                cat /etc/issue
            fi
            uname -a
            ;;
        "suse")
            cat /etc/SuSE-release
            ;;
        "debian")
            lsb_release -a
            ;;
        "gentoo")
            cat /etc/gentoo-release
            ;;
        "arch")
            cat /etc/os-release
            ;;
        "slackware")
            cat /etc/slackware-version
            ;;
        *)
            if [ -s /etc/issue ]; then
                cat /etc/issue
            else
                echo "Error: Unknown distribution"
                exit 1
            fi
            ;;
    esac
}

# Automatically install the needed support files for this .bashrc file
install_bashrc_support() {
	local dtype
	dtype=$(distribution)

	case $dtype in
		"redhat")
			sudo yum install multitail tree zoxide trash-cli fzf bash-completion fastfetch
			;;
		"suse")
			sudo zypper install multitail tree zoxide trash-cli fzf bash-completion fastfetch
			;;
		"debian")
			sudo apt-get install multitail tree zoxide trash-cli fzf bash-completion
			# Fetch the latest fastfetch release URL for linux-amd64 deb file
			FASTFETCH_URL=$(curl -s https://api.github.com/repos/fastfetch-cli/fastfetch/releases/latest | grep "browser_download_url.*linux-amd64.deb" | cut -d '"' -f 4)

			# Download the latest fastfetch deb file
			curl -sL $FASTFETCH_URL -o /tmp/fastfetch_latest_amd64.deb

			# Install the downloaded deb file using apt-get
			sudo apt-get install /tmp/fastfetch_latest_amd64.deb
			;;
		"arch")
			sudo paru multitail tree zoxide trash-cli fzf bash-completion fastfetch
			;;
		"slackware")
			echo "No install support for Slackware"
			;;
		*)
			echo "Unknown distribution"
			;;
	esac
}

# IP address lookup
alias whatismyip="whatsmyip"
function whatsmyip () {
    # Internal IP Lookup.
    if command -v ip &> /dev/null; then
        echo -n "Internal IP: "
        ip addr show enp4s0 | grep "inet " | awk '{print $2}' | cut -d/ -f1
    else
        echo -n "Internal IP: "
        ifconfig enp4s0 | grep "inet " | awk '{print $2}'
    fi

    # External IP Lookup
    echo -n "External IP: "
    curl -s ifconfig.me
}

# View Apache logs
apachelog() {
	if [ -f /etc/httpd/conf/httpd.conf ]; then
		cd /var/log/httpd && ls -xAh && multitail --no-repeat -c -s 2 /var/log/httpd/*_log
	else
		cd /var/log/apache2 && ls -xAh && multitail --no-repeat -c -s 2 /var/log/apache2/*.log
	fi
}

# Edit the Apache configuration
apacheconfig() {
	if [ -f /etc/httpd/conf/httpd.conf ]; then
		sedit /etc/httpd/conf/httpd.conf
	elif [ -f /etc/apache2/apache2.conf ]; then
		sedit /etc/apache2/apache2.conf
	else
		echo "Error: Apache config file could not be found."
		echo "Searching for possible locations:"
		sudo updatedb && locate httpd.conf && locate apache2.conf
	fi
}

# Edit the PHP configuration file
phpconfig() {
	if [ -f /etc/php.ini ]; then
		sedit /etc/php.ini
	elif [ -f /etc/php/php.ini ]; then
		sedit /etc/php/php.ini
	elif [ -f /etc/php5/php.ini ]; then
		sedit /etc/php5/php.ini
	elif [ -f /usr/bin/php5/bin/php.ini ]; then
		sedit /usr/bin/php5/bin/php.ini
	elif [ -f /etc/php5/apache2/php.ini ]; then
		sedit /etc/php5/apache2/php.ini
	else
		echo "Error: php.ini file could not be found."
		echo "Searching for possible locations:"
		sudo updatedb && locate php.ini
	fi
}

# Edit the MySQL configuration file
mysqlconfig() {
	if [ -f /etc/my.cnf ]; then
		sedit /etc/my.cnf
	elif [ -f /etc/mysql/my.cnf ]; then
		sedit /etc/mysql/my.cnf
	elif [ -f /usr/local/etc/my.cnf ]; then
		sedit /usr/local/etc/my.cnf
	elif [ -f /usr/bin/mysql/my.cnf ]; then
		sedit /usr/bin/mysql/my.cnf
	elif [ -f ~/my.cnf ]; then
		sedit ~/my.cnf
	elif [ -f ~/.my.cnf ]; then
		sedit ~/.my.cnf
	else
		echo "Error: my.cnf file could not be found."
		echo "Searching for possible locations:"
		sudo updatedb && locate my.cnf
	fi
}


# Trim leading and trailing spaces (for scripts)
trim() {
	local var=$*
	var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters
	var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters
	echo -n "$var"
}
# GitHub Titus Additions

gcom() {
	git add .
	git commit -m "$1"
}
lazyg() {
	git add .
	git commit -m "$1"
	git push
}

function hb {
    if [ $# -eq 0 ]; then
        echo "No file path specified."
        return
    elif [ ! -f "$1" ]; then
        echo "File path does not exist."
        return
    fi

    uri="http://bin.christitus.com/documents"
    response=$(curl -s -X POST -d @"$1" "$uri")
    if [ $? -eq 0 ]; then
        hasteKey=$(echo $response | jq -r '.key')
        echo "http://bin.christitus.com/$hasteKey"
    else
        echo "Failed to upload the document."
    fi
}

#######################################################
# Set the ultimate amazing command prompt
#######################################################

alias hug="hugo server -F --bind=10.0.0.97 --baseURL=http://10.0.0.97"

# Check if the shell is interactive
if [[ $- == *i* ]]; then
    # Bind Ctrl+f to insert 'zi' followed by a newline
    bind '"\C-f":"zi\n"'
fi

export PATH=$PATH:"$HOME/bin:$HOME/scripts:$HOME/.local/bin:$HOME/.cargo/bin:/var/lib/flatpak/exports/bin:/.local/share/flatpak/exports/bin"
export PATH=$PATH:/usr/local/go/bin

eval "$(starship init bash)"
eval "$(zoxide init bash)"

# Auto-start DWM if we're on TTY1 and .xinitrc contains "exec dwm"
if [[ "$(tty)" == "/dev/tty1" ]] && [ -f "$HOME/.xinitrc" ] && grep -q "^exec dwm" "$HOME/.xinitrc"; then
    startx
fi
export PATH=$PATH:$HOME/go/bin



1 Like
export PS1='`if [ $? = 0 ]; then echo "\[\e[0;32m\] ✔ "; else echo "\[\e[0;31m\] ✘ "; fi`\[\e[0;35m\]\u\[\e[0;36m\] @\[\e[0;34m\]\h: \[\e[0;35m\]\w \[\e[0;33m\]$\[\e[0m\] '
#PS1='\[\033[;32m\]┌──(\[\033[1;34m\]\u\033[1;36m\]@\h\[\033[;32m\])-[\[\033[0;1m\]\w\[\033[;32m\]]\n\[\033[;32m\]└─\[\033[1;34m\]\$\[\033[0m\] '

# pacman-yay
alias upa='eos-update --aur'

alias pacs='pacman -Ss'
alias lpacs='pacman -Qs'
alias pacr='sudo pacman -Rs'
alias paci='sudo pacman -S'
alias pacu='sudo pacman -Syu'
alias pacc='sudo pacman -Scc'
alias unlock='sudo rm /var/lib/pacman/db.lck'
alias paco='sudo pacman -Rns $(pacman -Qdtq)'

alias yayu='yay -Sua'
alias yayc='yay -Scc'
alias yays='yay -Ss'
alias lyays='yay -Qs'
alias yayr='yay -Rs'
alias yayi='yay -S'
alias iyay='yay -Ps'

#grub update/install
alias grubup='sudo grub-mkconfig -o /boot/grub/grub.cfg'
alias grubin='sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=EndeavourOS-grub'

## Use the up and down arrow keys for finding a command in history
## (you can write some initial letters of the command first).
bind '"\e[A":history-search-backward'
bind '"\e[B":history-search-forward'

#path
export PATH=/home/fog/.local/bin:/home/fog/.local/scripts:$PATH

#merge
alias merge="xrdb -merge ~/.Xresources"
1 Like

I really have to go through myne one day and clean it up. But here is what I have

export TERM="xterm-256color"

source /home/thefrog/bin/etc/colors.config  
#<----[ Use the up and down arrow keys for finding a command in history
#<----[ you can write some initial letters of the command first.
bind '"\e[A":history-search-backward'
bind '"\e[B":history-search-forward'

#<----[ start custom functions
function hg
{
#<----[ show the history of command
    history | grep "$1"
}

function PkgFind 
{
	grep $1 /var/log/pacman.log | fzf --border=bold
}


function PkgSearch
{
	pacseek -s $1
}
function InstallGroup
{
#<----[ from dalto eos
	$PKG=$1
	sudo pacman -S $PKG --needed --asdeps $(expac -Ss '%o' $PKG) && pacman -D --asexplicit $PKG
}

#<----[ end custom functions
HISTTIMEFORMAT="%F %T "

HISTCONTROL=ignoredups

HISTSIZE=2000

HISTFILESIZE=2000

shopt -s histappend

export EDITOR='micro'
################################################################################
#<----[  Begin My Aliases

#<----( Package Management Commands
alias in='sudo pacman -S --noconfirm'        #<----[ simplified commands for pacman install remove and force remove
alias gin='InstallGroup'
#<----[ use caution with these alwasy try a minimal removal first as to not break other packages.
alias remove='sudo pacman -R --noconfirm'
alias pacman-kill='sudo pacman -Rns --noconfirm'
alias pacman-clean='sudo pacman -Sc'          #<----[ this alias will clean basic packages in cache along with orphan files and other
alias pacman-clean-all='sudo pacman -Scc'        #<----[ this alias will clean all packages in cache along with orphan files and other
#<----[ package information commands
alias mkpkg-list="pacman -Qne | awk {'print $1'} > /home/thefrog/bin/sys/Packages.txt" #<----[ create a package list of installed packages on the system
alias pkg-list-aur='pacman -Qm'      #<----[ AUR packages installed
alias pkgsearch='PkgSearch'  #<----[ search the repo for packages
alias pkgfind='PkgFind'      #<----[ find local package
alias pkgnfo='pacman -Si'  #<----[ information about a package
alias pkg-list='pacman -Qq'  #<----[ display the package list on screen
alias pkg-count='pacman -Qq | wc -l'  #<----[ just show the package count
#<----[ package fixes
alias unlock-pacman='sudo rm /var/lib/pacman/db.lck'   #<----[ run this if pacman doesn't finish do to a shutdown or another case. Only use when needed.p
alias keyfix='sudo pacman -Sy archlinux-keyring'      #<----[ Fix issues with pacman not upgrading
#<----[ package mirrors and upgrade management
alias up='/home/thefrog/bin/upgrade.sh'  #<-----[runs my update scrip that uses paru to update the system then hblock to update hosts file
alias vu='checkupdates -n ; paru -Qu' #<----[ view updates for both standard and aur packages
alias checkupdates4='/home/thefrog/bin/checkupdates4.sh'   #<----[ checks for specific updates found on endeavour forums
alias showupdates='Viewupdates ; paru -Qu'  #<----[ show updates for both standard and aur packages
alias ratemirrors="rate-mirrors --protocol=https arch --max-delay 7200  | sudo tee /etc/pacman.d/mirrorlist && rate-mirrors --protocol=https endeavouros | sudo tee /etc/pacman.d/endeavouros-mirrorlist" #<----[ rate arch and endeavour mirrors found on endeavour forums
alias clean-pc='paccache -r'
alias clean-rm='paccache -ruk0'

#<----( Root Commands
alias adblock='sudo hblock'          #<----[ this alias will update the host file to help block ads. 
alias iown='sudo chown -R thefrog .'     #<----[ this is usefull if you format or repartition drive as permissions are automatically set to root through gparted. also for working with recovered files
alias iso2usb='sudo /home/thefrog/bin/iso2usb.sh' #my iso 2 usb converter a simple bash script to convert ISO files to usb ((depends on dd. sync))
alias hwreport='sudo lshw > /home/thefrog/hardware.nfo'      #<----[ this creates a harware report on the hardware on current computer. saving it to a file is necessary if you want to read it later.
alias hardinfo='sudo hardinfo'      #<----[ this is a graphical user interface of current system information
alias photorec='sudo /home/thefrog/bin/testdisk/phototrec'
alias elt='eos-log-tool'

#<----[ various ventoy commands for differnt boot options
alias vtoy='sudo ventoy -i -g -S' #<----[ gpt partion secure boot disabled
alias svtoy='sudo ventoy -i -s' #<----[ gpt partition secure boot enabled
alias Lvtoy='sudo ventoy -i' #<----[ mbr partition legacy boot
alias lvtoy='sudo ventoy -l' #<----[ list ventoy information
alias uvtoy='sudo ventoy -u' #<----[ update ventoy on device.

#<----( Root Files
alias efstab='sudo micro /etc/fstab'  #<----[ this one allows me to edit my fstab file in a command line editor

#<----( System Commands
alias services='systemctl list-units --type=service'		#<----[ systemd services status list
alias audio="pactl info | grep 'Server Name'"
#alias video='nvidia-smi --query-gpu=gpu_name --format=csv|sed -n 2p'
alias h='history'
alias cls='clear'  #<----[ probably my oldest alias
alias mem='free -h | sed s/"Swap:             0B          0B          0B"//g'   #<----[ a standard alias carried over time
alias ls='eza --long --tree --level=1'
alias cat='bat'
#alias copy='cp -Rvi'    #<----[ ask before overwrite
alias fc-cash='fc-cache -fv'   #<----[ fontcache clean
alias icon-cache='gtk-update-icon-cache'
alias mktar='tar cfv'  #<----[ tar command to create file verbosly
alias mkexe='chmod u+x'  #<----[ a standard alias carried over time
alias rb='reboot'   #<----[ compliments of SystemD~
alias sd='shutdown now'   #<----[ compliments of SystemD~
# awk '$1 ~ "YYYY-MM-DD" && $3 == "upgraded" { print $4; }' /var/log/pacman.log
alias clean-journal='journalctl --vacuum-time=4weeks'

#<----[ Primary Monitor Brightness controll
alias day='xrandr --output DisplayPort-0 --brightness 1.0 --gamma 1.0:1.0:1.0'  #<----[ Super+l Keyboard shortcut
alias drk='xrandr --output DisplayPort-0 --brightness 0.5 --gamma 1.0:1.0:0.7'   #<----[ Super+n Keyboard shortcut

#<----( Conky 
alias frog-default='conky -c /home/thefrog/.config/conky/frog-default.conkyrc'
alias clock='conky -c /home/thefrog/.config/conky/frog-clock.conkyrc'
alias distro='conky -c /home/thefrog/.config/conky/distro.conkyrc'
alias weather='conky -c /home/thefrog/.config/conky/weather.conkyrc'

#<----( Android
alias adbss='adb start-server'
alias mobile='adb devices'
alias dbus='/home/thefrog/bin/droidbus.sh'
alias picture-pull='/home/thefrog/bin/picture-pull.sh'
alias pp='/home/thefrog/bin/picture-pull.sh'

#<----( Common Commands
alias show-alias='grep "alias" /home/thefrog/.bashrc'
alias speedtest='/home/thefrog/bin/ookla/speedtest'    #<----[check upload/download speeds 
alias st='/home/thefrog/bin/ookla/speedtest'    #<----[check upload/download speeds 
alias show-weather='curl wttr\.in/?0?A?u'	#<----[   'http://v2.wttr.in/'
alias show-weatherext='xfce4-terminal --hide-menubar --title "Simple Weather Alternative" --geometry 75x45 -x bash -c "curl 'http://v2.wttr.in/'; read -N1;"'
alias filecount='eza * | wc -l'  #<----[ show the pwd file count non recursive
alias show-bin='eza /home/thefrog/bin'
alias mklist='eza -Raghl ./ > '$PWD'.lst'  #<----[ create a list of the current directory and all children
alias copy='rsync -avhP'
alias session='XDG_SESSION_TYPE'
alias web='setsid brave'
alias youtube='ytfzf -t'
alias gdi='fetch-iso'
alias x='exit'

#<----( Save and Export Personal Settings
alias export-configs='rm -rf .cache && cp -rvu .* /run/media/thefrog/Home-Configs/Desktop/'   #<----[ 64g usb thumbdrive
alias export-bin='rsync -auvhP ./bin /run/media/thefrog/Configs/Desktop/'
alias store-configs='rm -rf .cache && cp -rvu .* /run/media/thefrog/6tb-XData/Configs/'
alias store-bin='rsync -auvhP ./bin /run/media/thefrog/6tb-XData/Configs/'

#<----( My Scripts
alias padbus='/home/thefrog/bin/padbus.sh'       #<----[ my computer backup script. 
alias ds='/home/thefrog/bin/tads.sh'      #<----[ displays basic disk information
alias myip='/home/thefrog/bin/myip.sh'      #<----[ shows both your local ip and the mothership assigned IP
alias mp4it='/home/thefrog/bin/mp4it.sh'   #<----[ runs mp4it.sh as just mp4it
alias getit='/home/thefrog/bin/getit.sh'   #<<---- a youtube-dl front end 
alias pt='/home/thefrog/bin/cktemp.sh'		#<----[ outputs the temprarture of cpu/gpu Celius is displayed 
#<----[ End Aliases

#<----[ extra's
                   
export MANPAGER="bat -l man -p'"
shell="$(basename ${SHELL})"    #<----[ Fonts needed
hosts_icon=🖵			#<----[ Noto Sans Symbols2
user_icon=			#<----[ Segoe MDL2 Assets
bash_icon=              #<----[ octicons
happy_icon= 		#<----[ IcoMoon-Free
mad_icon=			#<----[ IcoMoon-Free
arrow_icon=🖝           #<----[ Noto Sans Symbols2
espace=' '
#<----[ custom prompt
PS1="\[\e[37m\][\d \t]\[\e[01;31m\]\n(in) \[\e[01;35m\]install package,\[\e[01;31m\](vu) \[\e[01;35m\]view updates,\[\e[01;31m\](up) \[\e[01;35m\]install updates,\[\e[01;31m\](show-alias) \[\e[01;35m\]for a full list of alias available. \n\`if [ \$? = 0 ]; then echo \[\e[33m\]${happy_icon} \[\e[0m\]; else echo \[\e[31m\]${mad_icon} \[\e[0m\]; fi\`\[\e[00m\]\u@\h:\w\[\e[35m\]${arrow_icon}${espace}\[\e[0m\] "
#PS1="\[\e[37m\][\d \t]\[\e[01;31m\]\n "Place something here" \n\`if [ \$? = 0 ]; then echo \[\e[33m\]${happy_icon} \[\e[0m\]; else echo \[\e[31m\]${mad_icon} \[\e[0m\]; fi\`\[\e[00m\]\u@\h:\w\[\e[35m\]${arrow_icon}${espace}\[\e[0m\] "
#<----[ add $HOME/bin to path and export
PATH=$PATH:$HOME/bin

export PATH
#<----[ custom bash titile
echo -e "${TITLEBG}${TITLEFG}${TITLE_ICONS}${bash_icon} ${TITLEFG}$shell                                                        ${TITLE_ICONS}${user_icon} ${TITLEFG}$USER  ${Normal}"
echo
fastfetch -c /home/thefrog/.config/fastfetch/Configs/prompt.jsonc
1 Like
alias bigfile="fd -tf -X du -h | sort -rh | head -15"
alias bigdir="du -hsx */ | sort -rh | head -15"
alias bigpac="expac -H M '%m\t%n' | sort -rh | head -15"
alias lasthour="fd . -tf -c always -E cache -E git --changed-within=1hour"
alias pac-eos='comm -12 <(pacman -Qq | sort) <(pacman -Sql endeavouros | sort)'
alias wt="curl 'wttr.in/city_name?Q'"

lasthour shows modified files within the last hour in the current directory, pac-eos shows installed packages from EOS repo, wt shows the weather for three days.

2 Likes

Posting from a Vanilla Fedora install:


# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]; then
    PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
if [ -d ~/.bashrc.d ]; then
    for rc in ~/.bashrc.d/*; do
        if [ -f "$rc" ]; then
            . "$rc"
        fi
    done
fi
unset rc

In my Linux Mint the .bashrc looks like this:

# do not save the following commands in .bash_history
HISTIGNORE="?:??:cd*:history*:man *:exit*:reboot*:poweroff*:sudo*:truecrypt -P*"

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[01;34m\]@\[\033[01;33m\]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

HISTIGNORE is to not fullfill my .bash_history with unnecessary or unwanted content like one- or two-letter-words, history of bash, manpages, exit the terminal or power down the system.

The colored prompt starts with a green username for my login, the .bashrc for user root is different, that username is displayed in red color.

Some aliases are stored in .bash_aliases and will be included.

Whoaah did not even know this was possible lol. Been using Linux for over 3 years :rofl:. I am glad i use a arch based distro, everyday you learn from it.

1 Like

Would it not make sense to check if the directory $HOME/.local/bin and/or $HOME/bin exists or not before adding them to the PATH variable?

Wow that is a neat trick for HISTIGNORE. Please give my thanks to the developers of Mint. I do not recall seeing something like this somewhere else. Omitting all a single letter or double letter command is cool, as most of them are typically aliases created by user in their own .bash_aliases. One concern on the commands to omit, the list also includes all the sudo command executed, i.e. sudo*. Does that make sense? Is it some security feature? Or something else?

Please do share what is there in the .bash_aliases

I guess for it to make any practical sense, the directories should exist in those locations.
However, if they don’t, the locations will still be added to the PATH and bash will not generate any error messages.

Example with those directories not existing:

$ echo $PATH
/home/cactux/.local/bin:/home/cactux/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/var/lib/flatpak/exports/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

My point was that if we add a directory in the $PATH that does not exist then when BASH iterates through these directory to execute the command it will take some time. So it helps keeping BASH as small as possible to speed up the execution.

Also an observation there seems to be an awful lot of Perl directories in your $PATH. Are you an avid user of Perl?

I see. The snippet I posted wasn’t made by me. It was “by default” in .bashrc in a Fedora install. Anyways I get your point.

To tell the truth, I have no idea how they got there.

Not to post the whole thing .. heres some plasma-specific bits ..

# Seems this is what plasma uses for xkill-like function on wayland
kkill() {
        qdbus6 org.kde.KWin /KWin killWindow
}
plasma-poweroff() {
#Gracefully logout/shutdown/restart plasma. Should prefer over systemctl, halt, etc.
        OPTIND=1         # Reset in case getopts has been used previously in the shell.
        # Initialize our own variables:
        show_help() {
                cat <<EOF

l = logout
r = reboot
s = shutdown

EOF
        }

        while getopts "h?lrs" opt; do
                case "$opt" in
                        h|\?)
                        show_help
                        ;;
                        l)
                        qdbus6 org.kde.Shutdown /Shutdown logout
                        ;;
                        r)
                        qdbus6 org.kde.Shutdown /Shutdown logoutAndReboot
                        ;;
                        s)
                        qdbus6 org.kde.Shutdown /Shutdown logoutAndShutdown
                        ;;
                esac
        done
        shift $((OPTIND-1))
        [ "${1:-}" = "--" ] && shift
}