みなさんは/dev/null
というファイルをご存知でしょうか?
このファイルに入っていくものや出ていくものは全てnull
言わば、サーバ内のブラックホールのような存在です。
例えば
1 2 |
$ echo hoge hoge |
と"hoge"と出力されていますが、リダイレクト先を/dev/null
にすると
1 |
$ echo hoge > /dev/null |
何も出力されなくなります。
どんなタイミングで使うか
コマンドの結果を標準出力に出したくない場合に利用できます。
具体例をあげるとこのブログのサーバに対してscp
コマンドでファイルのダウンロードを試みましたが、いざやってみると
1 2 |
$ scp -r shiro-wp-blog:~/backup/wp/*.zip ~/backup/shiro-wp-blog/ Agent pid 549516 |
ssh-agentの結果が出力されてダウンロードができませんでした。
調査をしてみると、ssh先の.bashrc
ファイルに
1 2 3 4 5 6 7 |
. . . eval $(ssh-agent) # <= !!! . . . |
どうやらscp
でsshしたときに.bashrc
が読み込まれssh-agent
の結果が標準出力されてしまうのが原因だったみたいです。
なので、ここを
1 |
eval $(ssh-agent) > /dev/null |
にすればssh-agent
の結果は標準出力されなくなるので
1 2 |
$ scp -r shiro-wp-blog:~/backup/wp/*.zip ~/backup/shiro-wp-blog/ plugins.zip 28% 8560KB 990.8KB/s 00:21 |
で無事ダウンロードができるようになりました。
このように、標準出力に出したくないという場合に活用してみるのはありだと思います。
まとめ
/dev/null
は入出力を全てnull
にするブラックホールのような存在- 標準出力を出したくない場合にはリダイレクトで指定するような使い方ができる