UNIX/Linux入門
情報技術 > UNIX/Linux入門 大学の学習 > UNIX/Linux入門
『UNIX入門』もあります。
UNIXとは

UNIXの起源はアメリカ・AT&T社のベル研究所が開発したOSです。後にカリフォルニア大学バークレー校で学術目的に実装され、ベル研究所のUNIXとカリフォルニア大学バークレー校のUNIX (BSD) 両者が現在広く用いられているUNIXの源流をなしています。
UNIXとは

マルチユーザ・マルチタスク機能を発表当初から持っており、ネットワークを介して異なる端末から更新作業などを行える環境をいち早く作り上げた。しかも、マルチタスク機能で、同時にログインして同時に作業することもでき、業務の効率を大幅に改善した。
UNIXとは

以下現在主に使用されているUNIX系OSを挙げます。
UNIXとは

詳細はウィキペディアのUNIXの記事を参照のこと。
UNIXとは

Linuxは、MINIXを模倣して作られたOSカーネルです。 OSの構成要素には、カーネルとユーザーランド(コマンドインタープリターを含むコマンド、デーモン、ライブラリや付帯するデータ)がありますが、Linuxはカーネルのみを提供しているので、不足するユーザーランドをGNUのユーティリティを始めとするサードパーティ・ソフトウェアで補いOSの体裁を整えています。
UNIXとは

この本で紹介するコマンドはGNU/Linuxでは、全てLinuxではなくGNUのユーティリティなどサードパーティが提供するものです。
UNIXとは

これらのオリジナルにあたるUNIXでの実装(*BSDを含む)は、/usr/src 以下のソースツリーに一体として維持されており、カーネルのソースコードも/usr/src/sys以下に全てあります。
UNIXとは

このように、OSとしての体裁は似通っていますが、UNIXがカーネルとユーザーランドをトータルで維持・管理・提供しているのに対し、GNU/LINUXではカーネルとは出自の異なるソフトウェアの調整のもとOSとして提供しているので、上記以外の組み合わせ(例:coreutilsの代わりにbusyboxを使う、glibcの代わりにmuslを使う等)が無数に考えられ、GNU/LINUXでは、それらのパッケージ管理の重要度が増します。
UNIXを扱う上での基礎知識

基本的には、CUIで操作を行う。CUIとは、コマンドベースのインターフェイスのことで、一定の書式に則った文字列(これをコマンドという)を入力することでコンピュータを操作する体系です。近年、ウィンドウシステムの発達もあって、特にクライアント分野では起動から終了までGUI(CUIに対して、視覚的に操作できる体系)で操作を完結できる環境が整いつつあるが、簡素かつ強力なコマンドラインベースの操作環境は根強く支持されています。GUIを採用しているシステムでも、GUI環境中でコマンドを実行するためのアプリケーション(ターミナルエミューレータと呼ばれます)を利用するのが一般的です。
UNIXを扱う上での基礎知識

ファイルシステムという用語も多義的であるが、ここではUnix File Systemのユーザー側から観た特徴について述べます。
UNIXを扱う上での基礎知識

UNIXでは、ファイルをディレクトリで管理します。ディレクトリはWindowsのフォルダーに対応するものであり、複数のファイルを収めることができます。さらに、ディレクトリ内に別のディレクトリがあっても良いので、ディレクトリ群は木構造になります。
UNIXを扱う上での基礎知識

この構造の頂点となる最上位のディレクトリがただひとつあります。これをルートディレクトリと呼び、/と書く。
UNIXを扱う上での基礎知識

なお、 /root/ というディレクトリがあるが、こちらはファイルシステムの頂点のディレクトリという意味の「ルートディレクトリ」ではなく、ユーザー root のホームディレクトリである。
UNIXを扱う上での基礎知識

ディレクトリ構造上の位置をパス (path)と呼ぶ。 パスには絶対パスと相対パスがあります。
UNIXを扱う上での基礎知識

ファイルシステムのレイアウトについては hier(7) を参照。
UNIXを扱う上での基礎知識

コマンドとは、コンピュータ上で処理を行うための、特定の書式に則った一連の文字列です。コマンドを入力し、実行します(通常はEnterキーを押す)ことで、そのコマンドに応じた処理が実行されます。
UNIXを扱う上での基礎知識

この例では、'date'というコマンドを実行しています。これにより、コンピュータは'date'という指示を受け、その結果'Sun Feb 12 22:11:48 JST 2006'を返します。結果は、この場合画面に表示されているが、正常に処理が行われた場合に何も表示しないコマンドも多い。
UNIXを扱う上での基礎知識

コマンド名に続けて文字列をスペースで区切って記述することで、コマンドに付加的な指示を渡すことができます。このような付加的な文字列を引数と呼ぶ。引数がどのように解釈されるかはコマンドによって異なるが、よくある使いかたとして、コマンドの挙動を変更するためのオプションとして使うというものがあります。オプションは、通常'-'に続けた一字のアルファベットでオプションによって追加のパラメータを取ります。
UNIXを扱う上での基礎知識

この例では、'date'というコマンドに'-u’というオプションを付けています。これによりdateコマンドの動作は変更されています。この場合は、dateコマンドの仕様に従い、ローカルマシンの時刻からUTC(協定世界時)へと表示される時刻が切り替えられています。
UNIXを扱う上での基礎知識

また、コマンドには、引数として操作対象を受け取るものがあります。
UNIXを扱う上での基礎知識

この例では、'rm'というコマンドに'test.txt'というファイルを指示しています。これにより、'rm'というコマンドを通じて、'test.txt'というファイルを操作します。'rm'というコマンドはファイルを消去するので、この場合はtest.txtが消去されます。
UNIXを扱う上での基礎知識

多くのコマンドは、無効なオプションを渡すと、機能の一覧が表示されます。
UNIXを扱う上での基礎知識

シェルとは、コンピュータに対して指示を出す際に利用される対話プログラムです。コンピュータにコマンドを入力するとき、実際にはシェルに対して入力しています。シェルは入力されたコマンドを解釈し、実行します。シェルは複数開発されており、どのシェルを適用しているかによって、コマンドの表現方法が違ったり、同じ意味でもコマンド自体が違ったりする場合もあります。
UNIXを扱う上での基礎知識

Bシェル( /bin/sh )、ash、dash、ksh、bash、zsh、csh、tcshなどがあります。Linuxの各ディストリビューションでは、bashをデフォルトのシェルを採用してい場合が多いですが、dash を採用しているディストリビューションも見受けられます。
UNIXを扱う上での基礎知識

コマンドが実行されるとき、コマンドには必ず入出力のための三つの経路、標準入力、標準出力、標準エラー出力が割り当てられます。コマンドは必要に応じてこれらの経路から入力を受け取ったり、出力を書き出したりします。この三つの経路を総称して標準入出力といいます。
UNIXを扱う上での基礎知識

例えば、上記のdateの例で、dateコマンドの出力内容が画面に表示されたが、実はこの時の出力は標準出力に送られています。上記では標準出力の行き先が画面だったため、結果として画面に表示された。
UNIXを扱う上での基礎知識

標準入出力の行き先は必要に応じて変更することができます。
UNIXを扱う上での基礎知識

コマンドとして入力する文字は date > date.txt の部分です。
UNIXを扱う上での基礎知識

このコマンドの内容として、>以降は標準出力の行き先をdate.txtというファイルに切り替える指示です。このようにすると、dateコマンドの結果は画面に表示される代わりにdate.txtというファイルに出力されるので、日時を記録したdate.txtというファイルができることになります。このように標準入出力の行き先を変更することをリダイレクトと呼ぶ。なお、「> date.txt」の部分はシェルへの指示であって、コマンドに渡される引数ではないことに注意してほしい。
UNIXを扱う上での基礎知識

標準入力を使うコマンドの例も見てみましょう。wcは、標準入力から受け取ったテキストの行数・語数・バイト数を標準出力に書き出すコマンドです。
UNIXを扱う上での基礎知識

この例ではwcの標準入力はキーボードなので、コマンドを実行するとコンピュータはキーボードからの入力を待つ。そこでテキストをタイプし(この例では3行のテキストを入力した)、入力を終えます(これには通常Ctrl-dを押せば良い)と、次の行にwcコマンドの出力が表示されます。 Ctrl-dとはCtrlキーを押しながらdキーを押すことです。
UNIXを扱う上での基礎知識

標準入力も標準出力と同様にリダイレクトすることができます。例えば、test.txtというテキストファイルの行数を数えるには次のようなコマンドを使えば良い。
UNIXを扱う上での基礎知識

さらに、あるコマンドの標準出力を別のコマンドの標準入力につなげることもできます。これはパイプと呼ばれます。
UNIXを扱う上での基礎知識

この例では、パイプを使ってdateコマンドの出力の行数・単語数・バイト数を数えています。
UNIXを扱う上での基礎知識

パイプやリダイレクトを使うと、限られたコマンドで自在に多様な操作を行うことができます。
UNIXを扱う上での基礎知識

シェルはコマンドインタープリターと呼ばれるように、言語インタープリターの一種で、変数を使うことが出来ます。
UNIXを扱う上での基礎知識

csh では、プロンプトが % であること、代入に set を前置することが bash との違いです。
UNIXを扱う上での基礎知識

いま使ってシェルが何かは、環境変数SHELLにセットされているので
UNIXを扱う上での基礎知識

の様に確認できます。
UNIXを扱う上での基礎知識

環境変数は、名前と結びついた動的な名前と値のペアで、プロセスの挙動・設定を変更するために用います。 環境変数は、プロセスが実行される環境の一部です。
UNIXを扱う上での基礎知識

例えば
UNIXを扱う上での基礎知識

といった情報に該当する環境変数を変えることで情報を書き換えることができます。 ただし使用しているシェルによって設定方法は異なります。
UNIXを扱う上での基礎知識

例えば、ロケール (LANG) を日本語日本国UTF-8 (ja_JP.UTF-8) としたい場合は
UNIXを扱う上での基礎知識

通常、環境変数は、全て大文字で、環境変数を設定、取消しするコマンドはシェルによって異なります。
UNIXを扱う上での基礎知識

なんらかの環境変数を確認するには、printenv(1) を使います。
UNIXを扱う上での基礎知識

たとえば、ロケール(LANG)を調べたいなら
UNIXを扱う上での基礎知識

環境変数を指定して実行する方法も bsh 系と csh 系で異なります。
UNIXを扱う上での基礎知識

UNIXは、マルチユーザーシステムであり、ひとつの計算機を複数のユーザーで同時に利用することが可能です。計算機には、そのシステムを利用する権限のあるユーザそれぞれについてユーザー名とパスワードなどの認証情報を始めとするユーザー情報は登録・管理されています。計算機を利用する際は、はじめに自分のユーザー名とパスワードを入力し認証しなければなりません。これをログインといいます。ログインには、計算機に対し、あるユーザーが利用を開始したということを表明する働きがあります。同様に、利用を終了することを表明する手続きは、ログアウトと呼ばれます。自分が今どのユーザーとしてログインしているかを知るには、whoamiというコマンドを使います(whoコマンドにオプションを与えwho am iとしても類似の結果が得られますが、細部が異なります。)。
UNIXを扱う上での基礎知識

それぞれのユーザーは、私用のためのディレクトリを一個割り当てられます。これはホームディレクトリとよばれ、Filesystem Hierarchy Standard に従っていれば、 /home/${ユーザー名} ですが、root はこれの例外です。ホームディレクトリには、個人に属するデータの他、アプリケーションの個人用設定ファイルなどを置くことができます。これらのファイルは、所有権が自分に属するため、後述するパーミッションによって、他のユーザーが勝手に変更を加えることができなくできます。
UNIXを扱う上での基礎知識

特定の複数のユーザーにのみなんらかの権限を与えたいときにはグループが用いられます。たとえば、あるファイルをグループ所有にして、そのグループの一員にのみ閲覧を許す、といったことができます。BSDによる拡張がサポートされていれば、一人のユーザーが複数のグループに属することが可能です。
UNIXを扱う上での基礎知識

UNIXシステムには管理者の役割をするユーザー(スーパーユーザー)があり、名前は root で uid は 0 でグループ wheel(gid:0) に属しています。 root は、デバイス・ファイル・プロセスなど全てのコンピュータ資源に対する権限をもっています。 rootでの誤操作はシステム破壊に直結するため、自分がシステムの管理者であっても、別に一般ユーザーを作成し、root権限が必要な場合を除いて一般ユーザーで作業しなければいけません。
UNIXを扱う上での基礎知識

ファイルやディレクトリについてのアクセスの権限をパーミッションといいます。パーミッションを設定することで、例えばファイルを特定のユーザーにしか閲覧できなくしたり、あらゆるユーザーが閲覧できるようにしたりすることができます。
UNIXを扱う上での基礎知識

全てのファイルには所有者と所有グループが決まっており、これに従ってアクセス権限が分けられます。すなわち、所有者、所有グループの一員、その他のユーザー、という三区分に対して独立に権限を設定することができます。設定可能な権限は以下の三つです。
UNIXを扱う上での基礎知識

ファイルの消去に必要な権限は、そのファイルへの書き込み権限ではなく、そのファイルの置かれているディレクトリへの書き込み権限であることに注意してほしい。
UNIXを扱う上での基礎知識

ファイルのパーミッションは、lsコマンドに'-l'というオプションを付加することで確認できます。この場合、パーミッションは次のような表記で表されます。
UNIXを扱う上での基礎知識

この記法は、左から三文字ずつ、所有者、所有グループの一員、その他のユーザー、に対応しています。アルファベットは対応する権限があることを示し、-は対応する権限がないことを示す。この例では、このファイルもしくはディレクトリに対して、「所有者」はrwxすなわち「閲覧、書き込み、実行可能」、「所有グループの一員」はr-xで「閲覧、実行可能」、「その他」は--xで「実行可能」ということになります。
UNIXを扱う上での基礎知識

また、三桁の八進数の数値でパーミッションを表すこともあります。この場合、三つの桁は、左から所有者、所有グループの一員、その他を表す。個々の数字は三種類の権限の有無を二進法で読んだものです。例えば、r-xは二進数に置き換えると101、八進数にすると5です。
UNIXを扱う上での基礎知識

最初の例にあるrwxr-x--xなら、計算すると751です。
よく用いられるコマンド

ここでは、UNIXを扱う上で非常によく用いられるコマンドについてまとめます。これらのコマンドは実際にはシェルの機能ではなく、一つのアプリケーションであることに注意が必要です。しかし、これらのコマンドは通常シェルから起動されることから、これらをシェルのコマンドと呼ぶことが多い。
よく用いられるコマンド

cdは、カレントディレクトリーを変更するコマンドです。 cdは、 change current working directory の略です。 cd はファイルシステム上に実行ファイルのある外部コマンドではなく、シェルの内部コマンドです。
よく用いられるコマンド

manは、UNIXで標準的に用いられるヘルプシステムです。manはターミナル上で全ての情報を表示することを条件として作られているため、色使いなどがあまり現代的ではない面があります。しかし、表示される情報には有用なものが多いため、たびたび用いることになるでしょう。特に個々のコマンドの細かいオプションを記憶することは現実的ではないため、機能だけを覚えておき、オプションはそのつどmanで調べるのが現実的でしょう。
よく用いられるコマンド

このコマンドは、
よく用いられるコマンド

として用いられます。manのファイルはいくつかのカテゴリーに分類されており、それらのカテゴリーには1から8の番号が付けられています。manは、対応するコマンド名が存在するかどうかを、1から順に調べていき、最初に見付かったものを表示します。そのため、同じ名前のmanが若い番号に存在するときには、後に保存されているmanは読むことができありません。このときには、見たいmanの番号を調べ、
よく用いられるコマンド

のように書く必要があります。また、
よく用いられるコマンド

のようにコマンドを用いると、コマンド名に対応するmanを全て順に表示するので、こちらを用いてもよい。
よく用いられるコマンド

manがmanページを探すディレクトリは、環境変数MANPATHに記憶されています。これは、多くの場合 /usr/share/manなどであり、ここにはシステムで用意されているmanページのほとんどが保存されています。システムに興味がある場合はこれらに目を通すとよい。
よく用いられるコマンド

whatis は、コマンド名あるいはコマンドの機能をおぼろげに覚えているときに使います。
よく用いられるコマンド

info は、GNU で用いられるコマンドラインインタフェースで動作するハイパーテキストのヘルプビューアです。
よく用いられるコマンド

として用います。
よく用いられるコマンド

bash のドキュメントが読みたいのであれば
よく用いられるコマンド

とします。
よく用いられるコマンド

infoは、texinfoプログラムによって生成された.infoファイルを読み込み、ドキュメントをツリーとして表示し、ツリーを横断したり、クロスリファレンスをたどったりするための簡単なコマンドを提供しします。
よく用いられるコマンド

基本操作
よく用いられるコマンド

dateは、現在の日付と時刻を返すコマンドです。dateコマンドは、日付を設定する目的でも用いることができます。
よく用いられるコマンド

dateも、システムのロケールによって、表示を変えます。
よく用いられるコマンド

suは、一時的に管理者権限を手に入れたいときに使う。設定ファイルを書き換える時など管理者権限が必要なときに用いられます。
よく用いられるコマンド

sudoのあとに管理者権限で実行したいコマンドを書く
よく用いられるコマンド

まず、閲覧したいテキストファイルのある場所まで、cdコマンド(シェルのディレクトリ移動のコマンド)で移動します。
よく用いられるコマンド

ファイルを表示する場合、
よく用いられるコマンド

などのコマンドがあります。
よく用いられるコマンド

これらのコマンドの内容の違いは、テキストファイルを表示するさいに、一括で出力するか、それとも段階的に出力していくかといった、違いです。
よく用いられるコマンド

つまり
よく用いられるコマンド

の書式です。
よく用いられるコマンド

moreでは、大きなテキストの場合には段階的に、冒頭から出力していく。表示しているテキストの続を見たい場合はエンターキーを押すなどすると、続きが表示されます。
よく用いられるコマンド

大きなテキストの場合には段階的に、冒頭から出力していく。
よく用いられるコマンド

表示しているテキストの続を見たい場合は
よく用いられるコマンド

また、長い標準出力を見るのにも使う
よく用いられるコマンド

ファイルの内容を最後まで表示します。複数のファイルが指定された場合にはそれらのファイルを続けて表示します。
よく用いられるコマンド

sample.txtとbbbの内容を連続して標準出力に出力します。
よく用いられるコマンド

trは、ファイル中の特定の文字列を置き換える働きをします。
よく用いられるコマンド

cutはファイル内である列を取り出す。列の内容はオプションによって指定でき、-cオプションでは文字数が指定されます。一方、-fオプションでは-dオプションで指定されるデリミタによって分割されるフィールドが使われます。
よく用いられるコマンド

lsとだけコマンド入力した場合には、カレントディレクトリの中身を記述します。作成したファイルやディレクトリが実際にディレクトリ内に存在するかどうかを確かめるために用いることができます。
よく用いられるコマンド

lsにはいくつものオプションがあるが、よく用いるものをまとめます。-lは、ファイルやディレクトリについてより詳細な情報を与えます。情報は、パーミッション、ファイルサイズ、作成者、作成された時間、最後に変更された時間などです。実用上は、-lだけではなく、-hもつけるとファイルサイズが人間にとって読みやすい形でかかれるため、使いやすくなります。
よく用いられるコマンド

-a は、ディレクトリ内にある全てのファイルを表示します。通常のlsでは、最初が.から始まるファイルやディレクトリは表示されありません。これは、設定ファイルやアプリケーションが内部的に用いるファイルが毎回表示されると場所塞ぎだからです。これらが存在するかどうかを調べるためには、明示的に-aオプションを用いる必要があります。
よく用いられるコマンド

-Rオプションは、ディレクトリを再帰的に降下してファイルを表示します。再帰的とは、ファイルが存在すればそれを表示し、ディレクトリが存在すればそのディレクトリに移動し、再びls -Rと同じ作業を行うという意味です。結局カレントディレクトリ以下に置かれているファイルが全て表示されます。大きなディレクトリ内でこれを実行すると結果を得るのに時間がかかるため、控えた方がよいでしょう。しかし、探したいファイルがあるときにはこれを使うのがよいでしょう。
よく用いられるコマンド

このようなファイルシステムの階層は、Filesystem Hierarchy Standardで標準規格化されており、 man hier で参照できます。
よく用いられるコマンド

cpは、ファイルをコピーするコマンドです。cpの使い方は、
よく用いられるコマンド

となります。
よく用いられるコマンド

cpもいくつかのオプションを持つ。-iは、コピー先のファイルが存在するときにそのファイルを上書きするかどうか尋ねるようにするオプションです。このオプションが無いときには、cpはコピー先のファイルを勝手に消去し、その上に指定されたファイルを上書きします。この振舞いはしばしば重大な失敗をひき起こすため、-iオプションはできる限り常に用いるようにした方がよいでしょう。システムによっては、エイリアスなどの機能を駆使して、これらの振舞いが通常となるように設定している場合もあります。
よく用いられるコマンド

しかし、システムを過信せず、自分で気をつける方が望ましい。-fオプションはこの反対で、-iオプションが付けられていたとしても上書きの前に注意を促さないよう動作させます。これは多くのファイルを上書きする際に、通常の振舞いが-iオプションありであったときには非常に不便であることから用いられます。-Rオプションは、指定されたディレクトリを再帰的にコピーします。この機能はよく用いられるが、似た振舞いを持つコマンドとしてtarがあり、また新しいファイルの多くがtarファイルで供給されることを考えると、それほど使わずに済むかも知れありません。
よく用いられるコマンド

カレントディレクトリ内にあるsample.txtというファイルを、documentsディレクトリ内にコピーします。-iオプションがあるため既にdocuments内に同名のファイルがあったときには警告が表示されます。
よく用いられるコマンド

mvは、cpと違い指定されたファイルを指定された場所に移動するコマンドです。移動された元のファイルは消去されます。mvは次のように用いられます。
よく用いられるコマンド

mvにも-iと-fのオプションがあります。これらの動作は、cpの対応物と同じです。mvはファイル名を変更する場合にも用いられます。すなわち、AというファイルをBという名に変更するときは、AをBに移動すると考えmv A Bを使用します。
よく用いられるコマンド

rmは、指定したファイルを消去するコマンドです。GUIの'ゴミ箱'と違い一度消去したファイルは取り戻せないので、注意が必要です。不測の事態を避けるために、作成したファイルはこまめにバックアップを行うことが望ましい。バックアップにはtarコマンドなどが多く用いられるが、この使い方は後述します。rmコマンドは
よく用いられるコマンド

として用います。
よく用いられるコマンド

rmもcpやmvとおなじ-iと-fコマンドを持つ。不測の事態を避けるため、-iは常に用いることを推奨します。rmコマンドは再帰的に消去を行う-Rオプションを持つ(-rオプションも同じ意味であります)。大きなディレクトリを消去するときには、このオプションは事実上必須であるが、強い効果を持つコマンドなので、使用時には細心の注意が必要です。
よく用いられるコマンド

rmのよくある失敗例は、.から始まるファイルを全て消去しようとして、
よく用いられるコマンド

とすることです。.*は、..(親ディレクトリ)も含むため、これは親ディレクトリ以下に含まれるファイルを全て消去するコマンドになってしまう。そのため、このようなコマンドを行うことは絶対に避けねばなりません。このときにも-iオプションをつければ消去を行う前に警告が出るので、危険が少なくなります。
よく用いられるコマンド

mkdirは、、ディレクトリを作成するコマンドです。
よく用いられるコマンド

rmdirは、、ディレクトリを消去するコマンドです。
よく用いられるコマンド

pwd(1)はカレントディレクトリの絶対パスを表示します。
よく用いられるコマンド

touchは、、指定されたファイルの更新日時を変更します。指定されたファイルが存在しないとき、touchは、ファイルを作成します。ファイルが存在した場合はタイムスタンプを更新します。一度に複数のファイルを作成することもできます。
よく用いられるコマンド

ファイルのハードリンクあるいはシンボリックリンクを作ります。
よく用いられるコマンド

リンクは、Unixのファイルシステムに固有の機能で、ファイルにはパスと内容(データとメタデータの総体)がある、複数のパスが同じ内容を示すことができます。
よく用いられるコマンド

正規表現はあるルールで指定される文字列の集合のことを指す。正規表現を用いて複数のファイルを指定したり、文書中から当てはまる文字列を検索することができます。正規表現自体はあらゆるOS上で利用される技術ですが、特にUNIXのシェルには正規表現を用いる技術が多くあるのでここでまとめます。
よく用いられるコマンド

正規表現は複数の文字列が当てはまる'性質'を示す事ができます。例えば、a,aa,aaa,aaaa,... などの文字列はaが連続的に並ぶという性質を持っています。このような名前のファイルを同時に消去したいときには、aが連続的に並ぶという性質を指定できると便利です。egrepやPerl等の正規表現を扱えるソフトでは、この集合を^a+$と指定することができます。ここでは正規表現について詳しくは触れないので、詳しい情報は、'詳説 正規表現(オライリージャパン)'などを参照して欲しい。
よく用いられるコマンド

grepは、ある正規表現とファイルを指定して、その正規表現に当てはまる行をファイル中から取り出す。
よく用いられるコマンド

のように用います。(文中にaaaという文字列を含む)f.txtの内容が
よく用いられるコマンド

なら、
よく用いられるコマンド

が出力されます。正規表現が^ddd(行がdddで始まます)だったときには、当てはまる行が無いので何も出力されません。ddd$(行がdddで終ます)では、
よく用いられるコマンド

が出力されます。
よく用いられるコマンド

findは、ディレクトリを再帰的に降下し、条件に当てはまるファイルを見付けるコマンドです。findの書式は非常に複雑になるので、詳細についてはここでは触れありません。対応するmanなどを参照。
よく用いられるコマンド

条件無しにカレントディレクトリ以下のファイルを表示します。
よく用いられるコマンド

カレントディレクトリ以下のファイルで名前がf.txtのファイルを表示します。nameオプションには glob を用いることができます。例えば、
よく用いられるコマンド

は、fではじまり.txtで終わるファイル(file.txt, ffff.txt, ...などがあてはまます)を探す。 シングルクォーテーション(')で囲んでいるのは、カレントディレクトリにある f*.txt とのマッチングを行わせないため。
シェルスクリプト

上のコマンドの例では、コマンドは全て1つずつ入力され、 それぞれのコマンド実行に対してそれぞれの結果が返ってきた。 このように上記の例ではすべてシェルを対話的に扱ってきたが、 あらかじめシェルに実行させたいコマンドをファイルに書いておき、 これをまとめてシェルに実行させることも可能です。 このコマンドを書いたファイルをシェルスクリプトと呼ぶ。
シェルスクリプト

シェルスクリプトの書き方はシェルの種類によって異なるので、 以下ではLinuxやMac OS Xの標準のシェルであるbash (Bourne Again Shell) を例にとって説明します。
シェルスクリプト

シェルスクリプトとは言っても、基本的にはコマンドを書き並べたものです。
シェルスクリプト

たとえば、テキストエディタの新規ファイルに上記をコピーペーストして、これをたとえば「test.sh」という名前でカレントディレクトリに保存します。
シェルスクリプト

このファイルを実行可能にします。
シェルスクリプト

実行するには、コマンドラインで
シェルスクリプト

とコマンドすればいいです。
シェルスクリプト

なお、上記コードは、「はじめにhelloと表示し、次にOSの名前を表示する」シェルスクリプトです。
シェルスクリプト

1行目のコメントには特殊な意味があるので後述します(Shebang!)。
プロセス管理

UNIXでは複数のプロセスを同時に動かせます。ここでは、実際に複数のプロセスを動かす方法を述べます。プロセスは互いに独立で、通常は別のプロセスの動作にかかわり無く動く。そのため、他のプロセスの動作を制御したいときには、シグナルを利用する必要があります。シグナルは、他のプロセスに送ることができ、プロセスを中断する等の効果があります。
プロセス管理

&は、コマンドの後につけてそれをバックグラウンドで動かす機能があります。これは複数のプロセスを起動したい時に用いられます。
プロセス管理

X Window Systemの起動中に新たな端末を開くときに用られます。xterm自体も1つのX Window Systemにおけるクライアントアプリケーションです。
プロセス管理

シグナルに対する応答は、プログラム中で書き換えることができます。次の例では、INTシグナルに対する応答を書き換えています。
プロセス管理

別のシェルから、
プロセス管理

とすると、./a.out を実行していたターミナルに catch SIGINT が表示されます。 ここでは分かりやすさのためにsignal()関数を用いたが、実用的なプログラムを作る際にはsignal()関数ではなくsigaction()関数を使うべきです。
プロセス管理

psは、現在実行されているプロセスを表示します。
プロセス管理

現在自分が実行しているプロセスを表示します。
プロセス管理

自分だけでなく他のユーザーが実行したプロセスも表示します。このオプションは、デーモンプロセスを見るためによく用いられます。
プロセス管理

killは、、他のプロセスにシグナルを送るコマンドです。killはプロセスID(pid)を引数としてとるので、シグナルを送りたいプロセスがあるときには、あらかじめpsコマンドなどを用いてpidを手に入れておく必要があります。
プロセス管理

プロセスID3456に、TERMシグナルを送ます。TERMシグナルは送るシグナルを指定しなかった時に使われるシグナルです。
プロセス管理

プロセスID3456に、INTシグナルを送ます。送るシグナルは-(シグナル名)で指定することができます。実際に指定できるシグナルについては、$ man killを参照すること。
プロセス管理

bashには、ビルトインコマンドの1つとしてkillがあります。このため、killが実行ファイルとして存在したとしても、実際に実行されるのはビルトインコマンドの方です。
プロセス管理

はjobsで表示されるプロセスにシグナルを送ます。しかし、
プロセス管理

は、
プロセス管理

psmiscに含まれるkillallは、プロセスIDではなく、プロセスの名称を用いてシグナルを送ることができます。
プロセス管理

a.outは、(おそらく)Cプログラムの実行ファイルです。自作したプログラムにシグナルを送るときに用います。
プロセス管理

シェルが、複数のプロセスやプロセスグループを管理する機能を、ジョブコントロールと言います。 ジョブコントロールは、BSD Unix上の csh に実装されました。 jobsは、シェルのbuiltinコマンドで、bashを使っているなら、$ man bash内にjobsのmanも置かれています。jobsは、現在自分が動かしているプロセスを表示します。
プロセス管理

topは、、動いているプロセスを指定された順序で並びかえ、一定時間毎に表示します。
デバイスファイル

デバイスファイルはコンピュータに接続された機器にアクセスするためのファイルです。デバイスファイルは、デバイスへのインターフェースでありデバイスそのものではないため、デバイスファイルを削除しても(通常は)問題がありません。例えば、/dev/hda1を削除しても、ハードディスクの中身が消えることはありません。
デバイスファイル

また、デバイスファイルはたいてい/dev以下に置かれるが、それ以外の場所においても同じように扱うことができます。ただし、デバイスファイルはデバイスの識別のためにメジャー番号とマイナー番号を持っているため、それらはデバイス毎に使い分ける必要があります。
デバイスファイル

デバイスファイルを作成するには、mknodコマンドを用います。mknodは作成するファイルの名称、メジャー番号、マイナー番号、デバイスの種類を指定して作られます。デバイスの種類とは、b:ブロック型、c:キャラクタ型のどちらかです。 -->
エディタ

慣用的に、シェルで、テキストファイルを作成、編集するためのソフトウェアのことが、単に「エディタ」と呼ばれています。UNIXの設定ファイルはほとんどがテキストファイルであるため、エディタの重要性は大きい。
エディタ

viは広く用いられるUNIXのテキストエディタです。viはほとんど全てのシステムで用意されているため、基本的な設定ファイルの記述にはこのエディタが用いられることが多い。ただし、動作が他のエディタとは異なっているため、その使用には好みがわかれるエディタでもあります。
エディタ

実際に、vi とタイプして起動されるコマンドは、nvi であったり vim のような互換エディタであることが多いです。
Xウィンドウシステム

XウィンドウシステムはUNIX上でGUIを実現するためによく用いられるプログラムです。
Linuxとは

Linuxとは、1991年にフィンランドのプログラマ リーナス・トーバルズがヘルシンキ大学在学中にMinixより優れたMinixを作るために立ち上げたプロジェクトで開発しGPLで公開したLinuxカーネルを元にしているOSです。 公開当初は、とても貧弱であったが、すぐにハッカー達の支持を受け利用者を増やしていった。安価で手軽にUNIXと類似の環境を得られることからインターネット・サーバとして頻繁に利用されるようになってきた。
Linuxとは

Linuxはカーネルしかなく、Linuxのみで動かすことは出来なかった。しかし、フリーなオペレーティングシステムを作ることを目的としていたGNUプロジェクトは、カーネルや、一部のデーモンなど以外をフリーなソフトウェアとして完成させてていた。GNUのglibcやBash、その他の多くのコマンドといった主要なソフトウェアとLinuxにのカーネルを組合わせることで、実際に動かして使うことのできるオペレーティングシステムを作ることが出来ました。そのため、LinuxのカーネルとBashやglibc、gcc、などといった主要なソフトウェアを合わせてGNU/Linuxと呼ぶこともあり、GNUプロジェクトなどは推奨しています。 Linuxに収められているソフトの多くは、GNUのGPLやLGPLといったライセンスで配布されています。
Linuxとは

Linux ディストリビューション[a](しばしばディストロと略されます)は、Linux カーネルと、多くの場合パッケージ管理システムを含むソフトウェアの集合体から作られたオペレーティング・システムです。 Linuxユーザーは通常、Linuxディストリビューションの1つをダウンロードしてOSを入手する。 パッケージ管理システムは、後述しますが、Debian系ではDEB、RedHat系ではRPMが主に使われます。
Linuxとは

ディストリビューションの系統として主にパッケージ管理システムの違いによって3種に分類されるが、どれにも属さないものもあります。
Linuxとは

よく使用されているディストリビューションを以下に挙げます。
Linuxとは

UNIX上で動くGUI環境に、X Window Systemがあります。これは、サーバー / クライアント方式でグラフィカルな環境を提供するもので、通常はこの上に各種ツールキットを使ってGUI環境を構築します。
Linuxとは

昔は、ツールキットや、デスクトップ環境、各種ソフトウェアが別々に配布されており、デスクトップの環境を作るのが大変でした。それを解決するものとして、ツールキット、デスクトップ環境、各種ソフトウェアなどをまとめて、統合デスクトップ環境というものが作られた。
Linuxとは

主な統合デスクトップ環境にGNOME、KDE、LXDE、Xfce、Window Makerなどがあり、ツールキットはGNOME系では主にGtk、KDE系では主にQt、が使われ、他にもwxWidgetなどがあります。これらを使ってグラフィカルなアプリケーションを作成出来ます。
Linuxとは

特にGNOME、KDEは、テキストエディタやファイルマネージャー、オフィスアプリケーションなどの周辺アプリケーションもあわせて提供されており、まとめて導入することによって、WindowsやMac OSなどといった先行するオペレーティングシステムに負けない程度の環境を作ることが出来ます。現在はGNOMEが優勢で、他にもとても軽量なLXDEなどを使う人も増えています。