From 60f9e870747afb67526c226b872694913007b037 Mon Sep 17 00:00:00 2001 From: johannst Date: Thu, 10 Sep 2020 23:25:06 +0200 Subject: renamed misc -> tools --- src/misc/fish.md | 185 ------------------------------------------------------- 1 file changed, 185 deletions(-) delete mode 100644 src/misc/fish.md (limited to 'src/misc/fish.md') diff --git a/src/misc/fish.md b/src/misc/fish.md deleted file mode 100644 index 2cc763e..0000000 --- a/src/misc/fish.md +++ /dev/null @@ -1,185 +0,0 @@ -# fish(1) - -## Quick Info -Fish initialization file `~/.config/fish/config.fish` - -Switch between different key bindings: -- `fish_default_key_bindings` to use default key bindings -- `fish_vi_key_bindings` to use vi key bindings - -## Variables -Available scopes -- `local` variable local to a block -- `global` variable global to shell instance -- `universal` variable universal to all shell instances + preserved across - shell restart - -### Set/Unset Variables -```text -set [] - -l local scope - -g global scope - -U universal scope - -e erase variable - -S show verbose info - -x export to ENV - -u unexport from ENV -``` - -### Lists -In `fish` all variables are lists (start with index `1`, but lists can't -contain lists. -```text -set foo a b c d - -echo $foo[1] # a -echo $foo[-1] # d -echo $foo[2..3] # b c -echo $foo[1 3] # a c -``` - -`$` can be seen as dereference operator. -```text -set foo a; set a 1337 -echo $$foo # outputs 1337 -``` - -Cartesian product. -```text -echo file.{h,cc} -# file.h file.cc - -echo {a,b}{1,2} -# a1 b1 b2 -``` - -### Special Variables (Lists) -```text -$status # exit code of last command -$pipestatus # list of exit codes of pipe chain - -$CMD_DURATION # runtime of last command in ms -``` - -#### `*PATH` -Lists ending with `PATH` are automatically split at `:` when used and joined -with `:` when exported to the environment. -```text -set -x BLA_PATH a:b:c:d -echo $BLA_PATH # a b c d -env | grep BLA_PATH # BLA_PATH=a:b:c:d -``` - -## Command Handling -```text -# sub-commands are not run in quotes -echo "ls output: "(ls) -``` - -### I/O redirection -```text -# 'noclobber', fail if 'log' already exists -echo foo >? log -``` - -## Control Flow -### `if` / `else` -```text -if grep foo bar - # do sth -else if grep foobar bar - # do sth else -else - # do sth else -end -``` - -### `switch` -```text -switch (echo foo) -case 'foo*' - # do start with foo -case bar dudel - # do bar and dudel -case '*' - # do else -end -``` - -### `while` Loop -```text -while true - echo foo -end -``` - -### `for` Loop -```text -for f in (ls) - echo $f -end -``` - -## Functions -Function arguments are passed via `$argv` list. -```text -function fn_foo - echo $argv -end -``` -### Autoloading -When running a command fish attempts to autoload a function. The shell looks -for `.fish` in the locations defined by `$fish_function_path` and loads -the function lazily if found. - -This is the preferred way over monolithically defining all functions in a -startup script. - -### Helper -```text -functions # list al functions -functions foo # describe function 'foo' -functions -e foo # erase function 'foo' - -funced foo # edit function 'foo' - # '-e vim' to edit in vim -``` - -## Prompt -The prompt is defined by the output of the `fish_prompt` function. -```text -function fish_prompt - set -l cmd_ret - echo "> "(pwd) $cmd_ret" " -end -``` -> Use `set_color` to manipulate terminal colors. - - -## Useful Builtins -```text -# history -history search # search history for -history merge # merge histories from fish sessions - -# list -count $var # count elements in list - -# string -string split SEP STRING -``` - -## Keymaps -```text - Shift-Tab ........... tab-completion with search - Alt-Up / Alt-Down ... search history with token under the cursor - Alt-l ............... list content of dir under cursor - Alt-p ............... append '2>&1 | less;' to current cmdline -``` - -## Debug -```text - status print-stack-trace .. prints function stacktrace (can be used in scripts) - breakpoint ................ halt script execution and gives shell (C-d | exit - to continue) -``` -- cgit v1.2.3