fish shellでzの結果をpecoって爆速でディレクトリ移動する
のfish shell版
z.shはfishermanでインストールできるものを使う。-> GitHub - fisherman/z: Pure-fish z directory jumping
https://github.com/rupa/zを直接使うプラグインがあったけど、z -l
の出力がstdout/stderrに出力されなかったので使えなかった。
fisher z
関数は元記事のものをだいたいそのまま
# ~/.config/fish/config.fish function peco_z set -l query (commandline) if test -n $query set peco_flags --query "$query" end z -l | peco $peco_flags | awk '{ print $2 }' | read recent if [ $recent ] cd $recent commandline -r '' commandline -f repaint end end function fish_user_key_bindings bind \x1b peco_z # Ctrl-[にバインドする end
bindする時に\c[
と指定したかったのだけど、Unexpected end of string, square brackets do not match
と怒られたのでfishの別のプラグインを参考に設定。ターミナルの時点でシーケンスじゃなくて\x1b
で送られてくるからかな?
使ってみるとghqに比べて少しだけ時間がかかるので、もう少し早く動くz.sh実装があればそっちに移行したい(あるいは作るか)。
*1:Jan 9, 2017 22:12 コマンドを呼び出す前の入力値をpecoに渡すように更新
AWSから古いサーバー証明書を削除する
aws iam list-server-certificates | \ jq '.ServerCertificateMetadataList[] | select(.Expiration | fromdate < now) | .ServerCertificateName' | \ xargs -n1 aws iam delete-server-certificate --server-certificate-name
シェルスクリプトの変数が空だったら指定の値にする時のTips
シェルスクリプトで変数が空の場合にだけ代入することができる便利な機能がある。
${variable:=value}
$variable
が空の場合のみvalue
が値に入ります。
しかし、実際に入力してみるとcommand not found
になる。
bash-4.3$ ${variable:=value} bash: value: command not found
これはなぜかというと、変数への代入と同時にシェルに対してその値を返すから。
value
という文字をシェルが実行しようとする。
こういう場合は
bash-4.3$ : ${variable:=value}
:
で返り値を無視してやればよいようだ。
related: シェル変数の定義状況に応じて任意の値を返す方法 - Qiita