Linux インフラ

【Linux】時々見かける/dev/nullの正体

2021年6月21日

スクリプトやコマンドで時々見かける"/dev/null"ですが、これの正体をご存知でしょうか。
今回は、この"/dev/null"について調べてみました。

/dev/nullとは?

"/dev/null"とは、情報を全て破棄するスペシャルファイルです。
出力先に"/dev/null"を指定すると、出力を破棄します。
入力先に"/dev/null"を指定すると、空の値を入力にします。

そもそもdevディレクトリは、ハードウェア機器を表すファイルが保存されています。
キーボードやマウスなどのデバイスをディレクトリ(またはファイル)形式で保存されており、標準入出力でも使われます。

dev配下にあるnullということは、nullというデバイスがあるのかと思いますが、そういうわけでもなさそうです。
/dev/nullは、Linuxがあるところ/dev/nullがそこにあります。

よくある誤解として、"/dev/null"の配下にファイルが溜まっていき、いわゆるゴミ箱のようなものを連想する方もいますが、これは誤りです。
"/dev/null"の情報は全て破棄されるので、ファイルが蓄積することはありません。

利用場面

ターミナルに標準出力をしたくない時

$ echo "ImaOkita" > /dev/null

最もスタンダードな使い方です。
上の例ですと、echoコマンドによって、"ImaOkita"を出力し、出力先を"/dev/null"にしました。

実行結果は、当然何も表示されません。

これの応用として、標準エラー出力をしないという使い方もあります。

$ cat filename.txt
cat: filename.txt: No such file or directory
$ cat filename.txt 2> /dev/null

上の例だと、実行ディレクトリにfilename.txtが存在しない状態で、catコマンドでfilename.txtを指定しました。
出力先に"/dev/null"を指定すると、エラー文が表示されません。

"2>"の部分ですが、Linuxで決まっている割り振り番号になります。
例えば、標準入力には0、標準出力には1、標準エラー出力には2が割り振られています。

ファイルの中身を空にしたい

$ cat /dev/null > test.txt

こちらの使い方もよくあります。
上の例ですと、catコマンドで出力した"/dev/null"の内容をtest.txtに出力しています。

もちろん、test.txtの内容は"/dev/null"に上書きされてしまっているので、空になります。

Linux学習におすすめの教材

Linuxについて、しっかりと基礎から学びたい、実践的なスキルを身につけたいと考えている方向けに、おすすめの学習教材を紹介します。
これらの教材は、実際に僕が使っている教材になっています。

新しいLinuxの教科書

Linux自身の機能だけでなく、シェルスクリプトを使ったプログラミングや、Gitによるソフトウェア開発のバージョン管理など、イマドキのエンジニアなら知っておくべき知識についても、丁寧に解説しました!!

シンプルかつ網羅的にLinuxの基礎を学べる初学者・入門者に最適な一冊です。
サンプルのスクリプトもついており、実際に手を動かしながら学習することができます。

[改訂新版]プロのためのLinuxシステム構築・運用技術

キックスタートによる自動インストール、運用プロセスの理解、SAN/iSCSI、L2/L3スイッチ、VLAN、Linuxカーネル、systemd、ファイルシステム、問題判別ノウハウ、プロとしてのLinux技術。システム構築運用/ネットワーク・ストレージ管理の秘訣がわかる。Red Hat Enterprise Linux対応。

実務で通用するLinuxの構築・運用の基本や周辺技術を学ぶことができる書籍です。
イラストが多く概念的なところから理解しやすいです。
(電子版よりも紙版の方が読みやすくおすすめです)

-Linux, インフラ
-