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盘时,可能需要重建一下分区表。
2011年10月10日 21:49
su -c "echo 'hi, tty9' > /dev/tty9"
引号用错了,外面用单引号,里面用双引,不然会出错……
好方法啊……过几天找个U盘试试……^_^
2011年10月10日 23:16
@λ: 我用bash和zsh都没出错。
2011年10月11日 12:35
@cuihao: - =; sorry,我把斜杠错打成反斜杠了,Windows的坏习惯……
2011年10月14日 23:08
我都习惯这样操作了,还有从光盘制作 iso 文件直接 cp 光盘设备就可以了,刻盘估计也可以直接写光盘设备。不过我用的不是 cat,而是 dd,可以通过 SIGUSR1 看进度。其实更好用的是 pv,直接像 wget 那样显示进度。
2011年10月25日 10:15
推到 linuxgem.org 首页。上次看完了,结果忘记推了
2011年10月25日 19:04
请问这个跟dd if=*.iso of=/dev/sdb有啥区别?
2011年10月26日 12:23
@majia321: 看 4 樓……dd 比 cat 有著更自由的定制方式。还有,最好在 sdb 后面再加个数字……否则后果自负啊 -_-
2011年10月27日 00:52
@λ: iso 文件不需要数字的。
2011年10月27日 16:33
@依云: 是么?……难怪我以前都失败?why
2011年10月27日 16:50
@λ: 简单地说,因为你不能把光盘分区 :-)
2012年1月09日 22:15
以前都用dd做u啟動盤的,不知有何區別。
cat比dd好看。