<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cygwin on ゲンゾウ用ポストイット</title><link>https://genzouw.com/entry/category/cygwin/</link><description>Recent content in Cygwin on ゲンゾウ用ポストイット</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Mon, 27 Mar 2023 18:45:44 +0900</lastBuildDate><atom:link href="https://genzouw.com/entry/category/cygwin/index.xml" rel="self" type="application/rss+xml"/><item><title>Bash のビルトインコマンド "declare" の使い方紹介（その３:読み取り専用）</title><link>https://genzouw.com/entry/2019/02/01/081707/733/</link><pubDate>Fri, 01 Feb 2019 08:17:07 +0900</pubDate><guid>https://genzouw.com/entry/2019/02/01/081707/733/</guid><description>&lt;p&gt;以下のエントリの続き。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2019/01/29/081926/668/"&gt;シェルスクリプトサンプルコードでよく見かける typeset や declare ってなに？ | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2019/01/30/081600/688/"&gt;Bash のビルトインコマンド &amp;ldquo;declare&amp;rdquo; の使い方紹介（その１） | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2019/01/31/080016/694/"&gt;Bash のビルトインコマンド &amp;ldquo;declare&amp;rdquo; の使い方紹介（その２） | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;今回は &lt;strong&gt;変数に型以外の情報を付与する機能&lt;/strong&gt; について。&#10;他の言語で言う &lt;code&gt;public&lt;/code&gt; とか &lt;code&gt;final&lt;/code&gt; の &lt;strong&gt;キーワード&lt;/strong&gt; をイメージしてもらえばよいです。&lt;/p&gt;&#10;&lt;p&gt;別の表現をすると、以下の属性を付与する機能と言えますね。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;変数のスコープ&lt;/li&gt;&#10;&lt;li&gt;変数の読み取り専用(書き込み禁止)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;code&gt;declare&lt;/code&gt; コマンド以外でも設定できる内容であり、以下のキーワードとも絡めて話をしたいと思います。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;readonly&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;export&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;local&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, バージョン 5.0.2&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;x86_64-apple-darwin18.2.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Copyright &lt;span class="o"&gt;(&lt;/span&gt;C&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;2019&lt;/span&gt; Free Software Foundation, Inc.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ライセンス GPLv3+: GNU GPL バージョン &lt;span class="m"&gt;3&lt;/span&gt; またはそれ以降 &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;This is free software&lt;span class="p"&gt;;&lt;/span&gt; you are free to change and redistribute it.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;There is NO WARRANTY, to the extent permitted by law.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="declare-オプション変数の利用を制限開放するもの"&gt;declare オプション（変数の利用を制限・開放するもの）&lt;/h2&gt;&#10;&lt;h3 id="-r-オプション"&gt;&lt;code&gt;-r&lt;/code&gt; オプション&lt;/h3&gt;&#10;&lt;p&gt;読込専用な変数を定義。 &lt;strong&gt;値を代入&lt;/strong&gt; したりや &lt;strong&gt;unset&lt;/strong&gt; をできなくなる。&lt;/p&gt;</description></item><item><title>Bash のビルトインコマンド "declare" の使い方紹介（その２:大文字小文字の自動変換）</title><link>https://genzouw.com/entry/2019/01/31/080016/694/</link><pubDate>Thu, 31 Jan 2019 08:00:16 +0900</pubDate><guid>https://genzouw.com/entry/2019/01/31/080016/694/</guid><description>&lt;p&gt;以下のエントリの続き。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2019/01/29/081926/668/"&gt;シェルスクリプトサンプルコードでよく見かける typeset や declare ってなに？&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2019/01/30/081600/688/"&gt;Bash のビルトインコマンド &amp;ldquo;declare&amp;rdquo; の使い方紹介（その１）&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;前回まで見てきたオプションは、 変数の定義時に &lt;strong&gt;型を指定&lt;/strong&gt; し、 &lt;strong&gt;想定通りの値が格納されていることを担保する&lt;/strong&gt; ためのものです。&#10;他の言語で言う &lt;strong&gt;連想配列&lt;/strong&gt; 、 &lt;strong&gt;配列&lt;/strong&gt; 、 &lt;strong&gt;整数&lt;/strong&gt; の３つの型について取り扱いました。&lt;/p&gt;&#10;&lt;p&gt;今回紹介するのは &lt;strong&gt;文字列型&lt;/strong&gt; の &lt;strong&gt;機能&lt;/strong&gt; について。&lt;/p&gt;&#10;&lt;p&gt;文字列型の変数に格納されている値が全て大文字であること、あるいは全て小文字であることを担保するためのオプションです。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, バージョン 5.0.2&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;x86_64-apple-darwin18.2.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="declare-オプション変数の型を定義するもの"&gt;declare オプション（変数の型を定義するもの）&lt;/h2&gt;&#10;&lt;h3 id="-l-オプション"&gt;&lt;code&gt;-l&lt;/code&gt; オプション&lt;/h3&gt;&#10;&lt;p&gt;大文字を自動的に小文字に変換する変数を定義。&#10;LowerCase の頭文字からとっているのだろう。&lt;/p&gt;&#10;&lt;p&gt;変数への値には必ず小文字の英字しか格納されていないことが担保されます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;span class="lnt"&gt;24&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 全て小文字は当然何も起こらない&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;declare&lt;/span&gt; -l &lt;span class="nv"&gt;LSTR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;abcde&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;LSTR&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;abcde&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 大文字の値を代入しても変換される&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nv"&gt;LSTR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;LSTR&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hello world&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 大文字を含むと変換される&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;declare&lt;/span&gt; -l &lt;span class="nv"&gt;LSTR2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ABCDE&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;LSTR2&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;abcde&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 他の文字が混ざっていても大文字は小文字に変換される&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;declare&lt;/span&gt; -l &lt;span class="nv"&gt;LSTR3&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;aB1C3DE&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;LSTR3&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ab1c3de&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 全角英大文字を混ぜてみたところ...なんということでしょう！&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;declare&lt;/span&gt; -l &lt;span class="nv"&gt;LSTR4&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;abCＡＢＣ&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;LSTR4&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;abcａｂｃ&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;驚いたのは全角英大文字もしっかり小文字に変換されていたことです。&#10;Bash のバージョンによるのでしょうか？&lt;/p&gt;</description></item><item><title>Bashのビルトインコマンド"declare"の使い方紹介（その１）</title><link>https://genzouw.com/entry/2019/01/30/081600/688/</link><pubDate>Wed, 30 Jan 2019 08:16:00 +0900</pubDate><guid>https://genzouw.com/entry/2019/01/30/081600/688/</guid><description>&lt;p&gt;&lt;a href="https://genzouw.com/entry/2019/01/29/081926"&gt;シェルスクリプトサンプルコードでよく見かけるtypesetやdeclareってなに？&lt;/a&gt; の続きです。&#10;( &lt;code&gt;declare&lt;/code&gt; や &lt;code&gt;typedef&lt;/code&gt; について知りたい方は前回のエントリのほうが参考になるかもしれません。 )&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Bash&lt;/strong&gt; のビルトインコマンドである &lt;strong&gt;declare&lt;/strong&gt; を使って変数を定義できますが、 &lt;strong&gt;オプションを指定することで真価を発揮します&lt;/strong&gt; 。&#10;declareオプションを見ていきましょう。&lt;/p&gt;&#10;&lt;p&gt;オプションは３つに分類できます。（僕が勝手に分類した）&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;変数の型を定義するもの&lt;/li&gt;&#10;&lt;li&gt;変数の利用を制限・開放するもの&lt;/li&gt;&#10;&lt;li&gt;その他&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -moi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;x86_64 x86_64 GNU/Linux&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, version 4.2.46&lt;span class="o"&gt;(&lt;/span&gt;2&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;x86_64-redhat-linux-gnu&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="declareオプション変数の型を定義するもの"&gt;declareオプション（変数の型を定義するもの）&lt;/h2&gt;&#10;&lt;h3 id="-a-オプション"&gt;&lt;code&gt;-A&lt;/code&gt; オプション&lt;/h3&gt;&#10;&lt;p&gt;連想配列として変数を定義できます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;span class="lnt"&gt;24&#10;&lt;/span&gt;&lt;span class="lnt"&gt;25&#10;&lt;/span&gt;&lt;span class="lnt"&gt;26&#10;&lt;/span&gt;&lt;span class="lnt"&gt;27&#10;&lt;/span&gt;&lt;span class="lnt"&gt;28&#10;&lt;/span&gt;&lt;span class="lnt"&gt;29&#10;&lt;/span&gt;&lt;span class="lnt"&gt;30&#10;&lt;/span&gt;&lt;span class="lnt"&gt;31&#10;&lt;/span&gt;&lt;span class="lnt"&gt;32&#10;&lt;/span&gt;&lt;span class="lnt"&gt;33&#10;&lt;/span&gt;&lt;span class="lnt"&gt;34&#10;&lt;/span&gt;&lt;span class="lnt"&gt;35&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 連想配列を定義&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;declare&lt;/span&gt; -A MAP&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 要素を代入&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ MAP&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ MAP&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="m"&gt;22&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ MAP&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="m"&gt;33&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 単純にechoしても何も出力されない&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$MAP&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 添字を指定すればOK&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;MAP&lt;/span&gt;&lt;span class="p"&gt;[a]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;11&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;MAP&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;11&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# カッコが足りないと正しく出力されない(T_T)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$MAP&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;a&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;a&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$MAP&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;a&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ちょっと特殊な書き方をしてやると出力できるが、値の一覧だけしか出力されない&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;MAP&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;11&lt;/span&gt; &lt;span class="m"&gt;22&lt;/span&gt; &lt;span class="m"&gt;33&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# &amp;#34;!&amp;#34; をつけてやると連想配列のキーも取得できます。（ここまで来るといよいよ意味不明。呪文じみてくる）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ただ、この方法を使えばキーでループさせることが可能。&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="p"&gt;!MAP[@]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a b c&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# -p オプションを使うとデバッグしやすい（後述）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;declare&lt;/span&gt; -p MAP&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;declare&lt;/span&gt; -A &lt;span class="nv"&gt;MAP&lt;/span&gt;&lt;span class="o"&gt;=([&lt;/span&gt;c&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;33&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;b&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;22&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;a&lt;span class="o"&gt;]=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;11&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;ちなみに、変数の定義タイミングで値を代入するリテラル記述も存在します。&lt;/p&gt;</description></item><item><title>シェルスクリプトサンプルコードでよく見かける typeset や declare ってなに？</title><link>https://genzouw.com/entry/2019/01/29/081926/668/</link><pubDate>Tue, 29 Jan 2019 08:19:26 +0900</pubDate><guid>https://genzouw.com/entry/2019/01/29/081926/668/</guid><description>&lt;p&gt;後日投稿したエントリで、サンプルコードとともに検証をしてみました。&#10;興味があればそちらも御覧ください。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2019/01/30/081600/688/"&gt;Bash のビルトインコマンド &amp;ldquo;declare&amp;rdquo; の使い方紹介（その１）&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2019/01/31/080016/694/"&gt;Bash のビルトインコマンド &amp;ldquo;declare&amp;rdquo; の使い方紹介（その２:大文字小文字の自動変換 ）&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;古いシェルスクリプトコードでは、以下のような命令で変数を定義する方法が取られていることが多いです。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 定義&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nv"&gt;VAR1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;123&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 出力&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$VAR1&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;123&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;一方、Github で公開されているシェルスクリプトを見ていると、&#10;&lt;code&gt;typeset&lt;/code&gt; や &lt;code&gt;declare&lt;/code&gt; を使って変数を定義している例をよく見かけます。&lt;/p&gt;&#10;&lt;p&gt;それぞれの違いと使い方について調べてみました。&lt;/p&gt;&#10;&lt;h2 id="変数定義の方法は３つ"&gt;変数定義の方法は３つ&lt;/h2&gt;&#10;&lt;p&gt;改めて &lt;strong&gt;Bash&lt;/strong&gt; の変数定義方法を列挙してみます。&lt;/p&gt;&#10;&lt;p&gt;Bash では &lt;strong&gt;定義なしに変数を生成&lt;/strong&gt; することができるが、 &lt;strong&gt;明示的に定義して変数を生成&lt;/strong&gt; することもできます。&lt;br&gt;&#10;変数の生成方法は以下の 3 つ。（だと思っている）&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;code&gt;VAR1=123&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;declare VAR1=123&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;typeset VAR1=123&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;それぞれの違いは何？便利な機能もありそうなので調べてみました。&lt;/p&gt;&#10;&lt;h3 id="1-declare--typeset-なしの変数定義"&gt;1. &lt;code&gt;declare&lt;/code&gt; / &lt;code&gt;typeset&lt;/code&gt; なしの変数定義&lt;/h3&gt;&#10;&lt;p&gt;最もよく見る変数定義方法。&#10;記述もシンプルで流れるようにコーディングしているときにはよく記述します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nv"&gt;X&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;hello&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$X&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hello&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h3 id="2-declare-を使った変数定義"&gt;2. &lt;code&gt;declare&lt;/code&gt; を使った変数定義&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;declare&lt;/span&gt; &lt;span class="nv"&gt;X&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;hello&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$X&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hello&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;一緒に見えますね。&lt;/p&gt;</description></item><item><title>Cygwinでkillがうまく動かない場合の対処</title><link>https://genzouw.com/entry/2015/11/15/013724/14/</link><pubDate>Sun, 15 Nov 2015 01:37:24 +0900</pubDate><guid>https://genzouw.com/entry/2015/11/15/013724/14/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;&#10;&lt;p&gt;家ではMacBookProを使っていますが、会社のPCがWindowsのためやむなく &lt;strong&gt;Cygwin&lt;/strong&gt; を使っています。&lt;/p&gt;&#10;&lt;p&gt;ただ、Vimなどのプロセスが残ってしまった場合にうまくkillできないことがあります。&lt;/p&gt;&#10;&lt;p&gt;そんな場合に参考になるかと思います。&lt;/p&gt;&#10;&lt;h2 id="環境"&gt;環境&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Windows7&lt;/code&gt; + &lt;code&gt;Cygwin&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="対処"&gt;対処&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# シェルの組み込みコマンドであるkillであるというメッセージが表示されていれば、以下の対処をおこなう&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ which &lt;span class="nb"&gt;kill&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 組み込みコマンドが呼び出されないようにする&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;alias kill=&amp;#39;/usr/bin/kill&amp;#39;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="ひとこと"&gt;ひとこと&lt;/h2&gt;&#10;&lt;p&gt;不要なプロセスがすぐ残ってしまうようなおかしな状態が発生しないようにできればよいのですが。&#10;あるいは &lt;strong&gt;MacBookPro&lt;/strong&gt; で開発ができればよいのですけどね。&lt;/p&gt;</description></item><item><title>Cygwinでカレントディレクトリにスペースを含む場合にShellbang付きGroovyが動かせない件のパッチを送ってみた</title><link>https://genzouw.com/entry/2011/10/10/225357/191/</link><pubDate>Mon, 10 Oct 2011 22:53:57 +0900</pubDate><guid>https://genzouw.com/entry/2011/10/10/225357/191/</guid><description>&lt;p&gt;Groovyの開発リポジトリが &lt;a href="https://github.com/"&gt;GitHub · Build software better, together.&lt;/a&gt; に以降されたので、パッチなども容易に連絡できるようになった。&lt;/p&gt;&#10;&lt;p&gt;ようやくかなり以前のエントリであげていたcygwin上のカレントディレクトリに半角スペースを含む場合にエラーが発生する件( &lt;a href="https://genzouw.com/entry/2009/11/26/080311"&gt;CygwinでWindows環境にLinuxと同様のGroovy環境を構築するための設定&lt;/a&gt; )のパッチを連絡してみた。&lt;/p&gt;</description></item><item><title>日本語ファイル名をgit statusなどで文字化けさせずに表示する方法</title><link>https://genzouw.com/entry/2010/11/18/144605/208/</link><pubDate>Thu, 18 Nov 2010 14:46:05 +0900</pubDate><guid>https://genzouw.com/entry/2010/11/18/144605/208/</guid><description>&lt;p&gt;会社のCygwin + Git環境だと、半角のみのファイルに関しては問題はないのだが、全角を含むファイル名を管理している場合に以下のコマンドで文字化けする。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git status&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; create mode &lt;span class="m"&gt;100644&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;\345\217\226\346\211\261\350\252\254\346\230\216\346\233\270.txt&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;解決方法がようやくわかった。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;git config &amp;ndash;global core.quotepath false&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://tobysoft.net/wiki/index.php?git%2F%C6%FC%CB%DC%B8%EC%A5%D5%A5%A1%A5%A4%A5%EB%CC%BE%A4%F2git%20status%A4%CA%A4%C9%A4%C7%C9%BD%BC%A8%A4%B9%A4%EB%CA%FD%CB%A1"&gt;http://tobysoft.net/wiki/index.php?git%2F%C6%FC%CB%DC%B8%EC%A5%D5%A5%A1%A5%A4%A5%EB%CC%BE%A4%F2git%20status%A4%CA%A4%C9%A4%C7%C9%BD%BC%A8%A4%B9%A4%EB%CA%FD%CB%A1&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Cygwin環境では必須ですね。&lt;/p&gt;</description></item><item><title>cygwinでgroovyshを動かすためのオプション</title><link>https://genzouw.com/entry/2009/11/30/020214/261/</link><pubDate>Mon, 30 Nov 2009 02:02:14 +0900</pubDate><guid>https://genzouw.com/entry/2009/11/30/020214/261/</guid><description>&lt;p&gt;何度かCygwin環境でGroovyshを動かそうと奮闘していたが、ようやく設定方法がわかった。&#10;今日Google先生に尋ねてみると、一番上に対応方法が記載したサイトが見つかった。Google アラートでも仕掛けておけばよかったかな。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://jira.codehaus.org/browse/GROOVY-2584"&gt;[#GROOVY-2584] Can&amp;rsquo;t get groovysh to run in a cygwin xterm under Windows XP. - jira.codehaus.org&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;以下のいずれかのコマンドにて起動すればＯＫみたい。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ groovysh --terminal&lt;span class="o"&gt;=&lt;/span&gt;unix&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ groovysh --terminal&lt;span class="o"&gt;=&lt;/span&gt;none&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;そのうち遊んでみる。&lt;/p&gt;</description></item><item><title>CygwinでWindows環境にLinuxと同様のGroovy環境を構築するための設定</title><link>https://genzouw.com/entry/2009/11/26/080311/262/</link><pubDate>Thu, 26 Nov 2009 08:03:11 +0900</pubDate><guid>https://genzouw.com/entry/2009/11/26/080311/262/</guid><description>&lt;p&gt;会社にてCygwinを使っているが、 「&lt;strong&gt;Groovy&lt;/strong&gt;」 が正常に動作しない。「Groovy」自体は &lt;code&gt;c:\Program Files\Groovy-1.6.5&lt;/code&gt; にインストールされているが、 &lt;code&gt;/usr/share/groovy&lt;/code&gt; にシンボリックリンクをはっている。&lt;/p&gt;&#10;&lt;p&gt;このままの状態で&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/usr/bin/env groovy&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;println&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;あいう&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;のようなUTF-8エンコードのファイルは実行できない。&lt;/p&gt;&#10;&lt;p&gt;以下の箇所を変更することで実行可能になる。&lt;/p&gt;&#10;&lt;h3 id="groovyファイル"&gt;groovyファイル&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-groovy" data-lang="groovy"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="n"&gt;c20&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;startGroovy&lt;/span&gt; &lt;span class="n"&gt;groovy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ui&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;GroovyMain&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;$@&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;---&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;startGroovy&lt;/span&gt; &lt;span class="n"&gt;groovy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ui&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;GroovyMain&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;UTF8&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;$@&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h3 id="startgroovyファイル"&gt;startGroovyファイル&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;227c227&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt; &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; args&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;cygpath --path --ignore --mixed &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$arg&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; args&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;\&amp;#34;`cygpath --path --ignore --mixed &amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$arg&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;`\&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;後者はCygwin使用時の特有の現象（バグ？）&lt;/p&gt;</description></item></channel></rss>