助け合いフォーラム
LPIC Lv1-101(Ver5.0)
問題ID : 3657
問題を開く
10Kバイトのサイズを指定してファイルを作成したい。適切なコマンドは次のうちどれか。
正解
dd
解説
ddコマンドはデータをコピーするコマンドです。
cpコマンドと異なり、ブロックサイズ(bsオプション)とそのブロックをコピーする回数(countオプション)を指定してファイルを作成することができます。
入力ファイル(ifオプション)に「/dev/zero」を指定すると全データがnullであるファイルが作成されます。「/dev/zero」はデータの上書きや、ddコマンドで内容の無い特定サイズのファイルを生成したい場合などに使用します。
したがって正解は
・dd
です。
以下は実行例です。

その他の選択肢については以下のとおりです。
・cp
cpはデータをコピーするコマンドで、サイズを指定できません。
・file
ファイルの種類を特定するための情報を参照してファイルの種別を表示するコマンドです。
・vi
viはLinuxで標準的に使用されているテキストエディタを起動するコマンドで、サイズを指定できません。
・mkfile
存在しないコマンドです。
cpコマンドと異なり、ブロックサイズ(bsオプション)とそのブロックをコピーする回数(countオプション)を指定してファイルを作成することができます。
入力ファイル(ifオプション)に「/dev/zero」を指定すると全データがnullであるファイルが作成されます。「/dev/zero」はデータの上書きや、ddコマンドで内容の無い特定サイズのファイルを生成したい場合などに使用します。
したがって正解は
・dd
です。
以下は実行例です。

その他の選択肢については以下のとおりです。
・cp
cpはデータをコピーするコマンドで、サイズを指定できません。
・file
ファイルの種類を特定するための情報を参照してファイルの種別を表示するコマンドです。
・vi
viはLinuxで標準的に使用されているテキストエディタを起動するコマンドで、サイズを指定できません。
・mkfile
存在しないコマンドです。
参考
ddコマンドはデータをコピーするコマンドです。
cpコマンドと異なり、デバイス(デバイスファイル)を引数にとってデバイス間のコピー(バックアップ)や、フロッピー/CD-ROMのイメージをそのままコピーする事も可能です。
ddコマンドの書式と主なオプションは以下のとおりです。
dd [オプション]

/dev/sdaから/dev/sdbへデータを丸ごとコピーする場合は、以下のようにします。
例) dd if=/dev/sda of=/dev/sdb
リカバリの際は、デバイスの指定を逆にするだけです。
例) dd if=/dev/sdb of=/dev/sda
CD-ROMのイメージファイルをコピー(作成)する場合は、以下のようにします。
例) dd if=/dev/cdrom of=cdrom.iso
フロッピーのイメージファイルをFDDにコピーする場合は、以下のようにします。
例) dd if=boot.img of=/dev/fd0
cpコマンドと異なり、デバイス(デバイスファイル)を引数にとってデバイス間のコピー(バックアップ)や、フロッピー/CD-ROMのイメージをそのままコピーする事も可能です。
ddコマンドの書式と主なオプションは以下のとおりです。
dd [オプション]

/dev/sdaから/dev/sdbへデータを丸ごとコピーする場合は、以下のようにします。
例) dd if=/dev/sda of=/dev/sdb
リカバリの際は、デバイスの指定を逆にするだけです。
例) dd if=/dev/sdb of=/dev/sda
CD-ROMのイメージファイルをコピー(作成)する場合は、以下のようにします。
例) dd if=/dev/cdrom of=cdrom.iso
フロッピーのイメージファイルをFDDにコピーする場合は、以下のようにします。
例) dd if=boot.img of=/dev/fd0
コピーなのに作成というのがよく分かりません
C
Chusawa
投稿日 2025/10/18
ddコマンドはコピーするコマンドということですが、それで何故作成する、という説明になるのかよく分かりません。コピーされたものが「作成された」ということになりますか?
2025/10/19 20:45
作成するのはサイズを指定したファイルであって、コピーすることが本質ではないですね。
そして、「存在しないファイルを、元となるものをコピーすることで作成する」ことで設問の要件を満たしているので、特に不自然な説明をしているわけではないかと思います。
ただ、この設問で重要なのは
10Kバイトのサイズを指定してファイルを作成
なんですよね。ただ単にコピーするだけだったらサイズ指定はできないので、dd を使うことが求められているって話ですね。
例えば、 /etc/passwd を dd でコピーするとちゃんと同じものができることがわかります。(sha1sum の出力は環境によって変わりますが、コピー元とコピー先が一致するという点は変わりません)
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1882 Jun 27 12:01 /etc/passwd
$ dd if=/etc/passwd of=testfile
3+1 records in
3+1 records out
1882 bytes (1.9 kB, 1.8 KiB) copied, 8.0042e-05 s, 23.5 MB/s
$ sha1sum /etc/passwd
7e88355028ec7d47982697a727bedb8f2fbe473a /etc/passwd
$ sha1sum testfile
7e88355028ec7d47982697a727bedb8f2fbe473a testfile
でも、これだとファイルをコピーした(testfile というファイルを作成した)だけであって、指定されたサイズにはなってないんですよね。なので、dd によって、元データから指定したサイズを指定した回数分読み込んでファイルとして出力(作成)する、といった作業が求められているんですね。
$ dd if=/dev/zero of=10kfile bs=1k count=10
10+0 records in
10+0 records out
10240 bytes (10 kB, 10 KiB) copied, 0.000217064 s, 47.2 MB/s
$ ls -l 10kfile
-rw-rw-r-- 1 user user 10240 Oct 19 20:39 10kfile
コメント
この投稿に対して返信しませんか?