1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
|
#!/usr/bin/env fish
echo hello > output.txt
alias something=echo
sudo systemctl start postgresql
# Outputs 'image.png'.
echo (basename image.jpg .jpg).png
echo some text for testing
# Convert all JPEG files in the current directory to the
# PNG format using the 'convert' program.
for i in *.jpg; convert $i (basename $i .jpg).png; end
# Set the ``data`` variable to the contents of 'data.txt'
# without splitting it into a list.
begin; set -l IFS; set data (cat data.txt); end
# Set ``$data`` to the contents of data, splitting on NUL-bytes.
set data (cat data | string split0)
grep fish myanimallist1 | wc -l
command some-arg-with-dash
echo input.{c,h,txt}
echo {$dogs}dog
echo (seq 10)[1 2 3]
echo (seq 10)[2..5 1..3]
echo (seq 10)[-1..1]
set PATH $PATH[-1..1]
set foo banana
foo=gagaga echo $foo # prints gagaga, while in other shells it might print "banana"
foo=gagaga somecommand $foo # prints gagaga, while in other shells it might print "banana"
function some func
echo 'function' with space
end
function dirs --description 'Print directory stack'
set -l options h/help c
argparse -n dirs --max-args=0 $options -- $argv
or return
if set -q _flag_help
__fish_print_help dirs
return 0
end
if set -q _flag_c
# Clear directory stack.
set -e -g dirstack
return 0
end
# Replace $HOME with ~.
string replace -r '^'"$HOME"'($|/)' '~$1' -- $PWD $dirstack | string join " "
end
function ytdl_files -d "Download videos from text files with youtube-dl and put them into folders"
argparse --name=ytdl_files 's/shutdown' -- $argv
for file in $argv
echo "Operating on $file"
youtube-dl -a $file -i -o (dirname $file)"/"(basename $file .txt)"/%(autonumber)s-%(title)s.%(ext)s"
end
if test -n "$_flag_shutdown"
echo "poweroff"
end
end
function cheat -d 'Get programming language cheat sheets from cheat.sh'
if test $argv[1]
curl https://cheat.sh/$argv[1]
else
curl https://cheat.sh
end
end
function dut -d 'Get top paths with most disk usage'
du -hs $argv[2]/* | sort -rh | head -$argv[1]
end
function m2d --description 'Move to desktop -- m2d program_name desktop_num'
bspc node (xdo id -N $argv[1]) -d $argv[2]
end
set -x no_proxy 'localhost,127.0.0.1'
function toggle_proxy
if not set -q HTTP_PROXY
for proxy in HTTP_PROXY HTTPS_PROXY http_proxy https_proxy
set -gx $proxy 'http://127.0.0.1:8118'
end
echo 'Proxy On'
else
set -e {HTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxy}
echo 'proxy Off'
end
end
function wttr -d 'Get weather info from wttr.in'
if test $argv[1]
curl https://wttr.in/$argv[1]
else
curl https://wttr.in/
end
end
function fish_config --description "Launch fish's web based configuration"
argparse h/help -- $argv
or return
if set -q _flag_help
__fish_print_help fish_config
return 0
end
set -l cmd $argv[1]
set -e argv[1]
set -q cmd[1]
or set cmd browse
# The web-based configuration UI
# Also opened with just `fish_config` or `fish_config browse`.
if contains -- $cmd browse
set -lx __fish_bin_dir $__fish_bin_dir
if set -l python (__fish_anypython)
$python "$__fish_data_dir/tools/web_config/webconfig.py" $argv
else
echo (set_color $fish_color_error)Cannot launch the web configuration tool:(set_color normal)
echo (set_color -o)"fish_config browse"(set_color normal) requires Python.
echo Installing python will fix this, and also enable completions to be
echo automatically generated from man pages.\n
echo To change your prompt, use (set_color -o)"fish_config prompt"(set_color normal) or create a (set_color -o)"fish_prompt"(set_color normal) function.
echo To list the samples use (set_color -o)"fish_config prompt show"(set_color normal).\n
echo You can tweak your colors by setting the (set_color $fish_color_search_match)\$fish_color_\*(set_color normal) variables.
end
return 0
end
if not contains -- $cmd prompt
echo No such subcommand: $cmd >&2
return 1
end
# prompt - for prompt switching
set -l cmd $argv[1]
set -e argv[1]
if contains -- $cmd list; and set -q argv[1]
echo "Too many arguments" >&2
return 1
end
set -l prompt_dir $__fish_data_dir/sample_prompts $__fish_data_dir/tools/web_config/sample_prompts
switch $cmd
case show
set -l fish (status fish-path)
set -l prompts $prompt_dir/$argv.fish
set -q prompts[1]; or set prompts $prompt_dir/*.fish
for p in $prompts
if not test -e "$p"
continue
end
set -l promptname (string replace -r '.*/([^/]*).fish$' '$1' $p)
echo -s (set_color --underline) $promptname (set_color normal)
$fish -c "functions -e fish_right_prompt; source $p;
false
fish_prompt
echo (set_color normal)
if functions -q fish_right_prompt;
echo right prompt: (false; fish_right_prompt)
end"
echo
end
case list ''
string replace -r '.*/([^/]*).fish$' '$1' $prompt_dir/*.fish
return
case choose
if set -q argv[2]
echo "Too many arguments" >&2
return 1
end
if not set -q argv[1]
echo "Too few arguments" >&2
return 1
end
set -l have 0
for f in $prompt_dir/$argv[1].fish
if test -f $f
source $f
set have 1
break
end
end
if test $have -eq 0
echo "No such prompt: '$argv[1]'" >&2
return 1
end
case save
read -P"Overwrite prompt? [y/N]" -l yesno
if string match -riq 'y(es)?' -- $yesno
echo Overwriting
cp $__fish_config_dir/functions/fish_prompt.fish{,.bak}
if set -q argv[1]
set -l have 0
for f in $prompt_dir/$argv[1].fish
if test -f $f
set have 1
source $f
or return 2
end
end
if test $have -eq 0
echo "No such prompt: '$argv[1]'" >&2
return 1
end
end
funcsave fish_prompt
or return
functions -q fish_right_prompt
and funcsave fish_right_prompt
return
else
echo Not overwriting
return 1
end
end
return 0
end
|