Open9

nushell ワンライナーっぽいもの

hkawahkawa

カレントディレクトリ配下の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}  } }

これから、もしかしたら将来使うものも含めて書いていく予定。

hkawahkawa

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
hkawahkawa

Starship設定変更、update部分を適宜変更

❯ open ~/.config/starship.toml | update deno.format "[Deno]($style)" | save ~/.config/starship.toml
hkawahkawa

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
hkawahkawa

未チェックボックスがあるmarkdownファイルをカレントディレクトリ配下から列挙。built-inコマンドのdecodeを使う理由は、str containsが文字列を入力とするため、その入力がbinaryと判断されるとエラーとなってしまう。

❯ ls **/*.md | get name | each { | it | if (open $it --raw | decode utf-8 | str contains '- [ ] ') {echo $it }}
hkawahkawa

ls でテーブル形式表示に飽きたら、次のシンプルなものはいかが…

❯ ls | grid -c
hkawahkawa

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 }
hkawahkawa

Nu shellの最新リリースバージョンを知る

fetch https://github.com/nushell/nushell/releases.atom | lines | parse -r  '\<title\>(?<ver>\d+.+)\<\/title\>' | first 1 | to text
hkawahkawa

複数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                 │    │
│   │ ╰───┴─────────────────────────╯    │
╰───┴────────────────────────────────────╯