このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:/dev/null

/dev/null
Linuxではリダイレクト先として頻繁に使用される特殊なファイルである /dev/null
が存在します。このファイルを利用することで、コマンドの入出力を効率的に制御することが可能です。ここでは、/dev/null
の性質と具体的な活用方法について詳しく解説します。

/dev/null とは
/dev/null
は、スペシャルファイルと呼ばれる特別なファイルで、以下のような特徴を持っています。
- 入力先として指定すると、何も内容を返さない(空の入力)。
- 出力先として指定すると、書き込んだデータはすべて破棄される(どこにも保存されない)。
この性質から、/dev/null
は「ブラックホール」や「ビットバケツ」とも呼ばれ、データを捨てるためのデバイスとして機能します。
/dev/null ファイルの確認
お使いのシステムに /dev/null
が存在することを確認してみましょう。
user01@ubuntu:~$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 10月 27 13:54 /dev/null
- ファイルタイプ:先頭の
c
はキャラクタデバイスファイルであることを示しています。
/dev/null の活用方法
1.標準入力を空にする
/dev/null
を 標準入力 にリダイレクトすると、入力が何もない状態になります。これは、コマンドのテストなどで入力を空にしたい場合に有用です。
例:cat
コマンドで標準入力を空にする
user01@ubuntu:~$ cat < /dev/null
user01@ubuntu:~$
- 解説:
cat
コマンドは標準入力からデータを読み取りますが、/dev/null
は何も返さないため、何も表示されずに終了します。
2.標準出力を捨てる
/dev/null
を 標準出力 のリダイレクト先に指定すると、コマンドの出力がすべて破棄され、画面には何も表示されなくなります。
例:cat
コマンドの出力を捨てる
user01@ubuntu:~$ cat /etc/crontab > /dev/null
user01@ubuntu:~$
- 解説:通常であれば
/etc/crontab
の内容が表示されますが、/dev/null
にリダイレクトすることで出力が破棄されます。
3.エラーメッセージだけを表示する
コマンドの出力が大量にある場合、エラーメッセージだけを確認したいことがあります。その場合、標準出力を /dev/null
にリダイレクトすることで、標準エラー出力のみが画面に表示されます。
例:ls
コマンドで存在しないディレクトリを指定
user01@ubuntu:~$ ls / /non_exist_dir > /dev/null
ls: '/non_exist_dir' にアクセスできません: そのようなファイルやディレクトリはありません
コマンドの意味を解説
ls / /non_exist_dir > /dev/null
ls / /non_exist_dir
:ルートディレクトリ/
と存在しないディレクトリ/non_exist_dir
の内容をリストしようとしています。> /dev/null
:標準出力を/dev/null
にリダイレクトし、出力を破棄します。- 結果:ルートディレクトリの内容は表示されず、存在しないディレクトリに対するエラーメッセージだけが表示されます。
4.エラーメッセージを非表示にする
逆に、エラーメッセージを非表示にしたい場合は、標準エラー出力を /dev/null
にリダイレクトします。これにより、標準出力のみが画面に表示されます。
例:エラーメッセージを捨てる
user01@ubuntu:~$ ls / /non_exist_dir 2> /dev/null
/:
bin home mnt sbin.usr-is-merged usr
bin.usr-is-merged lib opt snap var
boot lib.usr-is-merged proc srv
cdrom lib64 root swap.img
dev lost+found run sys
etc media sbin tmp
2> /dev/null
:標準エラー出力(ファイルディスクリプター2)を/dev/null
にリダイレクトします。- 結果:エラーメッセージは表示されず、ルートディレクトリの内容のみが表示されます。
5.標準出力と標準エラー出力を両方とも捨てる
標準出力と標準エラー出力の両方を /dev/null
にリダイレクトすると、画面には何も表示されなくなります。
例:全ての出力を捨てる
user01@ubuntu:~$ ls /non_exist_dir > /dev/null 2>&1
user01@ubuntu:~$
> /dev/null
:標準出力を/dev/null
にリダイレクト。2>&1
:標準エラー出力を標準出力と同じ場所にリダイレクト。- 結果:すべての出力が
/dev/null
に捨てられ、画面には何も表示されません。
活用例
- 不要なメッセージを非表示にしたい場合。
- コマンドの実行時間を計測する際に、出力を抑制したい場合。
まとめ
/dev/null
は、データを破棄するための特殊なファイルであり、入力・出力の両方で活用できます。- 主な特徴
・入力先として指定すると、何も返さない(空の入力)。
・出力先として指定すると、書き込んだデータはすべて破棄される。 - 活用方法
・標準入力を空にする:コマンド < /dev/null
・標準出力を捨てる:コマンド > /dev/null
・エラーメッセージだけを表示:コマンド > /dev/null
・エラーメッセージを非表示にする:コマンド 2> /dev/null
・全ての出力を捨てる:コマンド > /dev/null 2>&1
これらの方法を活用することで、コマンドの出力を柔軟に制御でき、作業効率を向上させることができます。特に、ログの整理や不要なメッセージの抑制など、システム運用において有用なテクニックです。ぜひ日々の業務で活用してみてください。