zsh
Functions
Default arguments
Example of a function with default arguments in zsh
function e() {
if [ "$1" != "" ]
then
subl $1
else
subl .
fi
}
File name without the extension
If you want the full path without the extension:
$ myfile=/path/to/story.txt
$ echo ${myfile:r}
/path/to/story
$ myfile=story.txt
$ echo ${myfile:r}
story
If you want just the file name minus the path:
$ myfile=/path/to/story.txt
$ echo ${myfile:t}
story.txt
Check this out you can combine those two symbols!
$ myfile=/path/to/story.txt
$ echo ${myfile:t:r}
story
Hooks
Automatic
ls
aftercd
: A function is created to replace thecd
command. Whenevercd
is used to change directories, the function automatically runsls
to display the contents of the new directory.zsh function cd { builtin cd "$@" && ls }
This method applies tobash
andzsh
, combining thecd
andls
commands.Using
zsh
Hooks forls
aftercd
: A more refined approach specific tozsh
that uses hooks. A function namedls_after_cd
is defined to runls
, and azsh
hook is added to execute this function every time the current working directory changes. ```zsh autoload -U add-zsh-hookls_after_cd() { ls }
add-zsh-hook chpwd ls_after_cd ``
This approach is more aligned with
zshpractices, allowing for the automatic listing of directory contents upon navigation without altering the original
cd` command.