Macでハイパーテキスト

 このブログでは、テキストエディタでハイパーテキスト機能を動かす方法を中心にして、Unixツールの活用やテキストや画像の検索についてまとめている。個々のツールの利用法の紹介というより、エディタに向かって考えをテキストにまとめる時に便利なシステムづくりである。

テキストのリンクからファイルを操作する
  1.Macでハイパーテキスト
  2.フォルダの構成
    3.リンクの形式
  4.スクリプトのダウンロードと保存
  5.エディタの設定
  6.ターミナルの環境設定
  7.ターミナルの動作設定
  8.スクリプト作動の準備
    9.ハイパーテキスト機能を動かす
 10.ハイパーテキスト機能のしくみ
 11.基本となるハイパーテキスト機能
 12.「作業フォルダ」と「索引ファイル」
 13.ダイアログのボタン操作
 14.ハイパーテキスト機能の活用

Bloga00a_20240428155401


Unixのコマンドでファイルを操作する
 15.コマンドの活用(1)-ハイパー・コマンド-
 16.コマンドの活用(2)-マイ・コマンド-

テキストのデータベースをつくる
 17.テキストの検索(1)-複合検索-
 18.テキストの検索(2)-全文検索-

Bloga00b_20240428155501


デジカメの撮影データを検索する
 19.デジカメの撮影データの検索
 20.撮影データ検索のための環境設定
 21.撮影日リストの作成
 22.撮影データの検索(1)-撮影年月日で検索-
 23.撮影データの検索(2)-ファイル名で検索-
 24.画像とテキストの連携

 25.考えるための道具
 26.スクリプト一覧

 以下のページで、上の項目を詳しく説明する。


 

ハイパーテキスト機能

 Macに向かい、あれこれ頭をひねりながら、エディタで文章を書く。
 そんな時に役立つのが「ハイパーテキスト機能」である。
 ハイパーテキスト機能は、テキスト上の「リンク」からファイルを操作する仕組みである。
 本ブログでは、エディタでハイパーテキスト機能を実現する方法をまとめてある。
 図は、ハイパーテキスト機能のイメージである。

Bloga01a_20240428170801


 ハイパーテキスト機能のリンクは、プレーンなテキストに書き込んだシンプルな文字列である。
 (リンク例1)> HyperMac.txt: テキストへのリンク
 (リンク例2)> Hanako230614.jpg: 画像へのリンク
 (リンク例3)> www.google.co.jp: Webサイトへのリンク
 ファイル名を書き込んだ「> HyperMac.txt:」がリンク本体だが、この行全体がリンクとなる。
 リンクから次のファイル操作ができる。
○リンク先の各種ファイル、フォルダ、Webサイトを開く
○テキストに書き込んだリンクから新規のテキストを作る
○Finderで選択したファイルのリンクをテキストにセットする
○リンク先のテキスト本体をリンク位置に読み込む
○テキストの選択部分をファイルに書き出し、代わりにリンクを置く
○リンク先のファイルを検索し、Finderで表示する
○リンク先のファイル名や保存フォルダを変更する
○フォルダ内の項目をリンク形式でテキストに書き出して表示する

 ハイパーテキスト機能は、エディタの簡単なキー操作で動作する。
 例えば、「リンク先を開く」には、テキストのリンクのある行を選択して「Commandキー」と「Jキー」を同時に押せばよい。
 この操作で、リンク先がテキストならエディタ、画像ファイルならプレビュー、フォルダならFinder、WebサイトならSafariという具合に、Macに事前に設定されてあるアプリで開く。
 上のように、複数のキーを同時に押して、機能を実行する操作を「ショートカット」と言い、「Command+J」のように表す。文字で表すと面倒そうだが、慣れると「指先チョイ!」で操作できる。
 ショートカットの設定は、エディタで行うが、その方法は後述する。
 
 ハイパーテキスト機能は、次のプログラムの連携で動く。
 プログラムは「スクリプト」といい、後でダウンロードする。
アップルスクリプト(AppleScript)
シェルスクリプト(Shell Script)
 テキスト上のリンクの情報を「アップルスクリプト」でターミナルに送り、ターミナルは「シェルスクリプト」を起動する。
 シェルスクリプトは、リンクの情報からMacに付属するUnixの「コマンド」でリンク先のファイルやフォルダを操作する。
 大ざっぱに図で表すと次のようになる。

Bloga01b_20240428170901


 ハイパーテキスト機能を動かすために必要なツールは、以下の通りである。
ターミナル.app
 ターミナルは、Macに付属するアプリである。
エディタ「Jedit Ω」
 エディタ「Jedit Ω」は、シェアウェアである。
  アートマン21 「Jedit Ω」  https://www.artman21.com/jp/sparkle/jeditomega.html
 エディタ「Jedit X」には対応していない。


 

フォルダの構成

 ハイパーテキスト機能のスクリプトでは、Unixの「コマンド」がリンク先のファイルを検索して、指定されたファイル操作を行う。
 動作の効率の考慮して、フォルダの構成を考える。
 この後、フォルダの構成については、図のようなツリー図を使用する。
 ひし形マークがフォルダを表す。下が親フォルダで、上に伸びているのがサブ・フォルダである。

Bloga02a_20240428171501


(設定1)ハイパーテキスト機能で利用するフォルダ
○ハイパーテキスト機能で利用する専用のフォルダを用意する。
 専用としたが、特別な機能のフォルダが必要なわけではない。ハイパーテキスト機能で利用するファイルを保存するための普通のフォルダである。
 このフォルダ内では、リンクにはファイル名を記すだけでハイパーテキスト機能を実行できる。フォルダの設定は、フォルダのパスを設定ファイルに記述するだけである。詳しい設定方法は後述する。以後、このフォルダを「専用フォルダ」と呼ぶ。
 ・「専用フォルダ」は、「ホーム」フォルダ内に「書類」フォルダと同列に作る。必要に応じて、内部にサブ・フォルダを作り、テキストだけでなく、画像やPDFなどの関連データを保存すればよい。
 ・「書類」フォルダ自体を「専用フォルダ」としてもよい。ただし、テキスト編集とは関係のないデータが大量にあれば、ファイル操作の効率が落ちる。
 ・「ホーム」フォルダは、システム関係など、テキスト編集とは関係のないファイルも多いので「専用フォルダ」に設定するのは適切でない。

○作業用のフォルダを用意する。
 ・「専用フォルダ」内に、作業用のファイルを保存する「作業フォルダ」を用意する。
 ・「作業フォルダ」内にはサブ・フォルダは作らない。

○「bin」フォルダを用意する。
 ・スクリプトを保存する「bin」フォルダを用意する。「ホーム」フォルダ内に「書類」フォルダと同列に作成する。
 ・フォルダ名は、半角英字の「bin」とする。スクリプトが利用するので変更してはいけない。
 ・すでに「ホーム」フォルダ内に「bin」フォルダがあり、実行ファイルを保存している場合には、そのフォルダを利用できる。

 下図は、「ホーム」フォルダ内に作られたフォルダの関係をツリー状に示したものである。
 「F」マークのついたフォルダが「専用フォルダ」であり、「W」マークが「作業フォルダ」、「bin」がスクリプト保存用のフォルダである。

Bloga02b_20240428171501


(設定2)フォルダ名とファイル名について
○フォルダ名やファイル名は「スペースを含まない半角英数字」にする。
 ・以下の記号は、ファイル名やフォルダ名として使えない。
 半角の「/」や「:」は、フォルダ同士やフォルダとファイルをつなぐ区切り記号と見なされる。また、「半角スペース」は、「データの区切り」と見なされる。
 ・「* < ! $ | 」のような記号も、コマンドには特別な意味を持つので使えない。
 ・ファイルやフォルダ名の先頭に「http、www.、www2」は使用できない。「Macでハイパーテキスト」では、「http、www.、www2」で始まるリンクは、インターネットの「URL」とみて、Safariが起動する。
 ・一部の全角文字を扱えないコマンドがある。例えば、次のようなファイル名をリンクにしても検索できない。
     > ダメな file.txt: 使えないファイル名
 この後に登場するスクリプトでは、全角文字や半角スペースを含むフォルダ名やファイル名でも動作するように配慮したが、上の例のように不都合の起こる可能性もある。

(設定3)テキスト・ファイルについて
○新規テキストを作成する時、1行目に「見出し」を書き込む。
  (例)@file:「Macでハイパーテキスト」(作成: 230723Sun)
 「見出し」はなくても、ハイパーテキスト機能は動作するが、リンクの一覧を表示するスクリプトでは、1行目を「見出し」として表示するので、ファイル内容が分かりやすくなる。
○テキスト・ファイル本体には、拡張子「.txt」をつける。
 「MacOS.txt、MSDOS.TXT」のように、「.txt」または「.TXT」がついていないファイルは、文字列検索の対象から外すことになる。


 

リンクの形式

 ハイパーテキスト機能のリンクは、テキストに書き込んだシンプルな文字列である。リンクの形式と作成上の注意点についてまとめる。

 

(リンクの形式)次の記号でリンク先の項目名を囲む
○リンクの開始記号 「> 」 (半角>と半角空白、「」は含まない)
○リンクの終了記号 「:」   (半角: 、「」は含まない)
 (形式1)標準型のリンク         「> 項目名:
 ・標準型のリンクは、「専用フォルダ」内のファイルに利用できる。
 (形式2)フル表示型のリンク   「> パス/項目名:
 ・フル表示型のリンクは、「専用フォルダ」外のファイルで利用する。
○リンク本体を含んだ行全体がリンクとして機能する。

 この後に登場するスクリプトを利用すれば、テキストに簡単にリンクをセットすることができる。
 直接、エディタで書き込む場合は、以下の注意が必要である。
○リンクの書式について
 ・リンク先がテキストの場合は、拡張子「.txt」を省略してもよい。ファイル本体に拡張子は必要である。
 ・テキスト以外のファイルのリンクには拡張子をつける。
 ・開始記号「> 」(>と半角空白)と終了記号「:」の間にファイル名以外の余分は空白を入れない。ファイル名の一部と見なされエラーとなる。
 (例1)>   MacDesk.txt: ファイル名の前に2つ以上の空白はエラー
 (例2)> MacDesk.txt : ファイル名の後ろの空白は1つでもエラー
 リンクの開始記号「> 」や終了記号「:」の前後なら、空白は自由に挿入できる
 ・開始記号の半角「>」は複数重ねて使用してもよいが、終了記号の半角「:」は一つのリンク行に複数あってはいけない。全角の「:」ならよい。ただし、URL「http:」の「:」はそのままつける。
 ・他にリンク行に使用してはいけない記号がある。半角記号「!」と「$」である。例えば、下のようなリンク行では、リンク本体には問題はないが、見出しにある半角記号「!」や「$」が原因で、行全体を選択してリンク操作するとエラーとなる。
 (例1)> BigTree.jpg: 「びっくり!」するほど大きな樹
 (例2)> BigMoney.txt: ドル($)を大儲け

 下図は、「専用フォルダ」内のテキストにセットした「標準型のリンク」の例である。
 リンク本体の色付けはエディタで設定するが、その方法は後述する。

Bloga03a_20240428171901


 「専用フォルダ」外にあるファイルは自動検索の対象とならないので、リンクには「パス」を記述する。パスとは、目的のファイルやフォルダへの経路である。
 Finderの「表示」で「パスを表示」にすると、ウインドウ下部に次のような表示が出る。
  Macintosh HD▶ユーザ▶MacUser▶ピクチャ▶MacDesk.jpg
 これが、ファイルへのパスである。
 ただし、上の表示はFinderのものであり、Unix流に記述すると次のようになる。
  /Users/MacUser/Pictures/MacDesk.jpg
 ユーザ名の部分は、記号「~」に置き換えてもよい。
  ~/Pictures/MacDesk.jpg、または ~/pictures/macdesk.jpg
 ちなみに、「~」は半角のチルダで、「ホーム」を表すUnixの記号である。
 「Macでハイパーテキスト」では、パスを表記する時はこの記号を利用する。ユーザ名を外に表さなくてもいいし、同じリンクを別なMacで利用する場合にも都合がいい。
 ・上のパスをリンクとして表すと次のようになる。大文字・小文字は、動作に関係ない。
  > ~/Pictures/MacDesk.jpg: パスを表示したリンク
  > ~/pictures/macdesk.jpg: パスを表示した小文字だけのリンク
 ・「ピクチャ、ミュージック、ムービー、書類、…」は、Finderがフォルダ名を付け替えて表示しているので、リンクの表記には使えない。
 ・ネットのURLは、フル表記が基準である。先頭が「http」や「www.」や「www2」で始まるリンクは、URLとして処理し、「Safari」が起動する。

 下図は、「専用フォルダ」外にある項目の「フル表示型のリンク」の例である。「フル表示型のリンク」も簡単にセットできるスクリプトを用意してある。

Bloga03b_20240428162601


(注意点)
○通常の文章に「> 」と「:」の組み合わせを用いた場合、通常のテキストもリンクの機能を持つ。
 例えば、> で始まり:で終わるこの行もリンクとなる。
 上の行を選択してハイパーテキストの操作を行えば、「で始まり」がファイル名と認識され、「ファイルは存在しない」エラーとなる。
○ハイパーテキスト機能を実行するには、リンク本体を含む行を選択してからキー操作をするが、ファイルのテキスト全体を選択(Command+A)して実行した場合は問題である。ターミナルに送られるテキスト量が膨大になり、ターミナルがエラーを起こす恐れがある。


 

スクリプトのダウンロードと保存

 ハイパーテキスト機能は、複数のスクリプトが連携して動作する。
 それらのスクリプトや関連アプリの設定ファイルは、ダウンロードして指定のフォルダにコピーする。

(準備1)ダウンロードする。

HyperText_Scripts(2024.3.27 版)> ダウンロード - hypertext_scripts.zip


(準備2)ダウンロードを確認する。

○ダウンロードした「HyperText_Scripts」フォルダをFinderで開き、以下のサブ・フォルダを確認する。
 ・A_bin_Scripts       「bin」フォルダに保存
 ・B_Jedit_Scripts     「Jedit Ω」のスクリプトフォルダに保存
 ・C_User_Scripts      ユーザ・スクリプト・フォルダに保存
 ・D_Jedit_Set            エディタの設定ファイル
 ・E_Terminal_Set      ターミナルの設定ファイル
 ダウンロードしたスクリプトは指定のフォルダにコピーする。   

(保存1)ダウンロードした「A_bin_Scripts」フォルダをFinderで開き、フォルダ内の全ファイルを「bin」フォルダにコピーする。(「フォルダとファイル」参照)
 ・もし、作成済みの「bin」フォルダに旧バージョンのスクリプトがある場合は、事前に全て削除しておく。

Bloga04a_20240428172601


(保存2)ダウンロードした「B_Jedit_Scripts」内のスクリプトは、「Jedit Ω」の「スクリプトフォルダ」にコピーする。
 ・「スクリプトフォルダ」を開くには、「Jedit Ω」のメニューバーのスクリプトメニュー(巻紙マーク)から下部に表示される「スクリプトフォルダを表示」をクリックすればよい。
 ・「B_Jedit_Scripts」内のスクリプトは、全て上のフォルダにコピーする。
 ・「JeditΩ」のスクリプトメニュー(巻紙マーク)をクリックし、コピーしたスクリプトが表示されることを確認する。

(保存3)ダウンロードした「C_User_Scripts」内のスクリプトは、「ユーザ・スクリプト・フォルダ」にコピーする。
 ・「ユーザ・スクリプト・フォルダ」を開くには、メニューバーの右側の「スクリプトメニュー」(巻紙マーク)をクリックし、「スクリプトフォルダを開く」から「ユーザ・スクリプト・フォルダを開く」と順にクリックすればよい。
 ・ダウンロードした「C_User_Scripts」内のスクリプトを全て、上のフォルダにコピーする。
 ・メニューバー右のスクリプトメニュー(巻紙マーク)をクリックし、コピーしたスクリプトが表示されることを確認する。

Bloga04b


(スクリプトメニューの表示)もし、メニューバーにスクリプトメニュー(巻紙マーク)が表示されていなかったら、次の操作で表示できる。
 ・Finderで「アプリケーション」フォルダ内の「ユーティリティ」フォルダを開き、「スクリプトエディタ.app」を起動する。
 ・スクリプトエディタの「環境設定」を開き、「一般」から「メニューバーにスクリプトメニューを表示」にチェックを入れる。

 以上で、画像データの検索で利用するスクリプトのコピーは終わる。
 ダウンロードした「D_Jedit_Set」と「E_Terminal_Set」内のファイルは、エディタとターミナルの設定で利用する。

(備考1)「bin」フォルダには主要な動作をするスクリプトと補助動作をするスクリプトの2種類が保存されている。ファイル名を変更したり、削除すると関連動作ができなくなる。
 ・「hyperjump、hypernew、…」のように拡張子がないのは、主要な動作をするシェルスクリプトである。
 ・「CloseFinder.scpt、FinderOpen.scpt、…」のように拡張子「.scpt」が付いているのは、補助動作のアップルスクリプトである。

(備考2)スクリプトメニュー(巻紙マーク)に表示されるアップルスクリプトは、マウスのワンクリックで起動できる。また、「Jedit Ω」の「スクリプトメニュー」のアップルスクリプトにはショートカットの設定ができるので、キーボードからも簡単に起動できる。
 Finderで表示したアップルスクリプトは、マウスのクリック操作で動かすことはできない。


 

エディタの設定

   メインのツールであるエディタの設定を行う。
 エディタは、シェアウエア「Jedit Ω」である。
   https://www.artman21.com/jp/sparkle/jeditomega.html   アートマン21 「Jedit Ω」

 「Jedit Ω」のトップメニューの「環境設定」を開き、ハイパーテキスト機能のための設定を行う。
 まず、テキスト上のリンクを色付けして、リンクを見やすくするための設定である。
(環境設定1)カラーリング
○ダウンロードした「HyperText_Scripts」にある設定ファイルを利用する。
 ・「カラーリング」のパネルを開き、「読み込み」ボタンをクリックし、ダウンロードした「D_Jedit_Set」フォルダにある「HyperLink_Coloring.plist」を選択し、「読み込み」ボタンをクリックする。
 下に、カラーリングの設定画面を載せる。リンク本体のカラーは自分の好みに変えることができる。

Bloga05a_20240429153401


(環境設定2)ショートカットキーの設定
○ハイパーテキスト機能に必須のショートカット
 ・「キャレットをパラグラフの先頭へ」は「^A」を設定。
 「^A」は「Controlキーを押しながらAキーを押す」という操作で、ブログでは「Control +A」と表記する。キャレットをリンクのある行の行頭に移動するときに利用する。
 ・「選択部分を1行下まで拡大/縮小する」
 リンク行を選択する操作なので「Controlキー」と操作しやすい文字「S」を組み合わせ、「Control+S」に設定する。リンクのある行を選択するときに利用する。
○他にもショートカットキーの設定はたくさんある。特別な設定にこだわらないなら、ダウンロードしたファイルからまとめて設定できる。
 ・「Jedit Ω」の「環境設定」の「メニューショートカット」から「読み込み」をクリックして、ダウンロードした「D_Jedit_Set」フォルダにある「ShortcutDictionary.plist」を読み込む。
 ・「環境設定」の「キーバインド」から、ダウンロードした「D_Jedit_Set」フォルダの「KeyBindsDictionary.plist」を読み込む。

 以下は、基本的な設定である。
(環境設定3)開く
○「起動時オプション」は「なにもしない」

(環境設定4)保存
○「プレーンテキストの時は拡張子".txt"を追加」にチェックを入れない
○「空白文字を維持」にチェック

(環境設定5)書類タイプ
○表示
 ・ウインドウ表示、ウインドウ幅に合わせる
○書式
 ・リッチ/プレーンは「プレーンテキスト」にチェック
 ・エンコーディングは「Unicode(UTF-8)
 ・改行タイプは「macOS/Unix(LF)
 ・編集方向は「横書き」

(環境設定6)エンコーディング
○「Unicode(UTF-8)
○「macOS/Unix(LF)

 以上で、エディタ「Jedit Ω」自体の設定は終わる。
 最後に、テキスト・ファイルを開くデフォルトのアプリの設定である。
 「macOS」では、初期設定は「テキストエディット」になっているが、「Jedit Ω」に変更する。
(手順1)Finderで、任意のテキスト・ファイル(.txt、.TXT)を選択して、ショートカット操作「Command+I」をするか、トップメニュー「ファイル」の「情報を見る」をクリックする。

(手順2)表示されるウインドウの「このアプリケーションで開く」をクリックして「Jedit Ω」を設定する。その後で、下にある「すべてを変更」ボタンを押す。「Jedit Ω」が「(デフォルト)」として設定される。
 
(参考)便利な「macOS 」のショートカット
 「macOS」では、カーソル移動からファイル操作まで、アプリ間で共通のショートカットが設定されている。
 SafariやMailなど、Macのアプリのテキスト編集場面で共通に使えるので便利である。エディタ「Jedit Ω」にもこのショートカットが初期設定されている。
 <Controlキーのショートカット>
  Control+B キャレットを1文字分左に移動する(←)
  Control+F キャレットを1文字分右に移動する(→)
  Control+P キャレットを1行上に移動する(↑)
  Control+N キャレットを1行下に移動する(↓)
  Control+A キャレットを行頭に移動する
  Control+E キャレットを行末に移動する
  Control+H キャレットの左側の1文字を削除する(BS)
  Control+K キャレットから行末までを削除する(バッファに保存)
  Control+Y バッファ内の文字をキャレット位置にペーストする
  Control+O 改行する(RET)

 <Commandキーのショートカット>
  Command+X カット
  Command+C コピー
  Command+F 検索
  Command+R 置換
  Command+S 保存する
  Command+W 閉じる
  Command+Q アプリを終了する
  Command+Tab アプリを切り替える
  

 

ターミナルの環境設定

 ハイパーテキスト機能の作業台となるのは、「ターミナル」というアプリである。
 下図は、エディタからハイパーテキスト機能を動かしている画面で、スクリーンの左半分がターミナルのウインドウである。
 ターミナルには、エディタから送られたリンクの情報などが表示されている。

Bloga06a_20240429153901


(ターミナルの登録)アプリケーション・フォルダの「ユーティリティ」にある「ターミナル.app」を、Dockにドラッグ・アンド・ドロップする。
 Dockには黒いテレビ画面のようなアイコンが置かれる。アイコンをクリックするとターミナルが起動し、デスクトップにウインドウが現れる。
 通常は、このウインドウにキーボードからコマンドを打ち込んで実行させるが、「Macでハイパーテキスト」では、スクリプトがエディタからリンクの情報を送り、ハイパーテキスト機能を実行する。

(ターミナルの画面設定)上図にあるようなターミナル画面は、ダウンロードした設定ファイルで行える。
○ターミナルのメニューバー「環境設定」をクリックし、表示された画面上のメニューの「プロファイル」を開く。
○左下部の歯車マークをクリックし、「読み込む」をクリックする。
 ダウンロードした「HyperText_Scripts」内の「E_Terminal_Set」フォルダ内にあるファイル「MacDesk.terminal」を開く。
○プロファイルに「MacDesk」が表示されたら、左下部の「デフォルット」をクリックし、起動時の設定として登録する。
 ターミナルを再起動し、ウィンドウの表示状態を確認する。

 画面サイズなどの調整が必要なら、ターミナルの「環境設定」を開き、以下の項目をユーザーの好みに合わせて設定する。
(設定調整)ターミナルの外観や表示フォントの設定
○プロファイルのメニュー「テキスト」で文字サイズを設定する。
 ・変更するには、フォントの「変更」ボタンを押して、フォントを選び、サイズを設定する。
 ・文字のカラーは「テキスト」という項目で設定する。
 ・「背景」の「カラーとエフェクト」で、色や透明度を好みで設定する。
○プロファイルのメニュー「ウインドウ」の設定
 ・「タイトル」は、フォルダ名を表示するので空欄のままがいい。
 ・「ウインドウサイズ」で、画面の大きさを設定する。
 ウインドウの大きさは、表示する文字の見やすさとの兼ね合いで決める。
 表示状態を確認するために、ターミナルをアクティブにして、次の文字(コマンド)をターミナルにタイプしてみる。文字やスペースは、すべて半角英字記号である。
cd
  ls -l|cat -n
 番号付きファイル一覧が、折り返されずに表示されればよい。
 ターミナルの画面は、実際にハイパーテキスト機能を使ってみて、自分の好みに合わせて変更すればよい。
○デフォルトに登録したプロファイルのメニュー「詳細」を開き、以下の設定をする。
 ・「言語環境」の「テキストエンコーディング」は「Unicode(UTF-8)」に設定する
 ・「起動時にロケール環境変数を設定」にチェックを入れる

(Mac起動時の設定)Macが起動した時の設定
○Macが起動した時に「ターミナル」が自動的に起動するように設定する。
 ・Macの「システム環境設定」の「ユーザとグループ」の「ログイン項目」を開き、下部にある「+」ボタンをクリックして、「ユーティリティ」フォルダ内にある「ターミナル.app」を登録する。
○ターミナルが起動した時のプロファイル画面の設定
 ・ターミナルの「環境設定」から「一般」をクリックし、「起動時に開く」の「次のプロファイルの新しいウインドウ」から、デフォルトにしたプロファイルを選ぶ。
 以上により、Macを起動すると、アレンジしたウインドウでターミナルが開く。

 ターミナルを終了し、Macを再起動して、アレンジしたウインドウでターミナルが開くことを確認する。
 以上で、ターミナルの動作環境の設定は終わる。


 

ターミナルの動作設定

 ターミナルの外観などの環境設定が終わったら、ターミナルで動く「シェル」というブログラムの設定を行う。「シェル」は、ハイパーテキスト機能を動かすツールを制御するプログラムである。
 MacのOSが「Catalina」以降は、ターミナルで動くシェルは「zsh」となった。ハイパーテキスト機能を動かすシェルは、「bash」である。

(シェルの確認)ターミナルで動いているシェルを確認する。
○ターミナルをアクティブにして、次の半角英字記号のコマンドを打ち込んでみる。
   echo $SHELL
 「/bin/bash」と表示されたなら、下の(動作設定1)の作業に移る。
○「/bin/zsh」と表示されたなら、ターミナルで動くシェルを「bash」に変更する。
 ・ターミナルに次のコマンドを打ち込めばよい。
   chsh -s /bin/bash
  Macのユーザのパスワードの入力が必要となる。
 ・ターミナルを再起動し、シェル「bash」が動いていることを確認する。

 以下は、シェル「bash」の設定である。 
(動作設定1)ダウンロードしたスクリプトをコピーした「bin」フォルダ内のテキスト「bash_profile」をエディタ「Jedit Ω」で開き、編集して設定を行う。
 設定箇所は、ファイル内のコメント行「< 設定1:… >、< 設定2:… >」の下の行である。
 <設定1> ハイパーテキスト機能で利用する「専用フォルダ」のパスを設定する。
○「# == < 設定1:「専用フォルダ」の設定 > ==」のすぐ下にある次の行に「専用フォルダ」のパスを登録する。
   export FPATH=$HOME/macdesk
 ・「export FPATH=$HOME/」に続けて、「専用フォルダ」名を記述する。「専用フォルダ」名を「MacDesk」としてある場合は、上の記述を変更する必要はない。
 (例1)「書類」フォルダ内に「専用フォルダ」を「MacDesk」として作成した場合
   export FPATH=$HOME/documents/macdesk
  Finderに表示されるフォルダ名「書類」は使えない。
 (例2)「書類」フォルダを「専用フォルダ」とした場合
   export FPATH=$HOME/documents

 <設定2>「作業フォルダ」へのパスを設定する。
○「# == < 設定2:「作業フォルダ」の設定 > ==」の下にある次の行を変更して「作業フォルダ」のパスを登録する。
   export WDSK=$FPATH/workdesk
 ・「export WDSK=$FPATH/」に続けて、「作業フォルダ」名を記述する。「作業フォルダ」名を「WorkDesk」とした場合は、上の記述を変更する必要はない。
 (例)「作業フィルダ」名を「WorkFolder」とした場合
   export WDSK=$FPATH/workfolder

(注意1)スクリプトをコピーした「bin」フォルダは、すでに登録してある。
 ・「export PATH=$PATH:~/bin」の部分は、変更してはいけない。

(注意2)設定ファイルにある「HOMEFPATHWDSKPATH」は、「環境変数」という特別な変数である。これらの変数名は変更してはいけない。

(注意3)フォルダ名にスペースを含んでいる場合は、スペースが区切りと見られ、エラーとなる。フォルダ名にスペースが含まれているなら、次のように記述する。
  export FPATH="$HOME/documents/mac desk"
 このような余分な対応が必要となるので、フォルダやファイル名にスペースは使わない方がよい。

 

Bloga07



 以上で、ユーザの環境に合わせてターミナルを使えるようにするための設定を行った。
 「# == < 設定1:… > ==、# == < 設定2:… > ==」のコメント行は削除する。
 上の2行以外の記述は、変更したり、削除したりしてはいけない。
 設定が終わったら、「bash_profile」を保存する。

(動作設定2)上で保存した「bash_profile」を「.bash_profile」とファイル名を変更して「ホーム」フォルダに保存する。
 ファイル名の先頭に「ドット”.”」のついたファイルは、システム用の特殊なファイルである。Finderでは、表示できないし、ファイル名を「ドット”.”」付きに変更することもできない。

 「bash_profile」を「.bash_profile」への変更は、以下の手順による。
(変更操作1)まず、保存した「bin」フォルダの「bash_profile」を「ホーム」フォルダにコピーする。

(変更操作2)「ホーム」フォルダにコピーした「bash_profile」をエディタ「Jedit Ω」で開く。
○エディタで表示された「bash_profile」のウィンドウ上部のバーに表示されているファイル名にマウスのカーソルを合わせ、右横にある下矢印をクリックして、ファイル名を編集状態にする。
○ファイル名の先頭に半角「.」を付けて「.bash_profile」としリターンキーを押す。表示される警告で「"."を使用」ボタンをクリックして、「.bash_profile」に変更して保存する。
 ○エディタ「Jedit Ω」のファイル・メニュー「開く」で表示されるウインドウの下部にある「隠しファイルも表示する」にチェックを入れておけば、エディタのメニューに「.bash_profile」が表示され、編集が可能となる。後で追加の編集を行う。
○「ホーム」に「.bash_profile」が保存されているか確かめる。
 ・ターミナルをアクティブにして、次の半角英字記号をタイプする。
   ls -al ~/
 ・表示される項目の中に「.bash_profile」があることを確認する。

 以上で、ターミナルの設定は終わる。
 続いて、設定後のターミナルの動作を確認する。
(動作確認1)「ホーム」フォルダに「.bash_profile」を保存したら、ターミナルを終了し、再起動する。
 設定が正しければ、ターミナルに「作業フォルダ」内のファイルの一覧が番号付きで表示される。ファイルがなくても、「作業フォルダ」名と起動した「年月日、時刻」が表示される。
 もし、上のようにターミナルが起動しない場合は、設定が正しくないことになる。フォルダ構成と「.bash_profile」の記述を確認する。

(動作確認2)「.bash_profile」に登録した環境変数の確認をする。
○ターミナルをアクティブにし、次の半角英字記号をタイプする。
   open $FPATH
 「専用フォルダ」が、Finderで開く。
   open $WDSK
 「作業フォルダ」が、Finderで開く。
○ターミナルにエラーメッセージが表示されたり、別なフォルダが開いたなら、次の半角英字記号をタイプする。
   echo "$FPATH"
   echo "$WDSK"
 環境変数「$FPATH、$WDSK」に設定された「専用フォルダ」と「作業フォルダ」のパスが表示される。
 例えば、「echo "$FPATH”」で「/Users/ユーザ名/macdesk」と表示されたなら、「専用フォルダ」は「ホーム」フォルダに「MacDesk」として設定されていることを示す。

 以上で、ターミナルの設定は終わる。


(備考)特別なテキストのファイル名変更
(例1)「bash_profile」を「.bash_profile」に変更する。
 上で取り上げた「Jedit Ω」のメニューバーからの変更では可能だが、Finderでは「"."を使用できない」の警告が出て変更できない。
(例2)「bash_profile.txt」を「bash_profile」に変更する。
 Jedit Ωの環境設定「保存」で「プレーンテキストのときは拡張子".txt"を追加」にチェックを入れない設定をしても、強制的に拡張子”.txt”が付加される。Finderでは、警告のパネルが出るが、拡張子の削除は可能である。
(例3)「bash_profile.txt」を「.bash_profile」に変更する。
 Unixのコマンドを利用するのが簡単である。変更するファイルのあるフォルダをターミナルで開き、次のようにコマンドをタイプすればよい。
   mv bash_profile.txt .bash_profile





スクリプトを動かす準備

 「bin」フォルダにコピーしたスクリプトで、ファイル名の末尾に「.scpt」が付いているのがアップルスクリプトで、付いていないのがシェルスクリプトである。
 どちらのスクリプトも「実行許可フラグ」がセットされている。
 シェルスクリプトは、Finderには「ファイルの種類」として「Unix実行ファイル」と表示される。

Bloga08a_20240429155501

 

 シェルスクリプトは、ターミナルにファイル名を打ち込むだけで作動するので、外部からの有害なファイルの侵入を防ぐため、ダウンロードしたシェルスクリプトには動作の制限がかけられている。
 具体的には、ダウンロードしたシェルスクリプトをFinderからエディタやターミナルで開こうとすると「警告」が表示され、動作の確認が必要となるのである。
 ただし、警告表示を無視した状態でもシェルスクリプトは動く。
 そんな状態でシェルスクリプトを動かすのは気がひけるので解除してから利用することにする。 

 「Jedit Ω」の開発元「アートマン21」のホームページの「Jedit Ω」の「ライプラリ」に警告表示を解除するスクリプトがアップロードされている。それを利用すれば、簡単に警告表示を解除できる。
 以下、その操作についてまとめる。
(操作1)「Jedit Ω」のライブラリを開き、スクリプトをダウンロードする。
○ライブラリにある「検疫解除 ClearQuarantine.zip」をクリックして、ダウンロードする。
  ライブラリ >   https://www.artman21.com/jp/sparkle/jedit-library.html
 ・「ダウンロード」フォルダに「ClearQuarantine.scpt」として保存される。

(操作2)ダウンロードしたスクリプトを利用して、「bin」フォルダのシェルスクリプトの警告表示を解除をする。
○「ダウンロード」フォルダの「ClearQuarantine.scpt」をダブルクリックして、スクリプトエディタで開く。
 ・スクリプトエディタで開いた状態のままにして、下の操作に移る。
○Finderで「bin」フォルダを開き、シェルスクリプトを選択する
 ・Commandキーを押しながらクリックすると、複数のシェルスクリプトを選択できる。
○スクリプトエディタで開いてある「ClearQuarantine.scpt」の上部メニューの「右向き三角マーク」をクリックする。このマークにマウスのカーソルを合わせると「スクリプトを実行します」と表示が出る。
 ・スクリプトが実行され、Finderで選択してあるシェルスクリプトの警告表示が解除される。「bin」フォルダ内の全てのシェルスクリプトにこの操作を行う。
 ・下の(解除操作1)や(解除操作2)で警告が表示されなかったら、解除されている。
  
 手動で警告表示を解除するには、次の二つの方法がある。
 まず、Finderでシェルスクリプトを一つ選択し、右クリックで表示されるメニューから「このアプリケーションで開く」をクリックする。
○(解除操作1)上で表示されるメニューに「Jedit Ω.app」があったら、クリックする。
 ・「…。開いてもよろしいですか?」と警告が出たら、「開く」をクリックする。エディタで開かれたら、すぐに閉じる。エディタで開いたシェルスクリプトは、次からは警告が出なくなる。
○(解除操作2)この操作は、ターミナルを起動した状態で行う。
 ・メニューに「Jedit Ω.app」が表示されなかったら、「ターミナル.app」をクリックする。
 ・「…。開いてもよろしいですか?」と警告が出たら、「開く」をクリックする。一瞬、ターミナルでサブ・ウィンドウが開くが、すぐに閉じて元に戻る。
 以後、警告表示を解除する操作を「ロック解除」と表記する。

Bloga08b_20240429155501


 「bin」フォルダ内のシェルスクリプトは、全て「ロック解除」しておく。

(備考)シェルスクリプトを開くアプリに「Jedit Ω」を設定する。
○ダウンロードしたシェルスクリプトをFinderで一つ選択して、右クリックで表示されるメニューの「情報を見る」をクリックする。
 ・「このアプリケーションで開く」のアプリとして「Jedit Ω」が表示されていたら、アプリ欄の下の「すべて変更」ボタンをクリックし、確認の「…変更してもよろしいですか?」で「続ける」をクリックする。
 ・アプリ欄に「Jedit Ω」が表示されていなかったら、アプリケーション欄の右端の矢印マークをクリックし、表示されるメニュー下部の「その他」をクリックする。アプリケーション一覧から「Jedit Ω」を選択して、「追加」をクリックする。
 ・情報パネルに戻り、「すべてを変更」をクリックする。「…変更してもよろしいですか?」では「続ける」をクリックする。

Bloga08c



ハイパーテキスト機能を動かす

 以下の基本となるハイパーテキスト機能を動かしてみる。
○ハイパーPut
  Finderで選択したファイルのリンクをテキストにセットする。
○ハイパーJump
  テキストにセットしたリンクからリンク先のファイルを開く。
○ハイパーNew
  テキストに書き込んだリンクから新規のファイルを作る。

(準備1)「Jedit Ω」の「スクリプトフォルダ」にコピーした、次の三つのスクリプトを利用する。
 ・ハイパーPut
 ・ハイパーJump
 ・ハイパーNew
○下の「bin」フォルダのシェルスクリプトの「ロック解除」しておく。
 ・hyperput
 ・hyperjump
 ・hypernew

(準備2)動作テストで使用するテキストを準備する。
○「専用フォルダ」内の任意のフォルダ内にテスト用のテキストを作成・保存しておく。ファイル名は「Test.txt」とし、一行目に次の見出しを書き込んでおく。
  @file: Macでハイパーテキスト動作テスト
 ○「作業フォルダ」内に、テキスト「Index1.txt」を作成・保存しておく。このテキストは、この後も「索引ファイル」として利用する。「索引ファイル」については、後で詳しく説明する。

 上で用意したテキストを利用して、ハイパーテキスト機能を動かしてみる。
(動作テスト1)「ハイパーPut
○「専用フォルダ」内に用意したテキスト「Test.txt」を、Finderで選択して、Finderのウインドウは開いた状態にしておく。
○「Jedit Ω」で、「作業フォルダ」内に用意したテキスト「Index1.txt」を開き、任意の行の行頭にキャレットを移動する。
○「Jedit Ω」のスクリプトメニュー(巻紙マーク)を開き、スクリプトの一覧から「ハイパーPut」をクリックする。
 ・「Jedit Ω」で開いているテキスト「Index1.txt」のキャレット位置に下のようなリンクが書き込まれる。
  > Test: Macでハイパーテキスト動作テスト
 ・エディタの「カラーリング」が設定されてあれば、リンク本体が色付けされる。
 ・ターミナルには、リンク情報が表示される。

(動作テスト2)「ハイパーJump
○「Jedit Ω」でテキスト「Index1.txt」を開き、(動作テスト1)でセットしたリンク行を選択する。リンク本体だけでなく、画面のリンクを含む行を選択すればよい。
○「Jedit Ω」のスクリプトメニュー(巻紙マーク)を開き、「ハイパーJump」をクリックする。
 ・リンク先のテキスト「Test.txt」が「Jedit Ω」で開く。
 ・ターミナルには、リンク情報が表示される。

 上の(動作テスト1、動作テスト2)を「専用フォルダ」内の他のテキストや画像ファイル、さらにフォルダに対してもテストしてみる。
 テキストの場合、1行目に書き込みがあれば、リンクに見出しとして表示される。
 「専用フォルダ」内に同名ファイルがあると、リンク形式の同名ファイルの一覧がエディタで表示される。

(動作テスト3)「ハイパーNew
○「作業フォルダ」にあるテキスト「Index1.txt」を「Jedit Ω」で開き、下のようなリンク形式の文字列を書き込む。
   > New: 「ハイパーNew」の使い方
○このリンク行を選択し、「Jedit Ω」のスクリプトメニュー(巻紙マーク)の「ハイパーNew」をクリックする。
 ・確認のダイアログが表示されるので、リターンキーを押す。中止するには、ESCキーを押せばよい。
 ・「保存するフォルダを指定」するウインドウが表示されるので、保存先のフォルダを選択してリターンキーを押す。同名ファイルが存在しているとエラーになり、ターミナルに同名ファイルの一覧が表示される。
 ・以上の操作により、1行目に見出しが書き込まれた新規ファイルが「Jedit Ω」で開いたら保存して閉じる。
○テキスト「Index1.txt」に書き込んだリンク行「> New: ……」を選択して、「ハイパーJump」を実行すると、作成したファイルが開く。

Bloga09a_20240430170801


 上の動作テストでは、スクリプトを動かすのにマウスを利用したが、スクリプトのショートカットを利用すれば、指先操作で実行できる。
 「Jedit Ω」の開発元「アートマン21」によると、「スクリプトのショートカットはスクリプトファイルに記録されているので、スクリプトをコピーすればショートカットも設定される」とのことである。
 「Jedit Ω」のスクリプトメニュー(巻紙マーク)を開いて、スクリプト名の右側に「⌘J」のようなマークがあるかを確認する。ちなみに、「⌘J」は「⌘キーとJキーを同時に押す」ショートカットを示している。
 念のため、スクリプトにショートカットを設定する方法を「ハイパーJump」を例にして、まとめておく。

(設定方法)「ハイパーJump」にショートカットを設定する手順
○「Jedit Ω」のメニューバー(巻紙マーク)をクリックして、スクリプトメニューを表示する。
○「Controlキー」を押しながら、メニューの「ハイパーJump」をクリックする。
 ・表示される設定パネルの「ショートカット」欄をクリックして入力状態にし、「Commandキー」を押しながら「J」キーを押す。
 ・入力欄に「⌘J」マークが表示される。
 ・「表示位置優先順位」を「1」に設定する。
 ・「OK」ボタンをクリックする。
 これで、「ハイパーJump」にショートカット「Command+J」が設定され、キーボードで「Commandキーを押しながらJキーを押す」と「ハイパーJump」を実行できる。他のハイパーテキスト機能のスクリプトにも同様の操作でショートカットが設定できる。

 これまでに動かした機能のショートカットをまとめておく。
○リンクを選択する共通のショートカット
 ・リンク行のキャレットを行頭に移動 (Control+A)
 ・リンク行を選択          (Control+S)
○ハイパーテキスト機能のショートカット
 ・ハイパーJump        ⌘J (Command+J)
 ・ハイパーPut        ^⌘P (Control+Command+P)
 ・ハイパーNew       ^⌘N (Control+Command+N)

(備考1)Finderから、直接、「JeditΩ」の「スクリプトフォルダ」を開くには、以下の手順による。
○Finderのトップメニューの「表示」から「表示オプションを表示」を開き、下部にある「"ライブラリ"フォルダを開く」にチェックを入れる。この操作をしないと「ライブラリ」フォルダはFinderに表示されない。
○上の設定の後、「ライブラリ > Applecation Suport > JeditOmega > scripts」と順にクリックすれば、スクリプトフォルダを開くことができる。

(備考2)ターミナルのウインドウは、Dockに隠してもハイパーテキスト機能は実行できる。ただし、ターミナルは、実行経過やエラーメッセージなどの有用な情報の表示窓である。


 

ハイパーテキスト機能のしくみ

 ハイパーテキスト機能「ハイパーJump」を例にして、リンクからファイルを開く時のアプリやスクリプトの動きをまとめる。
 (リンク例)> TextA.txt: Macでハイパーテキスト

Bloga092a_20240430171101


○エディタ
 ・リンク行を選択する。
 ・アップルスクリプト「ハイパーJump」を起動する。
○アップルスクリプト「ハイパーJump」
 ・選択されているリンク行をコピーする。
 ・シェルスクリプト名とリンク行のデータをターミナルに送る。
   hyperjump ”> TextA.txt: Macでハイパーテキスト”
○ターミナル
 ・シェルスクリプト「hyperjump」を起動し、リンク情報を渡す。
○シェルスクリプト「hyperjump」
 ・リンク情報からファイル名「TextA.txt」を取り出す。
 ・コマンド「find」で「専用フォルダ」内からファイル「TextA.txt」を検索する。
 ・検索したファイル「TextA.txt」をコマンド「open」がエディタに送る。
○エディタ
 ・コマンドから送られたファイル「TextA.txt」を開く。

 下は、画面に表示したアップルスクリプトとシェルスクリプトである。

Bloga092b_20240430171201


 アップルスクリプトは、Macに付属のスクリプトエディタで作成する。
 シェルスクリプトは、テキストエディタで作成する。
 どちらも、シンプルなテキストだが、それぞれに実行許可が与えられている。


 

基本となるハイパーテキスト機能

 エディタで開いているテキストのリンク行を選択するショートカット操作は、ハイパーテキスト機能を動かす前に共通の操作である。
キャレットをリンク行の先頭へ(Control+A)
リンク行を選択する(Control+S)

Bloga10a_20240430171501


 これまでに動かしたハイパーテキスト機能についてまとめる。
 下記のショートカットは、再設定が可能である。(参照「ハイパーテキスト機能を動かす」)
(名称)ハイパーPut
(機能)テキストにリンクをセットする
(操作)Control+Command+P
○Finderで、リンクをセットするファイルやフォルダを選択する。
 ・Commandキーを押しながらクリックすると複数のファイルやフォルダが選択できる。選択した状態で、Finderのウインドウは開いておく。
○エディタに切り替え、テキストのリンクをセットする位置にキャレットを移動して、エディタで上のショートカット操作をする。
○リンク先がテキストなら、ファイルの先頭行が見出しとしてリンクに表示される。テキストの拡張子「.txt」はリンクからは省略される。
 
(名称)ハイパーJump
(機能)リンク先のファイルやフォルダを開く
(操作)Command+J
○テキストのリンク行を選択して上のショートカット操作をすると、リンク先のファイルやフォルダが開く。 
○リンクを選択しないでショートカット操作をすると、「作業フォルダ」内の索引ファイル「Index1.txt」が開く。「作業フォルダ」に「Index1.txt」がないと、ターミナルにエラーが表示される。
○ハイパーテキスト機能の「専用フォルダ」内にリンク先と同名のファイルが複数あると、リンク形式のファイル一覧がエディタで表示される。
 ・一覧から、再度、「ハイパーJump」の操作をして必要なファイルを開くことができる。
 ・同名ファイル一覧は、「作業フォルダ」にファイル「zFile.txt」として出力されているので、必要に応じて開くことができる。

(名称)ハイパーNew
(機能)リンクから新規のテキスト・ファイルを作成する
(操作)Control+Command+N
○索引ファイルに新規のテキスト・ファイル名と見出しをリンク形式で書き込む。リンクでは、拡張子「.txt」は省略してもよい。
   (例)> NewText: 「ハイパーNew」の使い方
 ・新規ファイル専用の索引ファイルを「作業フォルダ」に用意しておくとよい。索引ファイルについては後述する。
○書き込んだリンク行を選択し、上のショートカット操作をすると、確認のダイアログが表示される。続いて、「保存するフォルダを指定」するウインドウが表示されるので、保存先のフォルダを選ぶ。確認のダイアログでEscキーを押すと中止となる。
○「専用フォルダ」内に同じ名前のファイルが存在しているとエラーとなり、ターミナルに同名ファイルの一覧が表示される。リンクのファイル名を変えて、再度、上の操作を行う。
○以上の操作により、1行目に見出しが書き込まれた新規テキストがエディタで開く。リンクで省略した拡張子「.txt」は、ファイル本体には付く。

(備考1)テキストにあるリンクは、削除してもリンク先への影響はない。また、「専用フォルダ」内であれば、保存先のフォルダを変更しても、リンクはそのまま使える。

(備考2)ハイパーテキスト機能は、ショートカット操作で実行するが、キー操作を忘れたなら、エディタのスクリプト・メニューにショートカットが表示されるので確認できる。 
 スクリプト・メニューに表示されるスクリプト名をマウスでクリックしても実行できる。


 

「作業フォルダ」と「索引ファイル」

 ハイパーテキスト機能を効率的に動かすために、よく利用するファイルを保存する「作業フォルダ」とリンク集を集めた「索引ファイル」についてまとめる。

○「作業フォルダ」は、「専用フォルダ」内に設けたフォルダである。(「フォルダとファイル」参照)
 ・「作業フォルダ」は、シェルの設定ファイル「.bash_profile」で環境変数「$WDSK」に登録されていなくてはならない。(参照「ターミナルの動作設定」)
 ・Macを起動すると、「作業フォルダ」内のファイルの一覧がターミナルに表示される。
 ・「作業フォルダ」には、索引ファイル、資料やメモなどのよく利用するファイルを置く。
 ・ハイパーテキスト機能のシェルスクリプトも、検索結果などをファイルとして「作業フォルダ」に書き出す。

 「索引ファイル」は、ファイルやフォルダのリンク集である。「総合索引」と「サブ索引」がある。
○「総合索引」は、普段利用するファイルやフォルダのリンクを集めたファイルである。ファイル名は「Index1.txt」とし、必ず「作業フォルダ」に保存する。スクリプトが利用するので、ファイル名は変更できない。
 総合索引「Index1.txt」は、次の方法で簡単に開くことができる。
 ・「Jedit Ω」をアクティブにして、「Command+J」
 ・ターミナルをアクティブにして、英小文字「p」をタイプ
○「サブ索引」は、分野別や年別などで分類したファイルのリンク集である。
 ・新規ファイル専用、分野別、年別など、必要に応じて「サブ索引」を作成し、「作業フォルダ」に保存しておくとよい。

Bloga11a_20240430171901


 「索引ファイル」は、ファイルの管理にも便利である。後で取り上げるスクリプト「ハイパーList」を利用すれば、フォルダ内にあるファイル群のリンク一覧を簡単に作成できる。

(備考)テキスト・ファイルの「見出し」について
○「Macでハイパーテキスト」で扱うテキスト・ファイルは、1行目に「見出し」を書く。
 ・テキストの1行目は、スクリプトがリンクの見出しとして利用する。
 ・「見出し」には、タイトルや年月日を簡潔に表記する。
  (例)「Macでハイパーテキスト」(180324Sat.)
 ・「見出し」文に半角記号「: ! $」を使ってはいけない。
○印刷する場合に見出しが邪魔なら、次のように対応すればよい。
 ・フォントサイズなどの書式を設定した印刷専用の白紙ファイルを「作業フォルダ」に用意しておく。
 ・上の白紙ファイルに、印刷するファイルのリンクをコピーし、後で取り上げるスクリプト「ハイパーIn」でテキスト本体を読み込んで印刷する。


 

ダイアログのボタン操作

 ハイパーテキスト機能で、最初に動くのはアップルスクリプトである。
 スクリプトによっては、データの入力や確認、機能選択のダイアログを表示する。
 ダイアログに表示できるボタンの数は三つに制限されているので、2段階に分けて表示する場合もある。
 ボタンに表示された機能の実行は、マウスでクリックするのが簡単だが、キーで操作する場合の要点をまとめる。

 ボタンには4種類あり、機能を実行するには次のキー操作をする。
○全体が青いボタン
  Returnキーを押す。
○「キャンセル」と書かれたボタン
  Escキーを押す。
○青いフレームで囲まれたボタン
  Spaceキーを押す。
○全体が白いボタン
  Tabキーで青いフレームで囲まれた状態にしてスペースキーを押す。

Bloga112a_20240430172001


 ハイパーテキスト機能のエラーや実行結果の表示についてもまとめておく。
 エラーの表示は、アップルスクリプトとシェルスクリプトでは異なる。
○アップルスクリプトで判定されたエラーは、ダイアログで表示する。
 例えば、リンク行を選択しないでハイパーテキスト機能を実行した場合は、エラーのダイアログが表示される。
○シェルスクリプトで判定されたエラーは、ダイアログでの表示はできない。シェルスクリプトの実行結果は、すべてターミナルに表示される。
 例えば、リンク先とファイルが見つからない場合などは、ターミナルにエラーを表示する。

Bloga112b_20240430172001


 ターミナルには次々とシェルスクリプトの実行結果が表示されていく。
 ターミナルは、ハイパーテキスト機能の動作履歴の表示窓である。


 

ハイパーテキスト機能の活用

 追加のハイパーテキスト機能の活用法についてまとめる。

 「JeditΩ」のスクリプトフォルダにコピーした以下のアップルスクリプトを使用する。
 ・ハイパーOut
 ・ハイパーIn
 「bin」フォルダ内の次のシェルスクリプトの「ロック解除」をしておく。
 ・hyperout
 ・hyperin

(活用法1)簡易アウトライナーとして利用する。
 多くの章や節で構成される長い文章を作成する場合、まず、全体の構成を項目として書き並べて全体の構成をきめ、項目ごとに要点を書き込み、しだいに細かい部分まで書き込んでいく方法がある。
 上のような文章作成では、ハイパーテキスト機能が役立つ。
○項目の内容がまとまったら、項目部分をハイパーテキスト機能「ハイパーOut」でファイルに書き出す。
 ・書き出した項目内容に代わり、リンクが置かれるので、ハイパーテキスト機能「ハイパーJump」で簡単に開くことができる。
 ・長い文章はリンクで構成されるので、全体の構成が分かりやすくなり、項目の入れ替えは自由である。
○新たに項目内容を挿入したいときは、ハイパーテキスト機能「ハイパーNew」を利用する。
○リンクの項目で構成されたテキストを一つの文章にまとめる時には、ハイパーテキスト機能「ハイパーIn」を使えばよい。リンクの位置にリンク先のテキストを読み込むことができる。
 これらにより、ハイパーテキスト機能は、簡単なアウトライナーのように使える。

Bloga12a_20240430172401


(活用法2)資料ファイルへのリンクを、付箋代わり利用する。
○テキスト本文の中にファイル名だけのリンクを記述しておけば、必要に応じて参照できる。例えば、「Macの画面」( > MacDesk.jpg: )のようにリンクを付記しておく。このリンクのある行を選択すれば、「ハイパーJump」機能でテキストから簡単に画像も閲覧できる。
○「作業フォルダ」にメモファイルを用意して、必要な情報をコピーしておく。ハイパーテキスト機能「ハイパーJump」でメモファイルを開いて資料を参照したり、「ハイパーIn」でメモ本体を読み込むことができる。
 メモファイルへのリンクは、下のようなファイル名だけで十分である。
  > xMemo1:
 読み込みが終わるとリンクは削除されるが、メモ本体は「作業フォルダ」に残しておくことができる。

 以下、テキストの選択部分を書き出す機能「ハイパーOut」とリンク先ファイルをテキストに読み込む機能「ハイパーIn」についてまとめる。

(名称)ハイパーOut
(機能)テキストの選択部分をファイルに書き出してリンクを置く
(操作)Control+Command+O
○まず、ファイルに書き出す部分の先頭行に、書き出すファイル名をリンク形式で書き込む。
 (例)> HyperOut.txt: 「ハイパーOut」の使い方
○上のようなリンクを1行目にして、書き出す部分を選択し、上のショートカット操作をする。
 ・1行目にあるリンクから新ファイル名を設定するので、必ず、書き出すファイル名のリンクを1行目にして、書き出す部分を選択する。
 ・選択して、上のショートカット操作をすると、確認のダイアログが表示される。
 ・「実行する」を選ぶと、書き出したテキストを「保存するフォルダを指定」するウインドウが表示され、保存先のフォルダを指定する。
○以上の操作により、1行目のリンクがファイル名となるテキストが作成される。書き出した部分は削除され、代わってリンクが置かれる。
 ・「専用フォルダ」内に同名のファイルがあると、ターミナルにエラーが表示され、処理は中止される。

(名称)ハイパーIn
(機能)リンク先のテキスト本体をリンクの位置に読み込む
(操作)Control+Command+I
○リンクを選択し、上のショートカット操作をすると、リンク先の元ファイルを残すか、削除するかを確認するダイアログが表示される。
○実行すると、リンク先のテキスト本体が読み込まれる。
 ・テキスト以外のファイルに実行してもエラーとなる。テキストかどうかは、拡張子「.txt、.TXT」で判定される。
 ・リンク先と同名のファイルが「専用フォルダ」内に複数存在すると、同名ファイルの一覧がフルパス形式でテキストで表示される。表示された中から必要なファイルのリンクを選んで、テキストの読み込み部分にコピーし、そのリンクに「ハイパーIn」を再度実行する。

 以上で、テキストの編集に必要なハイパーテキスト機能の基本となる機能の説明は終わる。

(備考)スクリプト名を「ハイパーPut、ハイパーIn、ハイパーOut、…」のようにしたのは、スクリプトの機能とショートカットの文字キーを関連づけ、かつ汎用のショートカットとの競合を避けたためである。
 例えば、テキストの選択部分をファイルに書き出す「ハイパーOut」は、「ハイパーWrite」とすることもできる。すると、ショートカットは「Command+W」としたくなるが、「Command+W」はmacOSでは「ウインドウを閉じる」である。
 「Control+Command+W」ならいいが、つい、誤操作をしてしまいそうである。紛らわしい操作を避けることも考慮してスクリプト名をきめた。
 ちなみに、「Jedit Ω」のスクリプトフォルダ内のアップルスクリプトは、ファイル名を変更することは可能である。新しいショートカットの設定も可能である。「bin」フォルダ内のスクリプトは、ファイル名を変更してはいけない。


 

コマンドの活用(1)-ハイパーコマンド-

 macOSのベースであるUnixに次のようなコマンドがある。
 ・ls    フォルダ内のファイル情報を表示する
 ・find   ファイルを検索する
 ・head  テキストから指定の行数を取り出す
 ・mv   ファイル名や保存先を変更する
 これらのコマンドのハイパー版についてまとめる。

 「JeditΩ」のスクリプトフォルダの次のスクリプトを使用する。
 ・ハイパーList
 ・ハイパーFind
 ・ハイパーHead
 ・ハイパーMove
 「bin」フォルダ内の次のシェルスクリプトの「ロック解除」をしておく。
 ・hyperls
 ・hyperfind
 ・fd_find
 ・hyperhead
 ・hypermv
  

Bloga13a_20240501103601


  
 上のハイパーテキスト機能についてまとめる。
(名称)ハイパーList
(機能)フォルダ内の項目をフルパス形式のリンク一覧としてファイルに書き出し、エディタで表示する
(操作)Control+Command+L
○対象のフォルダを指定する方法は二つある。
(方法1)テキストにセットしたフォルダのリンクを選択して、上のショートカット操作をする。
 ・リンク先がファイルではターミナルにエラーが表示される。
(方法2)リンクを選択しない状態でショートカット操作をすると、フォルダ選択のウインドウが表示されるので、フォルダを指定する。
○上の操作により、フォルダ内の項目一覧がフルパス形式のリンク一覧でエディタで表示される。
 ・テキスト・ファイルは、1行目に見出しを書き込んでおくとリンクに表示される。
○同名のフォルダが複数あると、同名ファイルの一覧がフルパスのリンク形式でエディタで表示されるので、一覧からフォルダを選び、再度、「ハイパーList」を実行する。

(名称)ハイパーFind
(機能)(機能1)リンク先のファイルやフォルダをFinderで表示する。
    (機能2)ファイル名の一部を指定して検索する。
(操作)Control+Command+F
(機能1)リンクを選択して上のショートカット操作をすると、リンク先のファイルをFinderで表示する。
(機能2)リンクを選択しないでショートカット操作をすると、ダイアログが表示されるので、検索するファイル名の一部を入力すると、「専用フォルダ」内を検索して、関連するファイルを一覧表示する。
 例えば、「desk」と入力すると「MacDesk.txt、HyperDesk.txt、MacDesk.jpg、…」のように、「desk」を含むファイルを検索して、一覧表示する。英字の大文字小文字の区別はしないで、「専用フォルダ」内を検索する。半角スペースで区切って「desk .jpg」とファイルの部分を二ヶ所指定すると、ファイル名に「desk」と「.jpg」を含むファイルを検索する。
 検索結果は、フルパス形式のリンク一覧でターミナルに表示する。
 ダイアログの「List」をクリックするとエディタで一覧が表示される。

(名称)ハイパーHead
(機能)テキスト上のリンクの見出しを更新する。
(操作)Shift+Control+H
○テキストのリンクを選択し、上のショートカット操作をすると、リンク先のファイルの1行目を読み込み、見出しとして表示する。テキスト編集中に見出しを変更した場合など、リンクの見出しを更新する時に便利である。
 ・テキスト以外のリンクでは、ターミナルにエラー表示をする。

(名称)ハイパーMove
(機能)リンク先のファイル名や保存フォルダを変更する。変更に合わせてリンクも更新される
(操作)Control+Command+M
○テキストのリンクを一つ選択し、上のショートカット操作をすると、ダイアログに「ファイル名変更」、「フォルダ変更」、「OK」の三つのボタンが表示される。
○「ファイル名変更」ボタン
 ・リンク先のファイル名を変更する。
 ・新しいファイル名を入力するダイアログが表示されるので、ファイル名をタイプする。「.txt」や「.jpg」の拡張子も入力する。
○「フォルダ変更」ボタン
 ・リンク先の保存フォルダを変更する。
 ・フォルダ一覧のウインドウが表示されるので、保存先のフォルダを選択する。
○「OK」ボタン
 ・上の変更設定をして、このボタンを押すと実行される。「ファイル名変更」と「フォルダ変更」はどちらか一方でも、両方でもよい。
 ・ファイル名やフォルダの変更設定をしないでこのボタンを押すと、スクプリトは終了する。

 リンク先ファイルの保存フォルダを「専用フォルダ」内で移動するだけなら、Finderで行うのが簡単である。「専用フォルダ」内では、ファイルを移動しても、リンクはそのまま利用できる。
 「ハイパーMove」を利用するメリットは、同時にリンクの更新ができることである。見出しを変更したり、「専用フォルダ」外に移動しても、リンクは更新される。


 

コマンドの活用(2)-マイ・コマンド-

 これまでは、テキスト上のリンクからハイパーテキスト機能でファイルを操作してきた。
 ここでは、テキストを編集しながら、直接、ターミナルにコマンドを送り、ファイルを操作する方法についてまとめる。
○「JeditΩ」のスクリプトフォルダの次のスクリプトを使用する。
 ・Unixコマンド
○「bin」フォルダ内の次のシェルスクリプトの「ロック解除」をしておく。
 ・ l英小文字のエル
 ・ p
 ・jed

 ターミナルにコマンドを打ち込む操作は今流ではないが、キーボードに向かうテキスト編集では、指先で操作できるので便利である。
○よく利用するコマンドを自分流に「マイ・コマンド」とした。
 次の三つがあり、連携して動く。いずれもアルファベット一文字のコマンドである。
 ・ l    ターミナルにフォルダ内の項目一覧を表示する
 ・ p       ターミナルからファイルやフォルダを開く
 ・ c       ターミナルに表示するフォルダを変更する
○「作業フォルダ」へのパスを設定した環境変数「$WDSK」を利用する。(登録方法は「ターミナルの動作設定」参照)
  

Bloga14a_20240501104501


 「マイ・コマンド」は、コマンドを実行すると表示される「番号」を利用して連携動作する。
マイ・コマンド「l」
 ターミナルで開いているフォルダの項目一覧を表示する。一覧には、テキストでは1行目が見出しとして表示され、フォルダは内部にある項目数が表示される。
  1 HyprDesk.txt: 「Macでハイパーテキスト」の動かし方
  2 MacDesk.jpg:  - image file --
  3 TextDataFldr:  -- folder (Item: 211)
   …………
マイ・コマンド「c」
 ターミナルで表示するフォルダを変更し、変更したフォルダの項目一覧を表示する。一覧にはファイルのサイズや更新日時などが表示される。
  1 -rw-r--r--@    1  MacUser staff     4374   1   12   17:44  HyprMac.txt
  2 -rw-r--r--@    1  MacUser staff   98043   2     2   16:52  MacDesk.jpg
  3 drwxr-xr-x   40  MacUser staff       704   2   28   17:15  TextDataFldr
   …………
○上のファイル一覧の行頭に表示される「番号」は、マイ・コマンド「c、p」で利用する。実際の操作例をまとめる。
 ・ターミナルに表示されている一覧の3番のフォルダに移動する。
   c 3
 ・ターミナルに表示されている一覧の2番のファイルを開く。
   p 2

 「マイ・コマンド」は、直接、ターミナルに入力するが、スクリプト「Unixコマンド」を利用すると、エディタでテキストを編集中にダイアログから入力できる。
(名称)Unixコマンド
(機能)エディタからターミナルにコマンドを送る
(操作)Command+U
○起動するとダイアログが表示されるので、半角英数字でコマンドをタイプし、リターンキーを押す。
 ・コマンドはターミナルに送られ、実行される。
 ・ダイアログが空欄ままでリターンキーを押すと終了する。
 テキストを編集しながらエディタの画面からフォルダの移動やファイルを開く操作ができる。

 以下、「マイ・コマンド」の仕様をまとめる。
マイ・コマンド「c」
(名称)c (半角英小文字 c 一文字)
(機能)操作対象のフォルダを変更し、ファイル一覧を表示する。
(操作)c 番号、c パス、c 変数
 ・ターミナルに表示されている項目一覧の「番号」を指定する
   c 3                  一覧の3番のフォルダに移動して、項目を表示する
 ・Unix流のパスを指定する
   c ~/documents/macdesk/textdb   指定のフォルダに移動する
   c ..                                                   一つ上の親フォルダに移動する
   c                                                      現在のフォルダの項目一覧を再表示する
 ・パスを設定した変数を指定する
   c $FPATH               変数「$FPATH」に設定したフォルダに移動
 ・移動先から「作業フォルダ」に戻り、項目一覧を表示する
   c

マイ・コマンド「l」
(名称)l (半角英小文字のエル)
(機能)ターミナルで開いているフォルダ内の項目を一覧表示する。テキストでは1行目が見出しとして表示される。フォルダには内部の項目数が表示される。
(操作)l(半角英小文字のエル)
 ・このコマンドでは、番号でフォルダの指定はできない。

マイ・コマンド「p」
(名称)p (半角英小文字 p 一文字)
(機能)項目を指定して開く。
(操作)p 番号、p 変数、p パス
 ・コマンド「c、l」で表示される一覧の「番号」を指定する。
   p 2                          一覧に表示されている2番の項目を開く
 ・半角スペースで区切って複数指定する
   p 2 3        一覧の番号の2番と3番の項目を開く
 ・一覧で表示されている項目名を指定して開く
   p macdesk.txt 
 ・パスを設定したフォルダの変数を指定して開く
   p $FPATH      空白を含むなら p "$FPATH"
 ・番号、ファイル名、変数をまとめて指定して開く
   p 2 macdesk.txt $FPATH
 ・Unix流のパスを指定して、Finderで開く
   p ~/documents    「書類」フォルダを開く
   p ..                          一つ上の親フォルダを開く
   p .                           ターミナルで表示しているフォルダを開く
 ・引数を指定しない
         p                           「作業フォルダ」にある総合索引「Index1.txt」を開く


(備考1)マイ・コマンド「l」では、フォルダ内の項目数が多いとターミナルの画面におさまらずに流れ出てしまう。「p .」とタイプすると、ターミナルでアクティブなっているフォルダをFinderで開くので、項目数の多いフォルダのファイルの確認に便利である。

(備考2)シェルスクリプト「jed」は、隠しファイルを編集する時に便利である。「jed」とだけタイプすると、シェルの設定ファイル「.bash_profile」が開く。

(備考3)マイ・コマンド「p、l」は「bin」フォルダに保存されているが、マイ・コマンド「c」はターミナルの設定ファイル「.bash_profile」に関数として記述されている。

(備考4)よく利用するフォルダへのパスは簡単な変数に登録すると便利に使える。

 変数を登録するには、上にある「jed」でシェルの設定ファイル「.bash_profile」を開き、「shopt -s cdable_vars」の下に追加すればよい。
      db=$FPATH/DataBase
      hd=/Volumes/Lacie/PhotoData/Digital_Photo/CameraData
 これで、「c $db」や「p $hd」のように指定できる。長い文字入力の手間が省ける。
 Unixコマンド「cd」では「$」記号を省略できるが、マイ・コマンド「c」のように項目の一覧は表示しない。


 

テキストの検索(1)-複合検索-

 Macには、テキストを検索する便利なUnixのツールがある。
 それらを利用して複数の検索機能を組み合わせたテキストの検索についてまとめる。

 Unixのコマンドを利用し、Spotlightの「索引検索」とテキストの「全文検索」を組み合わせて、キーワードを含むファイル群を検索する機能である。サブ・フォルダも含めて、広い領域のファイルを検索できる。
 次の二つの機能に分けて動作する。スクリプトも二つある。
(機能1) サブ・フォルダも含めて広い範囲のファイルの「Spotlightの索引」を検索し、さらに「検索されたファイルを全文検索」して、キーワード情報を一覧にしてエディタで表示する。
(機能2) 上の検索結果一覧からファイルを指定して、キーワードを含むテキスト行を抜き出してエディタで表示する。

 「Jedit Ω」のスクリプトフォルダの次のスクリプトを使用する。
 ・EP_Find
 ・EP_View
 さらに、「bin」フォルダの次のシェルスクリプトの「ロック解除」をしておく。
 ・ep_find
 ・ep_view

 以下、二つの機能の使い方をまとめる。
(名称) EP_Find
(機能)フォルダ内のテキストを複合検索して、検索した情報をエディタで一覧表示する。
(操作) Command+E
○エディタから上のショートカット操作をすると、ダイアログが表示される。
 ・ダイアログに検索するキーワードを入力する。半角スペースで区切ると二つのキーワードを指定できる。例えば、「ふるさと 駅」と入力すれば、「ふるさと」と「駅」の両方を含むファイルを検索する。
 ・そのままリターンキーを押すと、「専用フォルダ」内を検索する。
 ・事前にフォルダのリンクを選択してあれば、リンク先のフォルダが検索対象になる。リンク先がファイルの場合は、ターミナルにエラーが表示される。
○検索結果は、エディタに表示される。
 ・下は、キーワードを二つ指定して検索した時、エディタに表示される検索結果一覧の例である。
   'ep_find' output
   検索:'A=ふるさと' | 'B=駅'
   対象:> ~/MacDesk/TextDB/:
    > ~/MacDesk/TextDB/DB1.txt:
     表題:' 言葉メモ'
     検索:'A=19' 'B=6' 'AB=2'
    > ~/MacDesk/TextDB/DB2.txt:
     表題:' 引用資料データ'
     検索:'A=1' 'B=1' 'AB=1'
      ……(以下略)……
 ・「表題」には、テキストの1行目の見出しが表示される。
 ・数字は、キーワードを含む行の数である。上の例では、ファイル「DB1.txt」には「キーワードA(ふるさと)を含む行が19行」、「キーワードB(駅)を含む行が6行」、「キーワードAとBを同時に含む行が2行」あることを示している。
 ・新たに「EP_Find」を実行すると、検索情報は書き換えられる。

Bloga16a_20240501105001


(名称)EP_View
(機能)エディタで表示している検索結果一覧からファイルを指定して、キーワードを含むテキスト行を抽出する。
(操作) Control+Command+E
○「EP_Find」の検索結果一覧のリンク行を一つ選択して、上のショートカット操作をすると、キーワードを指定するダイアログが表示されるので、検索で指定したキーワード記号(A、B、AB)を入力する。「A、B」の内容は、検索結果一覧の上部に表示されている。
 ・「A」を入力すると「キーワードAを含む行」、「B」では「キーワードBを含む行」が、「AB」では「キーワードAとBを同時に含む行」が検索され、表示される。初期設定は「AB」となっているが、必要に応じて編集して指定する。
 ・一つのキーワードだけで検索した場合は、「B」や「AB」を指定しても「A」として処理される。
○結果は、エディタで表示される。
 ・検索結果一覧の別なリンク行を選択して繰り返し検索ができる。新たに「EP_Find」を実行すると、検索結果一覧は書き替えられる。

 Spotlightの「索引」を利用するので、サブ・フォルダも含めて広範囲を高速で検索できるが、「ありふれた文字」をキーワードにすると、膨大な量が検索されることになり、表示までに時間がかかり、ハング状態になるかも知れない。
 「EP_Find」の検索のキーワードを工夫すれば、「専用フォルダ」全体がデータベースのように利用できる。


 

テキストの検索(2)-全文検索-

 検索を想定して、テキスト・ファイルに気に入った言葉を書き込んだり、日々の行動記録をまとめていくとデータベースとなる。
 ここでは、上のような「検索目的のテキストを保存したフォルダ」(「DBフォルダ」と表記)を「全文検索」する方法についてまとめる。

○「Jedit Ω」のスクリプトフォルダの次のスクリプトを使用する。
 ・DB_Find
○「bin」フォルダの次のシェルスクリプトの「ロック解除」しておく。
 ・db_ind
○「DB_Find」のショートカット「Command+D

 全文検索スクリプト「DB_Find」を動かしてみる。
○エディタでテキストを保存したフォルダのリンクを選択し、ショートカット「Command+D」でスクリプト「DB_Find」を起動する。
 ・入力ダイアログが表示されるので、検索キーワードを入力する。
○スクリプト「DB_Find」は、リンク先を検索し、キーワードを含むテキスト行を抽出してエディタで表示する。キーワードを含む行数などの情報も表示される。

Bloga15a_20240501105301


○検索するテキスト・ファイルについて
 ・ファイルの書式を統一する必要はないが、ひとまとまりのデータは途中で改行しない。検索では、キーワードを含む行の改行コード(LF)までをひとまとまりとして抜き出す。改行があれば、そこでデータは分断される。
 ・サイズの大きいデータは、共通の表題を付けてデータを分割すればよい。検索では、キーワードを含む行が抽出されるが、表題で検索し直せば、全行を抽出できる。
 ・データと関連する日付を「yymmdd」形式の6桁の数字をテキストの先頭か末尾にで書き込んでおくと、後で説明する画像の検索に利用できる。例えば、2023年3月24日のメモなら「230324」と末尾に書き込んでおけばよい。
 ・関連するファイルのリンクを文中に書き込んでおけば、ハイパーテキスト機能で簡単に参照できる。
 ・ファイルにデータを追加する時は、ファイルの先頭に書き加えていけばよい。

 検索を目的にした資料や日記などは、専用のフォルダ「DBフォルダ」を用意して、まとめて保存する。
○「DBフォルダ」の準備
 ・「DBフォルダ」には、検索を目的としたテキスト・ファイルを保存する。複数のファイルもまとめて検索できる。
 ・分野別に「DBフォルダ」を用意してもよい。検索スクリプトは、三つの「DBフォルダ」に対応している。
 ・一つの「DBフォルダ」内にはサブ・フォルダは作らない。もし、サブ・フォルダがあっても検索されない。
 ・「DBフォルダ」名は、空白なしの半角英数字で設定する。

○「DBフォルダ」のパスをシェルの「環境変数」に登録する。
 スクリプトでの操作を簡略化するため、「DBフォルダ」のパスを変数に登録する。三つまで登録できる。
  ・DBフォルダ1     環境変数「$FLD1」
  ・DBフォルダ2   環境変数「$FLD2」
  ・DBフォルダ3       環境変数「$FLD3」

○「DBフォルダ」を登録するには、シェルの設定ファイル「.bash_profile」にパスを記入する。
 ターミナルに「jed」とタイプして「.bash_profile」を開く。
 ・「.bash_profile」の次の行を書き換えて登録する。
  # export FLD1=$FPATH/(DBフォルダ1)
      # export FLD2=$FPATH/(DBフォルダ2)
      # export FLD3=$FPATH/(DBフォルダ3)
 ・「DBフォルダ1」は、資料のテキスト用である。「専用フォルダ」内のフォルダ「WordDB」を登録するなら、1行目の行頭のマーク「#」を削除し、次のように書き換える
     export FLD1=$FPATH/worddb
 ・「DBフォルダ2」は、日付が重要なデータのテキスト用である。例えば、「専用フォルダ」内の日記を保存したフォルダ「Diary」を登録するなら、2行目の行頭のマーク「#」を削除し、次のように書き換えればよい。
     export FLD2=$FPATH/diary
 (重要)変数「$FLD2」に登録したフォルダ内のファイルは日付での検索に利用する。テキストの各行に日付を「yymmdd」形式の6桁の半角数字で書き込んでおくと、後に取り上げるスクリプトで写真データなどと関連づけて検索ができる。撮影メモなどに利用できる。
 ・「DBフォルダ3」は、住所録などのリスト形式のデータ用である。フォルダ名を「ListData」として登録するなら、3行目を次のように書き変える。
   export FLD3=$FPATH/listdata
 ・上で例にあげた「DBフォルダ」を「専用フォルダ」内の「DBtext」フォルダ内にサブのフォルダとして作成した場合は、次のように記述する。
     export FLD1=$FPATH/dbtext/worddb
     export FLD2=$FPATH/dbtext/diary
     export FLD3=$FPATH/dbtext/listdata
 ・「DBフォルダ」名はユーザが自由に決めていいが、変数名「FLD1、FLD2、FLD3」は検索スクリプトで利用するので、変更してはいけない。
 ・利用しない「# export FLD ……」行は、削除してもよい。残す場合は、「#」マークをつけたままの状態にしておく。
 ・下記の行は、後で利用するので、そのままの状態で残しておく。
  # export PD=$FPATH/(PDフォルダ)

Bloga15b_20240501105301


 以下は、上の環境設定が終わった状態でのスクリプトの使い方である。
(名称)DB_Find
(機能)指定した「DBフォルダ」内のテキスト・ファイルを全文検索して、キーワードを含む行を抜き出し、エディタで表示する。
(操作)Command+D
 ○エディタから上のショートカット操作をすると、キーワードを入力するダイアログが表示される。
 ・半角スペースで区切ってキーワードを二つ指定すると「複合検索」となる。例えば、「ふるさと 駅」と入力すれば、「ふるさと」と「駅」を同時に含む行を検索する。
 ・空欄のままリターンキーを押すと、前に利用したキーワードが自動的に設定される。同じキーワードで、異なるファイルを検索する時に利用すればよい。
 ○検索先のフォルダを指定する方法は3つある。
(方法1)テキストにセットしたリンクから指定する。
 ・事前にテキスト上のリンクを選択しておくと、リンク先が検索対象となる。リンク先はフォルダでもファイルでもよい。ただし、サブ・フォルダ内は検索対象とはならない。
 ・「索引ファイル」などに「DBフォルダ」のリンクを書き込んでおけばよい。
(方法2)ダイアログから検索先の「DBフォルダ」を指定する。
 ・リンクを選択していないと、ダイアログが表示されるので、環境変数に登録した「DBフォルダ」を示す数字(1、2、3)を入力する。
 ・DBフォルダのパスを環境変数に設定しないで、数字を入力するとターミナルにエラーが表示される。
(方法3)「DBフォルダ」以外の検索先のフォルダを指定する。
 ・ダイアログを空欄にしたり「1、2、3」以外の文字列を入力すると、フォルダ選択のウインドウが表示されるので、検索するフォルダを選択する。

 ○検索結果は、エディタで表示される。「作業フォルダ」にファイル「zWord.txt」として書き出されるが、新たに検索を実行すると書き換えられる。
 ・検索数として表示される数字は、キーワードの数ではなく、キーワードを含む行の数である。
 ・キーワードが検索されなかった場合は、ターミナルにエラーが表示される。

(補説)「DB_Find」は、通常のテキスト・ファイルの検索でも利用できるが、「改行(LF)」でデータは分断されるので、まとまりのあるデータの検索ができるとは限らない。また、ありふれた語をキーワードにして検索すると膨大な量が検索され、エラーを起こすかも知れない。


 

デジカメの撮影データの検索

 「ハイパーテキスト機能」を利用したファイル操作についてまとめてきたが、Unixのツールはデジカメの撮影データの検索にも利用できる。
 その方法についてまとめる。

 デジカメは、気軽に撮れるので大量の撮影データがたまる。データを保存しておき、必要なものを選んで利用することになる。
 だが、直接、撮影データを検索するツールはないし、画像を表示して探すのも実用的ではない。
 デジカメの撮影データを検索するための手がかりは何だろう?

 次の二つしか思いつかない。
ファイル名
撮影年月日
 デジカメ画像のファイル名は、「DSCF7003.JPG」のような無味乾燥なものである。ファイル名での検索には役に立たない。
 では、「2023/11/01」のような日付で、撮影データを検索することはできるだろうか。
 Macの検索機能「Spotlight」では、キーワードに「date:2023-11-01」を指定すれば、日付で検索ができる。けれども、関係のないファイルやハードウェアまで検索されるし、画像ファイルも撮影日で検索されるとは限らない。登録されている日付は、作成日の他にも、変更日、登録日、閲覧日などがあるからだ。
 Unixのコマンド「mdfind」を利用すれば、フォルダを限定して「Spotlight」メタデータの日付を検索できるが、上と同じ問題がある。

 Unixのツールを利用して、デジカメのデータを検索する方法についてまとめる。
 まず、デジカメの撮影データを次の二種類に分ける。
「元データ」
 デジカメのSDカードの撮影データを月ごとなどにまとめてコピーし、保存したデータである。SSDやHDなどの外部記録装置に専用のフォルダを作って保存する。
「使用データ」
 プリントしたり、メールに添付したりして、利用したデジカメの撮影データである。加工の有無にかかわらず、利用したデータは「使用データ」とし、ハイパーテキスト機能の「専用フォルダ」内のフォルダに保存する。

Bloga18a_20240501110201


 2種類の撮影データは、以下の方法で検索できるようにする。
○「元データ」
 撮影データごとに「撮影日」を登録した下のようなリンク形式のリストを作成する。
 (例)> /Volumes/…/XP3_2311/DSCF7003.JPG: PD231101
 右端の「PD231101」が撮影日で、「XP3」カメラで「2023年11月1日」に撮影したデータであることを示している。以後、このリストを「PDリスト」と呼ぶ。
 「PDリスト」は、スクリプトを利用して作成し、まとめてテキスト・ファイルに書き込む。書き込んだテキスト・ファイルが「PDファイル」である。「PDファイル」から撮影日とカメラ名で「元データ」を検索する。その方法は後述する。

Bloga18b_20240501110201


○「使用データ」
 使用したデータは、ヘッダーと撮影日を組みわせたファイル名に変更してハイパーテキスト機能の「専用フォルダ」に保存する。例えば、「花子さん」を「2023年11月3日」に撮影したデータならファイル名を次のように変える。
  Hanako231103.jpg、Hanako231103_2.jpg、…
 このファイル名からヘッダーと撮影日で「使用データ」を検索できる。ファイル名の変更は、スクリプトを利用して行う。その方法は後述する。


 

撮影データ検索のための環境設定

 スクリプトでデジカメの撮影データを検索するための環境を用意する。

(準備1)SSDやHDなどの外部記憶装置に、デジカメの撮影データを保存するためのメインの「データフォルダ」を作成する。フォルダ名は、自由であるが、半角空白は使用しない。(例:下図の「PhotoData」)

(準備2)ハイパーテキスト機能の「専用フォルダ」に、「PDフォルダ」を作成する。フォルダ名は、自由であるが、半角空白は使用しない。(例:下図の「PDList」)

(準備3)上で用意した「PDフォルダ」に、テキスト「PDファイル」を用意する。スクリプトを利用して、このファイルに「PDリスト」を書き込む。ファイル名の先頭には必ず「PD」を付ける。(例:下図の「PD23.txt」)

Bloga19a_20240501110601


 スクリプトの動作のために、「PDフォルダ」を登録する。
(登録)「PDフォルダ」のパスを環境変数に登録する。
○ターミナルに「jed」とタイプして「.bash_profile」を開く。
○「.bash_profile」に環境変数「$PD」を登録する。
 前に登録した環境変数「$FLD1、…」下にある次の行を利用する。
   # export PD=$FPATH/(PDフォルダ)
  例えば、「PDフォルダ」名を「PDList」としたなら、行頭の記号「#」は消して、次のように記述する。文字や記号は、全て半角である。
    export PD=$FPATH/pdlist  フォルダ「PDdata」内のサブ・フォルダとして「PDList」を作成したなら、「export PD=$FPATH/pddata/pdlist」とすればよい。
 ・変数名「PD」は変更してはいけない。
 ・「.bash_profile」を保存し、ターミナルを再起動すると環境変数「$PD」が有効になる。撮影日で検索するとき、スクリプトが検索先としてこの変数を利用する。
 ・ターミナルを再起動し、次のコマンドをタイプして、設定したパスが表示されるか確かめる。
   echo $PD

 複数のカメラの「PDリスト」を作成する場合、「データフォルダ」の構成に関係なく、登録するのは「PDフォルダ」のパスである。

Bloga19b


 「PDファイル」には、複数のカメラの「PDリスト」が混じってもいいし、カメラごとに「PDファイル」を用意してもよい。検索では、「PDフォルダ」内の「PDファイル」をまとめて検索する。
 以上、撮影データ検索のための環境設定は終わる。

(備考)「PDフォルダ」と「PDファイル」について
○「PDフォルダ」には、「PDファイル」以外のファイルを保存しない。また、スクリプトは「PDフォルダ」を検索するので、このフォルダ以外に「PDファイル」を保存しても検索されない。
○「PDフォルダ」内であれば、複数の「PDファイル」が検索対象となる。「PDファイル」は、年ごとなど、必要に応じて増設すればよい。その場合、ファイル名は「PD23.txt、PD24.txt、…」のように、先頭の「PD」は変更せず、年別の数字などで区別するとよい。


 

撮影日リストの作成

 撮影年月日でデジカメの撮影データを検索する「PDリスト」の作成手順をまとめる。
 ユーザ・スクリプト・フォルダの次のスクリプトを使用する。
 ・PD_Make
 「bin」フォルダ内の次のシェルスクリプトの「ロック解除」をしておく。
 ・pd_make

 「PDリスト」作成にとりかかる前に次の準備が必要である。
○撮影データを保存する外部記憶装置(HDやSSD)に、メインの「データフォルダ」を作成してある。
○ハイパーテキスト機能の「専用フォルダ」に、「PDフォルダ」を作成してある。
○「PDフォルダ」に、テキスト「PDファイル」を用意してある。

 「PDリスト」の作成は、以下の三つの作業をワンセットで行う。
(作業1)外部記憶装置の「データフォルダ」内に、撮影データをコピーして保存するための「保存フォルダ」を新設する。
○「保存フォルダ」名は、カメラ名や撮影年月などをもとに、半角英数字で空白なしとする。
 (例)XP3で2023年11月に撮影したデータ用なら「XP3_2311」(下図を参照)
 ・メインの「データフォルダ」に、直接、データをコピーしてはいけない。

(作業2)新設した「保存フォルダ」に、Finderで日付を確認しながら、デジカメの撮影データをコピーする。
○Commandキーを押しながら、撮影データの左端をマウスをなぞると、複数の撮影データを選択できる。
 ・選択した撮影データをコピーし、外部記憶装置に新設した「保存フォルダ」にペーストする。
 ・コピーした撮影データの日付が変更されていないことを確認する。
 外部記憶装置の「保存フォルダ」に保存された撮影データが「PDリスト」を作成する「元データ」となる。

(作業3)外部記憶装置の「保存フォルダ」に保存した撮影データ(元データ)の「PDリスト」を作成する。
○「専用フォルダ」の「PDフォルダ」内に作成してある「PDファイル」を「Jedit Ω」で開く。
 ・「PDリスト」を読み込む行の行頭にキャレットを合わせておく。
○Macのメニューバー右側にあるスクリプト・メニュー(巻紙マーク)を開き、スクリプト「PD_Make」をクリックして、表示されるダイアログで、以下の操作をする。
 ・「Folder」ボタンをクリックして、選択画面で外部記憶装置の撮影データを保存した「保存フォルダ」を選択する。(例:下図の「XP3_2311」)
 ・確認して、「Make」ボタンをクリックする。
 少し間をおいて、エディタで開いている「PDファイル」にリンク形式の「PDリスト」が読み込まれる。リスト末尾に表示される日付を確認して、「PDファイル」を閉じる。

Bloga20a_20240501111001


 「PDリスト」の作成が終わった「保存フォルダ」には、新たに撮影データを追加コピーしない。

 下図のように、すでにMac本体や外部記憶装置に分散して撮影データを保存してある場合でも、撮影データの日付が変更されていなければ、「保存フォルダ」ごとに、上の(作業3)で「PDリスト」を作成できる。

Bloga20b


(注意)「PDリスト」を作成した後で、「保存フォルダ」の構成を変更するとデータのパスが変わるので「PDリスト」は新たに作成し直す必要がある。

(補説)Unixのコピー用のコマンド「cp」の問題
 撮影データの「PDフォルダ」へのコピーは、Finderでの初歩的な「コピペ」操作である。その理由は、カードリーダにセットしたSDカードからのコピーでは、コピー先によってUnixのコマンド「cp」の動作が変わるからである。
 コピー先がMac本体のフォルダなら、元データの日付情報は維持されるが、コピー先が外部の記憶装置では、元データの日付情報はコピー作業をした日付に変更される。(コマンド「cp」では、オプション「-p」を設定してある)


 

撮影データの検索(1)-撮影年月日で検索-

 スクリプトを利用して、「PDフォルダ」を撮影年月日で検索して、「元データ」から写真を検索する方法をまとめる。
 「Jedit Ω」のスクリプトフォルダの次のスクリプトを使用する。
 ・PD_Find
 「bin」フォルダ内の次のシェルスクリプトの「ロック解除」をしておく。
 ・pd_find

 

 なお、スクリプトは、「.bash_profile」で環境変数「$PD」に設定された「PDフォルダ」内を検索する。
 以下、撮影年月日で「元データ」を検索する手順をまとめる。

Bloga20ba


(準備)スクリプト「PD_Find」にショートカット(Command+P)を設定しておく。

(検索1)検索する撮影年月日の指定方法は、次の2通りある。
○下の例のような日記やメモなどのテキストにある「yymmdd」形式の6桁の半角数字のある行を選択して、上で設定したショートカット操作(Command+P)をする。
 ・日記やメモの6桁の日付の例。記入位置は関係ない。
  (例1)日記「231118SAT/…… 久しぶりに高円寺へ …… 」
  (例2)メモ「団地の道端に咲いていた月見草(230514Sun)」
○テキスト上の日付を選択しないで、ショートカット操作をすると、ダイアログが表示されるので、入力欄に「yymmdd」形式の6桁の半角数字を入力する。
 ・「yymmdd」形式の撮影年月日は、次のように入力する。
  (例1)「2023年11月3日」なら「231103」と入力する。
  (例2)年は関係なく「11月3日」に撮影したデータをまとめて検索するなら「??1103」と入力する。「?」は半角記号で、任意の1文字を表す。「??」で任意の二文字となる。ただし、「?」を利用できるのは、ダイアログに入力する場合である。テキストに書き込んだ「??1103」では、エラーとなる。
 ・「キャンセル」ボタンをクリックするか、ESCキーを押すと中止となる。
○入力後、リターンキーを押すか、「Ok」ボタンをクリックすると検索が開始され、「PDリスト」の一覧がエディタに表示される。
 ・エディタに表示されたリンク形式の「PDリスト」を選択して、ハイパーテキスト機能「ハイパーJump」(Command+J)を起動すると画像を表示できる。

(検索2)二つのキーワードを半角スペースで区切って入力すると「複合検索」ができる。
○2023年11月4日にXP3で撮影した画像を検索するには、ダイアログの入力欄に「半角スペース」で区切って、「231103 XP3」と入力する。ちなみに、「元データ」を保存したフォルダ名にカメラ名が含まれていないとこの検索はできない。

 

 検索結果の「PDリスト」の一覧は、「作業フォルダ」にファイル「zList.txt」として出力される。「作業フォルダ」がアクティブになっているターミナルに次のようにタイプすれば、何度でも表示できる。
   p zList.txt または  jed zList.txt
 新たに、「PD_Find」を実行すると、書き換えられる。
 「PDリスト」一覧にあるリンク先の「元データ」をコピーするためのスクリプトを用意してある。(「備考」参照)

(注意)キーワードに「?」を利用すれば、幅広くデータを検索できるが、注意が必要である。例えば、「??09??」と指定すると、撮影年と撮影日に関係なく9月に撮影したデータが一挙に検索されてしまう。10年分の「元データ」があれば、10年分の「9月」撮影のデータが検索される。膨大な量になると、エラーが発生する恐れがある。

(備考)「ユーザ・スクリプト・フォルダ」に保存してある下のスクリプト「PD_Copy」を利用して、検索出力「zList.txt」に表示されるリンク先の「元データ」をコピーできる。
(名称)PD_Copy.scpt
(機能)リンクのファイルを指定のフォルダにコピーする。
(操作)「ユーザ・スクリプト・フォルダ」の「PD_Copy」をクリックする。
○「PD_Find」の検索で表示された一覧のリンク行を選択する。
 ・複数行を選択してもよい。
 ・フルパス形式のリンクであれば、他のリストでも利用できる。
○表示されているダイアログの「Folder」ボタンをクリックして、コピー先のフォルダを選択する。
○ダイアログの「Copy」ボタンをクリックする。
 ・表示されるコピー先を確認して「コピーする」ボタンをクリックする。
 ・「キャンセル」ボタンをクリックすると終了する。


 

撮影データの検索(2)-ファイル名で検索-

 デジカメの撮影データを検索に便利なファイル名に変更して、検索する方法についてまとめる。
 ユーザ・スクリプト・フォルダの次のスクリプトを使用する。
 ・FD_Name
 「bin」フォルダ内の次のシェルスクリプトの「ロック解除」をしておく。
 ・fd_name_h
 ・fd_name_f

 

 プリントやメール添付などに使用した撮影データは、加工の有無にかかわらず、「元データ」と区別し、ファイル名を変更して「使用データ」として保存する。ハイパーテキスト機能を利用するなら、「専用フォルダ」内に保存する。
 ファイル名の変更は、ファイル数が多いと手間がかかる。スクリプトを利用してファイル名を変更する。

 ファイル名には、次のルールを設ける。
 「新ファイル名=ファイルの内容を示すヘッダー+作成年月日
 例えば、「花子さんを2023年4月15日に撮影した画像」なら、「Hanako230415.jpg」とする。
 このファイルなら、「Hanako」や「230415」で検索できるし、ファイル名の一部「Hana」でも検索できる。
 また、任意の1文字を示す半角記号「?」を使い、「23041?」で検索すると、「2022年4月10〜19日」のファイルがまとめて検索できる。
 「2204??」や「??0401」では、さらに広い範囲でファイルを検索できる。ちなみに、「使用データ」を外部記憶装置に保存してあると、上のような検索はできない。

 以下、スクリプトを利用してファイル名を変更する手順についてまとめる。対象ファイルは画像でもテキストでもよいが、ここでは外部記憶装置からコピーしたデジカメの撮影データ(元データ)を想定している。
(手順1)使用する元データをMac内のフォルダにコピーする。コピーしたら、日付情報が保持されているかをFinderで確認する。

(手順2)ファイル名を変更しても日付は更新されないので、ファイル名の変更はコピーしたらすぐに行うことにする。サイズ調整や補正など、データに手を加えると日付が変わる。
○Finderで、コピーしたファイルの中から同じヘッダーにするファイルを選択する。複数のファイルを選択するには、Commandキーを押しながらクリックすればよい。フォルダを選択しても無効である。
○ファイルを選択したら、ユーザ・スクリプト・メニュー(巻紙マーク)の「FD_Name」をクリックする。

(手順3)新しいファイル名を指定する。
○表示されるダイアログ・ボタンから変更方式を選ぶ。
  Header 「ヘッダー+年月日」形式のファイル名に変更する。
  FullName 「ファイル名+番号」の形式に変更する。
 ・日付が必要な場合は「Header」、日付が不要な場合は「FullName」、作業を中止するには「キャンセル」をクリックする。
 ・「Header」を選んだ場合、スクリプトがファイルから日付データを抽出してファイル名に付加する。
○続いて、入力ダイアログが表示されるので、検索を想定してヘッダーやファイル名を入力する。空白は使用しない。
 ・ダイアログのOkボタンをクリックするか、リターンキーを押すと次の操作に移る。
 ・ダイアログの入力欄が空白のままだとエラーが表示される。
 ・「キャンセル」ボタンをクリックすると中止となる。
○確認のダイアログが表示されるので、Okボタンをクリックするか、リターンキーを押すと実行される。
 ・「キャンセル」ボタンをクリックすると中止となる。
○実行すると、ファイル名が変更され、Finder表示にも反映される。
 (例)「Header」を選び、ヘッダーに「Mac」を指定すると、次のようなファイル名に変更される。ちなみに、「140419」は「2014年4月19日」を表す。
   Mac140419.jpg
 ・同名ファイルが複数になると、日付の後に「_2、_3」のように番号がつけられる。
   Mac140419.jpg、Mac140419_2.jpg、Ma140419_3.jpg、…
 ・多数の同名ファイル名に変更する場合、複数回に分けて実行してもよい。ファイル名に番号がつけられ、区別される。ただし、スクリプトが同名ファイルをチェックするのは、同一フォルダ内に限られる。

Bloga21a


 変更が終わったファイルの検索には、ハイパーテキスト機能の「ハイパーFind」を利用する。
「ハイパーFind」
(機能)(機能1)リンク先のファイルやフォルダをFinderで表示する。
    (機能2)ファイル名の一部を指定して検索する。
(操作)Control+Command+F
 詳しい利用法は、「ハイパー・コマンドの活用」を参照。

(備考)Macで扱う日付データにはいろいろある。主なのは「変更日」と「作成日」である。例えば、デジカメで撮影して保存したデータは「変更日」「作成日」共に撮影した年月日となる。
 データに手を加えると「変更日」が変わる。スクリプトで利用するUnixのコマンド「ls」は、「変更日」を参照する。


 

画像とテキストの連携

 テキストや画像の検索で6桁の数字を利用する。
 6桁の数字は、「yymmdd」形式の日付情報である。
 (例1)PDリスト「> /…/XP3_230430/DSCF5309.JPG: PD230410
 (例2)ファイルのリンク「> F230410.jpg: 4月10日の風景」
 (例3)撮影メモ「グリーンベルトの桜を撮影(230410Mon)」
 (例4)日記「230410MON/晴れ。この日は……」
 画像のリンクから日記を開いたり、日記から写真を開いたりできる。
 6桁の数字は、テキストと画像をつなぐリンクとなる。

 テキスト上の6桁の数字から画像を表示するには、前に紹介したスクリプト「PD_Find」を利用する。
(名称)PD_Find
(操作)Command+P
(機能)6桁の日付(yymmdd)で「PDフォルダ」内を検索し、「PDリスト」を抽出して表示する。「PDリスト」から「ハイパーJump」(Command+J)で画像を表示できる。

 「PDリスト」で画像を表示していて、その日の行動を知りたくなったら、「PDリスト」から同じ日付の日記を開くことができる。
 以下、6桁の数字から日記を開くためのスクリプトについてまとめる。
 「Jedit Ω」のスクリプトフォルダの次のスクリプトを使用する。
 ・DT_Find
 「bin」フォルダ内の次のシェルスクリプトの「ロック解除」をしておく。
 ・dt_find

 スクリプトの実行には、検索を想定した6桁の日付のある日記や撮影メモをリスト形式で「DBフォルダ2」に保存し、そのパスを環境変数「$FLD2」に登録しておく必要がある。「DBフォルダ2」やパスの登録方法については、「テキストの検索(2)-全文検索-」と「撮影データ検索のための環境設定」にまとめてある。

(名称)DT_Find
(操作)Shift+Command+D
(機能)「yymmdd」形式の日付で「DBフォルダ2」内のテキストを検索し、結果をエディタで表示する。
○テキスト上の6桁の日付のある行を選択して、上のショートカット操作をすると、「DBフォルダ2」内のテキスト(日記や撮影メモ)から日付のあるテキスト行を表示する。
○日付を選択しないでショートカット操作をすると、ダイアログが表示されるので、「yymmdd」形式の日付を入力して検索する。
 ・ダイアログからの入力では、半角「?」が任意の数字を表す。例えば、「23110?」では「2023年11月1日〜9日」の9日分の日記が抽出できる。
(注意1)内部にサブ・フォルダがあっても、検索対象にならない。
(注意2)日付を指定して、まとまりのある記録を表示するためには、日付のあるテキストが改行を含まない1行にまとまっている必要がある。
(注意3)「2?????」のように多量の「?」を使用すると膨大な量が検索され、トラブルを起こす恐れがある。

Bloga22a


 以上で、スクリプトとUnixのツールを利用して、エディタでハイパーテキスト機能を実現する方法やデジカメの撮影データの検索についてまとめてきた。
 スクリプトは実際に使いながら改良を行ってきたが、あくまでも素人のプログラミングである。できるだけのエラー対策は行なったが、想定外の
エラーはあるかも知れない。ディレクトリやファイル削除などの危険なファイル操作は扱っていない。

 最後に、スクリプトについて。
 アップルスクリプトは、Macに標準で付属するスクリプトエディタで、シェルスクリプトはエディタ「Jedit Ω」で作成した。
 エディタのスクリプトフォルダやユーザ・スクリプト・フォルダ内のアップルスクリプトのファイル名は変更してもよい。
 一方、「bin」フォルダ内のスクリプトは、連携して動作するので、ファイル名を変更してはいけない。


 

考えるための道具

 Macに向かい、あれこれをテキストにまとめる。
 Macを起動すると、ターミナルが自動起動して「作業フォルダ」のファイル一覧が表示される。
 ターミナルにマイ・コマンドをタイプするのがMacでの最初の操作である。
  p
 この一文字で、エディタで総合索引「Index1.txt」が開く。
 総合索引のリンクからファイルやフォルダへ移動して、テキスト編集にとりかかる。
 ハイパーテキスト機能は、Macでのテキスト編集には欠かせないツールとなった。

Bloga17a_20240501112501


 現用のMacは、2015年に購入したiMacである。
 Mac内のデータは、テキストが中心である。デジカメの画像データは、外付けのSSDに保存してある。
 Macのシステム構成は、「macOS High Sierra 10.13.6、3.2GHzプロセッサ、8GBメモリ、251GBフラッシュメモリ」。
 古いMacだが、リンクからのファイルを開くのは一瞬である。
 「Macでハイパーテキスト」の「専用フォルダ」は項目数2832、サイズ356MBである。使用頻度の少ないデータは、外部機器に移動する。

 今は、タッチパネルが主流になった。
 書店の本棚からは、Unix関係の本が姿を消した。
 キーボードに向かって、頭と指を使うテキスト編集では、GUI環境にそぐわないターミナルやUnixのコマンドが便利に使えることをアピールしたい。
 Unixのツールをテキスト編集に活用できるのは、アップルスクリプトに対応し、自作のスクリプトにショートカットの割り付けができるエディタ「Jedit Ω」の機能のおかげである。
  >  https://www.artman21.com/jp/sparkle/jeditomega.html  
 エディタ「Jedit Ω」の開発者に感謝する。


 

スクリプト一覧

ハイパーテキスト
ハイパーJump
 (機能)テキスト上のリンクのリンク先をアプリで開く
 (操作)Command+J
ハイパーPut.scpt
 (機能)テキスト上のリンク先のテキストをリンク位置に読み込む
 (操作)Control+Command+P
ハイパーNew
 (機能)テキストに書き込んだリンクから新規ファイルを作成する
 (操作)Control+Command+N
ハイパーOut
 (機能)テキストの選択部分をファイルに書き出してリンクを置く
 (操作)Control+Command+O
ハイパーIn
 (機能)リンク先のテキスト本体をリンクの位置に読み込む
 (操作)Control+Command+I

ハイパーツール
ハイパーList
 (機能)フォルダ内の項目をフルパス形式のリンク一覧で表示する。
 (操作)Control+Command+L
ハイパーFind
 (機能1)リンク先のファイルやフォルダをFinderで表示する。
 (機能2)ファイル名の一部を指定してファイルを検索する。
 (操作)Control+Command+F
ハイパーHead
 (機能)テキスト上のリンクの見出しを更新する。
 (操作)Shift+Control+H
ハイパーMove
 (機能)リンク先のファイル名や保存フォルダを変更する。
     変更に合わせてリンクも更新する。
 (操作)Control+Command+M

マイ・コマンド
Unixコマンド
 (機能)エディタからターミナルにコマンドを送る
 (操作)Command+U
c (半角英小文字 c 一文字)
 (機能)操作対象のフォルダを変更し、ファイル一覧を表示する。
 (操作)c 番号、c パス、c 変数
l (半角英小文字のエル)
 (機能)ターミナルで操作対象のフォルダ内の項目を一覧表示する。
 (操作)l
p (半角英小文字 p 一文字)
 (機能)項目を指定して開く。
 (操作)p 番号、p 変数、p パス
jed
 (機能)エディタで指定のファイルを開く
 (操作)ターミナルに入力 Jed ~/bin/hyperjump

テキスト検索
EP_Find
 (機能)Spotlightの索引検索とテキスト全文検索での検索情報を表示する。
 (操作)Command+E
EP_View
 (機能)「EP_Find」の検索情報一覧からキーワードを含む行を抽出する。
 (操作)Control+Command+E
DB_Find
 (機能)キーワードで指定のフォルダを検索し、キーワードを含むテキスト行を抽出する。
 (操作)Command+D

画像検索
PD_Make
 (機能)指定のフォルダ内のファイルの「PDリスト」を作成する。
 (操作)ユーザ・スクリプト・メニューをクリック
PD_Find
 (機能)日付(yymmdd)を指定して、「PDリスト」から「元データ」を検索する。
 (操作)Command+P
FD_Name
 (機能)Finderで選択したファイルのファイル名を変更する。
 (操作)ユーザ・スクリプト・メニューをクリック

PD_Copy
 (機能)「PDリスト」のリストにあるファイルをコピーする。
 (操作)ユーザ・スクリプト・メニューをクリック
DT_Find
 (機能)「yymmdd」形式の日付で環境変数「$FLD2」に登録したフォルダ内を検索し、同じ日付のテキスト行を抽出して表示する
 (操作)Shift+Command+D


 

«考えるための道具