linux文件管理相关知识,文件管理相关知识点和命令

文件管理相关知识点和命令

文件通配符

*:匹配零个或者多个任意字符

?:匹配任意单个字符

~:当前用户家目录

~username:用户家目录

~+:当前工作目录

~-:前一个工作目录

[0-9]:匹配任意单个数字

[a-z][A-Z]:字母匹配特作说明,字母顺序设定aAbBcC,

所以[a-z]不能代表所有小写字母,里面还包含了除Z以外的大写字母

同理[A-Z]也不能代表所有大写字母,里面还包含了除a以外的小写字母

[abc]:匹配列表中任意一个字符

[^abc]:匹配除了列表中字符以外的任意字符

预定义的字符类:

可通过man 7 glob查询

[[:digit:]]:匹配任意数字,相当于[0-9]

[[:lower:]]:任意小写字母

[[:upper:]]:任意大写字母

[[:alpha:]]:任意字母(包含大小写字母)

[[:alnum:]]:任意数字和字母

[[:blank:]]:水平空白符

[[:space:]]:水平或垂直空白字符

[[:punct:]]:标点符号

[[:print:]]:可打印字符

[[:cntrl:]]:控制(非打印)字符

[[:graph:]]:图形字符

[[:xdigit:]]:十六进制字符

小练习:

1 、显示/var 目录下所有以l 开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录ls -a /var/l*[0-9]*[[:lower:]]

246aada01833ade0251fef2f9ba75c16.png

2 、显示/etc 目录下以任意一位数字开头,且以非数字结尾的文件或目录ls -a /etc/[0-9]*[^0-9]

d7fc73fae2ae3f7c35c15b22e983f609.png

3 、显示/etc/ 目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录ls -a /etc/[^[:alpha:]][[:alpha:]]*

b2ff653e33fca56bd2449c4220adbd16.png

4 、显示/etc 目录下所有以m 开头以非数字结尾的文件或目录ls -a /etc/m*[^0-9]

30a40c4bb9caf960ad9727dfc61a3ae9.png5 、显示/etc 目录下,所有以.d 结尾的文件或目录ls  -ad /etc/*.d

25f21bb858f659d05ef93a73528ee007.png6 、显示/etc 目录下,所有.conf 结尾,且以m,n,r,p 开头的文件或目录ls -ad  /etc/[mnrp]*.conf

131fa4bb22a4329efb34072f862d38de.png

touch命令:改变文件的时间戳(atime,ctime,mtime)

atime:access time  访问时间,读取文件内容

mtime:modify time  修改时间,改变文件内容(数据)

ctime:change time  改变时间,元数据改变

小实验:

指令

echo aa >> shabi

使用输出重定向,将echo aa的结果追加至shabi文件中,此时shabi文件的数据和元数据改变,ctime和mtime改变为当前时间,但是因为没有访问shabi文件,只是将aa内容重定向至shabi文件中,所以访问时间atime不会发生改变,结果如下:

fe40747b824da5c905206c9c78d78514.png

r如上cat shabi文件时,atime并没有更改,是因为系统设定

因为有些文件会经常被访问,如果每访问一次,就刷新一次atime,会很占用资源且极其浪费,

所以系统设定为一般情况下atime的时间比mtime或ctime早时,访问atime后,atime会自动刷

新为当前时间

如下atime比mtime时间晚,当访问了shabi文件后,amtime是没有刷新的

90062020326937826c241a68fa1bf2cd.png

设置mtime时间,如下atime时间比mtime时间早,访问shabi文件后,atime刷新了

f5bd114946dce7e7bc874c438220a64e.png

touch 选项 file

touch f1:如果f1文件存在,则会刷新f1的时间戳

如果f1文件不存在,则会创建f1文件(空的)

754e5c2b01ea72bf4eca2161f642c5ea.pngtouch  -c  file:如果文件存在则刷新时间戳,

如果文件不存在也不创建

9f74aa830d03b60bb45c8b24c4bc4a21.png

touch  -a  file:刷新文件的atime,且ctime会随之刷新

e04b41494a56a9c236149f7ec94f7417.pngtouch  -m  file:刷新文件的mtime,且ctime会随之刷新

a88e33dc81358bab1aeb3f51ba7edf21.png

touch -t 201007281029.30(时间格式) file :指定atime,mtime时间,同时ctime也会改变为当前时

间,因为atime和mtime变更了,元数据必然改变

touch -d “+2 day” file:指定时间,同上说明,同上效果

touch -d "+2 day" file

a4f30a80d8a6372c05f56d0c966eace6.png

文件管理工具:cp  mv  rm

cp命令==>copy

源文件;目标文件

源文件为单个文件时:

如果目标文件不存在,则事先创建此文件,并复制源文件的数据流值目标文件中

如果目标文件存在:

目标文件为非目录文件时,则覆盖目标文件

目标文件是目录文件时,则先在目标目录下创建一个与源文件同名的文件,并复制其数据流

9884a8282a0b3094a70591c8b2dbdfab.png

源文件为多个文件时:

如果目标文件不存在:错误

如果目标文件存在

如果目标文件是非目录文件;错误

如果目标是目录文件:分别复制每一个文件至目标目录中,并保持原名

6347f9d313f48926cb9fdb61469c5d24.png

源文件为目录时:

须使用-r选项,否则命令无法执行成功

如果目标文件不存在;则创建与源目录同名的目录,并复制源目录中所有的文件至目标目录下

0f65cf1b2563d52ed7526e9ec9a1f696.png

如果目标文件存在

如果目标文件是非目录文件,错误

如果目标是目录文件:则在目标目录下创建一个和源目录同名的目录,

并复制目录中所有的文件至新创建的与源目录同名目录下

e83ef8b7b378a5c9e1790d25da6f8c98.png

直观图:

9e64e7053a6299316e8e7b786e4eb09d.png

常用选项

-i:交互式复制,即覆盖之前会提醒用户确认

注意:一般情况下,root用户的cp是“cp -i”的别名,执行cp命令是默认有交互式提醒

而在普通用户中,cp命令就是单指cp命令,没有带选项,所以在普通用户中,

执行cp命令时,不会有交互式提醒,

ed52e41adfb1728a135ec93cb66b7b4a.png

-f:强制覆盖目标文件。此选项在一般cp文件时无作用

用法:在root用户上cp一个/etc/issue文件到普通用户上~username/,

这个在普通用户上的issue的属主和属组都是root,

此时普通用户想要cp文件到issue会提示权限不够,无法复制

但是加上-f选项就可以强制覆盖目标文件

6b53984982a1d78f9611d4de8a365b43.png

可理解为:普通用户权限不够不能执行cp a issue,加上-f选项的效果为删除root权限的issue,

然后复制a里面的内容到一个新建的issue文件中,权限为普通用户的

-d:链接文件cp时,会默认cp链接指向的源文件,加上-d选项,则是cp链接本身

-a:-dR --preserve=all:用于实现归档

--preserve=  mode:权限

ownership:属主属组

timestamps:时间戳

context:安全上下文

xattr:扩展属性

links:符号链接

all:上述所有属性

-p:等同于--preserve=mode,ownership,timestamp

-r,-R;递归复制目录及内容的所有内容

mv:move(和cp命令用法相似)

在相同路径下,mv某文件时,可以修改文件名

例如:

9b3ba8a06e4d74ad3de01b83257d166d.png

在不同路径下,mv某文件时,则是把源文件移动到目标路径目录下

06f3054f18e9130fc68a683d536d301a.png

-i交互式

-f:强制覆盖现有的文件

源文件为单个文件时:

如果目标文件不存在,则将源文件名改为目标文件名,内容不变(可理解为改名)

如果目标文件存在:

目标文件为非目录文件时,则将源文件名改为目标文件名,内容不变(貌似和上面一样啊aafd5ff1354f15a9e9dd21954343fa92.png

目标文件是目录文件时,则将源文件移动至目标目录中

f673a4180c3379593b6a57aa2d4647b1.png

源文件为多个文件时:

如果目标文件存在

如果目标文件是非目录文件;错误

如果目标是目录文件:将所有的源文件都移动至目标目录中

411dc464d5c9faa98094c5fd81bdd7fe.png

源文件为目录时:

如果目标文件不存在;则将源目录改名为目标为目录

如果目标文件存在

如果目标文件是非目录文件,错误

如果目标是目录文件:则将源目录移动至目标文件中

a103bd9c7c5c594e900464042904c162.png

rm:可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其             子目录 均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

-i交互式

-r:递归删除

-rf:强制递归删除

-f:强制

危险操作: rm -rf /*

注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)

命令别名:alias

alias可以显示当前shell进程所有可用的命令的别名

定义别名:alias  cls=clear,执行cls时和clear效果一样

faea99b1f1afcf783122d4094d4cba1b.png

但是在命令行里定义的别名。仅对当前shell进程有效

如果想永久有效,则要在配置文件中修改相关配置文件:

仅对当前用户有效:~/.bashrc

对所有用户有效:/etc/bashrc

修改配置文件给出的新配置不会立即生效

bash进程重新读取配置文件:

source /path/to/config_file

. /path/to/config_file

撤销别名:unalias

unalias  cls:撤销clear的别名cls

如果指令有定义了别名,但是想使用原命令

\command

’command‘  “command”

/PATH/COMMAND:外部命令

以ls为例alias ls='ls --color=auto'

使用了原命令后,颜色标识没了

3d90854adbd0fd3f3baefa2a7834fe54.png

小练习:

1 、定义别名命令baketc ,每 天将 将/etc/ 目录下所有文件,备份到/testdir 独立的子目录 下,

并要求子目录为 格式为 backupYYYY-mm-dd  ,备份过程可见

指令为:alias  baketc= 'cp -rv  /etc/ /testdir/backup'date +%F''

2 、创建/testdir/rootdir 目录 并 复制/root 所有下文件到该目录 内,要求保留原有权限cp --preserv=mode -R /root  /testdir/rootdir

目录操作:

tree:以树状图列出目录的内容

-D:列出文件或目录的更改时间

-i:不以树状图列出目录的内容

8e4cd27b343e47bb4d1c421a947567e9.png

-d:只显示目录,不显示文件

8aca7237a227a255870715b55c9a3c29.png

-s:列出文件和目录大小(配合-h选项更直观)

-t用文件和目录的更改时间排序(配合-D效果更好)

f5a308588736140c4fa5419a5dbaa0b6.png

-L level:指定显示目录的层级数目

mkdir:创建目录

-p:自动按需创建父目录

-v:显示详细创建过程

a660b8fc52a2fefe7bc5b5ff671ad4af.png

-m mode:创建目录时直接给定权限,否则为默认权限

554d60cd6a7dc9b035c8e25e73e222ab.png

rmdir:删除空目录

-p:递归删除父目录

-v:显示详细信息

94a92a429b7f6fece7cfbad621753187.png

rm -r:递归删除目录树

916221d021888b066f6c58f9575098c9.png

练习:

(1)  如何创建/testdir/dir1/x, /testdir/dir1/y,

/testdir/dir1/x/a, /testdir/dir1/x/b,

/testdir/dir1/y/a, /testdir/dir1/y/b指令:mkdir -pv /testdir/dir1/{x,y}/{a,b}

04704ea5ca7125490c76624219b1f333.png

(2)  如何创建/testdir/dir2/x, /testdir/dir2/y,

/testdir/dir2/x/a, /testdir/dir2/x/b指令:mkdir -pv /testdir/dir2/{x/{a,b},y}

e7a65c32624ce74c2237571495e4aa4c.png

(3)  如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5,

/testdir/dir5/dir6, /testdir/dir5/dir7指令:mkdir -pv /testdir/dir{3,4,5/dir{6,7}}

8a762a159b9fea2f5f311c567b77ab92.pngmkdir -pv /test/{a,b}_{c,d}

mkdir -pv /test/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cahce,log,run}}

10051f5cdcffbdedd4af79459229c13f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值