List of Nyagos - text.Baldanders.info
tag:text.Baldanders.info,2020-10-27:/tags
2020-10-27T22:17:46+09:00
帰ってきた「しっぽのさきっちょ」
https://text.baldanders.info/images/avatar.jpg
https://text.baldanders.info/images/avatar.jpg
Windows Terminal × NYAGOS × Scoop = ♥
tag:text.Baldanders.info,2020-10-27:/remark/2020/10/windows-terminal-and-nyagos-and-scoop/
2020-10-27T13:17:46+00:00
2023-01-08T06:11:00+00:00
とりあえず ATOM エディタと NYAGOS を入れたい。
Spiegel
https://baldanders.info/profile/
<p>アルファ・ベータ・オメガの割り振りはご想像にお任せします <abbr class="emoji-chars" title=":smile:">😄</abbr> って,そういう話ではない。</p>
<p>さて,職場で Windows 10 機を支給されたので,とりあえず <a href="https://atom.io/" title="Atom">ATOM</a> エディタと <a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell betweeeeeeen UNIX & DOS">NYAGOS</a> を入れたいわけですよ。</p>
<h2>Windows 10 に <a href="https://atom.io/" title="Atom">ATOM</a> を入れる</h2>
<p>まぁこちらはサラッと。</p>
<p><a href="https://atom.io/" title="Atom">公式ページ</a>からインストーラを取ってきて普通にインストールすればいいだけ。
なのだが,何故か Windows 版はコマンドラインからの起動が冷遇されているのよ。
古いバージョンにはあった <code>atom.cmd</code> がなくなっている。</p>
<p>じゃあ,どうやって起動するのかというと “System Settings” で</p>
<figure style='margin:0 auto;text-align:center;'><a href="./atom-system-settings.png"><img src="./atom-system-settings.png" srcset="./atom-system-settings.png 734w" sizes="(min-width:600px) 500px, 80vw" alt="System Settings in ATOM" loading="lazy"></a><figcaption><div><a href="./atom-system-settings.png">System Settings in ATOM</a></div></figcaption>
</figure>
<p>てな感じにエクスプローラ等のコンテキストメニューから開けるように設定できる。
また <a href="https://atom.io/" title="Atom">ATOM</a> が起動している状態でタスクバーの <a href="https://atom.io/" title="Atom">ATOM</a> アイコンをピン留めしておけば</p>
<figure style='margin:0 auto;text-align:center;'><a href="./atom-in-task-bar.png"><img src="./atom-in-task-bar.png" srcset="./atom-in-task-bar.png 525w" sizes="(min-width:600px) 500px, 80vw" alt="ATOM icon in task bar" loading="lazy"></a><figcaption><div><a href="./atom-in-task-bar.png">ATOM icon in task bar</a></div></figcaption>
</figure>
<p>みたいな感じにコンテキストメニューを展開できる。</p>
<p>困るのが <code>apm</code> コマンドなのだが,これにはパスを通さずに直接カレントまで降りて操作するしかないだろう。
v1.52.0 なら</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ cd C:\Users\username\AppData\Local\atom\app-1.52.0\resources\app\apm\bin
</span></span></code></pre></div><p>まで降りる。
この場所で apm を使ってログインできる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ apm login
</span></span><span class="line"><span class="cl">Welcome to Atom!
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Before you can publish packages, you'll need an API token.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Visit your account page on Atom.io https://atom.io/account,
</span></span><span class="line"><span class="cl">copy the token and paste it below when prompted.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Press [Enter] to open your account page on Atom.io.
</span></span></code></pre></div><p>ここで <code>[Enter]</code> キーを押すと Web ブラウザでアカウントページが開く(要 GitHub アカウント)。
開かない場合は Web ブラウザで直接 <a href="https://atom.io/account"><code>https://atom.io/account</code></a> を開く。
アカウントページに表示されたアクセス・トークンを入力すればログイン完了。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Token> ****************
</span></span><span class="line"><span class="cl">Saving token to Keychain done
</span></span></code></pre></div><p>あとは</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ apm stars --install
</span></span></code></pre></div><p>で <abbr class="emoji-chars" title=":star:">⭐</abbr> を付けたパッケージをまとめてインストールできる。
ちなみに,どのパッケージに <abbr class="emoji-chars" title=":star:">⭐</abbr> を付けたかは</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ apm stars
</span></span></code></pre></div><p>で確認できる。
その他の細々した設定は <a href="https://gist.github.com/spiegel-im-spiegel/e6e9c7340987f1607b2c" title="ATOM Editor の設定(カスタマイズ, Windows 環境用)">Gist に貼り付けておいた</a>のを流用した。
なんでも取っておくものである <abbr class="emoji-chars" title=":smile:">😄</abbr></p>
<h2>Windows Terminal のインストール</h2>
<p>これでようやく「メモ帳」から脱することができたので,本格的に環境を作っていこう。</p>
<p>かつて Windows 7 を使ってた頃はターミナル・エミュレータに ConEmu を使っていたが,本家 Microsoft からようやくまともなターミナル・エミュレータがリリースされた。</p>
<ul>
<li><a href="https://docs.microsoft.com/ja-jp/windows/terminal/">Windows ターミナルの概要 | Microsoft Docs</a></li>
</ul>
<p>Windows Terminal は Microsoft Store からインストールできる。
ひとまずこれをインストールして起動し,既定の PowerShell 上で作業する。</p>
<h2><a href="https://scoop.sh/" title="Scoop">Scoop</a> のインストール</h2>
<p><a href="https://scoop.sh/" title="Scoop">Scoop</a> は Windows 用のパッケージ・マネージャである。
Windows 用のパッケージ・マネージャといえば <a href="https://chocolatey.org/" title="Chocolatey Software | Chocolatey - The package manager for Windows">Chocolatey</a> が有名だが,今回は <a href="https://scoop.sh/" title="Scoop">Scoop</a> で。
<a href="https://scoop.sh/" title="Scoop">Scoop</a> の特徴は以下の通り。</p>
<figure>
<blockquote><ul>
<li>利用に管理者権限は不要!</li>
<li>実行ファイルは ~\scoop\shims に集約され、環境変数 PATH の肥大化が抑制される</li>
<li>インストーラのセットアップが簡単</li>
<li>nyagos が公式レポジトリにある (Chocolatey にもあるけど)</li>
</ul>
</blockquote>
<figcaption><div><q><a href="https://zenn.dev/zetamatta/books/5ac80a9ddb35fef9a146">scoop / nyagos で始めるコマンドライン生活</a></q>より</div></figcaption>
</figure>
<p>では早速。</p>
<p>まずは PowerShell でスクリプトを起動できるよう権限を取得する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">PS > Set-ExecutionPolicy RemoteSigned -scope CurrentUser
</span></span></code></pre></div><p>既に許可を取得している場合はこの操作は不要である。
そうしておいて <a href="https://scoop.sh/" title="Scoop">Scoop</a> をインストールする。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">PS > iwr -useb get.scoop.sh | iex
</span></span></code></pre></div><p>これで OK。
簡単!</p>
<h2><a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell betweeeeeeen UNIX & DOS">NYAGOS</a> のインストール</h2>
<p><a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell betweeeeeeen UNIX & DOS">NYAGOS</a> のインストールは <code>scoop install</code> コマンドで一発 OK。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">PS > scoop install nyagos
</span></span></code></pre></div><p>よーし,うむうむ,よーし。</p>
<h3>Windows Terminal に <a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell betweeeeeeen UNIX & DOS">NYAGOS</a> を登録する</h3>
<p>Windows Terminal では PowerShell を含む複数の shell を登録できる。</p>
<p>まずは <code>[Ctrl+,]</code> で <code>config.json</code> ファイル(のコピー)がメモ帳で表示される(コメントを端折っているので注意)。
これを編集して <a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell betweeeeeeen UNIX & DOS">NYAGOS</a> を登録するのだ。
具体的には以下の部分を追記する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"$schema"</span><span class="p">:</span> <span class="s2">"https://aka.ms/terminal-profiles-schema"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"defaultProfile"</span><span class="p">:</span> <span class="s2">"{61c54bbd-c2c6-5271-96e7-009a87ff44bf}"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"copyOnSelect"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"copyFormatting"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"profiles"</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"defaults"</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"list"</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="p">[</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"guid"</span><span class="p">:</span> <span class="s2">"{61c54bbd-c2c6-5271-96e7-009a87ff44bf}"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Windows PowerShell"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"commandline"</span><span class="p">:</span> <span class="s2">"powershell.exe"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"hidden"</span><span class="p">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"guid"</span><span class="p">:</span> <span class="s2">"{0caa0dad-35be-5f56-a8ff-afceeeaa6101}"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"コマンド プロンプト"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"commandline"</span><span class="p">:</span> <span class="s2">"cmd.exe"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"hidden"</span><span class="p">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"guid"</span><span class="p">:</span> <span class="s2">"{b453ae62-4e3d-5e58-b989-0a998ec441b8}"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"hidden"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Azure Cloud Shell"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"source"</span><span class="p">:</span> <span class="s2">"Windows.Terminal.Azure"</span>
</span></span><span class="line hl"><span class="cl"> <span class="p">},</span>
</span></span><span class="line hl"><span class="cl"> <span class="p">{</span>
</span></span><span class="line hl"><span class="cl"> <span class="nt">"guid"</span><span class="p">:</span> <span class="s2">"{19ddaf5e-e045-481a-bf88-37f7ebe66292}"</span><span class="p">,</span>
</span></span><span class="line hl"><span class="cl"> <span class="nt">"hidden"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
</span></span><span class="line hl"><span class="cl"> <span class="nt">"name"</span><span class="p">:</span> <span class="s2">"Nihongo Yet Another GOing Shell"</span><span class="p">,</span>
</span></span><span class="line hl"><span class="cl"> <span class="nt">"commandline"</span><span class="p">:</span> <span class="s2">"%USERPROFILE%\\scoop\\apps\\nyagos\\current\\nyagos.exe"</span><span class="p">,</span>
</span></span><span class="line hl"><span class="cl"> <span class="nt">"cursorShape"</span><span class="p">:</span> <span class="s2">"vintage"</span><span class="p">,</span>
</span></span><span class="line hl"><span class="cl"> <span class="nt">"startingDirectory"</span><span class="p">:</span> <span class="s2">"%USERPROFILE%"</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="p">]</span>
</span></span><span class="line"><span class="cl"> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"schemes"</span><span class="p">:</span> <span class="p">[],</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"actions"</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="p">[</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span> <span class="nt">"command"</span><span class="p">:</span> <span class="p">{</span><span class="nt">"action"</span><span class="p">:</span> <span class="s2">"copy"</span><span class="p">,</span> <span class="nt">"singleLine"</span><span class="p">:</span> <span class="kc">false</span> <span class="p">},</span> <span class="nt">"keys"</span><span class="p">:</span> <span class="s2">"ctrl+c"</span> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span> <span class="nt">"command"</span><span class="p">:</span> <span class="s2">"paste"</span><span class="p">,</span> <span class="nt">"keys"</span><span class="p">:</span> <span class="s2">"ctrl+v"</span> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span> <span class="nt">"command"</span><span class="p">:</span> <span class="s2">"find"</span><span class="p">,</span> <span class="nt">"keys"</span><span class="p">:</span> <span class="s2">"ctrl+shift+f"</span> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span> <span class="nt">"command"</span><span class="p">:</span> <span class="p">{</span> <span class="nt">"action"</span><span class="p">:</span> <span class="s2">"splitPane"</span><span class="p">,</span> <span class="nt">"split"</span><span class="p">:</span> <span class="s2">"auto"</span><span class="p">,</span> <span class="nt">"splitMode"</span><span class="p">:</span> <span class="s2">"duplicate"</span> <span class="p">},</span> <span class="nt">"keys"</span><span class="p">:</span> <span class="s2">"alt+shift+d"</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>ちなみに <code>guid</code> 項目はローカルマシン内で一意であればなんでもいいのだが(上の記述をそのままコピペしても無問題),気になるのであれば PowerShell の以下のコマンドで取得できる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">PS > New-Guid
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Guid
</span></span><span class="line"><span class="cl">----
</span></span><span class="line"><span class="cl">6c48ee13-e32b-4937-95a5-7e95a2e88613
</span></span></code></pre></div><p>更に <code>config.json</code> ファイル(のコピー)の</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"defaultProfile"</span><span class="p">:</span> <span class="s2">"{61c54bbd-c2c6-5271-96e7-009a87ff44bf}"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>の部分を <a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell betweeeeeeen UNIX & DOS">NYAGOS</a> の GUID に書き換えれば</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"defaultProfile"</span><span class="p">:</span> <span class="s2">"{19ddaf5e-e045-481a-bf88-37f7ebe66292}"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>Windows Terminal の既定の shell を <a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell betweeeeeeen UNIX & DOS">NYAGOS</a> にできる。</p>
<p>編集した <code>config.json</code> ファイル(のコピー)を保存すれば設定が反映される。
ふぃー,よーやくここまでたどり着いた。</p>
<p><a href="https://github.com/nyaosorg/nyagos" title="nyaosorg/nyagos: NYAGOS - The hybrid Commandline Shell betweeeeeeen UNIX & DOS">NYAGOS</a> を使った楽しいアレコレは以下の Zenn 本に書かれている。</p>
<ul>
<li><a href="https://zenn.dev/zetamatta/books/5ac80a9ddb35fef9a146">scoop / nyagos で始めるコマンドライン生活</a></li>
</ul>
<p>上述のセットアップについても,もう少し丁寧に書かれているので,是非どうぞ。</p>
<h3><a href="https://go.dev/">Go</a> で GUID を取得する</h3>
<p>そういや <a href="https://go.dev/">Go</a> の <a href="https://pkg.go.dev/github.com/google/uuid"><code>github.com/google/uuid</code></a> パッケージを使えば <a href="https://www.rfc-editor.org/rfc/rfc4122.html" title="RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace">UUID</a> を取得可能だが, UUID は実質 GUID と同じなので,これを利用して</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="s">"fmt"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="s">"github.com/google/uuid"</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="nx">uuid</span><span class="p">.</span><span class="nf">New</span><span class="p">())</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>とすれば簡単に UUID/GUID が取れる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ go run sample.go
</span></span><span class="line"><span class="cl">f6bdc505-e417-4b7d-a247-a06504cf03a9
</span></span></code></pre></div><h2><a href="https://scoop.sh/" title="Scoop">Scoop</a> を使うなら git は必須</h2>
<p>これでインストールは全て完了だが,今後のためにもう少し <a href="https://scoop.sh/" title="Scoop">Scoop</a> で遊んでみよう。</p>
<p>まず <a href="https://scoop.sh/" title="Scoop">Scoop</a> のバージョンを見ようとしたら</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ scoop -v
</span></span><span class="line"><span class="cl">Current Scoop version:
</span></span><span class="line"><span class="cl">git : 用語 'git' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
</span></span><span class="line"><span class="cl">名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください
</span></span><span class="line"><span class="cl">。
</span></span><span class="line"><span class="cl">発生場所 行:1 文字:1
</span></span><span class="line"><span class="cl">+ git --no-pager log --oneline HEAD -n 1
</span></span><span class="line"><span class="cl">+ ~~~
</span></span><span class="line"><span class="cl"> + CategoryInfo : ObjectNotFound: (git:String) [], CommandNotFoundException
</span></span><span class="line"><span class="cl"> + FullyQualifiedErrorId : CommandNotFoundException
</span></span></code></pre></div><p>って,どエラ怒られた(笑) どうやら <a href="https://scoop.sh/" title="Scoop">Scoop</a> はパッケージ管理を git ベースで行っているらしく,ちゃんと使うなら git の導入が必須のようだ。
ほんじゃあ,まぁ</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ scoop install git
</span></span><span class="line"><span class="cl">Scoop uses Git to update itself. Run 'scoop install git' and try again.
</span></span><span class="line"><span class="cl">...
</span></span></code></pre></div><p>おっ,アップデートした後にもっかいやれって言ってるな。
ならば,アップデートしよう。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ scoop update
</span></span><span class="line"><span class="cl">Updating Scoop...
</span></span><span class="line"><span class="cl">Updating 'main' bucket...
</span></span><span class="line"><span class="cl">Checking repo... ok
</span></span><span class="line"><span class="cl">The main bucket was added successfully.
</span></span><span class="line"><span class="cl">Scoop was updated successfully!
</span></span><span class="line"><span class="cl">'itcode"' は、内部コマンドまたは外部コマンド、
</span></span><span class="line"><span class="cl">操作可能なプログラムまたはバッチ ファイルとして認識されていません。
</span></span><span class="line"><span class="cl">exit status 1
</span></span></code></pre></div><p>おりょ,また変なエラーが出たよ。
<code>itcode"</code> 云々というのは PowerShell 絡みらしい。
なので,同じコマンドを PowerShell 上で走らせれば問題なく完了する。</p>
<p>うむ,次回から気をつけよう。</p>
<p>これでもっかい</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ scoop update git
</span></span></code></pre></div><p>とすれば,最新版が取れるわけだ。</p>
<h2>ついでに <a href="https://scoop.sh/" title="Scoop">Scoop</a> で <a href="https://gnupg.org/" title="The GNU Privacy Guard">GnuPG</a> もインストールする</h2>
<p>ついでに <a href="https://scoop.sh/" title="Scoop">Scoop</a> で <a href="https://gnupg.org/" title="The GNU Privacy Guard">GnuPG</a> もインストールしてみよう。
あるかな?</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ scoop search gnupg
</span></span><span class="line"><span class="cl">'main' bucket:
</span></span><span class="line"><span class="cl"> gnupg (2.2.23)
</span></span><span class="line"><span class="cl"> gnupg1 (1.4.23)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ scoop search gpg
</span></span><span class="line"><span class="cl">'main' bucket:
</span></span><span class="line"><span class="cl"> gnupg1 (1.4.23) --> includes 'gpg.exe'
</span></span><span class="line"><span class="cl"> gpg (2.2.23)
</span></span></code></pre></div><p>どっちだよ(笑)</p>
<p>実はこれ,中身は同じなのだが別々のパッケージとしてインストールされちゃうようだ。
ふむむー。</p>
<p>まぁ,いいや。
今回は <code>gnupg</code> で。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ scoop install gnupg
</span></span><span class="line"><span class="cl">Installing 'gnupg' (2.2.23) [64bit]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Linking ~\scoop\apps\gnupg\current => ~\scoop\apps\gnupg\2.2.23
</span></span><span class="line"><span class="cl">Persisting home
</span></span><span class="line"><span class="cl">'gnupg' (2.2.23) was installed successfully!
</span></span></code></pre></div><p><a href="https://scoop.sh/" title="Scoop">Scoop</a> で提供されるパッケージのうち,シングルバイナリのコマンドは <code>%USERPROFILE%\scoop\shims</code> フォルダに集められるのだが, <a href="https://gnupg.org/" title="The GNU Privacy Guard">GnuPG</a> のように複数のバイナリで構成されているものは専用のフォルダを作り環境変数 <code>PATH</code> にインストールしたフォルダを追加するようだ。
その際に</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Linking ~\scoop\apps\gnupg\current => ~\scoop\apps\gnupg\2.2.23
</span></span></code></pre></div><p>のように <code>current</code> フォルダをシンボリックリンクとして設置することで複数のバージョンに対応できるようにしているみたい。</p>
<p><a href="https://gnupg.org/" title="The GNU Privacy Guard">GnuPG</a> の動作確認をしておこう。</p>
<pre tabindex="0"><code>$ gpg --version
gpg (GnuPG) 2.2.23
libgcrypt 1.8.6
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: C:/Users/username/scoop/apps/gnupg/current/home
サポートしているアルゴリズム:
公開鍵: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
ハッシュ: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
圧縮: 無圧縮, ZIP, ZLIB, BZIP2
</code></pre><p>上述の <code>Home</code> だが,これもシンボリックリンクが切られていて,実体は <code>%USERPROFILE%\scoop\persist\gnupg\home</code> にある。</p>
<div class="box"><p><strong>【2020-11-02 追記】</strong>
<a href="https://gnupg.org/" title="The GNU Privacy Guard">GnuPG</a> については以下の記事でもう少し掘り下げて紹介している。</p>
<ul>
<li><a href="https://text.baldanders.info/openpgp/gnupg-home-in-windows/">GnuPG の HOME はどこにある?</a></li>
</ul></div>
<h2>今回はここまで</h2>
<p>おっと。
昼休憩が終わったようだ。
次回があれば,また今度。</p>
<h2>ブックマーク</h2>
<ul>
<li><a href="https://github.com/lukesampson/scoop">lukesampson/scoop: A command-line installer for Windows.</a></li>
<li><a href="https://qiita.com/iakio/items/78e7f098047ea0a47d70">Windows用のコマンドラインインストーラScoop - Qiita</a></li>
<li><a href="https://qiita.com/Dooteeen/items/12dc8fb14042888113d0">Scoopを使ったWindows環境構築のススメ - Super!! - Qiita</a></li>
<li><a href="https://hogehoge.tk/guid/">GUID生成ツール</a></li>
<li><a href="https://zenn.dev/zetamatta/books/c84cbe23093eee1b5830">/bin/shに慣れた人に贈るバッチファイルの書き方</a></li>
<li><a href="https://blog.satotaichi.info/scoop/index.html">ScoopでWindowsにおける開発環境構築を最適化しよう | さにあらず</a></li>
<li><a href="https://qiita.com/sozaiya/items/fd7ec3000939f0697939">scoopを使ったwindows環境構築の実例 - Qiita</a></li>
<li><a href="https://blog.isonishi.com/posts/scoop-git-sourcetree/">Scoop で Git と SourceTree をインストール - ありふれた備忘録</a></li>
</ul>
<h2>参考図書</h2>
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/4314009071?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/51ZRZ62WKCL._SL160_.jpg" width="108" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/4314009071?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">暗号化 プライバシーを救った反乱者たち</a></dt>
<dd>スティーブン・レビー (著), 斉藤 隆央 (翻訳)</dd>
<dd>紀伊國屋書店 2002-02-16</dd>
<dd>単行本</dd>
<dd>4314009071 (ASIN), 9784314009072 (EAN), 4314009071 (ISBN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">20世紀末,暗号技術の世界で何があったのか。知りたかったらこちらを読むべし!</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2015-03-09">2015-03-09</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- 暗号化 プライバシーを救った反乱者たち -->
<div class="hreview">
<div class="photo"><a href="https://www.amazon.co.jp/dp/B015643CPE?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1"><img src="https://m.media-amazon.com/images/I/51t6yHHVwEL._SL160_.jpg" width="113" alt="photo"></a></div>
<dl>
<dt class="item"><a class="fn url" href="https://www.amazon.co.jp/dp/B015643CPE?tag=baldandersinf-22&linkCode=ogi&th=1&psc=1">暗号技術入門 第3版 秘密の国のアリス</a></dt>
<dd>結城 浩 (著)</dd>
<dd>SBクリエイティブ 2015-08-25 (Release 2015-09-17)</dd>
<dd>Kindle版</dd>
<dd>B015643CPE (ASIN)</dd>
<dd>評価<abbr class="rating fa-sm" title="5"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i></abbr></dd>
</dl>
<p class="description">SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。</p>
<p class="powered-by">reviewed by <a href='#maker' class='reviewer'>Spiegel</a> on <abbr class="dtreviewed" title="2015-09-20">2015-09-20</abbr> (powered by <a href="https://affiliate.amazon.co.jp/assoc_credentials/home">PA-APIv5</a>)</p>
</div> <!-- 暗号技術入門 第3版 -->
NYAGOS 4.4.2 がリリースされた
tag:text.Baldanders.info,2019-04-07:/release/2019/04/nyagos-4_4_2-is-released/
2019-04-07T00:16:12+00:00
2021-09-12T04:12:08+00:00
今回は盛り沢山だぞ!
Spiegel
https://baldanders.info/profile/
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.4.2_0 がリリースされた。
つか,もたもたしてたら 4.4.2_1 も出てたよ。</p>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.2_0">Release 4.4.2_0 · nyaosorg/nyagos · GitHub</a></li>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.2_1">Release 4.4.2_1 · nyaosorg/nyagos · GitHub</a></li>
</ul>
<p>変更点は以下の通り。
盛り沢山だぞ!</p>
<figure lang="en">
<blockquote><ul>
<li>OLEオブジェクトからLuaオブジェクトへの変換が日付型などでパニックを起こす不具合を修正</li>
<li>Luaの数値が実数として OLE に渡されるべきだったのに、整数として渡されていた。</li>
<li>Lua: 関数: <code>nyagos.to_ole_integer(n)</code> (数値を OLE 向けの整数に変換)を追加(trash.lua用)</li>
<li>Lua: OLEObject に列挙用オブジェクトを得るメソッド <code>_iter()</code> を追加</li>
<li>Lua: OLEObject を開放するメソッド <code>OLEObject:_release()</code> を追加</li>
<li>trash.lua が COM の解放漏れを起こしていた問題を修正</li>
<li>Lua: <code>create_object</code>生成された IUnkown インスタンスが解放されていなかった不具合を修正</li>
<li>「~ユーザ名」の展開を実装</li>
<li>バッチファイル以外の実行ファイルの exit status が表示されなくなっていた不具合を修正</li>
<li>%COMSPEC% が未定義の時に CMD.EXE を用いるエイリアス(ren,mklink,dir,…)が動かなくなっていた不具合を修正</li>
<li>全角空白(%U+3000%)がパラメータの区切り文字と認識されていた点を修正</li>
<li>(#359) -c,-k オプションで CMD.EXE のように複数の引数をとれるようにした</li>
<li>「存在しないディレクトリ\何か」を補完しようとすると「The system cannot find the path specified.」と表示される不具合を修正 (Thx! tsuyoshicho)</li>
<li>(#360) 幅ゼロやサロゲートペアな Unicode は<code><NNNNN></code> と表示するようにした (Thx! tsuyoshicho)</li>
<li>サロゲートペアな Unicode をそのまま出力するオプション –output-surrogate-pair を追加</li>
<li>suコマンドで、ネットワークドライブが失なわれないようにした</li>
<li>(#197) ソースがディレクトリで -s がない時、<code>ln</code> はジャンクションを作成するようにした</li>
<li>内蔵の mklink コマンドを実装し、<code>CMD.exe /c mklink</code> のエイリアス <code>mklink</code> を削除</li>
<li>ゼロバイトの Lua ファイルを削除(cdlnk.lua, open.lua, su.lua, swapstdfunc.lua )</li>
<li>(#262) <code>diskfree</code> でボリュームラベルとファイルシステムを表示するようにした</li>
<li>UNCパスがカレントディレクトリでもバッチファイルを実行できるようにした。</li>
<li>UNCパスがカレントディレクトリの時、ren,assoc,dir,for が動作しない不具合を修正</li>
<li>(#363) nyagos.alias.COMMAND=“string” 中では逆クォート置換が機能しない問題を修正 (Thx! tostos5963 & sambatriste )</li>
<li>(#259) アプリケーションをダイアログで選んでファイルを開くコマンド <code>select</code> を実装</li>
<li><code>diskfree</code> の出力フォーマットを修正</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.2_0">Release 4.4.2_0</a></q></div></figcaption>
</figure>
<figure lang="en">
<blockquote><ul>
<li>diskfree: 行末の空白を削除</li>
<li><code>~"\Program Files"</code> の最初の引用符が消えて、<code>Files</code> が引数に含まれない不具合を修正</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.2_1">Release 4.4.2_1</a></q></div></figcaption>
</figure>
<p>新たに追加された <code>select</code> コマンドはエクスプローラのコンテキストメニュー「プログラムから開く」に近い機能を提供していて,たとえば</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ select index.html
</span></span></code></pre></div><p>とか打てば</p>
<figure style='margin:0 auto;text-align:center;'><a href="./select.png"><img src="./select.png" srcset="./select.png 672w" sizes="(min-width:600px) 500px, 80vw" alt="" loading="lazy"></a></figure>
<p>てな感じでファイルを開くプログラムの選択ダイアログが開く。
なにそれ素敵!</p>
<p>まるきし余談だが,先々月に <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.4.1 が出てて,私も Issue 上げてたのに記事にしてなかった。
1月2月はホンマに余裕がなかったからなぁ。
まぁ今は余裕があるかと言われればそうでもないんだけど…</p>
<p>アップデートは計画的に。</p>
<h2>【2019-04-13 追記】 NYAGOS 4.4.2_2 がリリースされた</h2>
<figure lang="en">
<blockquote><ul>
<li>Ctrl-RIGHT,ALT-F(次の単語へ), Ctrl-LEFT,ALT-B(前の単語へ)を実装</li>
<li>インクリメンタルサーチ開始時にトップへ移動する時のバックスペースの数が間違っていた不具合を修正</li>
<li>(#364) <code>ESC[0A</code> というエスケープシーケンスが使われていた不具合を修正</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.2_2">Release 4.4.2_2</a></q></div></figcaption>
</figure>
NYAGOS 4.4.0 がリリースされた
tag:text.Baldanders.info,2019-01-12:/release/2019/01/nyagos-4_4_0-is-released/
2019-01-12T08:23:12+00:00
2021-09-12T04:12:08+00:00
実験レベルながら Linux に対応したですよ。
Spiegel
https://baldanders.info/profile/
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.4.0 がリリースされた。</p>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.0_0">Release 4.4.0_0 · nyaosorg/nyagos · GitHub</a></li>
</ul>
<p>変更点は以下の通り。</p>
<figure lang="en">
<blockquote><ul>
<li>Support Linux (experimental)</li>
<li>Fix the problem that current directories per drive were not inherited to child processes.</li>
<li>Use the library “mattn/go-tty” instead of “zetamatta/go-getch”</li>
<li>Stop using msvcrt.dll via “syscall” directly</li>
<li>On linux, the filename NUL equals /dev/null</li>
<li>Add lua-variable nyagos.goos</li>
<li>(#341) Fix an unexpected space is inserted after wide characters
<ul>
<li>On Windows10, enable stdout virtual terminal processing always</li>
<li>If git.exe push disable virtual terminal processing, enable again.</li>
</ul>
</li>
<li>(#339) Fix that wildcard pattern .??* matches ..
<ul>
<li>It requires github.com/zetamatta/go-findfile tagged 20181223-2</li>
</ul>
</li>
</ul>
<hr>
<ul>
<li>Linux サポート(実験レベル)</li>
<li>ドライブ毎のカレントディレクトリが子プロセスに継承されなかった問題を修正</li>
<li>ライブラリ “zetamatta/go-getch” のかわりに “mattn/go-tty” を使うようにした</li>
<li>msvcrt.dll を直接syscall経由で使わないようにした。</li>
<li>Linux でも NUL を /dev/null 相当へ</li>
<li>Lua変数 nyagos.goos を追加</li>
<li>(#341) Windows10で全角文字の前に文字を挿入すると、不要な空白が入る不具合を修正
<ul>
<li>それに伴い、Windows10 では virtual terminal processing を常に有効に</li>
<li>git.exe pushが無効にしても再び有効にする</li>
</ul>
</li>
<li>(#339) ワイルドカード .??* が .. にマッチする問題を修正
<ul>
<li>要 github.com/zetamatta/go-findfile tagged 20181230-2</li>
</ul>
</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.0_beta">Release 4.4.0_beta</a></q></div></figcaption>
</figure>
<figure lang="en">
<blockquote><ul>
<li>Remove beta</li>
<li>To call a batchfile, stop to use <code>/V:ON</code> for CMD.EXE</li>
</ul>
<hr>
<ul>
<li>βを外した</li>
<li>バッチファイルを呼ぶ時に、<code>/V:ON</code> を CMD.EXE に使わないようにした</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.0_0">Release 4.4.0_0</a></q></div></figcaption>
</figure>
<p>実験レベルながら Linux に対応したですよ。
これって Windows を捨てようとしている私へのご褒美? 正直に言って Linux に移行する際の shell をどうしようか悩んでたのよ<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。
まぁ,当分先の話だが。</p>
<h2>【追記 2019-01-19】 NYAGOS 4.4.0_1 がリリースされた</h2>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.0_1">Release 4.4.0_1 · nyaosorg/nyagos · GitHub</a></li>
</ul>
<figure lang="en">
<blockquote><ul>
<li>Abolished “–go-colorable” and “–enable-virtual-terminal-processing”</li>
<li>Implemented <code>killall</code></li>
<li>Implemented <code>copy</code> and <code>move</code> for Linux</li>
<li>(#351) Fix that <code>END</code> (and <code>F11</code>) key did not work</li>
</ul>
<hr>
<ul>
<li>“–go-colorable” と “–enable-virtual-terminal-processing” を廃止</li>
<li><code>killall</code> コマンドを実装</li>
<li>Linux用の <code>copy</code> と <code>move</code> を実装</li>
<li>(#351) <code>END</code> と <code>F11</code> キーが動作もキー割り当てもできなかった不具合を修正</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.4.0_1">Release 4.4.0_1</a></q></div></figcaption>
</figure>
<h2>ブックマーク</h2>
<ul>
<li><a href="https://www.publickey1.jp/blog/19/gnu_bash_5010.html">「GNU Bash 5.0」リリース、10年ぶりのメジャーバージョンアップ - Publickey</a></li>
</ul>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>普段は bash でいいのだが,現在 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 上で運用している Lua スクリプトを Linux でも使いたいなぁ,なんて。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
NYAGOS 4.3.1 がリリース
tag:text.Baldanders.info,2018-06-03:/release/2018/06/nyagos-4_3_1-is-released/
2018-06-03T09:16:56+00:00
2021-09-12T04:12:08+00:00
いくつかの起動時オプションが追加された。
Spiegel
https://baldanders.info/profile/
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3.1 がリリースされた。</p>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.1_0">Release 4.3.1_0 · nyaosorg/nyagos</a></li>
</ul>
<p>いくつかの起動時オプションが追加された。</p>
<figure lang="en">
<blockquote><ul>
<li>Support Windows10’s native ESCAPE SEQUENCE processing with <code>--no-go-colorable</code> and <code>--enable-virtual-terminal-processing</code></li>
<li>For #304,#312, added options to search for the executable from the current directory
<ul>
<li><code>--look-curdir-first</code>: do before %PATH% (compatible with CMD.EXE)</li>
<li><code>--look-curdir-last</code> : do after %PATH% (compatible with PowerShell)</li>
<li><code>--look-curdir-never</code>: never (compatible with UNIX Shells)</li>
</ul>
</li>
<li>nyagos.prompt can now be assigned string literal as prompt template directly.</li>
<li>Fix #314 rmdir could not remove junctions.</li>
</ul>
<hr>
<ul>
<li><code>--no-go-colorable</code> と <code>--enable-virtual-terminal-processing</code> で、Windows10 ネイティブのエスケープシーケンスをサポート</li>
<li>#304,#312, カレントディレクトリから実行ファイルを探す時のオプションを追加
<ul>
<li><code>--look-curdir-first</code>: <code>%PATH%</code> より前に探す(デフォルト:CMD.EXE互換動作)</li>
<li><code>--look-curdir-last</code> : <code>%PATH%</code> より後に探す(PowerShell互換動作)</li>
<li><code>--look-curdir-never</code>: <code>%PATH%</code> だけから実行ファイルを探す(UNIX Shells互換動作)</li>
</ul>
</li>
<li>nyagos.prompt にプロンプトテンプレートの文字列を直接代入できるようになった。</li>
<li>#314 rmdir がジャンクションを削除できなかった問題を修正</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.1_0">Release 4.3.1_0</a></q></div></figcaption>
</figure>
<div class="box"><p><strong>【追記 2018-06-24】</strong>
下記の件は 4.3.1_3 で改修されたようだ。
<code>--look-curdir-never</code> 指定時はカレントディレクトリ直下の <code>hoge.exe</code> は <code>./hoge</code> でのみ起動する。</p>
<div class="box"><p>実行ファイルの検索オプションだが <code>--look-curdir-never</code> について <code>--look-curdir-last</code> との違いがよく分からなかったり。
たとえばカレントディレクトリに <code>hoge.exe</code> があって PATH 上に同名のファイルが存在しない場合に,どちらのオプションでも</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ hoge
</span></span></code></pre></div><p>で起動してしまう。
私としては <code>--look-curdir-never</code> 指定時は <code>./hoge</code> のみで起動することを期待したのだが違うのだろうか。
まぁ,大した問題ではないのでよかろう。</p>
</div>
</div>
<p>にしても,コマンドプロンプトと PowerShell ってそんなところで挙動が違うんだなぁ。
いいのか,それ。</p>
<h2>【追記 2018-06-24】 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3.1_1 がリリース</h2>
<p>不具合等の改修。</p>
<figure lang="en">
<blockquote><ul>
<li>Remove source code for lua53.dll</li>
<li>#317: deadlock when <code>use "subcomplete"</code> is enabled and rclone.exe is found.
<ul>
<li>See also: <a href="https://github.com/yuin/gopher-lua/issues/181">yuin/gopher-lua#181</a></li>
</ul>
</li>
<li>#318,#319: add compatible functions with lua 5.3
<ul>
<li>bit32.band/bitor/bxor</li>
<li>utf8.char/charpattern/codes</li>
</ul>
</li>
</ul>
<hr>
<ul>
<li>lua53.dll 向けのソースコードを削除</li>
<li>#317: <code>use subcomplete</code> が有効で、rclone.exe が見付かった時デッドロックしていた
<ul>
<li><a href="https://github.com/yuin/gopher-lua/issues/181">yuin/gopher-lua#181</a> も参照のこと</li>
</ul>
</li>
<li>#318,#319 下記の Lua 5.3 互換関数を追加
<ul>
<li>bit32.band/bitor/bxor</li>
<li>utf8.char/charpattern/codes</li>
</ul>
</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.1_1">Release 4.3.1_1</a></q></div></figcaption>
</figure>
<h2>【追記 2018-06-24】 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3.1_2 がリリース</h2>
<p>不具合等の改修。</p>
<figure lang="en">
<blockquote><ul>
<li>#320: fix the imcompatibility: nyagos.rawexec & raweval did not expand tables in arguments.</li>
<li>–show-version-only enables –norc automatically</li>
</ul>
<hr>
<ul>
<li>#320: nyagos.rawexec & raweval が引数内のテーブルを展開していなかった非互換性を修正</li>
<li>–show-version-only を指定すると –norc を自動的に有効化するようにした</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.1_2">Release 4.3.1_2</a></q></div></figcaption>
</figure>
<h2>【追記 2018-06-24】 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3.1_3 がリリース</h2>
<p>不具合等の改修。</p>
<figure lang="en">
<blockquote><ul>
<li>#316 Fix: zero-length directory-name in %PATH% is regarded as the current directory</li>
<li>#321 Fix: key function names <code>previous_history</code> & <code>next_history</code> were not registered.</li>
<li>Add -h and –help option</li>
<li>Lines starting with <code>@</code> of Lua script are now ignored to embed into batchfile.</li>
<li>#322 Fix: change the encoding for batchfile’s parameters from Thread Codepage to Console Codepage #322</li>
<li>All of lua variables <code>nyagos.option.*</code> are now able to be set by nyagos.exe’s command-line option.</li>
</ul>
<hr>
<ul>
<li>#316 %PATH% の中の長さゼロのエントリがカレントディレクトリとみなされていた不具合を修正</li>
<li>#321 キー機能名の <code>previous_history</code> と <code>next_history</code> が未登録だった不具合を修正</li>
<li>-h,–help オプションを追加</li>
<li>バッチファイル組み込みのため、Luaスクリプトの <code>@</code> で始まる行を無視するようにした</li>
<li>#322 バッチファイルの引数のエンコーディングをスレッドのコードページから、コンソールのコードページへ変更した。</li>
<li>Lua変数 <code>nyagos.option.*</code> の全てを nyagos.exe のコマンドラインオプションで設定できるようにした。</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.1_3">Release 4.3.1_3</a></q></div></figcaption>
</figure>
NYAGOS 4.3 で GopherLua が採用される
tag:text.Baldanders.info,2018-04-30:/release/2018/04/nyagos-4_3/
2018-04-30T09:49:39+00:00
2021-09-12T04:12:08+00:00
NYAGOS 4.3 で Lua の Go 言語実装のひとつである GopherLua が採用された。
Spiegel
https://baldanders.info/profile/
<p>(正式版が出たので内容を更新した 2018-05-07)</p>
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3 で <a href="https://www.lua.org/" title="The Programming Language Lua">Lua</a> の <a href="https://golang.org/" title="The Go Programming Language">Go 言語</a>実装のひとつである <a href="https://github.com/yuin/gopher-lua" title="yuin/gopher-lua: GopherLua: VM and compiler for Lua in Go">GopherLua</a> が採用された。</p>
<ul>
<li><a href="https://qiita.com/zetamatta/items/112484eb7fdae87830a0">nyagos で lua53.dll のかわりに GopherLua を使おう - Qiita</a>
<ul>
<li><a href="https://qiita.com/zetamatta/items/18597ed77c4574796c7b">続・nyagos で lua53.dll のかわりに GopherLua を使おう - Qiita</a></li>
</ul>
</li>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3_beta">Release 4.3_beta · nyaosorg/nyagos</a></li>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3_beta2">Release 4.3_beta2 · nyaosorg/nyagos · GitHub</a></li>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_0">Release 4.3.0_0 · nyaosorg/nyagos · GitHub</a></li>
</ul>
<p>以下に変更点をまとめて紹介する。</p>
<figure lang="en">
<blockquote><ul>
<li><strong>Use Gopher-Lua instead of lua53.dll</strong> #300
<ul>
<li>nyagos with lua53.dll (mains.exe) can be built with <code>cd mains ; go build</code></li>
<li>nyagos with no Lua (ngs.exe) can be built with <code>cd ngs ; go build</code></li>
</ul>
</li>
<li>Made <code>nyagos.option.cleanup_buffer</code> (default=false). When it is true, clean up console input buffer before readline.</li>
<li><code>set -o OPTION_NAME</code> and <code>set +o OPTION_NAME</code> (=<code>nyagos.option.OPTION_NAME=</code> on Lua)</li>
<li>Buffer console-output ( go-colorable and bufio.Writer )
^ Fix: Typing C-o looks to raise hang up until Enter or ESCAPE is typed (on 4.3beta) #303
<ul>
<li>Fix the library: <a href="https://github.com/zetamatta/go-box/commit/322b2318471f1ad3ce99a3531118b7095cdf3842">go-box</a></li>
</ul>
</li>
<li>Fix: chcp did not work. (<code>chcp</code> was aliaes to update memory of screen width)</li>
<li>Add <code>ls -L</code> which shows information for the file refernces rather than for the link it self. (because ls could not show the directories in OneDrive )</li>
</ul>
<hr>
<ul>
<li><strong>lua53.dll のかわりに Gopher-Lua を採用</strong> #300
<ul>
<li>旧来の lua53.dll 版 nyagos (mains.exe) は <code>cd mains ; go build</code> でビルド可能</li>
<li>Lua無し版 nyagos (ngs.exe) は <code>cd ngs ; go build</code> でビルド可能</li>
</ul>
</li>
<li><code>nyagos.option.cleanup_buffer</code> を追加(デフォルトは false)。true の場合、一行入力の前にコンソールバッファをクリアする</li>
<li><code>set -o OPTION_NAME</code> と <code>set +o OPTION_NAME</code> を新設(<code>nyagos.option.OPTION_NAME=</code> on Lua と等価)</li>
<li>コンソール出力をバッファリングするようにした ( go-colorable and bufio.Writer )</li>
<li>C-o を押すと Enter か Escape が押されるまでハングしたように見える不具合を修正
<ul>
<li>(ライブラリを修正: <a href="https://github.com/zetamatta/go-box/commit/322b2318471f1ad3ce99a3531118b7095cdf3842">go-box</a>)</li>
</ul>
</li>
<li>chcp が動作しない不具合を修正 (同コマンドは画面幅取得のため別名定義していた)</li>
<li>シンボリックリンクの先を参照するオプション <code>ls -L</code> を追加(OneDrive内のディレクトリーが表示できなかったため)</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_0">Release 4.3.0_0</a></q></div></figcaption>
</figure>
<p>起動時のバージョン表記は以下のようになる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Nihongo Yet Another GOing Shell 4.3.0_2-amd64 by go1.10.2
</span></span><span class="line"><span class="cl">Powered by GopherLua 0.1
</span></span><span class="line"><span class="cl">(c) 2014-2018 NYAOS.ORG <http://www.nyaos.org>
</span></span></code></pre></div><p>私も以前 <a href="https://www.lua.org/" title="The Programming Language Lua">Lua</a> の <a href="https://golang.org/" title="The Go Programming Language">Go 言語</a>実装についてちょろんと調べたことがあるのだが</p>
<ul>
<li><a href="https://text.baldanders.info/golang/lua/">Go 言語による Lua 実装を試してみた</a></li>
</ul>
<p>このときは別のパッケージでしかも args などのグローバル変数の設定の仕方がよく分からなくて放置していたのだ(ゴメンペコン)。</p>
<p><a href="https://golang.org/" title="The Go Programming Language">Go 言語</a>は組込み用途のコードも書けるので,そこに <a href="https://www.lua.org/" title="The Programming Language Lua">Lua</a> エンジンを(<a href="https://golang.org/" title="The Go Programming Language">Go 言語</a>ネイティブで)組み込めるというのは意義が大きいと思う。
例えば現在のツールの多くは設定情報を YAML や TOML などで記述するが, <a href="https://www.lua.org/" title="The Programming Language Lua">Lua</a> で設定を記述できるのなら,ちょっとしたロジックを組み込むことも可能になる。
実際に <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> ではコマンドの alias に <a href="https://www.lua.org/" title="The Programming Language Lua">Lua</a> コードを組み込むことができる。</p>
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> で <a href="https://github.com/yuin/gopher-lua" title="yuin/gopher-lua: GopherLua: VM and compiler for Lua in Go">GopherLua</a> を組み込んでくれるのなら,是非ソースコードも読んでノウハウを勉強したい。</p>
<div class="box"><p><strong>【追記 2018-05-07】</strong> 4.3.0 にアップグレードして起動した際に</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">C:\Users\username\AppData\Roaming\NYAOS_ORG\amd64.nyagos.luac line:1(column:1) near '←': Invalid token
</span></span></code></pre></div><p>と警告が出た。
古いファイルなのかな?</p>
<p>この場合は <code>C:\Users\username\AppData\Roaming\NYAOS_ORG</code> フォルダの中身を掃除すればいいようだ。
なお,このフォルダにある <code>nyagos.history</code> ファイルは名前の通りコマンド履歴なのでご注意を。</p>
</div>
<h2>【追記 2018-05-07】 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3.0_1 がリリース</h2>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_1">Release 4.3.0_1 · nyaosorg/nyagos · GitHub</a></li>
</ul>
<p>不具合の修正のみ。</p>
<figure lang="en">
<blockquote><ul>
<li>Fix: nyagos.d/start.lua did not worked because the member <code>rawargs</code> of alias-function’s argument was not implemented.</li>
<li>Fix: the return value of alias-function was not evaluted.</li>
<li>Fix: for the script in -e option, <code>arg[]</code> was not assinged.</li>
<li>Fix: On -f & -e option, warned as <code>getRegInt: could not find shell in Lua instanc e</code></li>
<li>Fix: batchfile cound not return the value of <code>exit /b</code> as ERRORLEVEL</li>
</ul>
<hr>
<ul>
<li>nyagos.d/start.lua が動作していなかった不具合を修正 (エイリアス関数の <code>rawargs</code> パラメータが実装されていなかった)</li>
<li>alias 関数の戻り値が評価されていなかった不具合を修正</li>
<li>-e オプションのスクリプト向けに、<code>arg[]</code> に引数が代入されていなかった</li>
<li>-e,-f オプションで、<code>getRegInt: could not find shell in Lua instance</code> が表示される不具合を修正</li>
<li>バッチファイルが <code>exit /b</code> の値を ERRORLEVEL として返せなかった不具合を修正</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_1">Release 4.3.0_1</a></q></div></figcaption>
</figure>
<h2>【追記 2018-05-07】 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3.0_2 がリリース</h2>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_2">Release 4.3.0_2 · nyaosorg/nyagos · GitHub</a></li>
</ul>
<p>不具合の修正のみ。</p>
<figure lang="en">
<blockquote><ul>
<li>#305: Fix issue that user’s .nyagos was not loaded again (Thx! @erw7)</li>
</ul>
<hr>
<ul>
<li>#305: ユーザの .nyagos が二回目以降ロードされない不具合を修正(Thx! @erw7)</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_2">Release 4.3.0_2</a></q></div></figcaption>
</figure>
<h2>【追記 2018-05-10】 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3.0_3 がリリース</h2>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_3">Release 4.3.0_3 · nyaosorg/nyagos</a></li>
</ul>
<p>不具合の修正。
着々と改善されています。</p>
<figure lang="en">
<blockquote><ul>
<li>Fix: forgot implement nyagos.setalias , nyagos.getalias (<code>alias { CMD=XXX}</code> did not work.)</li>
<li>Fix: that the element [0] of the table value returned by alias-function was not used as the new command name to evaluate.</li>
<li>Fix: <code>doc/09-Build_*.md</code> about how to download sourcefiles from github</li>
</ul>
<hr>
<ul>
<li>nyagos.setalias, nyagos.getalias の実装が漏れており、<code>alias { CMD=XXX}</code> が動かなくなっていた</li>
<li>エイリアスの戻り値でテーブルが与えられた時、コマンド名として解釈すべき、要素[0]が使われていなかった不具合を修正</li>
<li><code>doc/09-Build_*.md</code>: github からのソースダウンロード方法についてドキュメント更新</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_3">Release 4.3.0_3</a></q></div></figcaption>
</figure>
<h2>【追記 2018-05-13】 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.3.0_4 がリリース</h2>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_4">Release 4.3.0_4 · nyaosorg/nyagos</a></li>
</ul>
<p>不具合の修正。
着々と改善されています。</p>
<figure lang="en">
<blockquote><ul>
<li>Fix: #309 nyagos.getkey() raised panic (Thx @nocd5)</li>
<li>Fix: error-message when command <code>lnk</code>’s target is not <code>*.lnk</code> nor exist.</li>
<li>Fix: the cursor blink was switched to off on the child process.</li>
</ul>
<hr>
<ul>
<li>Fix: #309 nyagos.getkey() が使えない不具合を修正 (Thx @nocd5)</li>
<li><code>lnk</code> コマンドの宛先が <code>*.lnk</code> でなかったり存在しなかった時のエラーメッセージを修正</li>
<li>子プロセスのカーソルがオフになってしまう不具合を修正</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.3.0_3">Release 4.3.0_3</a></q></div></figcaption>
</figure>
<h2>ブックマーク</h2>
<ul>
<li><a href="http://inforno.net/articles/2015/02/15/gopher-lua-released">inforno :: LuaのGo言語実装を公開しました</a></li>
<li><a href="https://qiita.com/nocd5/items/1736064cd9ee652d5920">nyagos 4.3でもmigemoでディレクトリ移動したい! - Qiita</a></li>
</ul>
NYAGOS 4.2.5 のリリースと環境変数の扱い
tag:text.Baldanders.info,2018-03-27:/release/2018/03/nyagos-4_2_5_beta-released/
2018-03-27T10:47:59+00:00
2021-09-12T04:12:08+00:00
このバージョンからバッチファイル実行時の環境変数の扱いが変わるようだ。
Spiegel
https://baldanders.info/profile/
<p>(正式版がリリースされたので改題しました)</p>
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.2.5 がリリースされた。</p>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.5_beta">Release 4.2.5_beta · nyaosorg/nyagos</a></li>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.5_beta2">Release 4.2.5_beta2 · nyaosorg/nyagos</a></li>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.5_0">Release 4.2.5_0 · nyaosorg/nyagos</a></li>
</ul>
<p>以下に変更点をまとめて紹介する。</p>
<figure lang="en">
<blockquote><ul>
<li>Read the value of environment variables and the current directory that a batchfile changed like CMD.EXE.</li>
<li>And refactored a lot of source files</li>
<li>Fix: #296 the batchfile could not be executed when the username contains multibyte-character.
<ul>
<li>Fix that the encoding of the temporary batchfile was UTF8.</li>
<li>Fix that the end of the each line of the temporary batchfile was LF not CRLF.</li>
</ul>
</li>
<li>Fix: #297 running the batchfile includes exit without /b option, an error occurs</li>
<li>Add Lua-flag: nyagos.option.usesource. When it is false, batchfiles can not change nyagos’s environment variables and directory.(default:true)</li>
</ul>
<hr>
<ul>
<li>CMD.EXE と同様に、バッチファイルが変更した環境変数・カレントディレクトリを読み取るようにした。</li>
<li>ソースの幾つかを派手にリファクタリングした。</li>
<li>#296 ユーザ名にマルチバイト文字が入っていると、バッチが正常動作しない不具合を修正
<ul>
<li>一時バッチファイルのエンコーディングが UTF8 になっていた</li>
<li>一時バッチファイルの改行コードが CRLF ではなく LF になっていた</li>
</ul>
</li>
<li>#297 /b なしの exit をバッチファイルが実行した時、一時ファイルが無い旨のエラーがでていた</li>
<li>luaフラグ nyagos.option.usesource を追加。false の時、バッチファイルは NYAGOS の環境変数を変更できなくなる(default:true)</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.5_0">Release 4.2.5</a></q></div></figcaption>
</figure>
<p>というわけで,このバージョンからバッチファイル(<code>*.bat</code>, <code>*.cmd</code>)実行時の環境変数の扱いが変わるようだ。
詳しくは以下を参照のこと。</p>
<ul>
<li><a href="https://qiita.com/zetamatta/items/efff93d92ac2150192fb">NYAGOS 4.2.5βが、いかにしてバッチファイルでの環境変数の変更取り込みを可能としたか - Qiita</a></li>
</ul>
<p>個人的にはバッチファイルで環境変数が汚れるのは好みではなかったので <code>source</code> コマンドのみで環境変数を変えられるという仕様は結構気に入っていたのだが,まぁいいか。
問題ない。</p>
<div class="box"><strong>【追記 2018-03-31】</strong> <code>nyagos.option.usesource</code> オプションを追加していただいた。
これを <code>false</code> にすれば従来どおり <code>source</code> コマンドのみで環境変数を変更できる。
ホームディレクトリの <code>.nyagos</code> に追記しておけばいいだろう。</div>
<h2>【追記 2018-04-18】 <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.2.5_1 がリリース</h2>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.5_1">Release 4.2.5_1 · nyaosorg/nyagos</a></li>
</ul>
<p>不具合の修正のみ。</p>
<figure lang="en">
<blockquote><ul>
<li>Fix: <code>if [not] errorlevel N</code> did not work on block-if.</li>
<li>Fix: that <code>ls -1F</code> did not show the indicator such as <code>/</code>,<code>*</code> or <code>@</code>.</li>
<li>Fix: the problem that executables reparse-pointed but not symbolic-linked can not be found. ★</li>
<li>Fix: <code>ls -F</code> marked ‘<code>@</code>’ to files and directories which ar reparse-pointed but not symbolic-link nor junction</li>
<li>Changed the error message when the command history is called in <code>_nyagos</code></li>
</ul>
<p>★ This is the reason that executables in OneDrive can not be called.</p>
<hr>
<ul>
<li>ブロックif で <code>if [not] errorlevel N</code> が動かなかった不具合を修正</li>
<li>リパースポイント先の実行ファイルが見付からなくなっている問題を修正(※)</li>
<li><code>ls -1F</code> が <code>/</code>,<code>*</code> や <code>@</code> といったインジケーターを出力しない問題を修正</li>
<li><code>ls -F</code> が「リパースポイントではあるが、ジャンクション、シンボリックリンクでないファイル・ディレクトリ」に <code>@</code> マークをつけていた不具合を修正</li>
<li><code>_nyagos</code> で history コマンドを使った時のエラーメッセージを変更</li>
</ul>
<p>(※ OneDrive の下においた実行ファイルが実行できなくなる問題の原因がコレです)</p>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.5_1">Release 4.2.5_1</a></q></div></figcaption>
</figure>
<h2>【付録】 環境変数の汚染を防ぐには</h2>
<p>バッチファイルで環境変数を汚さないようにするには <code>setlocal ... endlocal</code> で囲めばよい<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。
しかも入れ子にできる。
たとえばフィボナッチ数を数え上げる処理はこんな感じ<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl"><span class="p">@</span><span class="k">echo</span> off
</span></span><span class="line"><span class="cl"><span class="k">setlocal</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">setlocal</span> enabledelayedexpansion
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">set</span> <span class="k">/a</span> <span class="nv">n</span> <span class="o">=</span> <span class="o">%~</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="k">set</span> <span class="k">/a</span> <span class="nv">b1</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="k">set</span> <span class="k">/a</span> <span class="nv">b2</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="nv">%n%</span> <span class="o">==</span> 1 <span class="k">echo</span> 1: <span class="nv">%b2%</span> <span class="p">&&</span> <span class="k">goto</span> <span class="p">:</span><span class="nl">end</span>
</span></span><span class="line"><span class="cl"><span class="k">echo</span> 1: <span class="nv">%b2%</span>
</span></span><span class="line"><span class="cl"><span class="k">set</span> <span class="k">/a</span> <span class="nv">b2</span> <span class="o">=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="nv">%n%</span> <span class="o">==</span> 2 <span class="k">echo</span> 2: <span class="nv">%b2%</span> <span class="p">&&</span> <span class="k">goto</span> <span class="p">:</span><span class="nl">end</span>
</span></span><span class="line"><span class="cl"><span class="k">echo</span> 2: <span class="nv">%b2%</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="k">/l</span> <span class="se">%%</span>i <span class="k">in</span> <span class="p">(</span><span class="mi">3</span>, <span class="mi">1</span>, <span class="nv">%n%</span><span class="p">)</span> <span class="k">do</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="k">set</span> <span class="k">/a</span> <span class="nv">fib</span> <span class="o">=</span> <span class="o">!</span><span class="nv">b1! + !b2</span><span class="o">!</span>
</span></span><span class="line"><span class="cl"> <span class="k">set</span> <span class="k">/a</span> <span class="nv">b1</span> <span class="o">=</span> <span class="o">!</span><span class="nv">b2</span><span class="o">!</span>
</span></span><span class="line"><span class="cl"> <span class="k">set</span> <span class="k">/a</span> <span class="nv">b2</span> <span class="o">=</span> <span class="o">!</span><span class="nv">fib</span><span class="o">!</span>
</span></span><span class="line"><span class="cl"> <span class="k">echo</span> <span class="se">%%</span>i: <span class="nv">!b2!</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">:</span><span class="nl">end</span>
</span></span><span class="line"><span class="cl"><span class="k">endlocal</span> <span class="p">&&</span> <span class="k">set</span> <span class="k">/a</span> <span class="nv">fib</span> <span class="o">=</span> <span class="o">%</span><span class="nv">b2</span><span class="o">%</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">echo</span> <span class="nv">%~1</span>th Fibonacci number is <span class="nv">%fib%</span>
</span></span><span class="line"><span class="cl"><span class="k">endlocal</span>
</span></span></code></pre></div><p><code>endlocal && set /a fib = %b2%</code> で <code>setlocal ... endlocal</code> スコープの外に値を持ち出している点に注目。</p>
<p>これを実行すると以下のようになる。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">C:> fibonacci.cmd 10
</span></span><span class="line"><span class="cl">1: 0
</span></span><span class="line"><span class="cl">2: 1
</span></span><span class="line"><span class="cl">3: 1
</span></span><span class="line"><span class="cl">4: 2
</span></span><span class="line"><span class="cl">5: 3
</span></span><span class="line"><span class="cl">6: 5
</span></span><span class="line"><span class="cl">7: 8
</span></span><span class="line"><span class="cl">8: 13
</span></span><span class="line"><span class="cl">9: 21
</span></span><span class="line"><span class="cl">10: 34
</span></span><span class="line"><span class="cl">10th Fibonacci number is 34
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">C:> set fib
</span></span><span class="line"><span class="cl">環境変数 fib が定義されていません
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">C:> set b2
</span></span><span class="line"><span class="cl">環境変数 b2 が定義されていません
</span></span></code></pre></div><h2>ブックマーク</h2>
<ul>
<li><a href="http://d.hatena.ne.jp/IIJIMAS/20101023/1287772847">バッチファイルで、setlocal~endlocal内での変数の値を外部に引き継ぎたい! - IIJIMASの日記</a></li>
<li><a href="https://qiita.com/sawa_tsuka/items/67be34bab1fdf3fb87f9">.bat(バッチファイル)のforコマンド解説。 - Qiita</a></li>
<li><a href="https://qiita.com/sawa_tsuka/items/c7c477cacf8c97792e17">バッチファイル界の魔境『遅延環境変数』に挑む(おまけもあるよ) - Qiita</a></li>
</ul>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>時々 <code>setlocal</code> と <code>endlocal</code> がペアになっていない記述を見かける(特に遅延環境変数の説明とか)。 <code>endlocal</code> がなくても別にエラーになったりはしないしちゃんと動くのだが(バッチ終了時に全スコープが閉じられるので),プログラマならスコープは正しく書こうね。 <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
<li id="fn:2">
<p>コード内の <code>enabledelayedexpansion</code> は遅延環境変数を有効にするオプション。 <code>!fib!</code> などがこれに該当する。 <code>for</code> 文や <code>if</code> 文の <code>( ... )</code> で囲まれた部分で環境変数を操作する場合に必要。遅延環境変数は <code>setlocal ... endlocal</code> スコープ内でしか有効にできない点に注意。 <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>
</ol>
</div>
NYAGOS 4.2.4_0 Released
tag:text.Baldanders.info,2018-03-11:/release/2018/03/nyagos-4_2_4_0-released/
2018-03-11T06:28:00+00:00
2021-09-12T04:12:08+00:00
細かい機能の変更や修正がメイン。
Spiegel
https://baldanders.info/profile/
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.2.4_0 がリリースされた。</p>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.4_0">Release 4.2.4_0 · nyaosorg/nyagos</a></li>
</ul>
<p>細かい機能の変更や修正がメイン。</p>
<figure lang="en">
<blockquote><ul>
<li>lua: ole: <code>variable = OLE.property</code> is avaliable instead of <code>OLE:_get('property')</code></li>
<li>lua: ole: <code>OLE.property = value</code> is avaliable instead of <code>OLE:_set('property',value)</code></li>
<li>Load <code>nyagos.d/*.ny</code> as batchlike file</li>
<li>#266: <code>lua_e "nyagos.option.noclobber = true"</code> forbides overwriting existing file by redirect.</li>
<li>#269: <code>>| FILENAME</code> and <code>>! FILENAME</code> enable to overwrite the file already existing by redirect even if <code>nyagos.option.noclobber = true</code></li>
<li>#270: Console input buffer has been cleaned up when prompt is drawn.</li>
<li>#228: Completion supports $ENV[TAB]… by native</li>
<li>#275: Fix: history substitution like <code>!str:$</code> , <code>!?str?:$</code> did not work.</li>
<li>The error <code>event not found</code> is caused when the event pointed !y does note exists.</li>
<li>#285: Not wait GUI-process not using pipeline terminating like CMD.EXE (Call them with ShellExecute() instead of CreateProcess() )</li>
<li>(Replaced <code>bytes.Buffer</code> to <code>strings.Builder</code> and Go 1.10 is required to build)</li>
<li>When more than one are to be executed with <code>open</code> at once, display error: <code>open: ambiguous shellexecute</code></li>
<li>Fix that <code>nyagos.alias.NAME = nil</code> could not remove the alias.</li>
</ul>
<hr>
<ul>
<li>lua: ole: <code>variable = OLE.property</code> が <code>OLE:_get('property')</code> のかわりに使えるようになった</li>
<li>lua: ole: <code>OLE.property = value</code> が <code>OLE:_set('property',value)</code> のかわりに使えるようになった</li>
<li><code>nyagos.d/*.ny</code> のコマンドファイルも読み込むようにした</li>
<li>#266: <code>lua_e "nyagos.option.noclobber = true"</code> でリダイレクトでのファイル上書きを禁止</li>
<li>#269: <code>>| FILENAME</code> もしくは <code>>! FILENAME</code> で、<code>nyagos.option.noclobber = true</code> の時も上書きできるようにした</li>
<li>#270: プロンプト表示時にコンソール入力バッファをクリアするようにした</li>
<li>#228: $ENV[TAB] という補完をネイティブでサポート</li>
<li>#275: !str:$ や !str?:$ といったヒストリ置換が機能しない不具合を修正</li>
<li>! で指定されるヒストリが存在しない時「event not found」エラーを出させるようにした</li>
<li>#285: パイプラインを使っていない GUIプログラムは CMD.EXE 同様終了を待たないようにした (CreateProcess ではなく ShellExecute を使用する)</li>
<li>(<code>bytes.Buffer</code> を <code>strings.Builder</code> に置き換えた。Go 1.10 が必要になった)</li>
<li>複数のファイルが「open」で一度に開こうとした時、<code>open: ambiguous shellexecute</code> とエラーを表示するようにした。</li>
<li><code>nyagos.alias.NAME = nil</code> で alias を削除できなかった動作を修正</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.4_0">Release 4.2.4_0</a></q></div></figcaption>
</figure>
<p><code>nyagos.d/*.ny</code> は今回のリリース・パッケージには含まれてなかったのだけど,次回以降で入ってくるってことかなぁ? それとも自前のスクリプトは <code>*.lua</code> じゃなくて <code>*.ny</code> にしろってことなのだろうか。</p>
<p>(<strong>追記:</strong> <code>*.ny</code> は単純にコマンドを列挙したバッチ処理を格納できるファイルだそうだ)</p>
<p>アップデートは上書きコピーでOK。</p>
<h2>ブックマーク</h2>
<ul>
<li>
<p><a href="https://qiita.com/zetamatta/items/441ff50da7c8f3338260">一見、NYAGOSの不具合に見える事例について(随時追記) - Qiita</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2015/conemu-and-nyagos/">ようやく ConEmu と NYAGOS を導入した</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2015/nyagos-and-lua/">NYAGOS で Lua</a></p>
</li>
</ul>
バージョン間のコミット・ログを取得する
tag:text.Baldanders.info,2018-03-06:/remark/2018/03/git-log/
2018-03-06T09:58:09+00:00
2021-09-12T04:12:08+00:00
今度忘れたときに Google 先生のお世話にならなくても済むよう覚え書きとして残しておく。
Spiegel
https://baldanders.info/profile/
<p><a href="https://github.com/" title="GitHub">GitHub</a> でリリース・ドキュメントを書くことを考える。</p>
<p><a href="https://golang.org/" title="The Go Programming Language">Go 言語</a>で書いたツールのバイナリ・リリース時は <a href="https://goreleaser.com/" title="GoReleaser | Deliver Go binaries as fast and easily as possible">GoReleaser</a> にお任せで全部やってくれるのだが,ソースコードやドキュメントのみのリリースの場合は自前でドキュメントを書く必要がある。
このとき <code>git log</code> コマンドでコミット・ログを参照するのだが,滅多に使わないコマンドなので毎回 Google 先生のお世話になる。</p>
<p>今度忘れたときに Google 先生のお世話にならなくても済むよう覚え書きとして残しておく。</p>
<h2>コミット・ログの収集</h2>
<p>たとえば v0.6.0 と v0.7.0 の間のコミット・ログを markdown 形式で箇条書きにしたい場合はこうする。</p>
<pre tabindex="0"><code>$ git log "--pretty=format:- %s %h" v0.6.0..v0.7.0
- Merge pull request #3 from spiegel-im-spiegel/signal-subpackage 01a70c3
- Update Document 3fe7b80
- Add signal subpackage cfff012
</code></pre><p>この出力から “<code>Merge</code>” とか “<code>typo</code>” とかいった単語を含む行を除きたければ grep と組み合わせればよい。</p>
<pre tabindex="0"><code>$ git log "--pretty=format:- %s %h" v0.6.0..v0.7.0 | grep -v Merge
- Update Document 3fe7b80
- Add signal subpackage cfff012
</code></pre><p>なお pretty format に使える <code>%s</code> などのプレースホルダ等については以下が参考になる。</p>
<ul>
<li><a href="https://git-scm.com/docs/pretty-formats">Git - pretty-formats Documentation</a></li>
</ul>
<h2>コマンドを <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> の Alias として組み込む</h2>
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> には <a href="https://www.lua.org/" title="The Programming Language Lua">Lua</a> で書いたコードを alias コマンドとして組み込めるという素敵な機能がある。
そこで,先ほどの <code>git log</code> コマンドを <a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> の alias として組み込んでみる。
具体的には <code>.nyagos</code> に以下の記述を追加する。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-lua" data-lang="lua"><span class="line"><span class="cl"><span class="c1">-- git log</span>
</span></span><span class="line"><span class="cl"><span class="n">nyagos.alias</span><span class="p">.</span><span class="n">gitlog</span> <span class="o">=</span> <span class="kr">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="kd">local</span> <span class="n">form</span> <span class="o">=</span> <span class="s2">"--pretty=format:- %s %h"</span>
</span></span><span class="line"><span class="cl"> <span class="kr">if</span> <span class="o">#</span><span class="n">args</span> <span class="o"><</span> <span class="mi">1</span> <span class="kr">then</span>
</span></span><span class="line"><span class="cl"> <span class="n">nyagos.rawexec</span><span class="p">(</span><span class="s2">"git"</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">,</span> <span class="n">form</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="kr">elseif</span> <span class="o">#</span><span class="n">args</span> <span class="o">==</span> <span class="mi">1</span> <span class="kr">then</span>
</span></span><span class="line"><span class="cl"> <span class="n">nyagos.rawexec</span><span class="p">(</span><span class="s2">"git"</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"> <span class="kr">elseif</span> <span class="o">#</span><span class="n">args</span> <span class="o">==</span> <span class="mi">2</span> <span class="kr">then</span>
</span></span><span class="line"><span class="cl"> <span class="n">nyagos.rawexec</span><span class="p">(</span><span class="s2">"git"</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">..</span><span class="s2">".."</span><span class="o">..</span><span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"> <span class="kr">else</span>
</span></span><span class="line"><span class="cl"> <span class="n">nyagos.writerr</span><span class="p">(</span><span class="s2">"Usage: gitlog [[<from>] <to>]</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="kr">end</span>
</span></span><span class="line"><span class="cl"><span class="kr">end</span>
</span></span></code></pre></div><p>これで <code>gitlog</code> コマンドができた。
実際に動かしてみる。</p>
<pre tabindex="0"><code>$ gitlog v0.6.0 v0.7.0
- Merge pull request #3 from spiegel-im-spiegel/signal-subpackage 01a70c3
- Update Document 3fe7b80
- Add signal subpackage cfff012
$ gitlog v0.6.0 v0.7.0 | grep -v Merge
- Update Document 3fe7b80
- Add signal subpackage cfff012
</code></pre><p>よーし,うむうむ,よーし。</p>
<h2>ブックマーク</h2>
<ul>
<li>
<p><a href="https://qiita.com/suin/items/e98cef1409b6525f9bb6">git logでタグとタグの間のものだけ抽出する - Qiita</a></p>
</li>
<li>
<p><a href="http://efcl.info/2014/07/20/git-tag-to-release-github/">Git tagとGitHub ReleasesとCHANGELOG.mdの自動化について | Web Scratch</a></p>
</li>
<li>
<p><a href="https://git-scm.com/book/en/v2">Git - Book</a></p>
<ul>
<li><a href="https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection">Git - Revision Selection</a></li>
</ul>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2015/git-commands/">あまり使わないけど,たまに使おうとすると忘れてる Git コマンド集</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2015/nyagos-and-lua/">NYAGOS で Lua</a></p>
</li>
</ul>
NYAGOS 4.2.3_4 Released
tag:text.Baldanders.info,2018-03-06:/release/2018/03/nyagos-4_2_3_4-released/
2018-03-06T09:57:17+00:00
2021-09-12T04:12:08+00:00
今回は不具合の修正がメインのようだ。
Spiegel
https://baldanders.info/profile/
<p><a href="https://github.com/nyaosorg/nyagos/" title="nyaosorg/nyagos: NYAGOS - The hybrid UNIXLike Commandline Shell for Windows">NYAGOS</a> 4.2.3_4 がリリースされた。</p>
<ul>
<li><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.3_4">Release 4.2.3_4 (bug fixes) · nyaosorg/nyagos</a></li>
</ul>
<p>今回は不具合の修正がメインのようだ。</p>
<figure lang="en">
<blockquote><ul>
<li><code>ls -?</code> for help instead of <code>ls -h</code></li>
<li>Building with go build instead of make.cmd, print version as <code>snapshot-GOARCH</code></li>
<li>Show an error when <code>type DIRECTORY</code> is executed.</li>
<li>Made error message simple on <code>del NOTEXISTFILE</code></li>
<li>Fix: #279 Substitution on Environment variable (%VAR:OLD=NEW%) did not ignore case</li>
<li>Fix: #281 <code>cd \\server\folder ; open</code> -><code> C:\Windows\system32</code> was open.</li>
<li>Fix: #286 A tilde(~) after whitespace enclosed with double quotations was interpreted same as %USERPROFILE%</li>
<li>#287 On the last entry of the history, do nothing for typing ARROW-DOWN</li>
</ul>
<hr>
<ul>
<li><code>ls -h</code> のかわりに <code>ls -?</code> をヘルプに用意した</li>
<li>make.cmd のかわりに go build でビルドした時、バージョンを <code>snapshot-GOARCH</code> と表示するようにした</li>
<li><code>type DIRECTORY</code> が実行された時にエラーにするようにした。</li>
<li><code>del 存在しないファイル</code> を実行した時のエラーをシンプルにした.</li>
<li>#279 環境変数置換(%VAR:OLD=NEW%)で、英大文字/小文字を区別していた不具合を修正</li>
<li>#281 <code>cd \\server\folder ; open</code> で <code>C:\Windows\system32</code> 開く不具合を修正</li>
<li>#286 Fix: 二重引用符内の空白に続く ~ が %USERPROFILE% と解釈されていた不具合を修正</li>
<li>#287 ヒストリの最後のエントリの時、↓をタイプしても何もしないようにした</li>
</ul>
</blockquote>
<figcaption><div>via <q><a href="https://github.com/nyaosorg/nyagos/releases/tag/4.2.3_4">Release 4.2.3_4 (bug fixes)</a></q></div></figcaption>
</figure>
<p>アップデートは上書きコピーでOK。</p>
<h2>ブックマーク</h2>
<ul>
<li>
<p><a href="https://qiita.com/zetamatta/items/441ff50da7c8f3338260">一見、NYAGOSの不具合に見える事例について(随時追記) - Qiita</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2015/conemu-and-nyagos/">ようやく ConEmu と NYAGOS を導入した</a></p>
</li>
<li>
<p><a href="https://text.baldanders.info/remark/2015/nyagos-and-lua/">NYAGOS で Lua</a></p>
</li>
</ul>
ATOM × NYAGOS = ♥
tag:text.Baldanders.info,2016-11-20:/remark/2016/11/nyagos-with-atom/
2016-11-20T07:29:24+00:00
2019-07-01T13:48:09+00:00
やっとこれで Windows 環境でも ATOM にターミナル・エミュレータが導入できるようになった。しかも NYAGOS が動く。素晴らしい!
Spiegel
https://baldanders.info/profile/
<p><a href="https://atom.io/" title="Atom">ATOM</a> 上で動くターミナル・エミュレータはいくつかあるが,大抵は UNIX 互換環境を前提としたもので Windows では動かなかったり特別なインストール手順を要するものが殆どで使う気にならなかったりする。
そんな中で <a href="https://atom.io/packages/platformio-ide-terminal">platformio-ide-terminal</a> は Windows 環境でも簡単に導入できる優れもののようだ。</p>
<ul>
<li><a href="http://labs.spiffield.net/archives/508">Atomのterminal-plusが動かないのでplatformio-ide-terminalを入れてみた | spiffieldLabs</a></li>
<li><a href="http://qiita.com/kmry2045/items/b61a000ff257c01720e4">ATOMエディタではじめるマイナー言語探訪(あんま怖くないNim②) - Qiita</a></li>
</ul>
<p>インストールは,他のパッケージと同じように, Settings の Install から選択してインストールすれば OK。
マジ簡単。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/31089552246/"><img src="https://photo.baldanders.info/flickr/image/31089552246_m.png" srcset="https://photo.baldanders.info/flickr/image/31089552246_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="platformio-ide-terminal (1)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/31089552246/">platformio-ide-terminal (1)</a></div></figcaption>
</figure>
<p>ふむむ。
どうやら既定では PawerShell が立ち上がるようだ。
ってことは他の shell でもいけるんじゃね?</p>
<p>ということで Settings を見ると</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/31089552576/"><img src="https://photo.baldanders.info/flickr/image/31089552576_m.png" srcset="https://photo.baldanders.info/flickr/image/31089552576_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="platformio-ide-terminal (2)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/31089552576/">platformio-ide-terminal (2)</a></div></figcaption>
</figure>
<p>おおっ。
やっぱり shell を変えられるんだ。
ほんじゃあ <a href="http://www.nyaos.org/index.cgi?p=NYAGOS" title="NYAOS.ORG - NYAGOS">NYAGOS</a> を入れてみよっか。
「Shell Override」の項目に <a href="http://www.nyaos.org/index.cgi?p=NYAGOS" title="NYAOS.ORG - NYAGOS">NYAGOS</a> をフルパスで指定して <a href="https://atom.io/packages/platformio-ide-terminal">platformio-ide-terminal</a> を起動する。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/31089552456/"><img src="https://photo.baldanders.info/flickr/image/31089552456_m.png" srcset="https://photo.baldanders.info/flickr/image/31089552456_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="platformio-ide-terminal (3)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/31089552456/">platformio-ide-terminal (3)</a></div></figcaption>
</figure>
<p>おおおおっ! なにこれ素敵。
<a href="http://www.nyaos.org/index.cgi?p=NYAGOS" title="NYAOS.ORG - NYAGOS">NYAGOS</a> であれば UTF-8 を受け入れるので文字コードがどうとかあまり考えなくてよい。</p>
<p>ん? 待てよ。
ってことは git bash もいけるのか? では同じように「Shell Override」の項目に git bash をフルパスで指定指定して <a href="https://atom.io/packages/platformio-ide-terminal">platformio-ide-terminal</a> を起動してみる。</p>
<figure style='margin:0 auto;text-align:center;'><a href="https://photo.baldanders.info/flickr/31089552546/"><img src="https://photo.baldanders.info/flickr/image/31089552546_m.png" srcset="https://photo.baldanders.info/flickr/image/31089552546_m.png 500w" sizes="(min-width:600px) 500px, 80vw" alt="platformio-ide-terminal (4)" loading="lazy"></a><figcaption><div><a href="https://photo.baldanders.info/flickr/31089552546/">platformio-ide-terminal (4)</a></div></figcaption>
</figure>
<p>よいではないか。</p>
<p><a href="https://atom.io/packages/platformio-ide-terminal">platformio-ide-terminal</a> を起動する際は, Windows では, <code>alt-shift-T</code> を押下すればいいのだが,キーを3つ押さえるのは得意ではないので <code>ctrl-f1</code> に振り直した。</p>
<pre tabindex="0"><code class="language-cson" data-lang="cson">'.platform-win32 atom-workspace':
'ctrl-f1': 'platformio-ide-terminal:new'
</code></pre><p>あぁ。
やっとこれで Windows 環境でも <a href="https://atom.io/" title="Atom">ATOM</a> にターミナル・エミュレータが導入できるようになった。
しかも <a href="http://www.nyaos.org/index.cgi?p=NYAGOS" title="NYAOS.ORG - NYAGOS">NYAGOS</a> が動く。
素晴らしい!</p>