Linuxコマンドの操作方法を説明します。前回は,ファイルやディレクトリの操作,コマンド履歴や入力補完を紹介しました。今回はコマンドを実行するときに知っておくべき,パス指定,ユーザー権限,パーミッションを中心に説明します。
前回に引き続き,Linuxコマンドの操作方法を説明します。前回は,ファイルやディレクトリの操作,コマンド履歴や入力補完を紹介しました。
今回はコマンドを実行するときに知っておくべき,パス指定,ユーザー権限,パーミッションを中心に説明します。
コマンドとパス
ユーザーがコマンドを入力して[Enter]キーを押すと,コマンドが実行され,処理結果が表示されます。コマンド入力を受け付けて処理を実行するプログラムを「シェル(shell)」といいます。
UbuntuやFedoraをはじめとする多くのLinuxディストリビューションでは,「bash」というシェルが標準的に使われています。
コマンドには,bash自体に内蔵されている「組み込みコマンド」と,実行ファイルとしてシステム内に存在している「外部コマンド」があります。外部コマンドの多くは実行プログラムであり,/bin(図1),/sbin,/usr/bin,/usr/sbinといったディレクトリに格納されています。
|
図1●/binディレクトリ内のファイル一覧(例) |
lsやcatなどの前回に紹介した多くのコマンドが,/binディレクトリ以下にあるのが見てとれます。ディレクトリの場所を表す方法は,絶対パスと相対パスの2つがあると前回説明しました。コマンドの絶対パスを調べるには,whichコマンドを使います(図2)。
|
図2●lsコマンドの絶対パスを調べる |
コマンドが配置されているディレクトリは,環境変数PATHに格納されています(これをコマンドサーチパスと呼びます)。環境変数には,システムで利用される各種パラメータが格納されています。環境変数PATHの内容は,図3のようにして調べることが可能です。
|
図3●環境変数PATHの内容を表示する |
ユーザーがコマンドを入力すると,シェルはPATHに列挙されたディレクトリ内を順に調べていき,コマンド名と同じ名前のファイルがあれば,それを実行します。つまり,PATHに列挙されていない(パスが通っていない)ディレクトリ内にあるコマンドは,そのままではコマンドとして認識されません。
パスが通っていなくて認識されないコマンドを実行するには,絶対パスを使って指定します。例えば,PATH内に/sbinディレクトリが登録されていない場合,/sbin/ifconfigを実行するには図4のようにします。
|
図4●絶対パスを使ってifconfigコマンドを指定する |
リダイレクトとパイプ
コマンドの実行結果は画面上に表示されますが,出力先をファイルに切り替えることもできます。これをリダイレクト(リダイレクション)といいます。
出力先のリダイレクトには,「>(実際には,半角)」記号を使います。図5の例では,calコマンドの実行結果をcalendar.txtファイルに保存しています。calendar.txtファイルがない場合は新しく作成されます。
|
図5●calコマンドの実行結果をcalendar.txtファイルに保存する |
calコマンドの実行結果はcalendar.txtファイルに書き込まれ,画面上には何も表示されません。ファイルの中を確認してみます(図6)。
|
図6●calendar.txtファイルの内容を表示する |
なお,リダイレクトで指定したファイルがすでに存在する場合は,ファイルの内容は上書きされてしまいます。ファイルの内容を消さずに,コマンドの実行結果を追記したい場合は,「>(実際には,半角)」の代わりに「>>(同)」を使ってください。ファイルの末尾に追記されます。
コマンドの実行結果を別のコマンドに渡して処理をすることもできます。そのためにはパイプ「|」を使います。図7に示す例を見てみましょう。
|
図7●パイプの使用例 |
/etcディレクトリ内にはファイルがたくさんあるので,lsコマンドの実行結果はスクロールしてしまいます。そこでパイプを利用して実行結果をlessコマンドに送ると,1画面ずつ表示できるわけです。
LinuxなどのUNIX系OSでは,シンプルな動作のコマンドをパイプで任意に組み合わせることで,目的とする処理を実現しています。なお,リダイレクトやパイプは,シェルが備えている機能です。