10
10
2011
11

神奇的UNIX文件,用cat把ISO写到U盘

cuihao同学在学校机房发回报道

有一句话叫做"In UNIX Everything is a File"。在UNIX(包括Linux)中,文件可以用来代表各种东西,包括硬件设备、磁盘分区、网络链接、内核、终端…… 通过这种设计,你可以统一地使用简单的cat、echo命令控制硬件、与内核交互、进行网络通讯等等,我们不必为了完成这些操作专门编程调用系统API。简单的命令拥有了新的生命力,SHELL也因此变得强大。

 

来点简单的例子:

/dev/ttyX 是代表tty(ctrl+alt+Fn看到的那个命令行界面)的文件。尝试如下命令:

su -c "echo 'hi, tty9' > /dev/tty9"

就是用echo把一串字符输出到 /dev/tty9 文件中(使用su命令是因为普通用户没有使用tty设备文件得权限)。然后用Ctrl+Alt+F9切换到 tty9,会发现那串字符果然显示在tty上了。

再试试cat命令:

su -c "cat /dev/tty9"

键入后,cat处于等待输入的状态。进入tty9,输入一些内容,再切回原来的终端,键入的内容都被cat捕获了。键入Ctrl+D(文件结束符),cat就会终止。

 

然后是主题,用cat写ISO:

把ISO文件test.iso写入U盘设备(比如 /dev/sdc,会破坏数据,小心):

cat test.iso > /dev/sdc

自己加su用root执行。命令执行完毕后,你的U盘的分区表应该已经被破坏了 ^^ ISO已经写入到U盘中。可以使用这个技巧制作系统安装盘。很神奇的“设备文件”吧。

另外,使用后重新格式化U盘时,可能需要重建一下分区表。

Category: 计算机 | Tags: Linux ISO 文件系统 UNIX | Read Count: 7628
Avatar_small
λ 说:
2011年10月10日 21:49

su -c "echo 'hi, tty9' > /dev/tty9"
引号用错了,外面用单引号,里面用双引,不然会出错……

好方法啊……过几天找个U盘试试……^_^

Avatar_small
cuihao 说:
2011年10月10日 23:16

@λ: 我用bash和zsh都没出错。

Avatar_small
λ 说:
2011年10月11日 12:35

@cuihao: - =; sorry,我把斜杠错打成反斜杠了,Windows的坏习惯……

Avatar_small
依云 说:
2011年10月14日 23:08

我都习惯这样操作了,还有从光盘制作 iso 文件直接 cp 光盘设备就可以了,刻盘估计也可以直接写光盘设备。不过我用的不是 cat,而是 dd,可以通过 SIGUSR1 看进度。其实更好用的是 pv,直接像 wget 那样显示进度。

Avatar_small
Garfileo 说:
2011年10月25日 10:15

推到 linuxgem.org 首页。上次看完了,结果忘记推了

Avatar_small
majia321 说:
2011年10月25日 19:04

请问这个跟dd if=*.iso of=/dev/sdb有啥区别?

Avatar_small
λ 说:
2011年10月26日 12:23

@majia321: 看 4 樓……dd 比 cat 有著更自由的定制方式。还有,最好在 sdb 后面再加个数字……否则后果自负啊 -_-

Avatar_small
依云 说:
2011年10月27日 00:52

@λ: iso 文件不需要数字的。

Avatar_small
λ 说:
2011年10月27日 16:33

@依云: 是么?……难怪我以前都失败?why

Avatar_small
依云 说:
2011年10月27日 16:50

@λ: 简单地说,因为你不能把光盘分区 :-)

Avatar_small
nerd daniel 说:
2012年1月09日 22:15

以前都用dd做u啟動盤的,不知有何區別。
cat比dd好看。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

| Theme: Aeros 2.0 by TheBuckmaker.com