目录操作
touch
-
touch 新文件…(可为空) 文件名 不存在就是新建空文件
-
touch 不会破坏已有文件 刷新时间
每个文件有三个时间戳:
-
access time 访问时间,atime,读取文件内容(有人读取文件会变化)
-
modify time 修改时间,mtime,改变文件内容(数据的增删操作修改)
-
change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
[root@localhost data]# touch 1 2 3
#创建新文件,或空的新文件
[root@localhost data]# ls
1 2 3
[root@localhost data]# echo "" > 4
#创建4的空文件
[root@localhost data]# ls
1 2 3 4
[root@localhost bin]# stat /etc/passwd
##############查看三种时间
文件:"/etc/passwd"
大小:2337 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:9381005 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-28 22:53:51.539000016 +0800
最近更改:2021-08-27 16:48:55.881739056 +0800
最近改动:2021-08-27 16:48:55.881739056 +0800
[root@localhost bin]# touch /etc/passwd
#################刷新三种时间
[root@localhost bin]# stat /etc/passwd
文件:"/etc/passwd"
大小:2337 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:9381005 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-29 01:43:01.305128380 +0800
最近更改:2021-08-29 01:43:01.305128380 +0800
最近改动:2021-08-29 01:43:01.305128380 +0800
创建时间:-
access time atime 最近打开文件的时间如果你不打开文件是不会刷新的
change time ctime 属性权限改变()
modify time mtime 内容改变属性(大小)
mkdir
创建目录 -p 递归创建 没有文件夹 会自动递归创建
mkdir 选项 目录位置+名称
tiuch 创建文件
创建方式
touch 新文件(可为空) 文件名 不存在就是新建空文件
touch 不会破坏已有文件刷新时间
硬连接与软连接文件
硬连接 同一个文件取不同的名或者叫多个名字(比如 苏轼 字子瞻 号东坡居士 苏二 谥号文忠 )不支持文件夹,创建一个连接数加一,多路径访问。
软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件(应该使用什么路径? 1绝对?2 相对?). /opt /mnt
ln(link)
ln [-s] 源文件或目录… 链接文件或目标位置
加s是软连接 符号连接
对比项 | 硬 链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
例
ln -s 绝对路径的源文件 软连接位置
ls 绝对路径源文件 硬连接位置
只用软连接 不用硬连接
硬连接例
[root@localhost data]# mkdir /data
[root@localhost data]# cd /data
[root@localhost data]# cp /etc/passwd /data/f1.txt
[root@localhost data]# ls
f1.txt
[root@localhost data]# ln /data/f1.txt /data/f11.txt
#建立硬连接
#不能跨分区建立连接 无法对文件夹创建
[root@localhost data]# ln /data/f1.txt /boot/f111.txt
ln: 无法创建硬链接"/boot/f111.txt" => "/data/f1.txt": 无效的跨设备连接
#删除硬链接可以继续访问硬链接。
#为什么文件夹的连接数是2?
#.也是名字..也是
当前目录 opt . 自己 .. /根目录
opt下有个目录 aa
cd aa
. .. .aa ../opt
a
新建 a1
a
a1
软连接例
删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
总用量 8
lrwxrwxrwx. 1 root root 6 8月 26 22:17 f1111.txt -> f1.txt
-rw-r--r--. 3 root root 66 8月 26 21:45 f111.txt
-rw-r--r--. 1 root root 2573 8月 26 11:55 passwd
会认为f1111.txt 与f1.txt在同一目录
################实际运用####################
软件版本升级迭代
开发出 app1.0 做软连接 app
如果有 app2.0 就把 软连接app删除 新建app2.0的软连接app
$PATH 以后自行安装软件 系统不会自行 识别 httpd mysql ls
1将程序文件 放入$PATH 路径 usr/bin
2做软连接 $PATH
3修改$PATH 路径
cp /etc/passwd /mnt/
cp /etc/passwd /etc/shadow /mnt/
复制
cp(copy)备份
-
cp [选项]… 源文件(当前原始文件) 目标(修改源文件的名称) 相当改名复制 文件夹 文件相当于 改名字另存为
-
cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹
选项 | 说明 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,差异备份(只对文件夹起作用) |
如果已有文件夹会生成子目录
[zhangsan@localhost ~]$ ll
#张三用户新建文件
总用量 0
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 29 11:17 zhansan
[root@localhost zhangsan]# cp -a zhansan /data/
#保留所有权限 包括软连接文件
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 8月 29 11:06 1
-rw-rw-r--. 1 zhangsan zhangsan 0 8月 29 11:17 zhansan
[root@localhost data]# cp -r /etc/ /opt/
#复制文件夹要加 -r 不加不让复制
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#变成 etc.bak 的子目录
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#会问你要不要覆盖,cp是别名 加\cp 直接覆盖
[root@localhost data]# cp /etc/passwd /etc/shadow /opt
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f111.txt
#复制多个文件必须要是目录,不能是文件,且目录要存在。
cp: 目标"/opt/f111.txt"