アメリエフの技術ブログ

Amelieff Staff Blog

再帰的

recursive:再帰的な
という英語があります。
再帰というのは説明が難しいのですが、wikipediaによると「あるものについて記述する際に、記述しているものそれ自身への参照が、その記述中にあらわれることをいう」のだそうです。
わかりませんね。
「Aについての定義の中に「Aを参照」と書いてある」というようなことです。

Linuxのコマンドのオプションに、このrecursiveが頻出します。
作業ディレクトリの下層のディレクトリにまで下ってコマンドを実行することを「再帰的に」●●(コマンド)する、と表現するのです。

例として /home/amelieff/hoge/moge というディレクトリがあり、作業ディレクトリが /home/amelieff/ だったとします。
amelieff/ディレクトリの下にはhoge/ディレクトリがあり、さらにその下にmoge/ディレクトリがあります。
一番下のmoge/ディレクトリごとhoge/ディレクトリをどこかへコピーしたいときのコマンドは
$ cp -r hoge/ [コピー先]
となります。 -r オプションは、ディレクトリの中のディレクトリも再帰的にコピーする、という指示です。

cpコマンド以外にもrecursiveオプションを指定できるコマンドはたくさんあります(rは大文字だったり、小文字だったりします)。
主に使うものを紹介すると、

$ cp -r [ファイル/ディレクトリ] [コピー先]
ディレクトリの内容を再帰的にコピー
ディレクトリの中のディレクトリにまで下ってすべてコピー)

$ ls -R
ディレクトリの内容を再帰的に表示する
(下層のディレクトリの内容まですべて表示)

$ grep -r [パターン] [ディレクトリ]
ディレクトリの内容を再帰的に文字列検索する
(下層のディレクトリの内容もすべて検索して表示)

$ chmod -R [モード] [ディレクトリ]
ディレクトリの内容を再帰的にアクセス権限を変更する

ちなみにrecursiveの名詞形はrecursionですが、Googleの検索ボックスで"recursion"と入れて検索すると……?
(大したことのない小ネタなので、お暇な時にどうぞ)