Skip Navigation

Your best terminal aliases

What are your most liked alias for long commands or just to give them better names.

Mine are:

 
    
alias load="source .load.sh"
alias eload="$EDITOR .load.sh"
alias gpush="git push"
alias gadd="git add --all"
alias gcommit="git commit -m "
alias gst="git status -s"
alias gpull="git pull"


  
80 comments
  • alias weather='curl wttr.in'

    • That is really neat. I never knew I needed that.

    • I found a function version of this version somewhere. Same thing except it defaults to my local area but can be overridden if you specify a different zip code.

       
          
      weather() {
       if [ $(command -v curl) ]; then
         if ! (($#)); then
           curl wttr.in/44113
         else
           curl wttr.in/$1
         fi
       else
         echo "curl not installed. Aborting."
       fi
      }
      
        
  • I always set these because I've been burned too many times:

    Turn on interactive mode for dangerous commands

     
        
    alias cp='cp -iv'
    alias mv='mv -iv'
    alias rm='rm -iv'
    
      
  • Here are mine. Sorry for the mouth full, but I think people may benefit from some of these :)

     
        
    alias ll="ls -alkhF"
    alias l="ls -1"
    
    # BE CAREFUL WITH THIS AND COULD RETURN COLOR KEYCODES INTO PIPES ETC...
    alias grep='grep --color=always' 
    
    alias db='dotnet build'
    
    alias gs='git status'
    alias gf='git fetch'
    alias gl='git pull'
    alias gp='git push'
    alias gpt='git push --tags'
    alias gP='git push --force-with-lease'
    alias ga='git add'
    alias gd='git diff'
    alias gw='git diff --word-diff'
    setopt interactive_comments
    preexec(){ _lc=$1; }
    alias gcm='git commit -m "${_lc#gcm }" #'
    
    # THE BELOW TO BE USED ALONG WITH THE FOLLOWING GIT ALIASES:
    #[alias]
    #	logo = log --pretty=tformat:'%C(auto,red)%m %C(auto,yellow)%h%C(auto,magenta) %G? %C(auto,blue)%>#(12,trunc)%ad %C(auto,green)%<(15,trunc)%aN%C(auto,reset)%s%C(auto,red) %gD %D' --date=short
    #	adog = log --all --decorate --oneline --graph
    #	dog = log --decorate --oneline --graph
    
    alias glog='git logo'
    alias gdog='git dog'
    alias gadog='git adog'
    
    alias gb='git branch'
    alias gba='git branch --all'
    alias gco='git checkout'
    alias gm='git merge'
    alias gt='git tag | sort -V | tail'
    
    alias rl='source ~/.zshrc'
    alias n='nvim'
    
    # LIST PATHS OF OTHER ZSH SHELLS I HAVE OPEN
    lssh() {
        ps au \
            | awk '$11 == "-zsh" || $11 == "/bin/zsh" { print $2 }' \
            | xargs pwdx \
            | awk '{ print $2 }' \
            | sed -n "\|^${2}.*|p" \
            | sort -u \
            | nl
    }
    
    # CD TO SHELL NUMBER RETURNED BY LSSH
    cdsh() {
        cd $(lssh \
            | sed "$1!d" \
            | cut -f 2)
    }
    
    # CD TO PATH OF ANOTHER SHELL, USING FZF AS SELECTOR
    cs() {
        cmd1=$(lssh | fzf --select-1 --query "$1" --height=~50 | cut -f 2)
        cmd="cd $cmd1"
        print -S $cmd
        eval $cmd
    }
    
    # RUN THE COMMAND FROM HISTORY, USING FZF AS SELECTOR, ALTERNATIVE TO <C-R>
    hf() {
        cmd=$(history 0 | sort -nr | cut -c 8- | fzf -e --select-1 --no-sort --query "$1" )
        # push the command into the history
        print -S $cmd
        eval $cmd
    }
    
    # REMMINA USING THE CONNECTION FILE SELECTED USING FZF
    rf() {
        pushd ~/.local/share/remmina
        cmd=$(remmina -c $(ls $PWD/* | fzf -e --select-1 --no-sort --query "$1"))
        # push the command into the history
        print -S $cmd
        eval $cmd
        popd
    }
    
      
  •  
        
    alias clearswap='sudo swapoff -a && sudo swapon -a'
    alias grep='grep --color=auto'
    alias ls='ls --color=auto --group-directories-first'
    alias la='ls -lAh --color=auto --group-directories-first'
    alias timestamp='date +%Y-%m-%dT%H-%M-%S'
    
      
  • alias upd=“yay -Syu --devel”

    alias cleanup=“yay -Qdtq | yay -Rns-”

    alias mirror=“sudo reflector --verbose --country ‘United States’ --protocol https --latest 15 --sort rate --save /etc/pacman.d/mirrorlist && sudo eos-rankmirrors”

  • I don't use aliases. Since I use fish as a login shell, I use abbreviations. I have a lot of them configured. But I think my favorite one is yeet which expands to paru -Rcns.

    • What a nice abbreviation of the conventional way of declaring the minimanalasation of a command. I need to check out fish but i don't really know about it so much.

  • I made a cool exercise some time ago: checking my top 10 used commands, to see how I can "optimize" them, and maybe create a few aliases to save a few keystrokes. Turns out I don't need that much aliases in the end:

     
        
    alias v='vis' # my text editor
    alias sv='doas vis'
    alias ll='ls -l'
    
      

    And that's pretty much it ^^ I do have a lot of scripts though, some of them being one-liners, but it makes them shell independent, which I like :)

    For reference, here is my analysis of my top 10 most used commands.

    edit: I do have a bunch of git aliases though for common subcommands I use. I prefer using them as git <alias> over using she'll specific aliases so I can always type "git" and not mentally think wether I need a git command or a shell alias.

    • Vis nether heard of this editor

      • Then you should definitely check it out: vis.

        Its original goal was to be a vim clone with 90% of the features in 10% of the code. Then it grew into being the bastard son of Vim and Sam editors (plan9's structural regex based editor).

        The result is vis, an editor with vim like navigation and text manipulation mechanics, but with access to Sam's powerful structural regex commands which works selection wise, rather than likewise like vim. Check this paper to learn about it: struct-regex.pdf.

  •  
        
    alias et='emacsclient -ct'
    alias ec='emacsclient -cn'
    alias make='make --warn-undefined-variables'
    
      
  • For git and working with a mix of master and main default branch repos my favourite is gsm='git switch $(git_main_branch)' to switch back to main/master

  • TTIME (abbr - not alias)

     
        
    abbr -a -- ttime date\ \'+It\ is\ \%-H\ \%M\ and\ \%S\ seconds\'\|espeak\ \>/dev/null\ 2\>/dev/null # imported from a universal variable, see `help abbr`
    
    
      
  • Quite basic but saves me a couple of seconds each time. alias update="sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y"

  • I like to use the ones includes in oh-my-zsh. It's a big list, but the ones I use the most are:

    gst --> git status

    gcam --> git commit -am

    gcp --> git cherry-pick

    gsta --> git stash save

    gstp --> git stash pop

    gpsup --> git push --set-upstream origin $(git_current_branch)

    grb --> git rebase

  • Selection of my fish abbreviations for comfy terminal creatures:

     
        
    # MISC -----------------
    abbr -a la 'exa -la'
    abbr -a p 'python'
    abbr -a v 'nvim'
    abbr -a rmd 'rm -rf'
    abbr -a feh 'feh --scale-down -d'
    abbr -a ka 'doas killall'
    abbr -a fp 'ffplay'
    abbr -a ff 'firefox'
    abbr -a tree 'exa -T'
    abbr -a libver 'dpkg -l | grep'
    abbr -a ex 'chmod +x'
    # specific file and directory based
    abbr -a notes 'nvim ~/.vimwiki/index.md'
    abbr -a idir 'cd ~/some/important/dir'
    abbr -a fishconf 'nvim ~/.config/fish/config.fish'
    abbr -a vimconf 'nvim ~/.config/nvim/init.vim'
    abbr -a i3conf 'nvim ~/.config/i3/config'
    # PACMAN ---------------
    abbr -a pin 'doas pacman -S'
    abbr -a pun 'doas pacman -Rns'
    abbr -a pss 'pacman -Ss'
    abbr -a pls 'pacman -Qd'
    abbr -a aurls 'paru -Qm'
    abbr -a pct 'pacman -Q | wc -l'
    abbr -a syu 'paru -Syu'
    abbr -a pcl 'paccache -r -k 1; paru --cc;'
    abbr -a pfd 'pacman -Qs'
    # GIT ------------------
    abbr -a ga 'git add -A; git status'
    abbr -a gr 'git reset'
    abbr -a gd 'git diff'
    abbr -a gc 'git commit -m'
    abbr -a gdc 'git diff HEAD~0 --stat'
    abbr -a gl 'git log'
    abbr -a gb 'git branch'
    abbr -a gp 'git push origin'
    abbr -a gch 'git checkout'
    abbr -a gam 'git commit --amend - m'
    abbr -a gcl 'git clone'
    # RUST -----------------
    abbr -a cc 'cargo clippy --all-features'
    abbr -a ccc 'cargo check'
    abbr -a cb 'cargo build'
    abbr -a cr 'cargo run'
    abbr -a cbr 'cargo build --release'
    abbr -a crr 'cargo run --release'
    abbr -a ct 'cargo test'
    abbr -a ctt 'cargo tarpaulin --ignore-tests --skip-clean'
    abbr -a bacon 'bacon clippy-all -w'
    abbr -a cil 'cargo install --path ./'
    abbr -a cia 'cargo install-update -a'
    abbr -a ca 'cargo add'
    
      
    • I maybe steal your rust aliases What is bacon by the way?

      • Bacon is just compiler output but it "stays open" in your terminal and refreshes after you save your file; It is nice if you use something a bit minimal like vim without language server but you don't want to compile manually every time.

80 comments