私は次のようなものを実行したい
% sudo grep -i -a 'some-string' <drive device>
Linuxでは、<drive device>
次のようになります/dev/sda1
。 Darwinに該当するものをどのように見つけることができますか?
(不明な場合に備えて、誤って削除されたデータを見つけるために最後の努力を払っています。)
答え1
OS Xは、現在のファイルシステムがディスク全体を占有している場合、この方法を使用します/dev/disk5
。ディスクが分割されている場合は、2番目のパーティションs#
と同様にサフィックスを追加します。/dev/disk5s2
(s
パーティションとして機能するBSDismである「スライス」の略語です。)
ディスクは起動時にオペレーティングシステムによって検出された順番に順番に番号が付けられるため、どのデバイスがどのようなものかを判断するためにいくつかの実験を実行する必要があります。
diskutil list
コマンドラインにこれを入力すると、/dev
ノードやボリューム名など、利用可能なディスクの詳細なリストが表示されます。
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *121.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_CoreStorage 121.0 GB disk0s2
3: Apple_Boot Boot OS X 134.2 MB disk0s3
/dev/disk1
...etc..
/dev/disk7
#: TYPE NAME SIZE IDENTIFIER
0: Apple_HFS Time Machine *999.5 GB disk7
上記の場合、disk0
ディスクには3つのスライスがあるため、/dev/disk0
ディスク全体に1つが追加され/dev/disk0s1
ます...s3
。
の場合、disk7
スライスは報告されないため、/dev/disk7
ディスクノード全体を通してスライスにアクセスできます。
答え2
ディスクをpingするときgrep
(実際に印刷できない情報が見つからない限り)、次のことをお勧めします。
tr -c '[:print:]\n' '\n\n' </dev/disk |
grep -b 'regex'
すべてのバイナリデータは改行文字に変換され、報告されたgrep
オフセットが1だけ増加しない限り無視できます。
答え3
ディスクデバイスを検索するときにいくつかの問題が見つかりました。ここにヘルパースクリプトを使用して文書化しました。