2015-06-15

zsh: ZishWiki’s “scripting: array”に関するコメント


zshは独特の機能が満載だが、初心者には使い方が判りにくい。「man zsh」から遡ると15個ほどのオンライン・マニュアルが見える。でもインデックスがなく苦戦している。
私はzshに少し慣れてきたので、インターネットの資料を探索し始めた。すると、コンパクトに纏まったサイトを拝見した;
この「SITE MAP: scripting: array」に興味深い事例集があった;
この中で,特に興味深い2部分が連続していたので部分的に引用します;

(1) Create an array with each words of string.


私の以前の記事は違う方法を取りました;
そこでは空白区切りのスカラー変数sから配列aを生成する方法として;
  • a=( $(echo $s) )   #以前の記事
  • a=( ${=s} )          # ZshWiki
 

ZshWikiの表式方が短くてスマートだが、覚えにくいなぁ。もしも、次の表現がつかえると、より短くてイメージ的にも覚えやすいが;
  • a=(  =$s )
誰かSwiftでzshを整理してくれないかなぁ。

(2) Create an array of lines from a file


Macでの/etc/hostsには多数のコメント(#)が付いているのでもう少し複雑です。
  • buffer=( "${(f)$(cat /etc/hosts|grep -v '#')}" ); echo $buffer[1]
  • ==>;’127.0.0.1    localhost ’
また、等価な出力として、(“)の配置が違う表現があります。;
  • buffer=( "${(f)"$(cat /etc/hosts|grep -v '#')"}" ); echo $buffer[1]
  • buffer=( ${(f)"$(cat /etc/hosts|grep -v '#')"} ); echo $buffer[1]

私は最後の形式をよく使っています。
参考の為に、rootでのlsを示します;
  • buffer=("${(f)$(ls)}");echo $buffer[1]
  • ==>Applications 
この手法は番号付きls関数を作るのに役立ちました。感謝します。
なお、スカラー変数が改行(\n)区切りで、其の内部に空白( )がある場合では、次になります;
  •  % s="a\nbb cc\nddd"; a=( "${(f)$(echo $s)}" );typeset -p a;echo "\$#a=$#a" ⏎
    • typeset -a a
    • a=(a 'bb cc' ddd)
    • $#a=3

____
この記事の履歴
  1. 開始 2015-06-15(月) 21:15:12 
  2. 追加 2015-06-17(水) 11:04:51  a=(  =$s )
  3. 追加 2015-06-17(水) 11:41:47  s="a\nbb cc\nddd"; a=( "${(f)$(echo $s)}" );
  4. 修正 2015-06-23(火) 23:06:27  段落の後ろの空白行を手動で修正。他のblogへの移行を検討開始した。
  5. 修正 2015-07-25(土) 13:19:55 e → echo

2015-06-10

「Yosemite 10.10.3」と「MarsEdit 3.7」と「Thunderbird 31.7.0」と「Google 2-Step Verification」との関係

「外付けのドライブにYosemite 10.10.2」を新規インストールして、試運転してきました。意外にも安定しているので、内臓ドライブに10.10.3をクリーン・インストール仕様としましたが、インストールを繰り返すようで諦めました。「Recovery HD」からのインストールから「App Store」から内蔵ドライブへのインストールの積りが、「外付けのドライブにYosemite 10.10.2」への上書きになってしまいました。

こういう時に限って「タイム・マシン」のバックアップをしていなかたり、…。数日観察すると、問題点が出ないので「Disk Utility」を用いて「外付けのドライブにYosemite 10.10.2、上書き10.10.3」を内蔵に向けてリストアしました。

概ね「10.10.3」は良好に動作しているようでした、が問題が出てきました;
  • 「Thunderbird 31.7.0」でgmailにアクセスできなくなった。
  • 「MarsEdit 3,6.9」でGoogleのbloggerにアクセスできなくなった。
調べるとGoogleが推めている「2-Step Verification: 二段階認証」に「Yosemite 10.10.3」が対応した為の現象らしい。其の対応には次のサイトが判りやすかった;

Bloggerを運行する私としても、セキュリティの向上には賛成なので、「 二段階認証」を導入した。この時、iPhoneに設定していたメール・アドレスを間違えて入れてしまい、半日もロスをしてしまった。

其の結果、MacもiPhoneも「 二段階認証」に完全に対応した。でも、ThunderbirdもMarsEditも動かない!

慌てて検索すると;
  • 「Thunderbird」は「 二段階認証」に未対応。当面は「Mail」頼み。
  • 「MarsEdit 3.6.9」は「MarsEdit 3.7」との事。

そこで「App Store」から「MarsEdit 3.7」ダウン・ロードしようとしたが駄目だった。アップルのテクニカル・サポートに聞いたら「セーフ・ブートしてみて」と言われたが改善せず。むしろ「App Store」の問題ではないかと思い、相談すると「iTunes Store」にメールを打つように助言をうけた。iTunesの方から;アップルIDなどの問題はない。一度MarsEdi.appを消去したら;との助言をいただく。

「/Application/MarsEdit.app」をTrashに入れて、再度「App Store」から「MarsEdit 3.7」ダウン・ロードすると成功。いま、「MarsEdit 3.7」で原稿を書いています。あ、「MarsEdit 3.7」からこのブログへのアップロードも成功しました。


その後、落ち着いて検索していると、「 二段階認証」に未対応のアプリに対する回避法があるのに気が付きました;

ここから遡って「アプリ パスワード: App-speciffic passwords」の登録に行き、「MacのThuderbird」と入れると「wwww xxxx yyyy zzzz」といった一度切りのパスワードが出ます。それを「Thunderbird 31.7.0」のGmailのアカウント設定にいれると、ログインできました。


其の時に、バックアップ電話番号の登録を強く推められたので登録しました。色々と複座な仕組みが生まれているようです。



____
この記事の履歴
  1. 開始 2015-06-10(水) 21:33:07 
  2. 変更 2015-06-11(木) 11:53:21 タイトルに『と「Google 2-Step Verification」との関係』 を追加。
  3. 追加 2015-06-11(木) 16:36:36 App-speciffic passwords

注目の投稿

Terminalでの、なんちゃってViモドキ

近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...