ZSH Config Ideas for Geeks
Introduction
ZSH shell users often aim to personalize their systems with short edits on the .zshrc
file, to provide faster access and to do multiple tasks with a single and short command. Below I am sharing a few ideas from my own .zshrc
configurations with you.
All you need to do is save the boilerplate codes I shared to your .zshrc
file and activate them with the source ~/.zshrc
command.
FFMPEG Webp file Converter
Requires
ffmpeg
This function converts your .webp files into .png files.
## INFO: FFMPEG WEBP CONVERTER
convert_webp() {
for i in *
do
if [[ "${i##*.}" == "webp" ]]; then
echo "WEBP FILE => $i"
# show filename
filename="${i%.*}"
# show Extension
extension="${i##*.}"
## webp converter
ffmpeg -i "$filename" "$filename.png"
fi
done
}
Usage:
$convert_webp
Creating New Obsidian Note From Terminal
Requires pre-defined obsidian vault
To create new obsidian markdown note from your terminal you can use this function:
vn(){
ov # open vault
local filename="$1"
if [[ -z "$filename" ]]; then
echo "Usage: vn <filename>"
return 1
fi
#use your own path <filepath>
nvim "00_inbox/${filename}.md" # enter file-name and directly start writing
}
This function changes directory into your vault and creates a new markdown note with the given filename.
Usage:
$vn my-first-article
Zoxide
Requires
zoxide
This is the zsh config for the zoxide
# zoxide
eval "$(zoxide init zsh)"
Now you can use fast folder navigations only putting the prefix z
and you can discover the world of zoxide.
Usage:
# cd into $HOME/Documents/vaults/ directly
z Doc/vau
Fast Folder Access
Sometimes i need shortcuts to access my folders directly. So i declared them all.
## foldershortcuts
alias ob="cd /$HOME/Documents/workspace/static_website/hugo/gokayburuc_weblog/"
alias oc="cd /$HOME/.config/nvim/"
alias ok="cd /$HOME/.config/kitty/"
alias od="cd /$HOME/Downloads/"
alias om="cd /$HOME/Documents/workspace/static_website/mdbook/golang_cookbook/"
alias ov="cd /$HOME/Documents/vaults/secondbrain/"
alias ow="cd /$HOME/Documents/workspace"
Those are shortcut to my directories. Frequiently used paths are now accessible with only 2 letters from commandline.
Usage:
# goes into directly into the $HOME/Documents/vaults/secondbrain/
$ov
Tmux Shortcuts
# tmux shortcuts
alias tconf="nvim ~/.tmux.conf"
alias t="tmux"
alias tn="tmux new"
alias ta="tmux attach-session"
alias trw="tmux rename-window"
alias trs="tmux rename-session"
Usage:
# creates new section with name my-session
$tn my-session
# attaches session 0
$ta -t0
# renames window as conf
$trw conf
# renames session as home
$trs home
Listen Music From Your Terminal
Requires
mpv
,fzf
,rg
Listening music via mpv
from your terminal:
# listen music
alias lmusic='cd ~/Music/ && rg --files --glob "*.mp3" | fzf --multi --reverse --prompt="Song: " | xargs mpv --audio-display=no'
Usage:
- Search favorite songs and add to your playlist using TAB
Adding New Paths to a List
This code block controls every path and duplicates and export
every path in list to the $PATHENV directly.
# Define an array of directories to add to PATH
path=(
$path # Keep existing PATH entries
$HOME/bin
$HOME/.local/bin
$HOME/dotnet
$SCRIPTS
$HOME/.krew/bin
$HOME/.rd/bin # Rancher Desktop
# $HOME/*/bin(N) # Add all bin directories under HOME
# /usr/local/*/bin(N) # Add all bin directories under /usr/local
)
# Remove duplicate entries and non-existent directories
typeset -U path
path=($^path(N-/))
# Export the updated PATH
export PATH
Usage:
This code block add new paths and checks duplicates automatically, finally adds to your PATH
. Just add your new path into the brackets with given format.
Extended Glob Operations
·# Enable Zsh's extended globbing and null_glob options
setopt extended_glob null_glob
Enables extended glob in your filesystem for your ZSH.
extended_glob
In zsh: The extended_glob option allows for more advanced pattern matching in filenames. It enables extended globbing features such as ** for recursive directory matching, ^ for negating patterns, and more.
In bash: The equivalent feature is controlled by the shopt -s extglob command. When enabled, it allows extended pattern matching.
null_glob
In zsh: The null_glob option makes filename patterns that do not match any files expand to an empty list rather than remaining as the original pattern. This can be useful to avoid errors when patterns don’t match any files.
In bash: The equivalent functionality can be achieved by setting the nullglob option using shopt -s nullglob. When enabled, if a pattern does not match any files, it expands to nothing instead of remaining as the pattern.
Conclusion
This article is written for the .zshrc
capability and is meant to show you what you can do by modifying your .zshrc
in the terminal.
Subscribe to my newsletter
Read articles from Gokay BURUC directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by