質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

1回答

7273閲覧

rm hoge と mv hoge /dev/null の違いについて

dlrowolleh

総合スコア120

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2017/04/07 14:00

###rm hogeと mv hoge /dev/null の違いについて
ふと疑問に思ったのですが、
rm Desktop/hogemv Desktop/hoge /dev/nullの違いは何でしょうか。
rm Desktop/hogeを使うのが一般的だと思うのですが、それ以外に違いはありますか?

Unix系で黒い画面を触っているとき、
ファイルを削除するときはrmコマンドを使い、
ファイルを移動するときはmvコマンドを使います。

通称「ブラックホール」と呼ばれる/dev/nullに投げるとファイルが消えてしまうということを聞いたことがあります。

試しにrm Desktop/hogemv Desktop/hoge /dev/null両方を実行してみたところ、両方ともhogeファイルはデスクトップの画面内から消えてしまいました。

二つの違いは何でしょうか?
推測ですが昔はmv Desktop/hoge /dev/nullとやっていたが、
文字数が多くて打つのが面倒なのでrmコマンドが作られ、
それからというものrm Desktop/hogeが一般的になった。。。
ではないかと思っております。

ご存知の方がいらっしゃいましたらご教授いただきたいです。


また、余談ですが、
foo.txtファイルの中身を空にする場合は

:> foo.txt
としたり
cat /dev/null > foo.txt
するらしいです。
私は
echo > foo.txt
としています。

これらの違い等についても知りたいです。
公式リファレンス、マニュアル、良い参考書、サイト等
ありましたら是非教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

mv A Bは同じファイルシステム内ではリネームで、異なるファイルシステム間では、rm B;cp A B;rm Aと同じです。

mv Desktop/hoge /dev/nullは、異なるファイルシステム間なので後者ですが、一般ユーザーだとrm /dev/nullが出来ないので失敗します。

$ mv Desktop/hoge /dev/null mv: デバイス間移動失敗: `Desktop/hoge' から `/dev/null' 。移動先を削除できません: 許可がありません

rootだともしかすると成功するかもしれませんが、その場合はhogeの内容が/dev/nullという名前でコピーされていると思います。

手元の環境(CentOS7)では失敗します(/dev/nullの削除は成功してその後のコピーが失敗)。

# mv Desktop/hoge /dev/null mv: `/dev/null' を上書きしますか? y mv: 通常ファイル `/dev/null' を作成できません: 許可がありません

なので、rm Desktop/hogeとは全然違います。

echo > foo.txt

これは、foo.txtの内容が、「改行」1文字になりますので、空にはなりません。

投稿2017/04/07 15:11

otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dlrowolleh

2017/04/07 23:54

ご回答いただきありがとうございます。 一般ユーザだと失敗するのですね。 rootで mv /Desktop/hoge /dev/nullとしていました。 いろいろ試してみようと思います。 また、 echo > foo.txt では、 「改行」1文字にで、空にはならないのですね。 わかりやすく教えていただきありがとうございます。 素朴な疑問でしたが、すっきりしました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問