こんにちは、フルスタックエンジニアのryuです。
今回の記事では、標準入力、標準出力、標準エラーとは何なのか、それぞれについて解説します。また、標準入力、標準出力、標準エラーの具体的な実例や使い方なども交えて解説します。Linuxの基本的な内容ですが、意外と知られていないので、この記事を読んでしっかり理解しましょう。
目次
【Linux】標準入力、標準出力、標準エラーとは?それぞれについて解説
標準入力(stdin)とは?
標準入力とは、プログラムにデータを供給する入力ストリームです。
ストリームとは、ファイルなどからデータを読み取ったり書き込んだりする際のデータの流れことを指します。
通常、キーボードからの入力が標準入力になります。
標準入力を英語にすると、standard inputとなり、略してstdinと表記されることもあります。
標準出力(stdout)とは?
標準出力とは、プログラムが出力する情報や結果が送られるストリームです。
通常、この出力はターミナル上に表示されますが、リダイレクトを使用してファイルに保存したり、パイプを使用して他のコマンドに渡すこともできます。
標準出力を英語にすると、standard outputとなり、略してstdoutと表記されることもあります。
標準エラー(stderr)とは?
標準エラーとは、プログラムがエラーメッセージや警告を出力するためのストリームです。
通常、この出力もターミナルに表示されますが、リダイレクトやパイプを使って別の場所に送ることもできます。
標準エラーを英語にすると、standard errorとなり、略してstderrと表記されることもあります。
標準入力、標準出力、標準エラーの具体的な使い方や実例
標準入力の実例
標準入力は通常キーボードからの入力です。
プログラムがユーザーからデータを取得する場合に使用します。
例えば、テキストエディタ「vi」を開く際に、次のようにコマンドを入力します。
vi file.txt
ここで、file.txtが標準入力としてテキストエディタに渡されます。
標準出力の実例
標準出力は通常ターミナル上に結果を表示することです。
以下は、ls
コマンドを使ってカレントディレクトリのファイルとディレクトリを表示する例です。
ls
コマンドを実行すると、以下のようにターミナルにコマンドの結果が標準出力として表示されます。
このコマンドは、カレントディレクトリの内容を標準出力に表示します。もし別のファイルに出力したい場合は、リダイレクトを使って次のようにコマンドを実行します。
ls > file.txt
リダイレクトについての詳しい説明はこちらの記事をご覧ください。
関連:Linuxのコマンドラインで使う>(大なり記号)の意味とは?
標準エラーの実例
標準エラーはプログラムがエラーや警告メッセージを出力するためのストリームです。
例えば、存在しないファイルをcat
コマンドで表示しようとすると、標準エラーにエラーメッセージが表示されます。
cat nofile.txt //←存在しないファイル名を指定
上記のコマンドを実行すると、nofile.txtというファイルが存在しないため、エラーメッセージが標準エラーに表示されます。
エラーメッセージをファイルに保存したい場合は、次のようにリダイレクトを使って標準エラーをファイルに出力します。
cat nofile.txt 2> error.log
ここでは、エラーメッセージがerror.log
というファイルにリダイレクトされます。
これらの処理を理解して適切に使うことで、プログラムの実行結果やエラーメッセージを処理することができます。
まとめ
今回の記事では、Linuxの標準入力、標準出力、標準エラーについて解説しました。Linuxの基本ですが、意外と知らない人も多いので、しっかりと理解しておきましょう。
さらにLinuxの学習をしたい人に向けて、InfraAcademyというインフラ学習サービスのご紹介です。
「Linuxの実践的な内容を学習したい」、「コマンドを打ちながらLinuxを学習したい」
そのようなご要望にお応えして、Linuxやネットワークが学習できるサイト「InfraAcademy」をリリースしました!
入門から中級まで初心者でもわかりやすく学習を進めることができます。
- 【Linux入門講座1】ディレクトリと相対パス、絶対パス
- 【Linux入門講座2】ファイルの操作方法
- 【Linux入門講座3】ファイルのアクセス権限
- 【Linux入門講座4】ファイルの編集~vimの使い方をマスターする~
- 【Linux入門講座5】ユーザーとグループ
- 【Linux入門講座6】ネットワーク
↓InfraAcademyの講座の一部です。
上記以外にも、DNSサーバーの構築方法や、Dockerの設定方法などさまざまな講座があります。
インフラエンジニアに必要な知識が学習できます。