‘UNIX’ カテゴリーのアーカイブ

講習会「プロセスとシグナル」を開催しました

「プロセスとシグナル」というタイトルで社内勉強会を開催しました。UNIX系OSのプロセスとシグナルに関する周辺知識の確認です。

(続きを読む…)

最新のファイルを一つxargsに渡す小ネタ

たかはらです。

先日、hnwいまさらxargsの便利さを主張してみるの記事を投稿したところ予想外の大反響でした。xargs好きが意外といると判明したので今日はxargsを利用した小ネタをご紹介します。

例えばネットでソースパッケージを拾ってきてコンパイルする時に、以下のような事をやっていませんか?

  1. ブラウザでファイルをクリックすると保存するか聞かれるので~/Downloadに置く。
  2. ターミナルを開いて、cd ~/Download
  3. tar xvzfと打ったところで
  4. ファイルがたくさんありすぎるのでシェルの補完で探そうとするが数秒前に見たファイル名を覚えだせず焦る。
  5. 舌打ちをしながらブラウザに戻りファイル名を確認する。
  6. 「ああ、そうだったよね」と思いながらシェルに戻ってファイル名を補完する…

そんな貴方に以下のようなスクリプトをご紹介します。

(続きを読む…)

いまさらxargsの便利さを主張してみる

タイトルの通りですが、xargsコマンドの便利さを紹介する記事を書いてみました。xargsは私が大好きなコマンドの一つで、標準入力から渡されたファイル名などを引数とみなして、別のコマンドの引数として起動するというものです。

(続きを読む…)

grepでハイフンから始まる文字をを検索する方法

たかはらです。今日は小ネタです。

早速ですが質問をさせて下さい。

UNIXのよくつかうコマンドgrep-hogeという文字列を検索したい場合どのようにしますか?

例えば以下のようにしてしまうとどうなるでしょうか?

grep -hoge fuga.txt

この実行結果は以下のようになります。

grep-hyphen.png

残念ながら以下の2案も同じ結果です。

かこってみたり…

grep "-hoge" fuga.txt

エスケープしてみたり…

grep \-hoge fuga.txt

いずれの場合も-hogeがコマンドの引数ではなくオプションとして扱われてしまっていますね。それじゃどうすれば良いのでしょうか?答えを知りたい方は続きをどうぞ!

(続きを読む…)

5タイプで直前のディレクトリに戻る方法

こんにちは、hnwです。今週は月曜から土曜まで皆勤6カレーです。

さて、今回はTIPS的な短い記事です。

シェル上で下記のようにタイプすると、カレントディレクトリの直前までいたディレクトリに移動することができます。

 $ cd -

シェルの機能として昔からある機能なのですが、社内でも案外知らない人がいました。

この機能の使いどころですが、深いディレクトリで作業中に「cd foo」でディレクトリを移動しようと思ったらなぜか手が滑って「cd」と打ってホームディレクトリに戻ってしまった!あの長いパスを再度打つなんてTABの補完があっても耐えられない!というときに活躍します。

こんな最悪な状況からEnterを含め5タイプで元のディレクトリに戻れちゃうわけですから、知っているか知らないかでは大きな差です。明日からバンバン使って精神的に楽になりましょう!

シェルの操作にAltキーを使おう

ご挨拶が遅くなってしまいましたが、はじめまして、hnwです。社内ではカレー部と酒飲み部に所属しています。

さて、今回はシェルでコマンド入力などの操作をする際に、Emacsライクなキーバインディングを知っていると効率が断然違いますよ、という話題です。

業務でプログラミングをする際によく言われることは、「できるだけ自分で書くな」ということです。無駄に分岐させたり、似たコードをコピー&ペーストで大量生産したりしてコードを増やすことは、バグを産む候補が増えるということであり、テストケースも増えてしまいます。できるだけプログラマがコードを書かずに済むような言語やライブラリやフレームワークほど優れていると言えるのではないでしょうか(もちろん他にも判断基準はありますが、重要な要素の一つでしょう)。

同様に、シェルでの操作の際には「できるだけタイプ数を減らす」ことがミスを防ぐ重要な要素の一つだと私は考えています。タイプ数が多ければ多いほど編集操作に集中力が必要になります。具体的には、ミスタイプに気づいて左右キーで間違えた場所に戻るような場合に、左右キーを押しつづけてカーソルが望んだ場所まで移動したのを確認してから指を離す、といった操作は無駄な集中力を使っていると私は感じます。

(続きを読む…)

odコマンドで16進ダンプを取る方法

バイナリデータなどのダンプを取りたい場合、多くの人は自分の使いやすい16進ダンプコマンドを利用するかと思います。例えばhexやhexdump、xdなんてコマンドがインストールされていて、それを使っている人が多いのかと思います。

しかし、ツールのインストールが制限されている環境で作業しなくてはいけない場合、デフォルトでインストールされているツールだけで作業する必要が出てきます。どんな環境でも大抵のUn*x環境でインストールされているツールという意味では、8進ダンプツールのodが一番標準的なものだと思いますが、8進ダンプは読みにくくて使いにくいと感じている人も多いのではないでしょうか。

それほど知られていませんが(「BINARY HACKS」には書いてありましたけど)、実はodで16進ダンプを表示する方法もあります。下記のように実行すれば、他の16進ダンプツールに近い結果が得られるかもしれません。

$ od -tx1z hoge.jpg|head -2
0000000 ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48  >......JFIF.....H<
0000020 00 48 00 00 ff db 00 43 00 08 06 06 07 06 05 08  >.H.....C........<

(続きを読む…)