Linux学习之第六课时--文件和目录操作管理命令
在linux系统下使用命令对文件和目录进行操作,这些命令有pwd,cd,ls,touch,mkdir,rmdir,cp,mv,rm,install,tmpwatch,file,du,wc,tree
- 显示工作目录路径:pwd
使用pwd命令可以显示当前用户所处的工作目录的绝对路径
命令语法:
命令中各选项的含义如下表:
pwd命令选项含义 |
|
选项 |
选项含义 |
-L |
目录链接时,输出链接路径 |
-P |
输出物理路径 |
显示用户当前工作目录路径
显示当前用户工作目录的实际物理路径和链接路径
- 更改工作目录路径:cd
使用cd命令可以更改用户的工作目录路径。工作目录路径可以使用绝对路径名或相对路径名,绝对路径从(根/)开始,然后循序到所需的目录下,相对路径从当前目录开始
命令语法:
命令中各选项的含义如下表
cd 命令选项含义 |
|
选项 |
选项含义 |
-P |
如果是链接文件,则进入链接路径的源物理路径 |
cd命令结合各种符号使用方法如下所示
- cd:进入用户主目录
- cd ~:进入用户家目录
- cd -:返回进入此目录之前所在的目录
- cd ..:返回上级目录(若当前目录为”/”,则执行完后还在”/”)
- cd ../..:返回上两级目录
- 列出文件和目录信息:ls
使用ls命令,对于目录而言将列出其中的所有子目录与文件信息,输出文件名以及所要求的其他信息
命令语法:
命令中各选项的含义如下表
ls命令选项含义 |
|
选项 |
选项含义 |
-a |
显示指定目录下所有子目录与文件,包含隐藏文件 |
-A |
显示指定目录下所有子目录与文件,包括隐藏文件,但不列出”.”和”..” |
-c |
配合-lt: 根据ctime排序并显示ctime |
-d |
如果参数是目录,只显示其名称而不显示其下的各文件和子目录 |
-F |
显示文件类型 |
-i |
在输出的第一列显示文件的inode号 |
-l |
以长格式来显示文件的详细信息 |
-r |
排序时保留顺序 |
-t |
根据修改时间排序 |
-s |
以块数形式显示每个文件分配的尺寸 |
-S |
根据文件大小排序 |
不同类型的文件在linux系统中具有不同的颜色,这些颜色的含义如下
- 绿色:代表可执行文件
- 红色:代表压缩文件
- 深蓝色:代表目录
- 浅蓝色:代表链接文件
- 黄色:代表设备文件,包括块设备文件和字符设备文件
- 白色:代表一般文件
- 灰色:代表其他文件
- 红色闪烁:代表链接的文件有问题
显示/var目录下的文件和子目录信息,用标记标出文件类型
文件类型的标记有以下几种
- /:表示目录
- @:表示符号链接文件
- *:表示可执行文件
- |:表示管道文件
- =:表示socket文件
- 没有标记:表示普通文件
- 创建空文件,更改文件时间:touch
使用touch命令可以创建空文件以及更改文件的时间(atime和mtime)
命令语法:
命令中各选项的含义如下表
touch命令选项含义 |
|
选项 |
选项含义 |
-a |
只更改访问时间(atime) |
-m |
更改文件的修改时间记录(mtime) |
-c |
假如目标文件不存在,不会建立新的文件 |
-r<文件> |
使用指定文件的时间属性而非当前时间 |
-d<字符串> |
使用指定字符表示时间而非当前时间 |
-t<日期时间> |
使用[[CC]YY]MMDDhhmm[.ss]格式的时间而非当前时间 |
注意:时间格式MMDDHHmm是指月(MM),日(DD),时(HH),分(mm)的组合。如果还要加上年份,那么是YYYYMMDDHHmm,比如2014年9月17日19点30分,那么使用201409171930
创建空文件demo1,demo2和demo3
将文件demo1的时间记录更改为10月15日19点45分,时间格式为MMDDHHmm
将/home/demo1文件的访问/修改时间(atime和mtime)设置成与/etc/passwd文件相同
- 创建目录:mkdir
使用mkdir命令可以在linux系统中创建目录
命令语法:
命令中各选项的含义如下表
选项 |
选项含义 |
-m<权限模式> |
对新创建的目录设置权限,在没有-m选项时,默认权限是755 |
-v |
每次创建新目录都显示信息 |
-p |
可以是一个路径名称,此时若路径中的某些目录尚不存在,加上此选项后,系统将自动创建那些尚不存在的目录,即一次可以建立多个目录 |
创建目录demo,其默认权限为755
创建目录demos,其权限为777
- 删除空目录:rmdir
使用rmdir命令可以在linux系统中删除空目录
命令语法:
选项 |
选项含义 |
-p |
递归删除目录,当子目录删除后其目录为空时,也一同被删除 |
-v |
输出处理的目录详情 |
- 复制文件和目录:cp
使用cp命令可以复制文件和目录到其他目录中,如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息
命令语法:
命令中各项的含义如下表
选项 |
选项含义 |
-a |
在复制目录时保留链接,文件属性,并递归地复制文件,等同于-dpr选项 |
-d |
复制时保留链接 |
-f |
在覆盖目标文件之前不给出提示信息要求用户确认 |
-i |
和-f选项相反,在覆盖目标文件之前给出提示信息要求用户确认 |
-l |
不作复制,只是链接文件 |
-r |
如果给出的源文件是一个目录文件,将递归复制该目录下所有的子目录和文件。此时目标必须为一个目录名 |
-p |
除复制源文件的内容外,还把其修改时间和访问权限也复制到新文件中 |
- 文件和目录改名,移动文件和目录路径:mv
使用mv命令可以对文件和目录更改名称以及移动文件和目录的路径
命令语法:
命令中各选项的含义如下表
选项 |
选项含义 |
-i |
覆盖前询问 |
-f |
覆盖前不询问 |
-n |
不覆盖已存在文件 |
-u |
只有在源文件文件比目标文件新,或目标文件不存在时才进行移动 |
-T |
将目标文件视为普通文件处理 |
- 删除文件或目录:rm
使用rm命令可以删除系统中的文件或目录
选项 |
选项含义 |
-f |
强制删除,忽略不存在的文件,不给出提示信息 |
-r |
递归删除目录及其内容 |
-i |
在删除前需要确认 |
注:在删除文件和目录时要谨慎使用-f选项,因为使用该选择在删除的时候不会提示任何信息就强制删除
- 复制文件和设置属性:install
在以下命令语法的前三种形式中,将源文件复制到目标文件或将多个源文件复制到一个已存在的目录中,同时设置其所有权和权限模式。在第四种形式中,创建给出目标目录中的所有组件
命令语法:
命令中各选项的含义如下表
选项 |
选项含义 |
-c |
比较每组源文件和目标文件,在一些情况下不修改目标文件 |
-d |
将所有参数视为目录名称,为指定的目录创建所有组件 |
-D |
创建目标目录的所有必要的父目录,然后将源文件复制到该目录 |
-g |
自行设置所属组,而不是进程目前的所属组 |
-m |
自行设置权限模式(像chmod),而不是rwxr-xr-x |
-o |
自行设定所有者(只适用于超级用户) |
-p |
修改源文件的访问/修改时间以与目标文件保持一致 |
-s |
拆解符号表 |
-S |
覆盖常用备份文件后缀 |
-t |
将源文件所有参数复制到指定目录 |
-T |
将目标文件视为普通文件 |
-v |
创建目录时显示其名称 |
创建/root/python文件夹
将/root/a.py文件复制到/root/python文件夹中
将/root/a.py文件复制到/root/python文件夹中,并改名demo
将/root/a.py文件复制到/root/python/demos文件,并且权限设置为644
- 删除在指定时间段内没有被访问的文件:tmpwatch
使用tmpwatch命令可以从指定的目录中递归地搜索,并删除在指定时间段内没有被访问的文件。该命令一般被用来清扫那些用来临时驻留文件的目录(/tmp)。tmpwatch忽略符号链接,它不会切换文件系统,而且只删除空目录和常规文件
命令语法:
命令中各项的含义如下表
选项 |
选项含义 |
-a |
删除任何类型的文件 |
-f |
强制删除目录或文件 |
-q |
不显示命令执行过程 |
-v |
详细显示命令执行过程 |
-t |
只用作测试,并不真的删除文件或目录 |
-m |
根据文件被修改时间(mtime) |
-c |
根据文件更改时间(ctime) |
-M |
根据文件夹更改时间(mtime) |
-U |
排除指定用户的文件 |
-x |
排除指定路径 |
-X |
排除匹配字符串的路径 |
-d |
不删除空目录 |
- 查询文件类型:file
使用file命令可以查询指定文件的文件类型,可以知道某个文件究竟是二进制的可执行文件,还是Shell脚本文件,或者是其他格式。file命令能识别的文件类型有目录,Shell脚本,英文文本,二进制可执行文件,C语言源文件,文本文件以及DOS可执行文件
命令语法:
命令中各选项的含义如下表
选项 |
选项含义 |
-v |
在标准输出后显示版本信息,并且退出 |
-z |
探测压缩过的文件类型 |
-b |
列出辨识结果时,不显示文件名称 |
-c |
详细显示命令执行过程,便于排错或分析程序执行的情形 |
-i |
显示MIME类型 |
-f<名称文件> |
从文件中读取要分析的文件名列表 |
-L |
允许符号链接 |
查看/home目录下所有文件的文件类型
显示/home/a.py文件的MIME类型
ASCII文件指文件内只含有使用标准ASCII(美国信息交换标准代码)字符集编码的字符。一般的文本文件(比如字处理文件,批处理文件和源语言程序)通常都是ASCII文件,因为它们只含有字母,数字和常见的符号
MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定的应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件的打开方式
- 显示目录或文件的磁盘占用量:du
命令语法:
命令中各选项的含义如下表
选项 |
选项含义 |
-s |
只分别计算命令列中每个参数所占的总用量 |
-a |
输出所有文件的磁盘用量 |
-c |
显示总计信息 |
-l |
如果是硬链接,就多次计算其尺寸 |
-x |
跳过处于不同文件系统之上的目录 |
-h |
以KB,MB,GB为单位显示,提高信息的可读性 |
-S |
不包括子目录的占用量 |
-L |
找出任何符号链接指示的真正目的地 |
显示文件/home/a.py的磁盘占用量
注:使用ls命令可以看到/home/a.py文件大小为42字节,0.04KB左右。使用du a.py文件磁盘占用量为4KB,比文件大小还要大
- 统计文件行数,单词数,字节数和字符数:wc
如果没有给出文件名则从标准输入读取。单词是由空格字符区分开的最大字符串
命令语法:
命令中各选项的含义如下表
选项 |
选项含义 |
-l |
统计行数 |
-w |
统计单词数 |
-c |
统计字节数 |
-m |
统计字符数 |
-L |
统计文件中最长行的长度 |
统计文件/home/a.py的行数
统计文件/home/a.py的单词数
统计文件/home/a.py的字符数
统计文件/home/a.py中最长行的长度
统计文件/home/a.py的行数,单词数和字节数
统计文件/home目录下有多少个子目录和文件
- 以树状图逐级列出目录的内容:tree
命令语法:
命令中各选项的含义如下表
选项 |
选项含义 |
-a |
所有文件都会都会被列出 |
-d |
显示目录名称而非内容 |
-l |
如遇性质为符号链接的目录,直接列出该链接所指向的源目录 |
-f |
在每个文件或目录之前,显示完整的路径名称 |
-i |
不以阶梯状列出文件或目录名称 |
-q |
用”?”号取代控制字符,列出文件和目录名称 |
-r |
以反向字母数字顺序排序文件 |
-p |
显示每一个文件的权限标示 |
-u |
列出文件或目录的用户所有者或者UID |
-g |
列出文件或目录的组群所有者或者UID |
-s |
显示每一个文件的大小(单位字节) |
-t |
用文件和目录的修改时间(mtime)排序 |
-C |
在文件和目录清单加上色彩,便于区分各种类型 |
-D |
显示文件或目录的修改时间(mtime) |
-F |
显示文件类型,追加/,=,*或| |
--inodes |
显示每一个文件的indoe |
--device |
显示每一个文件所属的设备ID号 |
-v |
按版本字母数字排序文件 |
-A |
使用ASNI绘图字符显示树状而非以ASCII字符组合 |
-N |
直接列出文件和目录名称,包括控制字符 |
注:如果Linux系统中无法使用tree命令,那是因为你没有安装tree软件包,使用以下命令安装tree软件包
以树状图逐级列出/home目录的内容
以树状图逐级列出/home目录的内容,并显示权限信息