スクリプトやコマンドで時々見かける"/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の構築・運用の基本や周辺技術を学ぶことができる書籍です。
イラストが多く概念的なところから理解しやすいです。
(電子版よりも紙版の方が読みやすくおすすめです)