Windows から Linux へのロードマップ: 第 2 回 コンソール集中コース

Linux コンソール早分かり

IBM e ビジネス・アーキテクトである Chris Walden が、9 回の developerWorks シリーズで読者の運用スキルを Windows 環境から Linux 環境へ移行する道案内をしていきます。今回は各種のシェルと、Linux コマンドのうち最も重要なもののいくつかを説明します。

Chris Walden, e-business Architect, IBM

Chris Walden は IBM Developer Relations Technical Consulting (dragonslayers としても知られています) の e ビジネス・アーキテクトです。テキサス州オースチン在住で教育、設置使用指導、IBM ビジネス・パートナーへのコンサルティングにあたっています。自他共に認める半 Linux 狂発症途中で、聞く耳持つ人がいれば誰にでも良い知らせを広めています。e ビジネス・アーキテクトとしての仕事以外に彼の地域にある、すべて Linux による基幹サーバーを管理しており、そこでは多種多様なユーザー環境でのファイル、印刷その他のアプリケーション・サービスを扱っています。コンピューター業界でフィールド・サポートから Web アプリケーション開発やコンサルティングまで 10年の経験があります。



2003年 11月 11日

Linux では、どの管理作業もコンソールから行うことができます。多くの場合、コンソールを使う方がグラフィカルなプログラムを使うよりも早いですし、追加機能が付いている場合もあります。さらに、コンソールからの作業はスクリプトに置き換え可能なので、自動化できます。Linux 環境を本当にコントロールするには、作業をコンソールからどう行うかを学ぶ必要があります。今回の記事は、DOS/Windows での経験がある人が Linux コンソールで始めるための案内です。

コンソールにアクセスする

システムがテキスト・モードでブートするなら (サーバーではサービスのオーバーヘッド節約のためにテキスト・モードに設定されているのが普通です)、テキストでのログイン実行で既にもうコンソールに向かっていることになります。典型的な Linux システムでは Ctrl + Alt + (F1 - F6) を押すことで、追加コンソールを持つことができます。各コンソールはシステム上完全に別セッションで、別のユーザーが同時にアクセスすることができます。

このマルチ・コンソール機能は Windows のマルチ・デスクトップとは違います。Linux では、各コンソールを全く別のユーザーがコントロールできるのです。例えば、コンソール 1 で root としてログインし、コンソール 2 では joeuser としてログインすることができます。両方のコンソールからそれぞれ別のユーザー空間で、異なるプログラムを実行できるのです。同じ理屈で、別のユーザーが遠隔から Linux システムにログインすることもできます。こうした意味では Linux は簡単なサーバーやワークステーションよりも、むしろメインフレームのような機能を持っていると言えます。

グラフィカル・モードにいる場合は、terminal を開いてコンソール画面にアクセスします。ターミナルは普通、デスクトップのタスクバーにボタンがあるか、プログラム・メニューのシステム・ツールの下にあります。ターミナルはコンテキスト・メニュー (デスクトップで右クリック) から開くこともできます。


コマンド

コンソールから実行できるコマンドは数多くありますが、その一部はスクリプトを書くときに真価を発揮するものです。まず最初に必要なコマンドとしては次のようなものでしょう。全コマンド、オプションは大文字小文字を区別することを思い出してください。-R-r は意味が違い、違ったことをします。コンソール・コマンドはほとんど常に小文字です。

cd
ディレクトリを動き回るにはおなじみの cd コマンドを使います。ちょっと違うのはバックスラッシュ ( \ ) でなじんだところに Linux ではフォワード・スラッシュ ( / ) を使うことですが、これは覚えておく必要があります。バックスラッシュも使いますが、これはコマンドが次の行まで続くのを指定するために使います。特に長いコマンドをタイプするときには時々、読みやすくするために行を変えます。

ls
ディレクトリのファイルをリスティングするには ls コマンドを使いますが、リスティングの仕方を変えるためのスイッチがいくつか使えます。

ファイルのリスティング
コマンド
ls -lファイルサイズ、日付けと時間、属性を含んだ長いリスティングを表示します。
ls -t時間でファイルを並べ替えます。
ls -Sサイズでファイルを並べ替えます。
ls -r他の並べ替えスイッチと併用し、逆の順序で並べ替えます。ls -lt は最新ファイルを先頭にして表示し、ls -lrt は最新ファイルを最後にして表示します。
ls -h人が読める形式で。リストするファイルのサイズをバイトではなく、分かりやすいk、M、G の単位で表示します。
ls -a隠しファイルを含めて、ディレクトリ内のすべてのファイルを表示します。

cp
cp コマンドでファイルをコピーします。基本的に DOS の copy コマンドと同じです。重要なスイッチとしては。

ファイルのコピー
コマンド
cp -Rファイルを再帰的にコピーします。ディレクトリの全部をコピーするときに必要です。
cp -fユーザーに尋ねることなくコピーを強行し、既存ファイルを上書きします。
cp -lコピーする代わりにファイルをリンクします (下記参照) 。

コピー・コマンドでリンクを作る

cp コマンドはファイルまたはファイル構成全体へのハード・リンク一式を生成するのに使用します。リンク・コピーを指示するには -l スイッチを使います。すべてのディレクトリはディレクトリとして生成されますが、すべてのファイルはハード・リンクとして設定されます。

cp -lR /data/accounting/payroll
/data/management/hr

上のコマンドは/data/accounting/payroll 以下の全ディレクトリ構造を/data/management/hr/payroll にコピーします。ディレクトリ構造のすべてのファイルはリンクとして設定されます。これはあるファイルシステム内での同じファイル群を、異なる見方で見せるのに使います。異なるディレクトリから異なるアクセス制御でファイル・アクセスするようにできるので、セキュリティ手法としても有効です。

mv
ファイルの移動とリネームには mv コマンドを使います。DOS の move コマンドと基本的に同じですが、ファイルと同時にディレクトリ構造全体を移動する点は違います。

cat
ファイルを見るには cat コマンドを使います。DOS の type コマンドと同等です。ファイルの内容を別のファイルやスクリーン、別のコマンドにダンプします。cat は concatenate (連結する) の略で、いくつかのファイルを連結して大きなファイルにすることができます。

more
情報を一度に一ページ分見るには more コマンドを使います。DOS の more コマンドと基本的に同じ動作をします。

less
テキスト・ファイルを見るのに less コマンドを使うと、ドキュメントを上下にスクロールしてテキスト・パターンを検索する機能が使えます。

vi
vi は「virtually impossible (ほとんど不可能) 」の略だと言う人もいるかもしれません。vi は Unix の世界で長い伝統のあるテキスト・エディターです。直感的ではありませんが、Unix 風の環境にはほとんど必ず入っています。Linux にインストールされているバージョンにはチュートリアルが組み込まれているので、一度慣れてしまえば、ちょっとしたキー操作で信じられないような芸当ができるのです。実際パスワードやコンフィギュレーション・ファイルの編集に、vi に置き換わるものは未だありません。

man
man コマンドで、コマンドの説明が表示されます。Man は manual の略です。説明は完璧なものがほとんどです。man についてもっと知るには下記をタイプします。

man man

info
infoman と似ていますが、info ではテキストにハイパーリンクが付くので説明を読むのが楽になります。


どのシェル?

DOS/Windows と Linux で決定的に違う点の一つが、コマンドシェルがオペレーティング・システムから分離されたレイヤーであることです。シェル環境は編集できるコマンドラインや前の操作がスクロールして見られるかどうか、などのフィーチャーに影響しています。シェルはまた、スクリプトで各種の機能を実行するのに必要な構文を決定します。DOS/Windows のスクリプトにはお粗末な.BAT ファイルという一つのオプションしかありませんでした。.BAT ファイルもいろいろできたのですが、基本的なこと以外のことをしようとすると、スクリプトを書く側にかなりの創造性が要求されました。Linux のスクリプトではループができ、プログラミング言語にあるような機能まで含めて、基本的な条件ステートメント以上のことができるのです。.BAT ファイルを書くのがうまい人だったら、シェル・スクリプトでも輝く人になるでしょう。

デフォルト・シェルは各ユーザー・アカウントのパラメーターです。Linux での典型的なデフォルト・シェルは/bin/bash ですが、他でも構いません。実は各シェルについての man のコマンド説明が非常に良くできており、シェルの詳細と動作について説明しています。その説明をここで繰り返すよりは、下のリストからシェルを選択してその man ページを見てください。

bash
bash シェルは最初の Unix シェル、Bourne シェルのフリー版で、たくさんの機能が追加されています。Bash には編集可能なコマンドラインや前のコマンド操作をスクロール・バックする機能、また長いファイル名をタイプせずにすませられるタブ操作などがあります。

csh
C シェルは「C 風の」構文を使い、Bourne シェルから多くの機能を借用していますが、内部シェルコマンドには違うものを使っています。

ksh
Korn シェルは Bourne シェルと同じ構文を使い、C シェルの使いやすさを取り入れています。Ksh は多くのインストレーション・スクリプトで使われていて、自分のプライマリー・シェルではなくても多分インストールはしておくべきでしょう。

tcsh
TC シェルは C シェルの改善版で、C シェルと 100%互換性があります。

zsh
Z シェルは Korn シェルの改善版で、bash シェルにある多くの機能を含んでいます。


リンクして!

シェル・ゲーム

コンソールから実行することで簡単にシェルを変更することができます。走らせたいシェルをスクリプトで指定するには、希望のシェルを指定したファイルの先頭に仕掛け印 (#!) を置きます。スクリプトが実行されると正しいシェルが実行されますが、ユーザーのシェル環境はそのままです。下の1行は C シェルで実行するためのスクリプトの例です。

#!/bin/csh

ファイル・リンクは Linux ファイルシステムの称賛すべき特徴の一つです。リンクはファイルへの参照で、ファイルシステム中の複数の場所でファイルが見えるようにするものです。ところが Linux では、リンクは元のファイルとして扱うことができるのです。何も特別なことをしなくても、リンクを実行したり編集したりアクセスしたりすることができるのです。システム上の他のアプリケーションに関する限り、リンクは元ファイルなのです。リンクからファイルを編集すると、元のファイルを編集していることになります。リンクはコピーではありません。リンクにはハード・リンクとシンボリック・リンクの 2 種類があります。

ハード・リンクは同じファイルシステム内のファイルのみを参照でき、ファイルシステム中での、ファイルの物理インデックス (i ノードとも言われます) を指します。ハード・リンクはファイル構造上の位置ではなく、ファイルの物理データ位置を指すので、元のファイルを動かしてもリンクは切れません。ハード・リンクでは、ユーザーが元のファイルにアクセス権限を持っている必要は無く、またハード・リンクが元ファイルの位置を示すこともないので、セキュリティ上からも多少有利になっています。ハード・リンクされた一つのファイルを削除しても、他のすべての参照が削除されるまで元のファイルは残っています。

シンボリック・リンクはファイルシステム上でのファイル位置を示すポインターです。シンボリック・リンクはファイルシステムにまたがることができ、遠隔にあるファイルシステムのファイルを指すことさえできます。シンボリック・リンクは元ファイルの位置を示しており、リンクを使うにはユーザーが元ファイルの位置にアクセス権限を持っている必要があります。元のファイルが削除されるとすべてのシンボリック・リンクは切れてしまい、ファイルシステム上で存在しない位置を指すことになります。

どちらのリンクもコマンド ln <source> <target> で作ることができます。デフォルトで ln はハード・リンクを作ります。-s スイッチでシンボリック・リンクができます。

# Create a hard link from MyFile in the current
# directory to /YourDir/MyFile
ln MyFile /YourDir

# Create a symbolic (soft) link from MyFile in
# the current directory to /YourDir/YourFile
ln -s MyFile /YourDir/Yourfile

上の例では MyFile、/YourDir/MyFile、/YourDir/Yourfile はすべて同じファイルとして扱われます。


殻 (シェル) を破る

コンソール操作は Linux での管理には必須です。コンソールを使わずにすませられるツールもありますが、そうすると自分がしたいことがツールの機能だけに制限されてしまいます。コンソールを使うのは簡単ですし、コマンドの説明も man コマンドと info コマンドで容易に読むことができるのです。

参考文献

  • Windows から Linux へのロードマップシリーズの他の記事も参考にしてください。 (developerWorks 2003年 11月)
  • vi エディターを始めるには、チュートリアルvi intro -- the cheat sheet method (developerWorks 2000年 12月) を見てください。
  • man のページの多くは、オンラインの GNU Manuals Online でブラウズすることができます。
  • From DOS/Windows to Linux HOWTO には DOS、Windows を使ってきた人に役立つ速成用の概要情報があります。
  • AllCommands.com は面白いサイトで、いろいろなオペレーティング・システムのコマンドを参照したり、相互参照する助けになります。
  • シェル・スクリプティングについては bash 例解 (developerWorks ) シリーズの記事でさらに学んでください。
  • developerWorks の Linux ゾーンには、Linux 開発に関する情報が豊富にあります。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=230464
ArticleTitle=Windows から Linux へのロードマップ: 第 2 回 コンソール集中コース
publish-date=11112003