Terminalから複数の画像(png)を「Quick Look」で開くには?

あるフォルダに「fig1.png, fig2.ping, …」が有るとして、現在は「open -F fig*.png」を実行すると、一つのpreview.appで開かれて、矢印キーで画像を閲覧できる様になて居ます。


本当は「Quick Look」で開くのが望ましいです。どの様にすれば善いか、お教え下さいませんか?

Mac mini, Mac OS X (10.7.5), Mac mini(mid 2011), iMac(late 2009)

投稿日 2013/04/08 03:26

返信
返信: 186

2013/05/29 08:40 Hiro__S への返信

Hiro.Sさん、コメント有り難うございます。



まず、制作:Hiro.S, mNeji から私の名前を削除してください。お気持ちはありがたいのですが、これは私の書いたコードではありません。


それと、冒頭コメントは、何年か後にこのファイルを開いた際、どのようなものかがぱっと見て分かれば良いので、「経緯」を書くなら別ファイルにした方が良いです。コメントとはいえ、なるべくシンプルにしましょう。


はい、了解しました。このところ、自分でも流れを忘れそうなので、メモ代わりに書いてしまいました。


製作者の記述は触れない様にします。また軽率に記入した事をお詫び申し上げます。


利用法は全体が確定するまで、練ってみたいと思います。



相対パス: なぜこんな書き方に...。ここは、無理をせず絶対パスに戻しましょう。


やはり安直でしたか。始めは、「rlt="$(pwd)/"」としていたのですが、より短くと考えて「rlt="./"としてしまいました。ただし、絶対パスにするとディレクトリごと、気楽に移動できなくなってしまうのが気がかりです。




numeric check: expr コマンドの部分はこれで良いと思いますがその後が冗長です。if 文で「2 未満の場合...」ではなく「2 以上の場合...」とするともっと簡単にできます。あるいは case 文でも良いでしょう。


この部分では、コメントが間違っていて、誤解を生じた様です。本来は、


expr "$lineNum" + 1 > /dev/null 2>&1

if [ $? -lt 2 ]

then

# $lineNum is numeric

:

else

# $lineNum is non numeric, 強制的に「0」;全データ表示にセット。

lineNum=0

fi


です。自分はbachの「case ~ in ~ esac」構文で範囲指定が巧く出来ないので、いつもif文しか使っていません(泣)。



また、判別文はオプション解析の後でも良いのですが、中に突っ込んだ方が分かりやすいかなと。時間があるときにでも研究してみてください。いずれにせよ、もっとシンプルに書けるはずです。


はい、色々と検討してみます。



中間ファイルの削除: 変数をダブルクォーテーションで括りましょう。くどいようですが、何度でも書きます。また、なぜ -f オプションなんて強力なものを付けるのでしょうか?事故どころか大事故の原因になりかねません。


あ、これは不要ですね。訂正します。ご注意、有り難うございます。



それと、一時ファイルの扱いにはそれなりの書き方があります。これも後日研究してみてください。当面は前回どおり「削除せず」で良いと思います。


データ整理の為に、小さなスクリプトを作って来ただけなので、スクリプトを深く検討した事がありません。「一時ファイルの扱い」などで調べて見ます。



ん〜。なんか失速してしまった感がありますね。一つずつじっくり時間をかけて (半年なり一年かけるつもりで) 書き直してみてください。


各種のスクリプトに接して、頭が飽和しています。 まずは、JavaScriptから復習中です、お恥ずかしい。

2013/05/29 20:09 mNeji への返信

ファイル: 下のように普通に書いて構いません。無理に変数化するとかえって読みづらくなります。


org='radio_list.txt' mid='data/radio_list.mid.tsv' # __以下省略__



numeric check: いえ、正しく読みましたよ。ヌルコマンドが無駄ではありませんか?条件をひっくり返せば else が省けると思いますが。


また、オプション解析の中でやる場合は else が必要も、一回で済むのでシンプルにできます。case 文だとさらにシンプルに書けますが、苦手というなら if 文でも良いでしょうし、これを機に case 文をマスターするのも良いでしょう。


終了ステータスによる判別文なので、ぴんとこないかもしれませんが、要するに実際計算してみてエラーか否かを見る...というやり方です。


とはいえ、期待どおりには動くので、より深く理解できるようになるまでは、このままでも良いのかなとも思います。この辺は数をこなすしかないのかもしれませんね。


jQuery: Javascript の知識があまりなくても使えるようになってます。そこがこのライブラリの凄いところ。なので、jQuery の参考書から入っても大丈夫だと思います。


csv2table: 正規表現検索が標準装備されているので「検索」は簡単にできます。結構強力ですよ。また、「末尾の n 項目」はありませんが、「冒頭から n 項目」ならありますから、シェルスクリプトでリストファイルの天地をひっくり返すと良いでしょう。勿論独自に実装するもよし。


一度に全部はキツいでしょうから、一つずつコツコツと時間をかけて研究してみてください。健闘を祈ります。

2013/05/29 22:52 Hiro__S への返信

Hiro.Sさん、添削有り難うございます。



ファイル: 下のように普通に書いて構いません。無理に変数化するとかえって読みづらくなります。


org='radio_list.txt' mid='data/radio_list.mid.tsv' # __以下省略__



はい、良く判りました。そのように修正しました。



numeric check: いえ、正しく読みましたよ。ヌルコマンドが無駄ではありませんか?条件をひっくり返せば else が省けると思いますが。


また、オプション解析の中でやる場合は else が必要も、一回で済むのでシンプルにできます。case 文だとさらにシンプルに書けますが、苦手というなら if 文でも良いでしょうし、これを機に case 文をマスターするのも良いでしょう。


条件の論理的な反転は、おちょこちょいの自分だと落とし穴に入り易いので、使わない様にしています。また、bashの「:」は挙動が可笑しい事が有るのですが、今回は動いたので……。


で、仰せに従って「[ $? -ge 2 ] && lineNum=0」としてみました。ちょっとしたテストでは動いていました。



終了ステータスによる判別文なので、ぴんとこないかもしれませんが、要するに実際計算してみてエラーか否かを見る...というやり方です。


とはいえ、期待どおりには動くので、より深く理解できるようになるまでは、このままでも良いのかなとも思います。この辺は数をこなすしかないのかもしれませんね。



このような難しい手法は、自分一人で書いている時には絶対に手を出しません(笑)。確かに、実体験の拡張は大切かもしれませんね。



jQuery: Javascript の知識があまりなくても使えるようになってます。そこがこのライブラリの凄いところ。なので、jQuery の参考書から入っても大丈夫だと思います。


そうですか、JavaScript~jQueryの本を読み出しているので、JavaScriptは流し気味に勉強します。



csv2table: 正規表現検索が標準装備されているので「検索」は簡単にできます。結構強力ですよ。また、「末尾の n 項目」はありませんが、「冒頭から n 項目」ならありますから、シェルスクリプトでリストファイルの天地をひっくり返すと良いでしょう。勿論独自に実装するもよし。


素人でも日常の表現を好きに作れる環境が入手できるとは、嬉しいです!

2013/05/31 01:05 mNeji への返信

宿題の一つ。ややゴリ押しですが、整数の正負とゼロの判別をcaseで書いてみました;

#!/bin/bash



# test_case x

# x=0 → zero

# x>0 → pos

# x<0 → neg

# xが、(00 | -03 | 4.5 | z) → other





echo -n "$1 "

case $1 in

[0])

echo "zero"

;;

[1-9]|[1-9][0-9]*)

echo "pos"

;;

-[1-9]|-[1-9][0-9]*)

echo "neg"

;;

*)

echo "other"

;;

esac


2013/05/31 03:29 mNeji への返信

これをちょっと書き換えてオプション解析に突っ込んでみてください。


expr "$1" + 1 >/dev/null 2>&1 case $? in     0|1) n="$1" ;;       *) n=0 ;; esac # echo "$n"


また、複雑な条件分岐の場合は if 文で書くのが一般的です。単純なものは case 文、複雑なものは if 文。とにかくシンプルに、分かりやすく書きましょう。

2013/05/31 19:52 Hiro__S への返信

Hiro.Sさん、


これをちょっと書き換えてオプション解析に突っ込んでみてください。


はい、動かしてみました。確かに、色々な実装方法があるものですね。勉強になりました。



また、複雑な条件分岐の場合は if 文で書くのが一般的です。単純なものは case 文、複雑なものは if 文。とにかくシンプルに、分かりやすく書きましょう。


根がズボラなので、一度動いたものを書き直す事をすることはありませんでしが、極力気をつけます。ただ、変数をコートすることは絶対に実行する様にします。



ところで、このストリーミング・ラジオの曲情報保存アプリは、日常的に動作する様になって、とても爽快です。ところが一つ問題点がでてきました。


それは、一寸CDを聴いているうちに、ラジオを聴いているとおもってListView.appのアイコンをクリックしてもなにも動かないので、慌てるという現象です。当初は、意識しながら使っていたので、このような場合、スクリプト・エラーとして調査していたのですが、最近は「動いて当たり前」に成っているので、ドキッとしてしまいます。


もし可能ならば、CDを聴いている時には;

  • ラジオでないから、radio_list.txtには追加出来ませんと表示するか、
  • いっその事、cdのデータとしてradio_list.txtに追記するのも嬉しいかも知れません。


急ぎませんので、時間の在ある時に検討下されば幸いです。

2013/05/31 21:02 mNeji への返信

ラジオでないから、radio_list.txtには追加出来ませんと表示するか、


該当箇所は下記。ストリームタイトルが取得できない場合は、何もせず終了するようにしてあります。ダイアログを表示してから終了するように書き換えると良いでしょう。


if stream_title is missing value then return


いっその事、cdのデータとしてradio_list.txtに追記するのも嬉しいかも知れません。


インターネットラジオを視聴中に気に入ったものがあったらその情報をファイルに書き出しておく...というのがこのスクリプトの目的です。ファイルトラックの情報まで書き出すと何の為のスクリプトか分からなくなってしまいますので、そのようなものを書くつもりはありません。

2013/05/31 22:03 Hiro__S への返信

Hiro.Sさん:


該当箇所は下記。ストリームタイトルが取得できない場合は、何もせず終了するようにしてあります。ダイアログを表示してから終了するように書き換えると良いでしょう。


はい、了解しました。ボトボチ試してみます。



インターネットラジオを視聴中に気に入ったものがあったらその情報をファイルに書き出しておく...というのがこのスクリプトの目的です。ファイルトラッ クの情報まで書き出すと何の為のスクリプトか分からなくなってしまいますので、そのようなものを書くつもりはありません。


そうですね、iTunesからの情報を引き抜く方法を調べる様にして見ます。



思いもしない流れで、AppleScript, jQuery, bashについて、ご指導を戴き、有り難うございました。一人ではブレーク出来ない課題が、次々に克服されていく状況を経験出来て、スクリプトの醍醐味を実感しました。また、このようなディスカッションをさせて戴いた本フォーラムにも深く感謝致します。

2013/06/01 08:18 mNeji への返信

mNeji さん


こちらこそ、大変勉強になりました。ありがとうございます。


Shell Script、AppleScript、Javascript と大変だと思いますが、一つ一つはさほど難しくないので、ゆっくりと研究してみてください。


さて、Camino プロジェクトが終了してしまいました。本件の場合、ローカルファイルを閲覧するだけですから、セキュリティ面ではあまり問題ないでしょうし、今すぐどうということもありませんが、もうアップデートはありませんので、できれば、ほかのブラウザを使うようにした方が良いと思います。


# この日が来るのを想定してしばらく前に Safari に乗り換えたのですが...やはり寂しいですね...。十年もメインで使ってましたから。

2013/06/02 05:58 Hiro__S への返信

Hiro.Sさん:


Shell Script、AppleScript、Javascript と大変だと思いますが、一つ一つはさほど難しくないので、ゆっくりと研究してみてください。


はい、伝授戴いた知識をもとに研鑽を積みたいとおもいます。当面の課題はjQueryのplug-inなのですが、今後の付き合いが長そうなので、JavaScriptから始めています。JavaScriptは意外と確りした言語なのに驚いています。いっその事、JavaScriptもターミナルで動作するシェル・スクリプト(jshとか)に出来たら、面白そうですね。


スクリプトの質問については「Mac OS X Technologies」に出しますので、宜しくお願いいたします。

さて、Camino プロジェクトが終了してしまいました。本件の場合、ローカルファイルを閲覧するだけですから、セキュリティ面ではあまり問題ないでしょうし、今すぐどうと いうこともありませんが、もうアップデートはありませんので、できれば、ほかのブラウザを使うようにした方が良いと思います。


# この日が来るのを想定してしばらく前に Safari に乗り換えたのですが...やはり寂しいですね...。十年もメインで使ってましたから。


それは寂しいですね。数式表示の為にFirefoxを使っていた時に、一時Caminoで凌いだ記憶が有ります。ローカル利用なので、敢えてCaminoを利用して行きたいと思います。

2013/11/01 07:05 Hiro__S への返信

Show Lyrics ControllerがOS X Mavericksで動作しなくなってしまいました。エラーは「windows 1 of application process "qlmanage" を取り出すことはできません。正しくないインデックスです。-1719」です。

-----------------------------------

if existsapplication process "qlmanage" then

clickbutton 1 of window 1 of application process "qlmanage"

end if

-----------------------------------

の部分は

-----------------------------------

if existsapplication process "qlmanage" then

set appID to unix id of application process "qlmanage"

do shell script "kill " & appID

end if

-----------------------------------

として無理矢理回避してみたのですが、qlmanageのウインドウサイズと位置を変更する下記をどうしていいのかわかりません。

-----------------------------------

tell process "qlmanage"

tell window 1

set size to {500, 500}

set position to {940, 22}

end tell

end tell

-----------------------------------

気に入っていたのでOS X Mavericksでも動くようになるとうれしいのですが、回避方法が分かる方はいらっしゃいませんか?

2013/11/01 09:29 HAL への返信

OS X: GUI Scripting - Accessibility Access Controls

http://www.macosautomation.com/mavericks/guiscripting/index.html


リンク先を読むと、Security & Privacy で System Events を指定する必要があるみたいです。それで動きませんか?ただ、下の方に、起動の度に確認ダイアログがでる?と書いてあって、その回避措置も載ってますが、結構ハードルが高そうです...。


また、Show Lyrics II (OmniWeb で表示) の方は GUI スクリプティングを使ってないので、Mavericks でも動くかもしれません。その後何度かアップデートしたので、よろしければ最新版で試してみてください。


あと、OmniWeb は v5.11.2 で動作確認してます。For OS X v10.9 (テストビルド) の方は全く分かりません。

2013/11/02 04:08 Hiro__S への返信

リンク先を読むと、Security & Privacy で System Events を指定する必要があるみたいです。それで動きませんか?


System Eventsは登録済みですがダメです。


ただ、下の方に、起動の度に確認ダイアログがでる?と書いてあって、その回避措置も載ってますが、結構ハードルが高そうです...。


ハードルも高そうですが、セキュリティ的にもやばそうなのなのでHiro.Sさんのすすめに従いShow Lyrics IIを使うことにします。

#なんとなくOmniWebを入れたくなくて無駄に足掻いていたのですが、その理由はといえば・・・くだらないこだわりです (^^;


あと、OmniWeb は v5.11.2 で動作確認してます。For OS X v10.9 (テストビルド) の方は全く分かりません。


MavericksでもOmniWeb 5.11.2で問題なく動作することを確認しました。

テストビルドでも動作するようですが、ウインドウのバーがシマシマで主張が激しいのとウインドウ位置を記憶してくれないので5.11.2で使用しようと思います。

くだらない意地を張らずにさっさとShow Lyrics IIを使っておけばよかったと後悔するほどに快適です。ありがとうございました m(_ _)m

2013/11/02 05:07 HAL への返信

ハードルも高そうですが、セキュリティ的にもやばそうなのなので


私も同感です。


なんとなくOmniWebを入れたくなくて


あはは。それは何となく感じ取ってました。Show Lyrics II はウインドウの位置とサイズが制御できるし、常に最前面...ということにならないのが良い点かなと。私は II をメインに使ってたりします。


MavericksでもOmniWeb 5.11.2で問題なく動作することを確認しました。


実を言いますと、Mavericks を想定して Show Lyrics II を大幅に書き換えたので、動いて欲しい!と思ってました。動作確認いただいてありがとうございます。正直ホッとしました。


それと、テーマですが、500 x 500 の小さいサイズも手元にあるので、明日にでもアップします。

2013/11/02 05:29 Hiro__S への返信

あはは。それは何となく感じ取ってました。


お見通しでしたか。ちょっと後ろ暗かったのでこれで気持ちが軽くなりました(笑)


Show Lyrics II はウインドウの位置とサイズが制御できるし、常に最前面...ということにならないのが良い点かなと。


私は曲が切り替わるタイミングで最前面に来てほしかったので少し手を加えさせていただきました。


それと、テーマですが、500 x 500 の小さいサイズも手元にあるので、明日にでもアップします。


ありがたく使わせていただきます。でも、デフォルトのテーマも気に入ったので(ちょっと小さめにリサイズしましたが)しばらくこれで遊ぼうと思います。

#歌詞の表示の上下をフェードイン・フェードアウトするようにしたいのだけどなかなか一筋縄ではいかないようで・・・

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Terminalから複数の画像(png)を「Quick Look」で開くには?

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。