Categories: 未分類

rm (Unix)

Rm_(Unix)

rm( removeの略) は、ファイル システムからコンピュータ ファイル、ディレクトリ、シンボリック リンクなどのオブジェクトや、デバイスノード、パイプ、ソケットなどの特殊ファイルを削除するために使用される、 UnixおよびUnix 系オペレーティングシステム上の基本的なコマンドです。 MS -DOS、OS/2、およびMicrosoft Windows。このコマンドはEFI シェルでも使用できます。 del rm コマンドrm_
オリジナルの著者
ケン・トンプソン、デニス・リッチー( AT&T ベル研究所)
開発者
さまざまなオープンソースおよび商用開発者
初回リリース
1971 年 11 月 3 日。51年前 ( 1971-11-03 )
で書かれている C オペレーティング·システム
Unix、Unix 風の、V、Plan 9、Inferno、KolibriOS、IBM i
プラットホーム
クロスプラットフォーム
タイプ
指示
ライセンス
coreutils : GPLv3+プラン 9: MIT ライセンス

コンテンツ
1 概要2 歴史 3 構文 4 権限
5 ファイルシステムのルートの保護
6 ユーザープルーフ
7 コマンドライン引数の最大制限
8 こちらも参照
9 参考文献
10 参考文献
11 外部リンク

概要
このコマンドは、 unlinkrmシステム コールを使用してファイル システムからオブジェクトへの参照を削除します。これらのオブジェクトには複数の参照 (たとえば、2 つの異なる名前を持つファイル) が含まれている可能性があり、オブジェクト自体は、すべての参照が削除され、何も存在しない場合にのみ破棄されます。プログラムにはまだオブジェクトへのハンドルが開いています。
これにより、プログラムがクラッシュして終了した場合でも、プログラムの終了後にファイルのスペースが再利用されることがわかっていて、プログラムがファイルを開いてすぐにファイルシステムから削除し、それを一時スペースとして使用できるシナリオが可能になります。
このコマンドの目的は単に参照のリンクを解除することだけであり、解放されたファイルシステムのスペースには、削除されたファイルの残りのデータがまだ含まれている可能性があるため、通常、このコマンドはファイル データを破壊しません。これは場合によってはセキュリティ上の問題となる可能性があり、強化されたバージョンでは最後のリンクが切断されるときにデータを消去する機能が用意されている場合があり、特にデータ消去機能を提供する Shred や SRM などのプログラムが利用可能です。
rmこれは通常、UNIX由来のオペレーティング システムでのみ見られます。通常、このオペレーティング システムでは、ごみ箱などのメカニズムを介して削除されたファイルを回復する機能が提供されていないため、そのため、ユーザーはrm誤ってファイルを削除することを制限するために、ある種のラッパーで囲む傾向が
インデックスの再構築を試み、部分が再利用されなかった場合にファイルを元に戻すことができる削除取り消しユーティリティが

歴史
一部の古いバージョンの Unix では、rmディレクトリが空の場合、コマンドはディレクトリを削除します。この動作は、 4.4BSD-Lite2 から派生したBSD ( FreeBSD、 NetBSD、 OpenBSD 、macOSなど)などのフラグrm付きの一部のバージョンで引き続き取得できます。-d
GNU coreutilsrmにバンドルされているバージョンは、Paul Rubin、David MacKenzie、Richard Stallman、Jim Meyering によって作成されました。このバージョンには、互換性を高めるためのオプションも提供されています。同じ機能が標準コマンドによって提供されます。 -drmdir
バージョン 7-iのオプションは、バージョン 1で登場した「スイッチからの削除」に置き換わりました。Doug McIlroy 氏は、「これは、発話できない名前のファイルをクリーンアップするために設計された絶望的なツールだった」と書いています。dswdsw
このコマンドは、一般的な GNU Unix 類似ユーティリティのネイティブWin32ポートのUnxUtilsコレクションの一部として、Microsoft Windows 用の別個のパッケージとして利用できます。 KolibriiOS にはコマンドの実装が含まれています。 rmコマンドもIBM iオペレーティング システムに移植されています。 rm

構文
rmオプションを追加した後に指定されたファイルを削除します。ユーザーは完全パスまたは相対ファイル パスを使用して、削除するファイルを指定できます。rmデフォルトではディレクトリは削除されません。ユーザーが現在いるディレクトリ内のrm fooファイル「foo 」を削除します。
rmは、他のコマンドと同様に、オプションを使用して動作方法を指定します。-r, 「recursive」は、ディレクトリを削除し、内容を事前に再帰的に削除します(ディレクトリが存在しないファイルが残らないようにするため)。-i、すべての削除の確認を求める「対話型」。-f、「force」は、存在しないファイルを無視し、確認プロンプトをオーバーライドします (事実上、キャンセルします-i)。ただし、ディレクトリが書き込み保護されている場合、ディレクトリからファイルは削除されません。-v、「verbose」、rm端末上で何を行っているかを出力します。-d, 「directory」は空のディレクトリを削除し、指定されたディレクトリが空の場合にのみ機能します。–one-file-system、引数と同じファイル システム上のファイルのみを削除し、マウントされたファイル システムは無視します。
rmファイルの誤った削除を避けるために、シェルエイリアス ( C シェル エイリアス、Bourne シェル、または Bash) 関数 ” “でオーバーレイできます。rm -iユーザーが確認せずに多数のファイルを削除したい場合は、オプション-iを追加して手動で引数を取り消すことができます-f(展開されたコマンド ライン ” ” で後で指定されたオプションがrm -i -f優先されるため)。残念ながら、このアプローチはワイルドカードの使用に対する危険な習慣を生み出し、独自のバージョンの誤った削除につながります。
rm -rf(さまざまにrm -rf /、、、rm -rf *など) は、ピクサーでの映画トイ・ストーリー 2の制作中に多くのファイルが失われたなど、 Unix の災害に関するジョークや逸話で頻繁に使用されます。このコマンドの変種をスーパーユーザーが実行すると、現在のファイル システムからアクセスできるすべてのファイルがマシンから削除されます。rm -rf /
rm多くの場合、削除するファイルのリストを提供するためにxargsと組み合わせて使用​​されます。
xargs rm または、現在のディレクトリの下にあるすべてのディレクトリ内のすべてのPNG 画像を削除するには、次のようにします。
見つけてください 。 -name ‘*.png’ -exec rm {} +

権限
通常、ほとんどのファイルシステムでは、ファイルを削除するには親ディレクトリに対する書き込み権限 (および最初にディレクトリに入るためには実行権限) が必要です。(初心者にとって紛らわしいことに、ファイル自体のパーミッションは無関係であることに注意してただし、rm-f オプションが使用されない限り、GNU は書き込み保護されたファイルを削除するかどうかの確認を求めます。)
ディレクトリを ( を使用してrm -r) 削除するには、その内容をすべて再帰的に削除する必要がこれには、そのディレクトリ (空でない場合) および空でないすべてのサブディレクトリ (存在する場合) に対する再帰的な読み取り、書き込み、および実行のアクセス許可が必要です。ディレクトリの内容を一覧表示して削除するには、読み取り権限が必要です。これにより、空ではないディレクトリへの書き込み権限がないため、その内容を削除できないという奇妙な状況が発生することがただし、同じディレクトリが空の場合は、それを削除できます。
スティッキー ビットが設定されたディレクトリにファイルが存在する場合、ファイルを削除するには、そのファイルの所有者である必要が

ファイルシステムのルートの保護
Sun Microsystems は、 2005 年に最初にリリースされたSolaris 10 に” rm -rf /” 保護を導入しました。コマンドを実行すると、システムは / の削除が許可されていないことを報告するようになりました。その後すぐに、同じ機能がFreeBSDバージョンのユーティリティに導入されました。オプションが指定された場合、 GNU は実行を拒否します。 これは、 GNU Core Utilitiesのバージョン 6.4が 2006 年にリリースされて以来、デフォルトになっています。新しいシステムでは、オプションがなくても、このフェイルセーフは常にアクティブです。コマンドを実行するには、スーパーユーザーであっても、オプションを追加してフェールセーフをバイパスする必要がrm rmrm -rf /–preserve-root–no-preserve-root

ユーザープルーフ
システム管理者、設計者、さらにはユーザーさえも、次のようなエイリアスや関数を作成することで、ファイルを誤って削除しないように防御しようとすることがよく
エイリアスrm = “rm -i” rm () { /bin/rm -i ” $@ ” ; }
これにより、rmY キーまたは N キーを押して、ファイルを削除するかどうかをファイルごとに確認するようユーザーに求められます。残念なことに、これはユーザーに、コマンドに渡すワイルドカードに不注意になるよう訓練する傾向がありrm、y保持する必要がある 1 つのファイルを過ぎるまで、ポンドとリターン キーで削除を肯定する傾向を奨励するだけではありません。各ファイルに自動的に「y」を挿入する「 」まで行っているユーザーも見られています。yes | rm files
ユーザーが 1 回だけ確認できるようにし、適切なワイルドカードを奨励し、リストの検証を容易にする妥協策は、次のような方法で実現できます。
if ; then rm () { ls -FCsd ” $@ ” echo ‘remove? ‘ | tr -d ‘

admin

Share
Published by
admin

Recent Posts

リカルド・グラール

Ricardo_Goulart…

2か月 ago

リカルド・ゴス

Ricardo_Goss スチ…

2か月 ago

リカルド・ゴンサレス・ダビラ

Ricardo_Gonz%C3…

2か月 ago