自己留着看的mount,shell if, touch

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
冲浪板
论坛版主
帖子: 7513
注册时间: 2007-05-06 8:19

自己留着看的mount,shell if, touch

#1

帖子 冲浪板 » 2008-11-06 11:12

格式:mount [-参数] [设备名称] [挂载点]
其中常用的参数有:
-a 安装在/etc/fstab文件中类出的所有文件系统。
-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。
-n 不把安装记录在/etc/mtab 文件中。
-r 讲文件系统安装为只读。
-v 详细显示安装信息。
-w 将文件系统安装为可写,为命令默认情况。
-t 指定设备的文件系统类型,常见的有:
ext2 linux目前常用的文件系统
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 网络文件系统
iso9660 CD-ROM光盘标准文件系统
ntfs windows NT/2000/XP的文件系统
auto 自动检测文件系统
-o 指定挂载文件系统时的选项,有些也可写到在/etc/fstab中。常用的有:
defaults 使用所有选项的默认值(auto、nouser、rw、suid)
auto/noauto 允许/不允许以 –a选项进行安装
dev/nodev 对/不对文件系统上的特殊设备进行解释
exec/noexec 允许/不允许执行二进制代码
suid/nosuid 确认/不确认suid和sgid位
user /nouser 允许/不允许一般用户挂载
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读方式挂载
rw 以读写方式挂载
remount 重新安装已经安装了的文件系统
loop 挂载回旋设备
需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。使用多个-o参数的时候,-o 只用一次,参数之间用半角逗号隔开:
# mount –o remount,rw /
例如要挂载windows下文件系统为FAT32的D盘,一般而言在Linux下这个分区对应/dev/hda5,根据具体的分区情况会有不同,这里就以hda5来举例说明:
# mkdir /mnt/hda5 //创建hda5的目录作为挂载点,位置和目录名可自定义//
# mount -t vfat /dev/hda5 /mnt/hda5
一般而言,Linux会自动探测分区的文件系统,除非让你指定时,否则-t vfat 可以省掉。
# mount /dev/hda5 /mnt/hda5
这样就可以进入/mnt/hda5目录去访问分区中的资源了。
3. 为什么mount上分区后显示不了中文文件为问号/乱码?
显示问号表明你的系统中没有可识别使用的中文字体,请先安装中文字体。确保你的系统已经可以很好的显示中文。显示为乱码一般是mount默认使用的文件系统编码和文件系统中文件的实际编码不一致造成的。要想正常显示中文文件,mount时需要用到 -o 参数里的codepage和iocharset选项。codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集,简体中文一般用cp936或gb2312。
# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5
一般来说 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解决问题了。
如果这样做了以后还有问题,请尝试UTF-8编码:
# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5
4. 为什么mount上去以后分区普通用户不可写?
mount时加上 –o umask=000 即可:
# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5
5. 为什么mount上去后的分区中的文件都变成短文件名了?
这是文件系统挂错的原因,将FAT32挂载成FAT16时就会出现这种情况,先umount,然后用 –t vfat 重新挂载即可解决问题。
# mount –t vat /dev/hda5 /mnt/hda5
7. 如何挂载U盘和mp3?
如果计算机没有其它SCSI设备和usb外设的情况下,插入的U盘的设备路径是 /dev/sda1,用命令:
# mkdir /mnt/u
# mount /dev/sda1 /mnt/u
挂载即可。
8. 可以直接使用iso文件吗?
可以,就是mount的这一选项使得Linux下有免费虚拟光驱的说法,具体用法是:
# mkdir /mnt/iso
# mount –o loop linux.iso /mnt/iso
当然,挂载以后挂载点/mnt/iso也是只读的。
12. 如何开机自动挂载分区?
每次挂载都要输入那么长的命令的确是繁琐了些,只要将分区信息写到/etc/fstab文件中即可实现系统启动的自动挂载,例如对于/dev/hda5的自动挂载添加如下的行即可:
/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0
13. 如何挂载samba 分区?
# mkdir /mnt/share
# mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312 //192.168.1.100/share /mnt/share
如果中文显示不正常请尝试UTF-8编码。当然可以写到fstab中实现自动挂载。
14. mount --bind是什么意思?
mount --bind 是将一个目录中的内容挂载到另一个目录上,用法是
# mount --bind olddir newdir
这个命令使得自己搭建的FTP要共享某个目录的时候变得特别方便。如果要取消mount用命令:
# mount --move olddir newdir 即可。
如果mount --bind 也想写入fstab中的话格式如下:
olddir newdir none bind 0 0
16. 为什么umount的时候老显示 device busy?
这是因为有程序正在访问这个设备,最简单的办法就是让访问该设备的程序退出以后再umount。可能有时候用户搞不清除究竟是什么程序在访问设备,如果用户不急着umount,则可以用:
# umount -l /mnt/hda5
来卸载设备。选项 –l 并不是马上umount,而是在该目录空闲后再umount。还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样就umount的非常放心了。
Linux SHELL if 命令参数说明
Penner @ 2007 三月 25th 星期日, at 20:05:33
俺反正是经常忘啊,用的时候总是翻箱倒柜的找也不是个事,把它们列在这里吧。
* –b 当file存在并且是块文件时返回真
* -c 当file存在并且是字符文件时返回真
* -d 当pathname存在并且是一个目录时返回真
* -e 当pathname指定的文件或目录存在时返回真
* -f 当file存在并且是正规文件时返回真
* -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
* -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
* -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
* -p 当file存在并且是命令管道时返回为真
* -r 当由pathname指定的文件或目录存在并且可读时返回为真
* -s 当file存在文件大小大于0时返回真
* -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
* -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
* -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
UNIX Shell 里面比较字符写法:
* -eq 等于
* -ne 不等于
* -gt 大于
* -lt 小于
* -le 小于等于
* -ge 大于等于
* -z 空串
* = 两个字符相等
* != 两个字符不等
* -n 非空串
更新文件的访问和修改时间。
语法
touch [ -a ] [ -c ] [ -m ] [ -f ] [ -r RefFile ] [ Time | -t Time ] { File ... | Directory ... }
描述
touch 命令更新由 Directory 参数指定的每个目录下的由 File 参数指定的每个文件的访问和修改时间。如果没有指定 Time 变量值,touch 命令就使用当前时间。如果指定了一个不存在的文件,touch 命令就创建此文件,除非指定了 -c 标志。
touch 命令的返回码是时间没有被成功修改的文件数目(包括不存在的文件和没有创建的文件)。
注:
任何超出 2038 年(包含2038年)的日期都是无效的。
标志
-a 更改由 File 变量指定的文件的访问时间。不要更改修改时间,除非也指定了 -m 标志。
-c 如果文件不存在,则不要进行创建。没有写任何有关此条件的诊断消息。
-f 尝试强制 touch 运行,而不管文件的读和写许可权。
-m 更改 File 的修改时间。不要更改访问时间,除非也指定了 -m 标志。
-r RefFile 使用由 RefFile 变量指定的文件的相应时间,而不用当前时间。
Time 以 MMDDhhmm[YY] 的格式指定新时间戳记的日期和时间,其中:
MM
指定一年的哪一月(从 01 到 12)。
DD
指定一月的哪一天(从 01 到 31)。
hh
指定一天中的哪一小时(从 00 到 23)。
mm
指定一小时的哪一分钟(从 00 到 59)。
YY
指定年份的后两位数字。如果 YY 变量没有被指定,缺省值为当前年份。
-t Time 使用指定时间而不是当前时间。Time 变量以十进制形式 [[CC]YY]MMDDhhmm[.SS] 指定,其中:
CC
指定年份的前两位数字。
YY
指定年份的后两位数字。
MM
指定一年的哪一月(从 01 到 12)。
DD
指定一月的哪一天(从 01 到 31)。
hh
指定一天中的哪一小时(从 00 到 23)。
mm
指定一小时的哪一分钟(从 00 到 59)。
SS
指定一分钟的哪一秒(从 00 到 59)。
注:
1. touch 命令调用 utime () 子例程来更改所涉及文件的修改和访问时间。当没有真正拥有该文件,即使对文件有写许可权,使用标志时也可能使 touch 命令失败。
2. 当使用 touch 命令时,如果接收到错误消息,不要指定完整路径名 /usr/bin/touch。
退出状态
命令返回以下出口值:
0 命令成功执行。所有请求的更改已完成。
>0 发生一个错误。
示例
1. 要更新文件的访问和修改时间,请输入:
touch program。c
这会将 program.c 文件的上次访问和修改时间设置为当前日期和时间。如果 program.c 文件不存在,touch 命令就创建一个同名的空文件。
2. 要避免创建新文件,请输入:
touch -c program.c
3. 要仅更新修改时间,请输入:
touch -m *.o
这会更新当前目录下的以 .o 扩展名结尾的文件的上次修改时间(不更新访问时间)。touch 命令经常以此方式使用,来改变 make 命令的结果。
4. 要明确设置访问和修改时间,请输入:
touch -c -t 02171425 program.c
这会将访问和修改时间设置为当前年份的 2 月 17 日的 14:25(2:25 p.m.)。
5. 要使用另一文件的时间戳记而不用当前时间,请输入:
touch -r file1 program.c
这会将 program.c 文件的时间戳记设置成与 file1 文件一样。
6. 要使用指定时间而不是当前时间处理文件,请输入:
touch -t 198503030303.55 program.c
这会将 program.c 文件的时间戳记设置为 1985 年 3 月 3 日上午 3:03:55。
头像
MagicGam
帖子: 291
注册时间: 2008-07-14 16:40

Re: 自己留着看的mount,shell if, touch

#2

帖子 MagicGam » 2008-11-06 11:13

前段时间一直学习命令。。。

这东西几天不用后手就生了。。。 。看来还是记忆力不好的原故。
头像
linlee
帖子: 1132
注册时间: 2007-10-20 11:30

Re: 自己留着看的mount,shell if, touch

#3

帖子 linlee » 2008-11-06 12:30

mark~~
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: 自己留着看的mount,shell if, touch

#4

帖子 bones7456 » 2008-11-06 12:32

支持~ :em11
关注我的blog: ε==3
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: 自己留着看的mount,shell if, touch

#5

帖子 HuntXu » 2008-11-06 13:18

bones7456 写了:支持~ :em11
HUNT Unfortunately No Talent...
头像
CLOCKWORKHEART
帖子: 635
注册时间: 2007-11-05 19:26

Re: 自己留着看的mount,shell if, touch

#6

帖子 CLOCKWORKHEART » 2008-11-06 16:43

想学上书店搞本《Linux命令大全》,啥都有了 :em09
Everything that has a beginning has an end.
回复