Macでssh-keygenで作成した秘密鍵をPEM形式に変換する方法

Macでsshでサーバに接続する際に公開鍵認証を使う場合、以下のコマンドで鍵ペアを作ります。
※例はRSA方式の暗号を使う場合です。

ssh-keygen -t rsa

上記コマンドを実行すると、途中で出力ファイル名とパスワードが聞かれます。
結果として秘密鍵と公開鍵が作成されます。
例えば以下。
秘密鍵:id_rsa
公開鍵:id_rsa.pub

さて、サーバに接続するには作成した公開鍵をサーバにコピーして、ログインしたいユーザの~/.sshディレクトリにあるauthorized_keysに追加します。
サーバ側にて以下を実行する感じ。

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

これでMacからsshコマンドで接続できるようになります。
以下の書式でコマンドを実行します。
ssh -i 秘密鍵ファイル ユーザ名@サーバIPまたはホスト名 -p ポート番号

ここから本題ですが、ターミナルからsshコマンドで接続するだけなら、上記で十分なのですがSFTP接続でファイルをサーバに転送する場合には、上記で作成した秘密鍵ではSFTPのアプリでは使えない場合があります。
著者が普段使っているのはTransmitですが、Transmitで扱える鍵ファイルはPEM形式かPPK形式である必要があります。

そこで、上記の秘密鍵からPEM形式のファイルを作成する方法ですが、以下のコマンドで作成できます。
openssl rsa -in id_rsa -outform pem >id_rsa.pem

前置きが長かったですが、簡単ですね。

画像の色空間がCMYKかRGBかを簡単判定:Mac OS X

Mac OS X にて、画像ファイルの色空間がRGBかCMYKかを判定する方法。
sipsコマンドは、画像の情報を取得したり加工したりするコマンドです。それを以下のように実行します。

sips -g space ファイル名

サイトで利用する画像を外部(クライアントなど)から調達すると、
たまに色空間がCMYKの場合があります。
たいていのブラウザではCMYKの画像も表示できるので、気にしないと気づきません。
リリース後に、CMYKの画像が表示できないブラウザを使っている人から指摘されて気がつく事も。。。

外部調達の画像については、リリース前にしっかり確認する事が大事ですが、1つ1つファイルのプロパティをチェックしていくのは大変。
Macでは冒頭のコマンドでチェックできるので、コンソールで以下のように実行すれば、同じディレクトリにある画像ファイルは一気にチェックできます。

for nm in *.jpg;
do
sips -g space $nm;
done

grepとsedでファイルの内容を一括変換:Mac OS X

Macで、複数のファイルについて、その内容の一部を一括置換するには、grepをsedを組み合わせて以下の様に使うと簡単にできます。
検証環境:Mac OS X 10.7.5、10.9.3

grep -lr '検索する文字列' * | xargs sed -i "" -e 's/検索する文字列/置換後の文字列/g'

grepで対象のファイルを抽出して、抽出したファイル名をパイプを使ってsedに渡します。

grepで特定の拡張子を持つものだけ対象とするには–includeオプションを使います。
例えば、拡張子txtだけを対象とする場合は以下の様にします。
Continue reading

MacOSXでtreeコマンド

MacOSXでtreeコマンドを使うには、portでインストールします。
※実行環境はMacOSX 10.8.5、MacPorts2.2.1

$ port search tree
$ sudo port install tree

カレントディレクトリ以下のディレクトリ構造を出力するには
$ tree

特定の拡張子以外を出力するには-Iオプション。
例えばテキストファイル以外を出力するには
$ tree -I '*.txt'

例えばテキストファイルとcsvファイル以外を出力するには
$ tree -I '*.txt|*.csv'