From 9b670f214a4bf96a373037e12c432b5a328a55ab Mon Sep 17 00:00:00 2001 From: "Matthieu Fortin (CPC/CCP)" Date: Thu, 24 Oct 2024 08:01:19 -0400 Subject: [PATCH] revert --- bash/.bashrc | 465 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 299 insertions(+), 166 deletions(-) diff --git a/bash/.bashrc b/bash/.bashrc index 22494e9..bf31eda 100644 --- a/bash/.bashrc +++ b/bash/.bashrc @@ -1,42 +1,29 @@ #!/bin/bash - -# Check for interactive shell iatest=$(expr index "$-" i) -# Display Fastfetch if available [ -f /usr/bin/fastfetch ] && fastfetch -c ~/.config/fastfetch/config-compact.jsonc +[ -f /etc/bashrc ] && . /etc/bashrc +[ -f /usr/share/bash-completion/bash-completion ] && . /usr/share/bash-completion/bash-completion +[ -f /etc/bash_completion ] && . /etc/bash_completion -# Source system-wide bashrc and completion files if they exist -for file in /etc/bashrc /usr/share/bash-completion/bash-completion /etc/bash_completion; do - [ -f "$file" ] && . "$file" -done +if [[ $iatest -gt 0 ]]; then bind "set bell-style visible"; fi -# Configure bell style for interactive shells -[[ $iatest -gt 0 ]] && bind "set bell-style visible" - -# History settings +# History export HISTFILESIZE=10000 export HISTSIZE=500 export HISTCONTROL=erasedups:ignoredups:ignorespace -# Set vi mode for command line -set -o vi -bind 'set show-mode-in-prompt on' -set vi-ins-mode-string \1\e[6 q\2 -set vi-cmd-mode-string \1\e[2 q\2 - -# Shell options -shopt -s checkwinsize histappend +shopt -s checkwinsize +shopt -s histappend PROMPT_COMMAND='history -a' -# Terminal settings [[ $- == *i* ]] && stty -ixon -# Auto-completion settings -[[ $iatest -gt 0 ]] && { - bind "set completion-ignore-case on" - bind "set show-all-if-ambiguous on" -} +# Ignore case on auto-completion +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 # Default editor export EDITOR=nvim @@ -48,12 +35,14 @@ alias snano='sedit' alias vim='nvim' alias cat='bat' -# Enable colors for various commands +# 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:' -alias grep="/usr/bin/grep --color=auto" +#export GREP_OPTIONS='--color=auto' #deprecated +alias grep="/usr/bin/grep $GREP_OPTIONS" +unset GREP_OPTIONS -# Configure man page colors +# 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' @@ -63,12 +52,25 @@ export LESS_TERMCAP_ue=$'\E[0m' export LESS_TERMCAP_us=$'\E[01;32m' ####################################################### -# GENERAL ALIASES +# GENERAL ALIAS'S ####################################################### -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$//'\'' )"' +# 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='edit ~/.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"' + +# Alias's to modified commands alias cp='cp -i' alias mv='mv -i' alias rm='trash -v' @@ -83,30 +85,38 @@ 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 ../../../..' -alias bd='cd "$OLDPWD"' -alias rmd='/bin/rm --recursive --force --verbose ' -alias la='ls -Alh' -alias ls='ls -aFh --color=always' -alias lx='ls -lXBh' -alias lk='ls -lSrh' -alias lc='ls -lcrh' -alias lu='ls -lurh' -alias lr='ls -lRh' -alias lt='ls -ltrh' -alias lm='ls -alh | more' -alias lw='ls -xAh' -alias ll='ls -Fls' -alias labc='ls -lap' -alias lf="ls -l | grep -E -v '^d'" -alias ldir="ls -l | grep -E '^d'" -# File permission aliases +# cd into the old directory +alias bd='cd "$OLDPWD"' + +# Remove a directory and all files +alias rmd='/bin/rm --recursive --force --verbose ' + +# Alias's 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 -lcrh' # sort by change time +alias lu='ls -lurh' # 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 | grep -E -v '^d'" # files only +alias ldir="ls -l | grep -E '^d'" # directories only + +# alias chmod commands alias mx='chmod a+x' alias 000='chmod -R 000' alias 644='chmod -R 644' @@ -114,196 +124,319 @@ alias 666='chmod -R 666' alias 755='chmod -R 755' alias 777='chmod -R 777' -# History search +# Search command line history alias hs="history | fzf " + +# 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' + +# Alias's for safe and forced reboots alias rebootsafe='sudo shutdown -r now' alias rebootforce='sudo shutdown -r -n now' -alias diskspace="du -S | sort -n -r | more" + +# Alias's 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' + +# Alias's 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)"' + ####################################################### # SPECIAL FUNCTIONS ####################################################### +chezedit() { + if [ -z "$1" ]; then + echo "Usage: chezedit " + return 1 + fi + chezmoi edit "$1" && chezmoi apply "$1" +} + +# 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 + 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() { - grep -iIHrn --color=always "$1" . | less -r + # -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 - total_size="$(stat -c '%s' "$1")" - strace -q -ewrite cp -- "$1" "$2" 2>&1 | - awk -v total_size="$total_size" '{ - 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 "" }' + 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() { - cp "$1" "$2" && [ -d "$2" ] && cd "$2" + if [ -d "$2" ]; then + cp "$1" "$2" && cd "$2" + else + cp "$1" "$2" + fi } +# Move and go to the directory mvg() { - mv "$1" "$2" && [ -d "$2" ] && cd "$2" + 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" + mkdir -p "$1" + cd "$1" } +# Goes up a specified number of directories (i.e. up 4) up() { - local d="" - local limit=$1 - for ((i = 1; i <= limit; i++)); do - d="$d/.." - done - d=${d#/} # Remove leading slash - cd "${d:-..}" + 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 } -cd() { - builtin cd "$@" && ls +# 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}' + pwd | awk -F/ '{nlast = NF -1;print $nlast"/"$NF}' } -distribution() { - local dtype="unknown" - [ -r /etc/os-release ] && { - source /etc/os-release - case $ID in - fedora|rhel|centos) dtype="redhat" ;; - sles|opensuse*) dtype="suse" ;; - ubuntu|debian) dtype="debian" ;; - gentoo) dtype="gentoo" ;; - arch) dtype="arch" ;; - slackware) dtype="slackware" ;; - esac - } - echo "$dtype" +# 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) + dtype="arch" + ;; + slackware) + dtype="slackware" + ;; + *) + # If ID is not recognized, keep dtype as unknown + ;; + esac + fi + + echo $dtype } +# Show the current version of the operating system ver() { - local dtype=$(distribution) - case $dtype in - redhat) [ -s /etc/redhat-release ] && cat /etc/redhat-release || cat /etc/issue ;; - suse) cat /etc/SuSE-release ;; - debian) lsb_release -a ;; - gentoo) cat /etc/gentoo-release ;; - arch) cat /etc/os-release ;; - slackware) cat /etc/slackware-version ;; - *) [ -s /etc/issue ] && cat /etc/issue || echo "Error: Unknown distribution" ;; - esac + 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 } -whatismyip() { - echo -n "Internal IP: " - if command -v ip &>/dev/null; then - /sbin/ip addr show wlan0 | awk '/inet /{print $2}' | cut -d/ -f1 - else - /sbin/ifconfig wlan0 | awk '/inet /{print $2}' - fi - echo -n "External IP: " - curl -s ifconfig.me +# IP address lookup +alias whatismyip="whatsmyip" +function whatsmyip () +{ + # Internal IP Lookup. + if [ -e /sbin/ip ]; then + echo -n "Internal IP: " + /sbin/ip addr show wlan0 | grep "inet " | awk -F: '{print $1}' | awk '{print $2}' + else + echo -n "Internal IP: " + /sbin/ifconfig wlan0 | grep "inet " | awk -F: '{print $1} |' | awk '{print $2}' + fi + + # External IP Lookup + echo -n "External IP: " + curl -s ifconfig.me } +# Trim leading and trailing spaces (for scripts) trim() { - local var="$*" - var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace - var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace - echo -n "$var" + local var=$* + var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters + var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters + echo -n "$var" } -# OS-specific aliases for Arch -if [[ "$(distribution)" == "arch" ]]; then - alias \ - pacfiles='pacman -F' \ - pacfileupg='sudo pacman -Fy' \ - pacin='sudo pacman -S' \ - pacins='sudo pacman -U' \ - pacinsd='sudo pacman -S --asdeps' \ - paclean='sudo pacman -Sc' \ - pacloc='pacman -Qi' \ - paclocs='pacman -Qs' \ - paclr='sudo pacman -Scc' \ - pacls='pacman -Ql' \ - paclsorphans='sudo pacman -Qdt' \ - pacmanallkeys='sudo pacman-key --refresh-keys' \ - pacmir='sudo pacman -Syy' \ - pacown='pacman -Qo' \ - pacre='sudo pacman -R' \ - pacrem='sudo pacman -Rns' \ - pacrep='pacman -Si' \ - pacreps='pacman -Ss' \ - pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)' \ - pacupd='sudo pacman -Sy' \ - pacupg='sudo pacman -Syu' +# OS Specific aliases +if [[ "$(distribution)" = "arch" ]]; then + alias \ + pacfiles='pacman -F' \ + pacfileupg='sudo pacman -Fy' \ + pacin='sudo pacman -S' \ + pacins='sudo pacman -U' \ + pacinsd='sudo pacman -S --asdeps' \ + paclean='sudo pacman -Sc' \ + pacloc='pacman -Qi' \ + paclocs='pacman -Qs' \ + paclr='sudo pacman -Scc' \ + pacls='pacman -Ql' \ + paclsorphans='sudo pacman -Qdt' \ + pacmanallkeys='sudo pacman-key --refresh-keys' \ + pacmir='sudo pacman -Syy' \ + pacown='pacman -Qo' \ + pacre='sudo pacman -R' \ + pacrem='sudo pacman -Rns' \ + pacrep='pacman -Si' \ + pacreps='pacman -Ss' \ + pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)' \ + pacupd='sudo pacman -Sy' \ + pacupg='sudo pacman -Syu' fi -# GitHub shortcuts +# GitHub Titus Additions gcom() { - git add . && git commit -m "$1" + git add . + git commit -m "$1" } - lazyg() { - git add . && git commit -m "$1" && git push + git add . + git commit -m "$1" + git push } -# PATH modifications -export PATH="$PATH:$HOME/.local/bin:/var/lib/flatpak/exports/bin:$HOME/.local/share/flatpak/exports/bin:$HOME/.npm/bin" +bind '"\C-f":"zi\n"' -# Initialize Starship, Zoxide, and other tools +export PATH=$PATH:"$HOME/.local/bin:/var/lib/flatpak/exports/bin:$HOME/.local/share/flatpak/exports/bin:$HOME/.npm/bin" + +# Install Starship - curl -sS https://starship.rs/install.sh | sh eval "$(starship init bash)" +#eval "$(oh-my-posh init bash --config "~/.cache/oh-my-posh/themes/catppuccin_mocha.omp.json")" eval "$(zoxide init bash)"