バイナリファイルを cat する(od コマンド)

バイナリファイルの中身を cat したい(表示したい)場合、cat コマンドではなく od コマンドを使用します。

詳細は man od コマンドでマニュアルを表示できますが、一般的な使い方としては以下になります。

od -t x1 ファイル名

-t オプションで x1 と指定しているのは、出力フォーマットを「16進数の1バイトずつ」に指定するためです。これは od コマンドがデフォルトでは8進数で表示するコマンドであり、16進数のほうが普通の技術者にとっては読みやすいためです。

od コマンドは cat コマンドと同じく、標準出力にファイル内容が一気にすべて表示されますので、必要に応じて less コマンドや head / tail コマンドを併用するようにしましょう。

以下の例は、サンプルの jpeg ファイルの先頭を od コマンドと head コマンドで表示してみた様子です。

od -t x1 sample.jpeg | head
od コマンドの実行例

この記事の内容としましては以上です。

find と xargs の間に任意のコマンドを実行する (半角スペース対策)

Linux や Mac などでコマンドを使用する際、よく出てくるのが「find で抽出したファイル一覧に対して xargs で処理を行う」というケースです。

このとき発生するやっかいな問題が、パスの半角スペース問題です。問題の具体例と、解決策1、さらに改良した解決策2について見ていってみましょう。

なお、せっかちな方のために先に情報を述べておきます。解決策1は -print0 オプションと -0 オプションを使用する方法です。この方法を既にご存知で、find と xargs の間に任意のコマンドを実行したくて困っているという方は、後半の解決策2をご覧ください。

半角スペース問題とは

一番簡単な例として、「find でカレントディレクトリ以下のファイル一覧を出力して、xargs コマンドに wc -c コマンドを渡し、ファイルサイズ一覧を出力する」という例を考えてみます。以下のようなコマンドになります。

find . -type f | xargs wc -c
# 注意: パスに半角スペースが含まれると正常動作しない

しかし、これは注意書きにあるように、パスに半角スペースが含まれるとうまく動作しません。xargs が半角スペースを区切り文字としてみなしてしまうため、たとえば「test file.txt」というパスがあった場合、「test」と「file.txt」の2つのパスがあると認識してしまうためです。

解決策1: NULL文字の使用

一つ目の解決策として、find と xargs に「NULL文字を区切り文字とする(半角スペースを区切り文字としない)」という指示を与える方法があります。find コマンドは通常、改行コードで区切られて出力されますが、改行コードの代わりにNULL文字という目に見えない文字を使用するというものです。

NULL文字を区切り文字とするには、find コマンドに -print0 オプションを、xargs コマンドに -0 オプションをそれぞれ渡します。具体的には、以下のようなコマンドになります。

find . -type f -print0 | xargs -0 wc -c
# このコマンドは正常動作する

しかし、この方法には少し問題があります。find と xargs の2つのコマンドの間でやりとりされている入出力情報は、先述のとおりNULL文字で区切られるようになります。そのため、改行コードを利用する通常のコマンドが2つのコマンドの間で使用できなくなってしまうのです。

具体的なケースを見てみましょう。先のコマンドに対して、「拡張子が .txt のテキストファイルだけを grep して処理したい」という例を考えてみます。 以下のコマンドは動作するでしょうか。

find . -type f -print0 | grep .txt$ | xargs -0 wc -c
# 注意:このコマンドは正常動作しない

注意書きにもあるとおり、このコマンドは正常動作しません。grep コマンドはあくまで改行コードを区切りとして動作するものであり、区切り文字がNULL文字になってしまっている入力を処理できないからです。

解決策2: ダブルクォーテーションの使用

上記の問題を避けるのが、パスを1行ずつダブルクォーテーションで囲むという方法です。この方法では、先述したNULL文字を区切り文字として使用するオプションは使用しません。

解決策1と同じく、「カレントディレクトリ以下のファイルから、拡張子が .txt のテキストファイルだけを抽出して、wc -c でファイルサイズを表示する」という例を考えてみます。以下のコマンドを見てみましょう。

find . -type f | grep .txt$ | awk '{print "\"" $0 "\""}' | xargs wc -c
# このコマンドは正常動作する

find でファイル一覧を出力したあと、grep で拡張子が .txt のテキストファイルのみに絞っているところまでは分かりますね。次に使用するのが、文字列処理を行う awk コマンドです。

上記の awk コマンドによって、入力されたすべての行の先頭と末尾にダブルクォーテーションを付与して出力しています。このようにダブルクォーテーションを付与することで、xargs コマンドがパス中の半角スペースを区切り文字として解釈してしまう問題を回避できます。

find、grep、xargs の各部分を好きなコマンドに変えることで、あなたの行いたい処理を記述してみてください。たとえば次の例は、find で出力したディレクトリ一覧から grep で「src」という文字列の含まれるディレクトリを抽出し、ls でファイル一覧を表示させるというコマンドです。

find . -type d | grep src | awk '{print "\"" $0 "\""}' | xargs ls

今回の記事の内容としましては以上です。

Dropbox上のファイルを丸ごとバックアップするには

Dropbox は信頼のおけるクラウドサービスですが、それでも自分でファイルをバックアップしておきたいと考える方もいると思います。今回は Dropbox のファイルを外付けHDD/SSD等のメディアにバックアップする方法について考えてみたいと思います。

考えられる方法

Dropbox のファイルを外付けメディアにバックアップする方法としては、以下の3つが考えられます。

  1. 手動ですべてのファイルをコピーしてペーストする
  2. robocopy や rsync といった専用コマンドを使用する
  3. 外付けメディア上に仮想マシンを構築する

1は最初に思いつく方法ですね。Windows ならばエクスプローラから、Mac ならば Finder から、すべてのファイルをまるごとコピーして、外付けメディア上に貼り付けるだけです。

しかしこの方法、少し欠点があります。ファイルを毎回すべてコピーするので、非常に時間がかかるという点です。

実はこういう場合に備えて、Windows にも Mac にも、ちゃんと専用のコマンドが用意されています。Windows ならば robocopy コマンド、Mac ならば rsync コマンドです。次に具体的な方法を見ていっていましょう。

方法2-1:Windows で robocopy コマンドを使用する

まずは Windows の場合です。画面左下、スタートメニューのボタンの横にある「ここに入力して検索」と出ている検索ウィンドウに「コマンド プロンプト」と入力をして、コマンドプロンプトの画面を開きます。

Dropbox のディレクトリがC:\Users\my_username\Dropbox\で、バックアップ先のメディアのディレクトリはD:\Backup\だとしましょう。その場合、コマンドプロンプトの画面に以下のコマンドを打ち込んで Enter キーを押します。

robocopy C:\Users\my_username\Dropbox\ D:\Backup\ /MIR /NOCOPY

このとき、ディレクトリ名の順番を逆にしてしまうと大変なことになるので注意しましょう! Dropbox のディレクトリが、空っぽのバックアップディレクトリの内容で上書きされてしまいます。

毎回バックアップするたびにコマンドを打ち込むのは面倒なので、初回に打ち込んだコマンドをメモ帳にコピーして、backup.bat などのファイル名で保存しておくとよいでしょう。次回から backup.bat をダブルクリックするだけで実行できるようになります。

方法2-2:Mac で rsync コマンドを使用する

次に Mac の場合です。command + スペースバーを押して、Spotlight 検索のウィンドウを開き、「terminal」と検索してターミナルを開きます。

Dropbox のディレクトリが「/Users/my_username/Dropbox/」、バックアップ先のメディアは「/Volumes/MY_SSD/backup/」だとしましょう。その場合、ターミナルの画面に以下のコマンドを打ち込んで Enter キーを押します。

rsync -av --delete /Users/my_username/Dropbox/ /Volumes/MY_SSD/backup/

このときも Windows の場合と同じで、ディレクトリ名の順番を逆にしてしまうと大変なので、よく注意しましょう。

なおディレクトリ名の文字列が分からない場合は、Finder からターミナルにフォルダアイコンをそのままドラッグ&ドロップすると、該当するフォルダのディレクトリ名が出てきます。

ちなみにターミナルを開いた状態ではデフォルトでホームディレクトリが開かれていますが、Dropbox のディレクトリはその直下にいると思います。ターミナルを開いた直後の状態から、以下のコマンドでディレクトリ名を表示させてあげるとよいでしょう。

cd Dropbox
pwd

Windows の場合と同じく、実行したコマンドは2回目以降のバックアップのために、backup.sh などのファイル名でファイルに保存しておくとよいでしょう。Mac のターミナルでは vi などのコマンドでテキストファイルを編集・保存できますが、vi の使い方などは別途検索してみてください。

backup.sh を作成したら、以下のコマンドで実行権限を与えることもお忘れなく。

chmod u+x backup.sh

以上が方法2の robocopy および rsync を利用した方法です。次に、方法3を見てみます。

方法3:外付けメディア上に仮想マシンを構築する

実は方法2にはひとつだけ欠点があります。Dropbox のヘビーユーザーの場合、選択型同期の機能を使用して容量の大きいファイルなどをローカルに保存していないケースがありますが、その選択型同期で除外されたファイルは robocopy や rsync のコマンドではコピーされないのです。

方法3はこれを解決するために私が思いついた方法です。それは以下のような方法です。

  1. 仮想マシンのツールである VirtualBox をインストールする
  2. VirtualBox で外付けメディア上に Ubuntu 等の Linux マシンを構築する
  3. 構築した仮想マシンに Dropbox をインストールし、すべてのファイルを同期させる

少々強引な方法ですが、これで全ファイルのバックアップが外付けメディア上に取れることになります。ときどき仮想マシンを起動させてあげれば、その時点でのバックアップが自動的に行われます。

誤削除してしまったファイルを復元したい場合など、何か問題が発生したときには、ネットワーク接続を切った状態で仮想マシンを立ち上げることで、最後にバックアップを行った状態を復元することができます。

仮想マシンのインストール方法などは別途検索を行ってください。ここまでやりたいヘビーユーザーの方なら、おそらくそれほど難しくはないでしょう。

注意点として、VirtualBox の仮想ドライブのファイル(.vdi ファイル)を作成するときには、Dropbox の契約している容量の上限+αのサイズで作成しましょう。「可変サイズ」を選択すると、初期設定した容量がいっぱいになったときに自動的に容量を拡張してくれるように思えますが、そうではありません。「可変サイズ」とは、.vdiファイル本体のサイズが実際のディスク使用量に合わせて増えていくというだけで、ディスク容量の上限のサイズはあくまで初期設定したサイズになります。

今回の記事の内容としては以上になります。

須貝知世 – Thousands of Flowers (2018)

東京を拠点に活動するアイリッシュフルートのプレーヤー、須貝知世さんによる2018年のアルバム。

これはなんというか、すごくやさしいアルバムですね。やさしい、あたたかい、やわらかい、そんな言葉が連想されます。私がよく聴く日本人のアイリッシュプレーヤーの演奏は、どこか影のある、いい意味でのアイルランド音楽独特の「暗さ」をとらえたものが多いのですが、このアルバムは「明るい」です。

それも底抜けな明るさではなく、落ち着いた明るさです。花の咲く草原が描かれたジャケットアートワークは、この音の風景を見事に象徴しているのではないでしょうか。そういえばアイリッシュの音源でジャケットアートワークが素晴らしいものってちょっと珍しいですね。

伴奏はギター、アイリッシュハープ、ピアノなどが入りますが、これもうまく抑制された調子で、楽曲の雰囲気にすごく合っています。普通のミュージシャンだったらもう少し強く主張してしまいそうな気がしますが、ここは見事です。

フルートの音色は先の印象にも書きましたように、非常に当たりがやわらかいです。きっとケーリーバンドのような合奏よりも、こういった少人数での演奏が映えるタイプですね。録音の音圧も強くなく、空間に十分な余白が与えられている印象で、聴いていて心地よいです。

日本人奏者によるアイリッシュフルートの名盤と言えると思います。おすすめです。

名古屋のアイリッシュパブは伏見のシャムロックで

名古屋市の中区・栄には数多くの飲食店が存在しますが、お食事がめちゃくちゃおいしいアイリッシュパブとして、伏見の irish pub shamrock さんがあります。今回はそんなシャムロックさんを写真で紹介してみたいと思います。

シャムロックの入り口

シャムロックさんは地下鉄伏見駅の6番出口からすぐのところにあります。赤い外装が目標で、階段を降りるとお店になっています。

ギネスビール

アイリッシュパブと言えばギネスビール! ここのギネスはなぜかおいしいことで常連さんたちからは知られています。

一説によると、常連さんたちがよく飲むので樽の回転が早くていつも新鮮であることと、店主の伊藤さんがマメでビールサーバーの掃除をしっかり行っているからではないか…と聞いたことがあります。

おまかせ盛り1

私がカウンターでよく頼むのは「おまかせ盛り」です。内容は季節によって旬の食材が取り入れられていたりしていて、2日連続でお店に行ったりしても、その日によって違うものが出てきたります。おまかせを頼んでおけば間違いなし! と評判です。

左下に写っているのは密かな人気メニューの「ワカメの唐揚げ」。右下のポテトもおいしいです。アリッシュパブの定番メニューは「フィッシュ&チップス」、つまり白身魚のフライとポテトのフライなのですが、ここのお店は揚げ物もおいしいですね。

おまかせ盛り2

おまかせ盛り、その2です。奥にさっと茹でたブロッコリーが写っていますね。これ、特に目立った味付けがされていないのになぜかおいしいという不思議な代物です。

シャムロックさんでは、店主の伊藤さんのご実家の農園から直送されている野菜を使用しているそうです。これ、野菜好きじゃなくてもファンになっちゃいます。すごいです。

セッションの様子

お店ではアイルランド音楽のセッションが定期的に行われています。毎月、第1土曜日の17時からです。セッションとはアイルランドの伝統で、音楽好きの人たちが楽器を持ち寄って、テーブルとギネスを囲みながら伝統的な音楽を一緒に演奏するという集まりです。

いちばん手前に写っている不思議な6角形の楽器はコンサーティーナと呼ばれるもので、アイルランド音楽に特徴的な楽器です。私も演奏する楽器で、演奏する曲と音色は以下のようなものになっています。

実際にはもっと大勢で演奏するので、すごい迫力になりますよ!

シャムロックさんへの詳しいアクセス方法、営業日時、ご予約などはお店のWebサイトをご参照ください。イベントのカレンダーも載っているので、音楽好きな方はセッションやライブがある日にお越しいただくのもよいでしょう。

それでは、ギネス片手にお待ちしております!