66 lines
2 KiB
Fish
66 lines
2 KiB
Fish
|
# TODO: Consider a `rm` that behaves like this as well. Would then be useful to
|
||
|
# support something like a "Trash" folder so that I can undo unintentional
|
||
|
# deletions.
|
||
|
function cp_dwim -d "Copy files and directories similarly."
|
||
|
# TODO: Where do I put documentation like this?
|
||
|
# Calls `cp -r` when a directory is specified, otherwise uses `cp`.
|
||
|
# This is closer to the UX you expect in GUIs when you copy-and-paste files.
|
||
|
if test -d $argv[1]
|
||
|
command cp -r $argv[1..-1]
|
||
|
else
|
||
|
command cp $argv[1..-1]
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function mkdir_cd -d "Make a directory and `cd` into it."
|
||
|
mkdir -p $argv[1] && cd $argv[1]
|
||
|
end
|
||
|
|
||
|
function lt -d "Like tree, except using `exa`."
|
||
|
# Convenience wrapper around `exa --tree`.
|
||
|
# Optionally accepts a number for the max-depth and a directory to list.
|
||
|
# Usage: lt 2 ./scripts
|
||
|
|
||
|
# lt
|
||
|
if test (count $argv) -eq 0
|
||
|
exa --tree --all
|
||
|
|
||
|
else if test (count $argv) -eq 1
|
||
|
# lt 2
|
||
|
if string match --quiet --regex '^[0-9]+$' $argv[1]
|
||
|
exa --tree --all --level $argv[1]
|
||
|
|
||
|
# lt path/to/directory
|
||
|
else if test -d $argv[1]
|
||
|
exa --tree --all $argv[1]
|
||
|
end
|
||
|
|
||
|
# lt 2 path/to/directory
|
||
|
else if test (count $argv) -eq 2
|
||
|
exa --tree --all --level $argv[1] $argv[2]
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
function lad -d "List only the directories within a directory."
|
||
|
# TODO: Support $argv[1], which is currently broken here. See functions.zsh
|
||
|
# for a reference.
|
||
|
fd --hidden --maxdepth 1 --type d
|
||
|
end
|
||
|
|
||
|
function laf -d "List only the files within a directory."
|
||
|
# TODO: Support $argv[1], which is currently broken here. See functions.zsh
|
||
|
# for a reference.
|
||
|
fd --hidden --maxdepth 1 --type f
|
||
|
end
|
||
|
|
||
|
function lal -d "List only the links within a directory."
|
||
|
# TODO: Support $argv[1], which is currently broken here. See functions.zsh
|
||
|
# for a reference.
|
||
|
fd --hidden --maxdepth 1 --type l
|
||
|
end
|
||
|
|
||
|
function nix_introspect -d "Search through local nixpkgs repository."
|
||
|
rg --after-context 5 "\\b$argv[1]\\b\\s*=" (nix-instantiate --find-file nixpkgs)
|
||
|
end
|