標準的入出力とは?
標準入力、標準出力、標準エラー出力の3つを合わせて、標準入出力と呼びます。
まずは、入力と出力を見ていきます。
出力は、コマンドやプログムの実行結果を外に向かって出すことを言います。入力は、キーボードから入力したものをコンピューターに引き渡すことを言います。
では標準とはなんでしょうか?
入力元と出力先は、指定することで変更することができますが、特に指定がないままだと、デフォルトつまり標準が適用されますが、そのデフォルトの設定が、入力は「キーボード」で出力は「ディスプレイ」になります。
最後に、標準エラー出力は入力によってコマンドを実行した後に、エラーが出た場合は、標準出力ではなく、エラーメッセージを返す出力をすることです。例えば、Webサービス上でエラーが起こり、それがWeb画面上にユーザーにエラー出力をするのではなく、エラーは全てLog上で管理するなどです。
Linuxでは、コマンドの入出力先を抽象化することで、入出力先を柔軟に変更できます。つまり、コマンドの結果を別な入力コマンドに置き換えることもできる上に、コマンドを組み合わせることによって、複雑な処理を実現することも可能です。
リダイレクト
リダイレクトは、入出力先を変更する機能になります。
入力のリダイレクト
/etc/hostsファイルを入力元にしてcatコマンドを実行する例。
$ cat < /etc/hosts
出力のリダイレクト
lsコマンドの出力先をls.txtと言うファイルに保存する例。
$ ls > ls.txt
エラー出力のリダイレクト
エラー結果を画面上に表示するのではなく、ファイルに保存する例。
$ ls /hoge 2> error.txt
エラーを出力には「2>」を使いますが、他にも標準入出力をOSが識別するための識別子が存在します。
入出力 | 数値 |
---|---|
入出力 | 0 |
標準出力 | 1 |
標準エラー出力 | 2 |
Linuxには、出力とエラー出力をまとめることができます。以下のようにすることで、lsコマンドの出力結果とエラー出力を、output.txt内に保存します。
$ ls / /hoge > output.txt 2>&1
また、リダイレクトで追記することもでき、「>」でファイルの上書きをし、「>>」でファイルに追記を行います。
$ echo Hello >> output.txt
パイプライン
複数のコマンドを連携させるコマンドです。コマンドの標準出力を別のコマンドの標準入力に繋げることができます。
$ ls /bin | less
「ls /bin」の出力結果を「less」に引き渡していることを表しています。これによって、/bin以下のファイルやディレクトリ一覧をlessコマンド表示で見ることができます。
パーミッション
ファイルの権限を付与、制限を行うことです。
Linuxには、複数のユーザーがログインして作業することが前提として作られているため、管理者と一般ユーザーといったようにユーザーによって、アクセス権限を制限することで、システムを安全に管理することができます。
権限と管理
ファイル全てに、権限を管理することができます。オーナー(ファイル所有者)とグループ(ファイル所有グループ)が設定できます。オーナーは、ファイルそれぞれに、ユーザー権限を与えるのに対し、グループはあらかじめアクセスを制限したグループを作成した後に、ユーザーをそのグループに追加していくなどといった、使い方ができるため、複数のユーザーを一括で管理することができます。
(確認方法)
$ ls -l /etc/less
-rwxr-xr-x. 1 root root 158240 7月 31 2015 /bin/less
「ls -l」コマンドを実行することによって、最初のrootがオーナーを示しており、2番目のrootがグループになります。
また、上記のパーミッションも確認していきます。
「-」 ・・・ ファイルタイプ(今回はファイル)
※「d」ならディレクトリ、「l」ならシンボリックリンクを表します
「rwx」 ・・・ オーナーのパーミッション
「r-x」 ・・・ グループのパーミッション
「r-x」 ・・・ その他のユーザーのパーミッション
rは読み取り、wは書き込み、xは実行を表しています。
ファイルやディレクトリの権限の設定
権限の設定を行うのに、Linuxには「chmod」コマンドが用意されています。権限の設定の際には、ユーザーもしくわグループといった権限の対象、そして権限の追加や削除といった権限の有無の指定が必要になります。
(権限の対象)
記号 | 内容 |
---|---|
u | オーナーの権限 |
g | グループの権限 |
o | その他のユーザーの権限 |
a | 全ユーザーの権限 |
(権限の有無)
記号 | 内容 |
---|---|
+ | 権限を追加 |
- | 権限を削除 |
= | 記述した権限にする |
(例)
$ chmod u+r file
このコマンドによって「file」のオーナーに、読み取り権限を付与することを意味します。
またパーミッションは、8進数の数字でも表すことができます。
パーミッション | 数値 |
---|---|
r(読み取り) | 4 |
w(書き込み) | 2 |
x(実行) | 1 |
(例)
$ chmod 755 file
「file」のオーナーに「rwx」、グループに「r-x」、その他のユーザーに「r-x」の権限を設定することを意味しています。
スーパーユーザー(ルートユーザー)
管理者権限を持つ特別なユーザーのことで、システムの根幹に関わる作業などは、スーパーユーザーだけが行われるようにします。
(例)パッケージのインストール(gitのインストール)
$ sudo yum install git
参考