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"
49 points · 70 comments · view on lemmy.world

70 Comments

docrobot@lemmy.sdf.org · 13 pts · 3y (2 replies)

alias weather='curl wttr.in'

cheerupcharlie@lemm.ee · 1 pts · 3y

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
}
MoriGM@feddit.de · 1 pts · 3y

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

Plasma@lemmy.ml · 12 pts · 3y (2 replies)
alias ..='cd ..'
oldfart@lemm.ee · 4 pts · 3y

AmigaOS style!

coleman@lemmy.ml · 2 pts · 3y

My variant (u mean "up" in my head)

alias u  ='cd ..'
alias uu ='cd ../..'
alias uuu='cd ../../..'
cybersandwich@lemmy.world · 10 pts · 3y (2 replies)
[ removed ]
cybersandwich@lemmy.world · 2 pts · 3y
[ removed ]
MoriGM@feddit.de · 2 pts · 3y

Uuuuh needed this one so many times.

xycu@programming.dev · 7 pts · 3y (3 replies)

alias ll="ls - l"

My most-used, by far, for decades.

nihilomaster@lemmy.ml · 4 pts · 3y

For just a second I thought this was Loss

TheyCallMeHacked@discuss.tchncs.de · 4 pts · 3y (1 reply)

This and alias la="ls -lhA"

walthervonstolzing@lemmy.ml · 2 pts · 3y

In addition to this, I have lat & las with -t & -s sorting added respectively.

swodig@mander.xyz · 7 pts · 3y (1 reply)

alias ta="tmux attach -t"

MoriGM@feddit.de · 1 pts · 3y

I'm always thinking of using tmux for tilling.

Lemmyin@lemmy.nz · 7 pts · 3y

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
}
cheerupcharlie@lemm.ee · 7 pts · 3y

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'
jks@feddit.nl · 6 pts · 3y

Not exactly an alias but a short script. First, get git-revise which is a replacement for git rebase, and fzf if for some reason you don't have it yet. Then make a script in your ~/.local/bin called git-f or whatever you'd like:

#!/bin/bash
REF=${1:-origin/main}  # adjust to your favorite trunk branch name
COMMIT=$(git log --pretty=oneline ${REF}.. \
         | fzf --preview "git show -p --stat {+1}" | cut -d' ' -f1)
if [ -n "$COMMIT" ]; then
    exec git revise "$COMMIT"
else
    exit 1
fi

Now hack away in a branch, make some commits, and at some point you will realize you want to modify an earlier commit. Use git add -p to add the relevant lines, but then instead of making a fixup commit just type git f and pick the target commit from the list.

wasabi@feddit.de · 4 pts · 3y
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'
brad@toad.work · 4 pts · 3y (1 reply)

Here's my .bash_aliases file

Good luck, I'm dogshit at maintaining the comments lol

MoriGM@feddit.de · 2 pts · 3y

Very nice

turdas@suppo.fi · 4 pts · 3y (1 reply)

I use this function to launch GUI apps from the shell without occupying that shell or cluttering it with their output:

nown() {
        if [ -n "$1" ]
        then
                nohup $@ &> /dev/null & disown
        else
                echo "Don't give me a null command dumbass."
        fi
}
MoriGM@feddit.de · 2 pts · 3y

I maybe will steal that for myself.

mpiepgrass@lemmy.world · 3 pts · 3y
[ removed ]
knobbysideup@lemm.ee · 3 pts · 3y
become="sudo su -"
pb="ansible-playbook"
demonsword@lemmy.world · 3 pts · 3y (4 replies)

alias fuck='sudo $(fc -ln -1)'

xavier666@lemm.ee · 1 pts · 3y (3 replies)

Just use sudo !!

demonsword@lemmy.world · 1 pts · 3y (2 replies)

yeah, I could do that. Kinda prefer to use my alias anyway as the expletive is almost always the first word that comes to mind when I forget to sudo something

xavier666@lemm.ee · 2 pts · 3y (1 reply)

Can't argue with that but it reminds me of thefuck which is similar but does more

demonsword@lemmy.world · 2 pts · 3y

thanks for that link!! I'm going to try it out :)

rakstar@lemmy.world · 3 pts · 3y

Technically not aliases but I have these in my ~/.bash_aliases so...

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

Type a few letters and press up/down arrow to scroll through matching history entries.

Also...

alias s="cd -"

It's like Alt+Tab for CLI.

GustavoM@lemmy.world · 3 pts · 3y (1 reply)

*ahem

alias brb='paru -Syu --noconfirm && paru -Sc --noconfirm'

gbin@lemmy.ca · 3 pts · 3y

You should name it alias btw=... to fully embrace our stereotype ;).

SexualPolytope@lemmy.sdf.org · 3 pts · 3y (1 reply)

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.

MoriGM@feddit.de · 2 pts · 3y

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.

JaffaBoy@lemmy.world · 2 pts · 3y

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

bahmanm@lemmy.ml · 2 pts · 3y
alias et='emacsclient -ct'
alias ec='emacsclient -cn'
alias make='make --warn-undefined-variables'
maiskanzler@feddit.de · 2 pts · 3y (1 reply)

dc="docker-compose" saves me soooo much time!

MoriGM@feddit.de · 1 pts · 3y

Oh yeah thanks forgot docker compose to put into my aliases

CsXGF8uzUAOh6fqV@lemmy.world · 2 pts · 3y (2 replies)

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'
MoriGM@feddit.de · 1 pts · 3y (1 reply)

I maybe steal your rust aliases What is bacon by the way?

CsXGF8uzUAOh6fqV@lemmy.world · 2 pts · 3y

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.

gbin@lemmy.ca · 2 pts · 3y (1 reply)

Interesting, git do support aliases too. "git st" etc What is .load.sh?

MoriGM@feddit.de · 1 pts · 3y

I mostly write my environment and aliases which are only ment to be used for a project by creating a file called .load.sh. It is mostly just things like alias run="python main.py" or something

literally1848@programming.dev · 2 pts · 3y

alias clearswap='sudo swapoff -a && sudo swapon -a

alias reload='source ~/.bashrc'

scan_local() {

 local_ip=$(ip addr show wlan0 | grep "inet " | awk '{print $2}' | awk -F '/' '{print $1}')

 sudo nmap -sn "$local_ip/24"

}

wgs@lemmy.sdf.org · 2 pts · 3y (2 replies)

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.

MoriGM@feddit.de · 1 pts · 3y (1 reply)

Vis nether heard of this editor

wgs@lemmy.sdf.org · 1 pts · 3y

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.

Plasma@lemmy.ml · 2 pts · 3y (2 replies)
[ removed ]
wasabi@feddit.de · 2 pts · 3y

You should give shopt -s autocd a try.

MoriGM@feddit.de · 1 pts · 3y

Classic but gold I also use alias ...="cd ../.."

gideonstar@feddit.de · 2 pts · 3y (3 replies)

alias x="exit"

wgs@lemmy.sdf.org · 3 pts · 3y

^D my dude.

coleman@lemmy.ml · 1 pts · 3y

I do this but with xx because I'm too scared

MoriGM@feddit.de · 1 pts · 3y

I use mostly :q for that XD

BendyLemmy@lemmy.ml · 1 pts · 3y

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`
conc@lemmy.ml · 1 pts · 3y (3 replies)

alias gecko="echo"

MoriGM@feddit.de · 2 pts · 3y (2 replies)

Oh why that?

conc@lemmy.ml · 4 pts · 3y (1 reply)

Purely for fun

MoriGM@feddit.de · 4 pts · 3y

That's always the best fun

Plasma@lemmy.ml · 1 pts · 3y
[ removed ]
Raphael@lemmy.world · 1 pts · 3y

Updating Silverblue KDE from the terminal is way too convoluted. Sadly Fedora won't do anything as they only care about the GUI experience.

# Defined in /home/raphael/.config/fish/functions/update.fish @ line 1
function update --description 'Update and cleanup system'
    fedora sudo dnf update -y
    rpm-ostree update
    flatpak update -y
    flatpak uninstall --unused
    flatpak uninstall --delete-data
end
ArmoredGoat@feddit.de · 1 pts · 3y

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"

minorsecond@lemmy.ml · 1 pts · 3y (3 replies)
alias ein='f() { sudo emerge -av $1 };f'
alias eup='sudo emerge -avuDN @world'
poeplva@lemmy.sdf.org · 2 pts · 3y (2 replies)

The first alias actually gave me some ideas, thanks for that. But I don't understand how is what you did is really different from alias ein='sudo emerge -av'. I think the only thing that is different is the way you do it ein abc def will be the same as ein abc, but why would you want this?

minorsecond@lemmy.ml · 1 pts · 3y

I just realized what you were asking lol. I’ve had a couple beers, sorry.

Your idea may work, I’ll have to try it.

minorsecond@lemmy.ml · 1 pts · 3y

The second one updates world, so you get a system update.

Moonwalk@lemm.ee · 1 pts · 3y

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

Nellum@feddit.de · -1 pts · 3y (5 replies)

alias gladog="git log —all —decorate —oneline —graph" is my all time favourite. Sometimes I just want to have a quick way to see the git graph in the terminal.

bomgar@feddit.de · 2 pts · 3y (1 reply)

In case you don't know this give tig a try.

Nellum@feddit.de · 2 pts · 3y

I didn’t. Thanks, I will have a look at it.

MoriGM@feddit.de · 0 pts · 3y (2 replies)

Uhhh a terminal git user too

Nellum@feddit.de · 1 pts · 3y (1 reply)

Since my company won’t pay for Gitkraken I sadly am :/

MoriGM@feddit.de · 1 pts · 3y

In my old company we used it and mostly it was just a ram eater for me XD