Files
dotfiles/pi/.bash_profile
T
Adamska 6bfb112b2a init
2023-09-09 16:09:18 -04:00

213 lines
6.7 KiB
Bash
Executable File

# ==============================================================================
# Auth: Alex Celani
# File: .bash_profile
# Revn: 03-06-2022 2.3
# Func: Define user-made aliases and functions to make using the terminal easier
#
# TODO: fix alias to cd
# color files in ls, and color different file differently
# pick a new color and prompt scheme
# rename mkcd()
# ==============================================================================
# CHANGE LOG
# ------------------------------------------------------------------------------
# ??-??-2018: init
# 05-31-2019: added header comment block
# 06-01-2019: fixed newcd, added alias of cc to newcd
# commented functions
# removed mkcd
# made hide, ssy, and SSY aliases instead of functions
# 06-21-2019: finally wrote Func field in header
# 03-25-2020: copied from .bashrc
# removed school-based functions to go to directories that do not
# exist on boofnet
# 05-11-2020: added control structure to detect architecure and make decisions
# about directories for grad() and src()
# 09-29-2020: wrote gitMake()
# renamed newcd() to mkcd()
# 10-07-2020: fixed src() and grad() not working on colossus by changing call
# to arch from "arch" to "$(arch)"
# added call to src() at the beginning of the file
# 10-12-2020: added -F to ll and l aliases
# 10-21-2020: added alias to spotify to make it work globally to
# avoid setting PATH
# added alias for neofetch
# finally made PS1 work with PROMPT_COMMAND
# made short function for showing short now playing
# 10-24-2020: deleted .bashrc; call to static .bashrc on colossus
# will change source to .bash_profile
# changed alias for spotify to sp
# added parse_git_branch() to get branch name for PS1
# changed grad() to work without probing the architecture
# removed colors from PS1, got obnoxious
# added mkcd() again
# 01-18-2021: added alias for 'remake'
# 03-06-2022: added alias for donut, and wordle executables
#
# ==============================================================================
# User specific aliases and functions
## Aliases
### Shows everything in detail, except . and ..
alias ll="ls -AFGhl"
alias l="ls -AFGhl"
### Used for login
alias s="ssh sacelani@colossus.it.mtu.edu"
### Move to desktop fast
alias desk="cd ~/Desktop"
### Move to desktop fast, verbose
alias DESK="CD ~/Desktop"
### Go home
alias home="cd ~"
### Go home, verbose
alias HOME="CD ~"
### Control Spotify with command line
alias sp="~/spotify"
### neofetch
alias neofetch="~/neofetch"
### donut
alias donut="~/donut"
### wordle
alias wordle="~/wordle"
alias worlde="~/wordle"
## Aliases
## Exports
# Holy shit, export PS1 kept failing, so I had to make it reload every
# time a command is run. Hacky and probably really slow, but it works
# PROMPT_COMMAND is a command run before it prints the prompt
# export PS1 is the command prompt, won't run in this file, only runs
# in actual terminal, or here apparently
# \e[0;31m is red
# \W is the current folder
# \e[0;34m is blue
# ' -> ' is a space and then an arrow, and then a space
# \e0;31m is red again
# \e[m is no color
#export PROMPT_COMMAND="export PS1='\[\e[0;32m\]\W\[\e[1;31m\] -> \[\e[0;32m\]'"
#export PROMPT_COMMAND="export PS1='\e[0;31m$(parse_git_branch) \e[m\W -> '"
export PROMPT_COMMAND="export PS1='\W -> '"
#export LSCOLORS=exfxcxdxbxegabagacad
## Functions
### LaTeX make function
tecc() {
pdflatex $1 >> /dev/null # compile tex file, output dies
rm $1.log # get rid of trash files
rm $1.aux
}
### Print name of git branch
parse_git_branch() {
# call git branch to return list of all branches
# redirect output from 2 (error) to null
# pipe standard output to grep, get line with *
# pipe THAT to function that removes the leading space and *
git branch 2>/dev/null | grep '^*' | colrm 1 2
}
### Print Now Playing, short
playing() {
echo -n $(~/spotify status artist) # Print the artist, no newline
echo -n " - " # Print delimiter
echo $(~/spotify status track) # Print track, with newline
}
### Change branch name on Github to daddy
daddy() {
if [ "$#" -eq 1 ]; then
git branch -m master $1
git push -u origin $1
else
git branch -m master daddy
git push -u origin daddy
fi
echo "Log in to GitHub and change the default branch"
echo "Then call 'daddy2'"
}
daddy2() {
git push origin --delete master
git remote set-head origin -a
}
### Detect architecture and load correct source file
src() {
if [ arch == "x86_64" ]; then # Check to see if using colossus
source ~/.bashrc # Reload colossus bash profile
else # If not colossus, boofnet
source ~/.bash_profile # Reload boofnet bash profile
fi
}
### Change directory and show contents
CD() {
cd $1 # Move
clear # Clear screen
ll # Print directory
}
### If cd fails, make the new directory and cd in
mkcd() {
oldD=$(pwd) # Snag the current directory
cd $1 >/dev/null 2>/dev/null # cd, direct error output to null
newD=$(pwd) # Snag current directory again
if [ $oldD == $newD ]; then # If new is same as old, didn't move
mkdir $1 # Make the new directory
cd $1 # cd in
fi
}
### Jump to grad school directory, user specified semester if possible
grad() {
old=$(pwd);
cd ~/Desktop/grad 2>/dev/null
if [ $old == $(pwd) ]; then
cd ~/Documents/everything 2>/dev/null
fi
# if [ arch == "x86_64" ]; then # Check to see using colossus
# cd ~/Desktop/grad/ # Jump to grad directory, colossus
# else # If not colossus, boofnet
# cd ~/Documents/everything # Jump to grad directory, boofnet
# fi
if [ "$#" -eq 1 ]; then # See if user entered a semester argument
cd "semester-$1" 2>/dev/null # Go to semester, error silently
fi
}
### Take new repository and connect it to a Github repository
gitMake() {
if [ "$#" -eq 1 ]; then
# These three lines were given by github.com
git remote add origin https://github.com/sacelani/$1.git
git branch -M master
git push -u origin master
else # If the user doesn't give a name for the repo
echo -e "Usage:: gitMake REPO" # Print usage
echo -e "\tConnect local repo REPO to Github repo"
fi
}
## Functions
. "$HOME/.cargo/env"