Linuxの基本コマンド
Linuxのファイル操作に関連する8つの基本コマンドを紹介しよう。このほかにも数多くのコマンドがあるが、この8つを覚えておけば困ることはないはず。また、それぞれのコマンドにはさまざまなオプションがあり、きめ細かな操作ができるようになっているが、すべて覚える必要なんてない。
cd (カレントディレクトリを移動)
カレントディレクトリを移動するコマンド。書式は簡単で「cd 移動先のディレクトリ名」とするだけ。たとえば、/var/log/httpdディレクトリに移動するには「cd /var/log/httpd」とする。指定には相対パスも使えるため、「cd ..」と入力すれば、ひとつ上の階層のディレクトリに移動できる。
また、単に「cd」とだけ入力するとホームディレクトリに移動する。redでログインしているときに「cd」とすれば、/home/redディレクトリがカレントディレクトリになる。
[red@localhost etc]$ cd /var/log/httpd [red@localhost httpd]$ cd .. [red@localhost log]$ cd [red@localhost red]$
ls (ファイルリストを表示)
カレントディレクトリにあるファイルやディレクトリの一覧を表示する。ただ「ls」と入力すると名前だけが表示される。「ls -l」とすれば所有者やパーミッションなどの情報も表示される。
また、Linuxでは「.」で始まるファイルは隠しファイルとして画面に表示されない。たとえば、ウェブサイトのアクセス方法を制御する「.htaccess」ファイルは「ls」と入力しても表示されない。こうした隠しファイルも含めて表示するには「ls -a」とする。また、複数のオプションを組み合わせることも可能で、「ls -la」では隠しファイルも含めた詳細情報が見られる。
lsコマンドには多くのオプションがあるが、とりあえず「-l」「-a」の2つを覚えておけば当面は困ることはないはず。
[red@localhost public_html]$ ls hdd/ index.html index.xml styles-site.css* archives.html index.rdf rsd.xml tv_tuner/ atom.xml [red@locahost public_html]$ ls -l 合計 200 -rw-rw-rw- 1 apache apache 1341 Jan 17 01:45 archives.html -rw-rw-rw- 1 apache apache 47390 Jan 17 01:45 atom.xml drwxrwxrwx 2 apache apache 4096 Jan 21 00:43 hdd/ -rw-rw-rw- 1 apache apache 7109 Jan 21 01:22 index.html -rw-rw-rw- 1 apache apache 45601 Jan 17 01:45 index.rdf -rw-rw-rw- 1 apache apache 44920 Jan 17 01:45 index.xml -rw-rw-rw- 1 apache apache 518 Jan 21 01:22 rsd.xml -rwxr--r-- 1 yasu yasu 4726 Jan 15 18:40 styles-site.css* drwxrwxrwx 2 apache apache 4096 Jan 21 00:43 tv_tuner/ [red@localhost public_html]$ ls -la 合計 216 drwxrwxrwx 8 red red 4096 Jan 25 23:40 ./ drwx--x--x 9 red red 4096 Jan 21 00:51 ../ -rwxr--r-- 1 apache apache 1710 Jan 17 01:09 .htaccess* -rw-rw-rw- 1 apache apache 1341 Jan 17 01:45 archives.html -rw-rw-rw- 1 apache apache 47390 Jan 17 01:45 atom.xml drwxrwxrwx 2 apache apache 4096 Jan 21 00:43 hdd/ -rw-rw-rw- 1 apache apache 7109 Jan 21 01:22 index.html -rw-rw-rw- 1 apache apache 45601 Jan 17 01:45 index.rdf -rw-rw-rw- 1 apache apache 44920 Jan 17 01:45 index.xml -rw-rw-rw- 1 apache apache 518 Jan 21 01:22 rsd.xml -rwxr--r-- 1 yasu yasu 4726 Jan 15 18:40 styles-site.css* drwxrwxrwx 2 apache apache 4096 Jan 21 00:43 tv_tuner/ [red@localhost public_html]$
cp (ファイルをコピー)
ファイルをコピーする。書式は「cp コピー元 コピー先」だが、コピー先にファイル名とディレクトリ名のどちらを指定するかで挙動が変わってくる。
まず、コピー先にファイル名を指定してみる。「cp index.html index.bak」とすれば、同じディレクトリにindex.bakというファイルが新たに作成される。ファイルを編集するのに元のファイルを残しておきたいといったときに使える。
コピー先にディレクトリ名を指定するとそのディレクトリにファイルがコピーされる。「cp index.html /home/red」のように指定する。ディレクトリ名の指定には相対パスも使えるので、「cp index.html red」とすれば、カレントディレクトリの下にあるredにファイルがコピーされる。コピー先の見た目はファイルのようだが、その名前にあてはまるディレクトリが存在したときはディレクトリをまたがったコピーになる。
また、コピー先にディレクトリ名を含めたファイル名を指定することもできる。「cp index.html red/index.bak」とすれば、index.htmlの名前をindex.bakと替えた上でredディレクトリにコピーする。
cpコマンドではファイルだけでなく、ディレクトリもコピーすることができる。ここがMS-DOSとはちょっと違うところだ。ディレクトリをコピーするには「-r」オプションを使う。たとえば、「cp -r public_html /home/white」と入力すると、public_htmlディレクトリをまるごと/home/whiteディレクトリの中にコピーする。ディレクトリの中にさらにディレクトリがあるときでも、その構造はたもったままコピーされる。
なお、cpコマンドを使うときはコピーしたファイルの所有者に注意が必要だ。所有者はコピーしたユーザーのものになるので、たとえばスーパーユーザーでcpコマンドを使ったとしたら、コピーしたファイルはほかのユーザーが読めない可能性がある。コピー後にchownコマンドで所有者を変更するか、もしくは「-p」オプションを使うと所有者を替えることなくコピーできる。
mv (ファイルを移動、名前の変更)
ファイルやディレクトリを移動するコマンド。「mv 移動元 移動先」とするところはcpコマンドと似ているが、細かなところに違いがあるので注意しよう。
基本的な使い方だが、「mv index.html /home/red」とすれば、index.htmlを/home/redディレクトリに移動できる。また、「mv public_html /home/red」とすると、カレントディレクトリにあるpublic_htmlディレクトリを/home/redディレクトリに移動できる。cpコマンドではディレクトリにコピーに「-r」オプションが必要だったが、mvコマンドではオプションなしでディレクトリを移動できる。
cpコマンドではコピーしたファイルは所有者が変わってしまったが、mvコマンドでは移動したあとも所有者は元のままに保たれている。
mvコマンドは移動だけでなく、名前の変更にも利用される。「mv index.html index.bak」とすれば、index.htmlの名前がindex.bakに変わる。ディレクトリをまたがったときも同じで、「mv index.html backup/index.bak」なら、index.bakに名前を変えた上でbackupディレクトリに移動する。
rm (ファイルを削除)
ファイルを削除するコマンド。「rm ファイル名」が基本的な使い方だ。たとえば、「rm index.html」でカレントディレクトリのindex.htmlを削除する。削除するときは確認のメッセージが出てくるが、「rm -f index.html」のように「-f」オプションを追加すると確認なしでファイルを削除できる。ワイルドカードを使ってカレントディレクトリのすべてのファイルを削除したいときなど、ただ「rm *」とすればファイルひとつずつに確認メッセージが出てくる(「*」はすべてのファイルを表す)。だが、「rm -f *」なら確認なしですべてのファイルをすぐに消せる。
rmコマンドではディレクトリの削除もできる。ただ「rm public_html」としただけではエラーが出るので、「rm -r public_html」と「-r」オプションを追加する。public_html以下のすべてのファイルとディレクトリが削除される。このときもファイルやディレクトリのひとつずつに対して確認が求められるので、それが面倒なら「rm -rf public_html」のように「-f」オプションを追加して実行する。
mkdir (ディレクトリを作成)
ディレクトリを作成する。書式は「mkdir ディレクトリ名」だ。「mkdir public_html」ならカレントディレクトリにpublic_htmlという名前のディレクトリが作成される。
作成したディレクトリの所有者はコマンドを実行したユーザーのものになる。もしスーパーユーザーでmkdirコマンドを実行したときは、必要に応じてchownコマンドで所有者を変更したり、chmodコマンドでパーミッションを変更する。そうしないとほかのユーザーからせっかく作ったディレクトリにアクセスできないこともある。
chmod (パーミッションを変更)
ファイルやディレクトリのパーミッションを変更する。パーミッションについてはこちらのページを参照。書式は「chmod パーミッション ファイル名」の形式で使う。たとえば、/var/samba/publicディレクトリをすべてのユーザーから読み書きできるようにするには、「chmod 777 /var/samba/public」と入力する。また、カレントディレクトリにあるすべてのファイルについてほかのユーザーのアクセスを禁止するには「chmod 700 *」と指定する(「*」はすべてのファイルを表す)。
パーミッションの変更が必要になるのはcgiスクリプトをインストールするときだ。cgiスクリプトは実行属性を付与しなければならないため、たとえば、decode.cgiというファイルの場合は「chmod 755 decode.cgi」と指定してファイルを実行できるようにする。
chown (所有者を変更)
ファイルやディレクトリの所有者を変更する。書式は「chown 所有者 ファイル名」。また、グループの属性も同時に変更することができ、「chown 所有者:グループ ファイル名」と指定する。
たとえば、publicディレクトリの所有者をredに変えたいなら、「chown red public」とする。また、所有者をred、グループをadminにしたいなら「chown red:admin public」とする。グループを変更した上で「chmod 750」とすれば、所有者redはすべての操作ができ、グループadminに属するユーザーは書き込みができない。そのほかのユーザーは書き込みだけでなく、閲覧もできない。こうしたアクセス制御ができるようになる。
ワイルドカードとは
こまんどとともにもうひとつ覚えておきたいのがワイルドカードだ。コマンドのファイル名を指定するところでは、「*」はすべての文字列を表す。つまり、「rm *」とはカレントディレクトリにあるすべてのファイルを削除するという意味になるわけだ。
さらに「*.bak」のようにほかの文字列と組み合わせて使う方法もある。「*.bak」は.bakで終わるすべてのファイル(つまり拡張子がbakのファイル)を表す。また、「index*」とすればindexで始まるすべてのファイルを指定したことになる。「cp index* /backup」と入力すると、カレントディレクトリでindexから始まるすべてのファイルを/backupディレクトリにコピーするという意味になる。