perl のワンライナーに関しての、適当な解説 #1/#2/#3/#4
初っ端から
題名に偽りあり。ruby のワンライナーがメインです、、、
google の検索をデフォルトブラウザで
- うちの地域の災害通知メールが、マップへのリンクも何も無い状態で届いて不便でしかたない
- 都市名無しで、マップを検索させると、長崎とか出ちゃう
- google の検索で日本語が邪魔な時が多々ある
- safari で開くのは好ましくない
と言うことで、数年前に作成したサービスメニュー
同じ様なものは、いくらでも転がっている
日本語以外、 map 、都市名 + map
三種作るが、シェルスクリプト部分以外は共通なので、纏めて
最初の画面
Automator で「サービス」を新規作成
ワークフローのウィンドウ
(なにも変えなくて良いと思う)
* テキストを受けとる
* すべてのアプリケーションを対象に
アクションの追加
「シェルスクリプトを実行」アクションを
* シェル: /bin/sh
* 入力の引き渡し: stdin へ
に設定し追加
スクリプトの記入
以下の三種類を作成
open "http://www.google.com/search?q=`ruby -rcgi -e 'print CGI.escape($<.read.chomp)'`&lr=-lang_ja"
open "https://maps.google.co.jp/maps?q=`ruby -rcgi -e 'print CGI.escape($<.read.chomp)'`"
open "https://maps.google.co.jp/maps?q=%E6%9D%B1%E4%BA%AC%E9%83%BD`ruby -rcgi -e 'print CGI.escape( $<.read.chomp)'`"
実際に「東京都」で利用してるわけでは無い。
ruby ワンライナー前の URL エスケープ部分を好みの都市名で置き換えれば良い
$ ruby -rcgi -e 'print CGI.escape("長万部")' | pbcopy
保存
~/Library/Services
に、それぞれ任意の名前で保存
使い方
文字列選択して、コンテキストメニューから、呼び出せ
短縮 URL を確認する
短縮 URL を貼り付けてくるメールの URL を展開したいが、わざわざそのために解析ウェブページを開くのも、、、
てな訳で、これもサービスに。
最初の画面
Automator で「サービス」を新規作成
ワークフローのウィンドウ
(なにも変えなくて良いと思う)
* テキストを受けとる
* すべてのアプリケーションを対象に
アクションの追加
「シェルスクリプトを実行」アクションを
* シェル: /bin/sh
* 入力の引き渡し: 引数として
に設定し追加
スクリプトの記入
/PATH/TO/wget --max-redirect=0 --spider -qS $@ 2>&1 | perl -lne 'print $1 if /Location:\s+(.*?)$/i'
curl
では力不足なので wget
を使ってます。
wget
は有名なので、homebrew や MacPorts にあるでしょう
アクションの追加
「クリップボードにコピー」を追加
保存
~/Library/Services
に任意の名前で保存
使い方
文字列選択して以下略
wget ソースから
~/cmd 以下へのインストール
一応のメモ
配布元より、wget-1.16.tar.gzをダウンロード
$ export PERL5OPT=''
$ mv ~/Download/wget-1.16.tar.gz .
$ tar xzf wget-1.16.tar.gz
$ ./configure --prefix=/Users/XXX/cmd/ --with-ssl=openssl
$ make
$ make install
$ cd ../
$ rm -rf wget-1.16
- make 途中で、
use strict; use warnings;
が通らないスクリプトを使うコマンドは星の数ほどあります、、、 - ああ、別に短縮 URL の確認のみのために、インストールした訳じゃありません。