在Linux中,全部都是文件,所以文件管理在Linux上格外重要,在我们学习文件管理前,我们先学习几个关于文件的命令,之后才能更好的学习文件管理。
目录
pwd命令
cd命令
列出文件内容ls
查看文件状态stat
创建文件touch
文件通配符
复制命令cp
移动与重命名mv
删除rm
显示目录树tree
创建文件夹mkdir
删除文件夹rmdir
查看文件类型file
拓展:rename&&shred
显示当前工作目录
每个shell和系统进程都有一个当前的工作的目录
CWD:current work directory
显示当前的shell CWD的绝对路径pwd:
打印工作目录(当前所在目录)
参数:
-P 显示真实物理路径
-L 显示连接路径(默认)
改变目录
格式:cd [option] dir
作用:改变目录
切换到父目录:cd ..
切换到当前用户主目录:cd
切换至以前的工作目录:cd –
选项:-P 直接进入原目录(非链接目录)
相关的环境变量:
PWD:当前目录文件
OLDPWD:上一次目录路径
列出当前目录的内容或指定目录
格式:ls [option] [files|dirs]
作用:列出当前目录的内容或指定目录
用法:
ls -a 显示所有文件
ls -A 显示所有文件,除.、..
ls -l 长列出
ls -R 递归
ls -ld 显示指定目录的详细信息。
ls -1 竖显示
ls -S 按文件大小降序排列
ls -t 按修改时间(mtime)从新到旧排列
ls -ut 按访问时间(atime) 从新到旧排列
ls -U 按文件存放的先后顺序
ls -X 按文件后缀排序
ls -i 显示文件的inode号
ls -Z 显示文件的context值
查看文件的状态
命令:stat
文件:metadata,data
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time:修改时间,mtime,改变文件内容(数据)
change time:改变时间,ctime,元数据发生改变
创建空文件和刷新时间
格式:touch [option]… file …
作用:创建空文件和刷新时间
OPTION:
-a 仅改变atime和ctime
-m 仅改变mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
touch filename :
当文件不存在时,则创建一个空文件,名为filename
当文件已存在时,则更新期时间戳
-a 仅更新atime,ctime
-m 仅更新mtime, ctime
touch filename 更新全部时间戳。
文件通配符
在好多时候我们可能需要查找有相同字符,或者有一定规则的名字的文件或目录,如果我们还是利用手工一点一点的去敲出来,无疑会浪费我们好多时间,此时,我们可以利用通配符来进行文件匹配,可以较少好多我们的时间,快捷,方便,首先我们看看都有那些通配符:
* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z]: 字母
[A-Z]: 字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符
还有一种就是预定义的字符类,同样是作为通配符使用
预定义的字符类: #man 7 glob
[:digit:]: 任意数字, 相当于0-9
[:lower:]: 任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]: 任意数字或字母
[:blank:]: 水平空白字符
[:space:]: 水平或垂直空白字符
[:punct:]: 标点符号
[:print:]:可打印字符
[:cntrl:]: 控制(非打印)字符
[:graph:]: 图形字符
[:xdigit:]: 十六进制字符
接下来我们通过一些演示来说明如何使用通配符
1、 显示/var目录下所有以l开头, 以一个小写字母结尾, 且中间出现至少一位数字的文件或目录
2、 显示/etc目录下以任意一位数字开头, 且以非数字结尾的文件或目录
3、 显示/etc/目录下以非字母开头, 后面跟了一个字母及其它任意长度任意字符的文件或目录
4、 显示/etc/目录下所有以rc开头, 并后面是0-6之间的数字,其它为任意字符的文件或目录
复制文件和目录cp
命令:cp
格式:cp[option]...[-T] source dest
cp[option]...source...directory
cp[option]... -t directory source
说明:
cp A B
A是文件:
1.如果目标不存在,新建B,并将A中的数据拷贝到B中
2.如果目标存在,且B是文件,将A中的数据覆盖到B中
3.如果B是目录,在B下新建一个与源文件同名的文件并将内容进去
A是目录:(需要参数 -r)
1.如果B不存在,则创建指定目录,则创建指定目录,复制A目录下文件到B目录
2.如果B存在:
1.如果B是文件:报错
2.如果B是目录:则将包括A目录一起复制到B
cp A B C D H
如果ABCD是文件:
当 H 是目录且存在的情况下才能拷贝
如果ABCH是目录:(必须用 -r)
当 H 是目录且存在的情况下才能拷贝,将包括ABCD目录一起复制到H下
cp常用选项:(cp本身是直接复制原文件的,而不是链接文件)
-i:prompt before overwrite 覆盖前提示
-n:do not overwrite an existing file 不覆盖已存在的文件(也不追加)
-r,-R:copy directories recursively 递归拷贝目录以及文件内容
-a:same as -dR --preserve=all 拷贝全部文件且权限不变
-d:same as --no-dereference --preserve=links
若文件为链接文件,则只复制链接属性,不复制源文件本身
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)
-f:当覆盖时,如目的文件的缺少写权限时,强制删除目的文件,并新建再填充内容。当有-n时,无效
-v:显示拷贝的过程
移动和重命名文件
格式:mv [OPTION]... A(源)... B(目的)
作用:移动和重命名文件
参数:-i: 交互式(会询问)
-f: 强制(不询问)
说明:一般我们会用这个命令进行移动和重命令,如果我们将文件移动到不同的文件,就是移动,如果我们将文件移动到原目录,就是重命令
删除操作
格式:rm [OPTION]... FILE...
作用:删除文件或目录
参数:-i: 交互式
-f: 强制删除
-r: 递归(可以递归删除文件和目录)
目录操作
tree 显示目录树
-d: 只显示目录
-L level: 指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
mkdir 创建目录
-p: 存在于不报错, 且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
rmdir 删除空目录(可以用rm代替)
-p: 递归删除父空目录
-v: 显示详细信息
确定文件内容
格式:file [options] <filename>...
常用选项:
-b 列出文件辨识结果时, 不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
--help 显示命令在线帮助
拓展:
rename:批量改名 '.txt' '.doc' *.txt
shred 粉碎功能(不做演示)