インストール

Ubuntu

Ubuntu なら以下でインストールできます。

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install fish

bash と fish 変換

変数

変数がなかったらデフォルト値を使う

bash の場合

foo=${HOGE:-123}
# foo = 123
bar=${HOME:-123}
# bar = /Users/user

fish の場合

set -q HOGE; and set -l foo $HOGE; or set -l foo 123
# foo = 123
set -q HOME; and set -l bar $HOGE; or set -l foo 123
# bar = /Users/user

都度追記

前回のコマンドの一部を書き換えて実行

引数が似たようなコマンドを複数実行したい場合とかあると思います。そういう時は以下のように実行すると書き換えたコマンドを実行できます。

echo nju_nju
# nju3_nju3
history | sed -n 1p | string replace -a nju 純
# echo 純_純

これはecho nju_njuを最初実行した後、これをecho 純_純と変換して表示するコマンドです。
string replaceは文字を置き換えるためのfishコマンドで、最初の文字列を後の文字列に変換できます。また、-a--allオプションを使うことですべてのマッチする文字列を後に指定した文字列に変換できます。

ただしこれはまだ変換したコマンドを表示しているだけなので、それを実行する為にevalを使います。

echo nju_nju
# nju3_nju3
eval (history | sed -n 1p | string replace -a nju 純)
# 純_純

純_純と得れました。

ちなみにsed -n 1pの部分を2p3pと変更すると、2つ前や3つ前のコマンドを置換したものを実行できたりもします。

python を入れる

Mac なので Homebrew を使います。流れは、

  1. pyenvを入れる
  2. インストール
  3. パスを通す

です。

pyenv を入れる

以下で入れます。

brew install pyenv

またpythonを最新バージョンにしたい場合などは都度

brew upgrade pyenv

します。

インストール

これを書いている時の最新は3.7.3でした。

 pyenv install --list
 # ...
 # 3.7.3
 # ...

これを入れます。

 pyenv install 3.7.3
 # 5分ぐらい

「 メインで使いますよ」と設定します。

 pyenv global 3.7.3

パスを通す

.config/fish/config.fishに一行追加します。

source (pyenv init -|psub)

または、

 echo 'source (pyenv init -|psub)' >> ~/.config/fish/config.fish

これでfish-shellが立ち上がるたび先程インストールした3.7.3へのパスが通されるようになります。

最後に確認で、

which python                                                                         
# /Users/nju33/.pyenv/shims/python
python --version
# Python 3.7.3

のように出れば完了です。