はじめに
この連載では、UNIX系OSをコマンドライン上から効率よく利用するために知っておくべきテクニックや、便利な小技を紹介していきます。
今回は、第0回、第1回で紹介したfind/xargsコマンド、シェルの変数展開、制御構造を利用した「ファイル・ディレクトリ名の一括置換」に関するテクニックを紹介します。
また、「ファイルやディレクトリの一括作成方法」「シンボリックリンクの作成方法」に関するテクニックも紹介します。「ファイル名の置換」テクニックを検証する際の、コマンド確認環境構築にご利用ください。
今までの記事
対象読者
- UNIX系OSコマンドを一通り利用したことがある方
- 正規表現を利用したことがある方
- 何らかのプログラミング経験がある方
動作確認環境
- Linux(Debian etch/Fedora 9)
- FreeBSD 6.1
- Cygwin 1.5.X
なるべくUNIX系OS一般に当てはまるよう解説するので、特に記述がない場合は、Mac OS X、Red Hat Linux上でも動作します(Solaris では動作しません)。シェルに関しては、bash(Bourne-Again Shell 2および3)を想定しています。
空のファイルを作成する
サイズの大きくなったログファイルを空にしたい場合など、空(サイズが0)のファイルを作りたいことがあると思います。
空ファイルを作成するには、次の3つの代表的な指定方法があります。
$ :> test1.txt
$ echo -n > test2.txt
$ cp /dev/null test3.txt
(1)では、組み込みコマンドの「:
」(何もせず終了コード0を返す)とリダイレクトを組み合わせています。
(2)のように、echo
コマンドとリダイレクトを組み合わせる方法でも作成できます。この際「-n
」オプションを付けないと、改行コードが含まれた1byteのファイルが作成されてしまいます。
(3)の「/dev/null
」はヌルデバイスと呼ばれ、読み込んだ場合には常に空ファイルとなります。
また、適当な名前の空のファイルを作成したい場合は、mktemp
コマンドを使用できます。
$ mktemp hoge.XXXXXX hoge.jv2984
ファイル名に「XXXXXX
」のように大文字の「X
」を6つ連続して指定すると、「X
」の箇所に任意の文字列が挿入されたファイル名になります。なお「-d
」オプションを付けると、ディレクトリが作成できます。
空のファイルを作る場合には、よくtouch
コマンドが使われます。
$ touch test.txt
しかし、touch
コマンドは指定した名前のファイル(上の場合だと「test.txt」)が既に存在する場合、ファイル内容は変更されず更新日付だけが新しくなります。