Shell OepnSearch は POSIX 準拠の ShellScript で作成された OepnSearch 対応の検索クライアントです。OpenSearch 1.1 の仕様に準拠した OpenSearch description documents (以下 OSDD に省略) を利用して端末環境から検索などを行えます。
Shell OepnSearch を利用するためには、お使いのコンピューターに XMLStarlet がインストールされている必要があります。また opensearch add
と opensearch update
を利用する際には GNU Wget または curl もインストールされている必要があります。
GitHub Releases から最新版の opensearch をダウンロードして、任意の場所に設置してください。opensearch
を実行し、コマンドのヘルプが表示されたら完了です。
opensearch --help
検索を行うには任意の OSDD を追加する必要があります。opensearch add
で追加が可能です。例として以下のコマンドで http://www.example.com/opensearch.xml にある OSDD を example という識別子で追加を行います。
opensearch add example 'http://www.example.com/opensearch.xml'
追加した OSDD はデフォルトでは、~/.shell-opensearch
内に配置されます。URL は OSDD だけではなく、OSDD へのリンクが記載されている HTML / XHTML の指定も可能です。
opensearch add example 'http://www.example.com/index.html'
階層的な識別子も可能です。以下の場合は、 ~/.shell-opensearch/example/ja.xml
に配置されます。
opensearch add example/ja 'http://www.example.com/ja/opensearch.xml'
任意の OSDD を利用して検索を行えます。例えば以下のコマンドは example という識別子の検索エンジンで検索を行います。
opensearch search example keyword1 keyword2 ...
この場合には、~/.shell-opensearch/example.xml
が利用されます。Shell OpenSearch では 0個以上の keyword を渡せますが、OSDD によっては1個以上の keyword が必要です。検索エンジンの識別子は ,
(カンマ)で区切ることにより、複数の指定も可能です。
opensearch search example1,example2
この場合には、~/.shell-opensearch/example1.xml
と ~/.shell-opensearch/example2.xml
が利用されます。
~/.shell-opensearch
内のディレクトリを指定することも可能です。ディレクトリを指定するには末尾が /
(スラッシュ)で終了する必要があります。ディレクトリ以下の全ての *.xml
ファイルが利用されます。
opensearch search example/
任意の OSDD を利用する場合は、識別子の引数をファイルパスに置き換えてください。ただしファイルパスは、/
, ./
, ../
の何れかで開始する必要があります。複数のファイルを指定することは不可能です。
opensearch search ./example.xml
デフォルトでは検索結果の URL を表示するのみですが、URL を Web ブラウザーなどを開いて検索結果を表示するには -e
, --extarnal
オプションを使用します。--extarnal
のみで環境変数 BROWSER
の値に、--extarnal=COMMAND
で任意のコマンドに URL を引数として渡します。
export BROWSER=firefox
opensearch search example --extarnal
opensearch search example --extarnal=firefox
OSDD によっては検索リクエストが複数定義されている場合があり、受容する MIME Type を変更することで検索リクエストの MIME Type を変更が可能です。デファルトでは text/html
と application/xhtml+xml
の優先度が高く設定しています。受容する MIME Type と優先度を変更するには -t
, --accept-type
オプションを使用します。
,
(カンマ)で区切り複数の MIME Type を指定が可能です。MIME Typeを記述する MIME Type の順番によって優先度が変化します。最初に記述した MIME Type の優先度が最も高く、最後に記述した MIME Type の優先度が最も低いです。OSDD 内に受容する MIME Type に一致する検索リクエストが定義されていない場合は、エラーです。
例として RSS の検索リクエストを指定するのは以下のコマンドです。
opensearch search example --accept-type 'application/rss+xml,application/rdf+xml'
*
(アスタリスク)を指定することで任意レスポンスタイプにマッチします。例として text/*
は全てのテキストメディアに、*/*
で全てのメディアにマッチします。
opensearch search example --accept-type '*/*'
OSDD によっては検索リクエストが特定の検索パラメータに対応している場合があります。特定の検索パラメータを指定するには -p
, --template-parameter
を使用します。OpenSearch 1.1 で定義されているコアセットの検索パラメータ(無修飾パラメータ)を指定するコマンドは以下です。
opensearch search example --template-parameter 'count=100'
拡張されたパラメータ(完全修飾パラメータ)を指定する場合は、検索パラメータの名前空間を指定する必要があります。
opensearch search example --template-parameter '{http://example.com/opensearchextensions/1.0/}color=blue'
OSDD 内に <Url rel="self" type="application/opensearchdescription+xml" template="..."/>
の定義がある場合は、OSDD を更新することが可能です。
opensearch update example
利用が可能な OSDD の識別子と検索エンジン名が一覧で表示されます。
opensearch list
opensearch show
で OSDD の詳細の表示が可能です。
opensearch show example
デフォルトでは YAML に似た形式で表示されます。XML で表示を行うには、-f
, --format
を指定します。
opensearch show --format xml example
- ShellSpec で
opensearch
の全ての機能のテストを行う。