Open9
nushell ワンライナーっぽいもの
カレントディレクトリ配下のgit管理下のディレクトリを列挙
ls **/* | where type == dir | get name | each { | it | if ($"($it)/.git" | path exists) { cd $it; if (^git rev-parse --is-inside-work-tree | complete).exit_code == 0 {echo $it} } }
これから、もしかしたら将来使うものも含めて書いていく予定。
git配下であれば、終了ステータスは0で、そうでなければ下記のように128となる。
❯ (^git rev-parse --is-inside-work-tree | complete).exit_code
fatal: not a git repository (or any of the parent directories): .git
128
Starship設定変更、update
部分を適宜変更
❯ open ~/.config/starship.toml | update deno.format "[Deno]($style)" | save ~/.config/starship.toml
build-inコマンドls
のデフォルト表示形式ははテーブルで表示される。このため、ディレクトリにたくさんファイルがあると、スクロールするハメになる。そこでみっちり表示バージョン。
❯ ls -a | get name | str join ' '
..spacemacs.~undo-tree~ .Spacemacs .Xauthority .android .bash_history .bash_logout .bashrc .byobu .cache .cargo .chktodo.nu.swp .chktodo.nu.~undo-tree~ .config .emacs.d .emacs.d.org .emacs.d.space .fonts .gitconfig .icons .lesshst .local .memo.txt.swp .nano-recentf .nano-savehist .nemacs .node_repl_history .npm .nvm .pki .profile .rustup .spacemacs .spacemacs.old .spacemacs~ .sqlite_history .ssh .sudo_as_admin_successful .themes .vscode .wget-hsts .wmstickynotes .xsession-errors .xsession-errors.old Desktop Documents Downloads Music Pictures Public TODO.item Templates Videos e.db e.sql env_chk.nu err.sh error.sql files.arc ls.db memo.txt myfile.nu nano-emacs ob.nu out.sh proc.sql s.toml s1.toml snap system.html test_small.csv test_small_a.csv test_small_a_join.csv tmp.txt todo.md work
未チェックボックスがあるmarkdownファイルをカレントディレクトリ配下から列挙。built-inコマンドのdecode
を使う理由は、str contains
が文字列を入力とするため、その入力がbinary
と判断されるとエラーとなってしまう。
❯ ls **/*.md | get name | each { | it | if (open $it --raw | decode utf-8 | str contains '- [ ] ') {echo $it }}
ls でテーブル形式表示に飽きたら、次のシンプルなものはいかが…
❯ ls | grid -c
hookの動的変更:以下はNushell本にあるコマンド結果を/tmpにhtmlファイルとして出力するlogger.
❯ $env.config.hooks | upsert display_output { to html --partial --no-color | save --raw /tmp/nu-output.html }
使い終わったら、何もしないようにする.
❯ $env.config.hooks | upsert display_output { $nothing }
Nu shellの最新リリースバージョンを知る
fetch https://github.com/nushell/nushell/releases.atom | lines | parse -r '\<title\>(?<ver>\d+.+)\<\/title\>' | first 1 | to text
複数github releaseの最新リリースバージョンを取得
❯ [https://github.com/nushell/nushell/releases.atom https://github.com/denoland/deno/releases.atom ] | each {| it | fetch $it | lines | parse -r '\<title\>(?<ver>.+)\<\/title\>' | first 2 }
╭───┬────────────────────────────────────╮
│ 0 │ ╭───┬────────────────────────────╮ │
│ │ │ # │ ver │ │
│ │ ├───┼────────────────────────────┤ │
│ │ │ 0 │ Release notes from nushell │ │
│ │ │ 1 │ 0.72.1 │ │
│ │ ╰───┴────────────────────────────╯ │
│ 1 │ ╭───┬─────────────────────────╮ │
│ │ │ # │ ver │ │
│ │ ├───┼─────────────────────────┤ │
│ │ │ 0 │ Release notes from deno │ │
│ │ │ 1 │ v1.28.3 │ │
│ │ ╰───┴─────────────────────────╯ │
╰───┴────────────────────────────────────╯