関数

fishの関数はコマンドのリストであり, オプションとして引数をとることができます. 他のシェルと違って, 引数は$1のような"数字変数"ではなく,$argvという一つのリストとして渡されます. 関数を作るためにビルトインのfunctionコマンドを用います.

>_ function say_hello
     echo Hello $argv
   end
>_ say_hello
Hello
>_ say_hello everybody!
Hello everybody!

他のシェルと違って, fishはエイリアスや特殊なプロンプト構文を持ちません. これらも関数で表現します.

functionsキーワードによって全ての関数名を列挙することができます. (複数形であることに注意!) fishにははじめから数多くの関数が定義されています.

>_ functions
alias, cd, delete-or-exit, dirh, dirs, down-or-search, eval, export, fish_command_not_found_setup, fish_config, fish_default_key_bindings, fish_prompt, fish_right_prompt, fish_sigtrap_handler, fish_update_completions, funced, funcsave, grep, help, history, isatty, ls, man, math, nextd, nextd-or-forward-word, open, popd, prevd, prevd-or-backward-word, prompt_pwd, psub, pushd, seq, setenv, trap, type, umask, up-or-search, vared

functionsに関数名を渡すことでその関数の中身をみることもできます.

>_ functions ls
function ls --description 'List contents of directory'
    command ls -G $argv
end