第3章 文件系统
第3章 文件系统
3.1 文件
- 文件分为:
- 普通文件(简称文件)
- 目录文件
- 设备文件
- 目录文件包含其中每个文件盒子目录的一个条目,每个条目由两部分组成:
- 文件名
- 唯一识别码(inode号)(读作eye-node)
3.2 文件名
- 由于shell会对
$、`、?、*、&等字符进行特殊处理,所以建议仅在文件名中使用:- 字母
- 数字
- 句点(
.)、 连字符(-)、下划线 (_)
3.3 UNIX文件系统
-
系统安装期间提供的文件:
/bin和/usr/bin:
所有常用UNIX命令都在这些目录里(bin源于"二进制"binary).PATH变量总会在其列表中显示这些目录/sbin和/usr/sbin:
包含系统管理员的命令,只有系统管理员的PATH会显示/etc:
包含系统配置文件/dev:
包含所有设备文件,这些文件不占磁盘空间/lib和/usr/lib:
包含所有二进制形式的库文件/usr/include:
包含C程序的标准头文件/usr/share/man:
man页的存储位置
-
用户的文件:
/tmp:
允许用户创建临时文件的目录,系统会定期清除这些文件/var:
系统的可变部分,包含所有打印作业和传出传入邮件/home:
包含用户目录
3.4 绝对路径和相对路径
- 绝对路径:
以/开头的路径即绝对路径,如:/etc/passwd - 相对路径:
不以/开头的路径,相对路径从当前目录出发,.表示当前目录,..表示父目录
3.5 主目录
- 主目录为
/home/username,其中username为用户名 - 主目录可用
$HOME变量或者~表示 - 在shell脚本中应避免使用
~而尽量使用$HOME,以便脚本移植到不同主目录的系统中(如从/home/romeo到/u2/romeo),
因为$HOME和~的求值过程不同
3.6 有关文件的常用命令
3.6.1 cd
cd= change directorycd后跟路径名可跳转至目标目录cd后不跟参数跳转至主目录
3.6.2 pwd
pwd= print working directory
3.6.3 mkdir
mkdir= make directorymkdir后可跟多个参数,但要确保每个目录的父目录在它自己之前创建-p选项可以将参数提供的路径上缺少的目录全部创建,
如mkdir -p progs/include/stdio.h可以将三个目录全部创建
3.6.4 rmdir
rmdir= remove directory- 和
mkdir类似,跟多个参数,也有-p选项,不过是反过来了 - 只能删除空目录,且当前目录必须位于要删除的目录上层,想要删除非空目录需要用
rm -r或rm -R
3.6.5 ls
ls= listls不跟参数列出当前目录包含的所有(非隐藏)的文件,默认为ASCII排列顺序ls跟参数时- 跟普通文件: 可查看文件是否存在
- 跟目录可列: 出目标目录包含的所有(非隐藏)文件
ls的常用选项:-d只显示目录名称而不列出其内容-F即--classify用*标记可执行文件,/标记目录,@标记符号链接-R递推列出文件(-r功能不同)-a即--all显示隐藏文件(.开头以及..开头的文件)
- linux中调用
ls不同文件类型的颜色不同,
输入alias可以看到alias ls='ls --color=auto
3.6.6 cp
cp= copy- 默认忽略目录而只复制文件
- 参数分为两部分,第二部分为最后一个参数,第一部分为其之前的全部参数(简称第二参数与第一参数)
- 第一参数为多个文件时,第二参数必须为已存在的目录,结果是将第一参数的那些文件复制到第二参数的目录中去
- 第一参数为单个文件时,第二参数可以为已存在的目录,或任意文件(无论是否存在)
- 第二参数为已存在的目录: 同上
- 第二参数为文件:
- 不存在的文件: 复制第一参数,新建第二参数
- 已存在的文件: 复制第一参数,覆盖第二参数
- 第一参数为单个目录时,需要选项
-r或-R,第二参数必须为目录- 第二参数为不存在的目录: 复制第一参数,新建第二参数
- 第二参数为已存在的目录: 复制第一参数到第二参数的目录下
- 第一参数为多个目录时,需要选项'-r'或'-R',第二参数必须为已存在目录,即通过同上
3.6.7 mv
mv= move or rename- 不加选项时参数就可以是文件或目录
- 结果与
cp类似,只不过第一参数会被删掉 - linux可以用
rename .a .b *.a把当前目录所有.a后缀的文件改为.b后缀(POSIX并不支持)
3.6.8 rm
rm= remove- 需要
-r或-R选项才能删除目录 - 常与
*一起使用,比如xxx*表示所有名字前3个字符为"xxx"的文件和目录,*表示所有文件和目录 rm *: 删除当前目录所有非隐藏文件rm -r *: 删除当前目录所有非隐藏文件和目录rm -rf *: 删除当前目录所有内容(-f表示强制删除)cp、mv、rm都有-i选项以开启交互模式,在删除或覆盖时会有提示要求用户确认- Korn和Bash中可以输入
alias cp="cp -i"来默认开启交互模式

浙公网安备 33010602011771号