Linux:文件、目录相关指令-cp、mv、rm、mkdir、rmdir指令
0、常用
1)cp
cp A /tmp/A cp -i A /tmp/A #同名覆盖,询问 cp -f A /tmp/A #同名覆盖,不询问(强制) cp -r A /tmp/A #目录复制,复制后目录的归属人变为当前用户 cp -a A /tmp/A #目录复制,保留原归属人
cp A B C /tmp #多文件复制,目的地必须为目录
2)rm
rm -i A #删除前询问 rm -f A #删除前不询问 rm -r A #递归删除目录
rm -f 202507* #删除以202507开头的文件
3)mv
mv A /tmp #简单移动 mv A B C /tmp #一次移动多个 mv -i A /tmp #同名时询问 mv -f A /tmp #同名时强制覆盖
4)mkdir
mkdir -m 711 /data #设定权限 mkdir -p /tmp/dir1/dir2 #递归创建dir1、dir2
1、文件
1)cp:复制
用法:
-
cp [-adfilprsu] [--preserver=all] 源文件路径 目标文件路径
-
cp [options] 源1 源2 ... 目标文档路径
选项
选项 |
说明 |
| a | 相当于-dr --preserve=all,所有特性(包括所有者)完全复制 |
| d | 若源文件为链接文件,那么复制的是链接文件属性而非用文件本身的属性 |
| f | 强制,若目标文件已存在,则移除后再尝试一次 |
| i | 若目标文件已存在,则会在覆盖时先询问 |
| l | 建立硬式连结,而非复制文件本身(此时会采用执行者的特性) |
| p | 连同文件属性一起复制,而不使用新属性 |
| r | 递归复制,用于目录的复制 |
| s | 复制成符号链接文件,即快捷方式 |
| u | 目标文件不存在或比源文件旧时才复制 |
| --preserve=all | 除了-p的权限相关参数外,还加入SELinux的属性 |
说明
- 如果有多个源文件,那么目标一定是目录;
- 不同身份的人执行这个指令会有不同的结果产生;
- cp别人的文件要先有r权限;
- 默认情况下,cp后的文件所有者为指令操作者本身;
- 复制目录必须加选项-r(使用新特性,可能改变权限)或-a(保持原特性);
- 可以通过修改目标文件名的方式实现复制+改名;
- 如果执行人本身没有修改文件的拥有者与群组的权限,那么即使加上-a,他也无法为复制后的文件修改拥有者和群组(第三和第四部分)
例子
①简单复制和覆盖复制
[root@study ~]# cp ~/.bashrc /tmp/bashrc
[root@study ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n 不覆盖,y 为覆盖
复制并改名(直接修改目标文件名即可)
cp -a wtmp dmtsai_wtmp
②复制前后的属性、特性变化
[root@study ~]# cd /tmp
[root@study tmp]# cp /var/log/wtmp . <==想要复制到当前目录,最后的 . 不要忘
[root@study tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 /var/log/wtmp
-rw-r--r--. 1 root root 28416 Jun 11 19:01 wtmp
如果要保证文件特性不变,应该在复制时加入选项-a或-p,此时看起来像是源文件的镜像
[root@study tmp]# cp -a /var/log/wtmp wtmp_2
[root@study tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 /var/log/wtmp
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 wtmp_2
③目录复制
需要加选项-r(会改变特性)、-a或-p(保证特性不变)
[root@study tmp]# cp /etc/ /tmp
cp: omitting directory `/etc' <== 如果是目录则不能直接复制,要加上 -r 的选项
[root@study tmp]# cp -r /etc/ /tmp
[root@study tmp]# cp -a /etc/ /tmp
④连结档
硬链接、实体链接:-l,会使文件属性第二项[连接数]增加
符号链接、快捷方式:-s
[root@study tmp]# cp -s bashrc bashrc_slink
[root@study tmp]# cp -l bashrc bashrc_hlink
[root@study tmp]# ls -l bashrc*
-rw-r--r--. 2 root root 176 Jun 11 19:01 bashrc <==与源文件不太一样了!
-rw-r--r--. 2 root root 176 Jun 11 19:01 bashrc_hlink
lrwxrwxrwx. 1 root root 6 Jun 11 19:06 bashrc_slink -> bashrc
2)rm:删除文件或目录
用法:rm [-fir] 路径/正则路径
选项
选项 |
说明 |
| f | force,忽略不存在的文件,不出现警告讯息 |
| i | 互动模式,删除前询问 |
| r | 递归删除,用于目录删除(危险选项) |
说明
- 使用正则路径,会删除所有匹配的路径
例子
①正则删除
[root@study tmp]# rm -i bashrc*
# 注意那个星号,代表的是 0 到无穷多个任意字符喔!很好用的东西!
②删除目录,与rmdir的区别
[root@study tmp]# rmdir /tmp/etc
rmdir: failed to remove '/tmp/etc': Directory not empty <== 删不掉啊!因为这不是空的目录!
[root@study tmp]# rm -r /tmp/etc
3)mv:移动(重命名)文件
用法
-
mv [-fiu] 源路径 目标路径
-
mv [options] 源1 源2 源3 ... 目标路径
选项
选项 |
说明 |
| f | force,如果目标文件存在,则直接覆盖 |
| i | 若目标文件存在,会询问是否覆盖 |
| u | 若目标文件存在,且源文件较新,才会覆盖 |
说明
- 如果有多个来源文件或目录,则最后一个目标文件一定是目录
例子
①常规复制、移动
例一:复制一文件,建立一目录,将文件移动到目录中
[root@study ~]# cd /tmp
[root@study tmp]# cp ~/.bashrc bashrc
[root@study tmp]# mkdir mvtest
[root@study tmp]# mv bashrc mvtest
②更名
范例二:将刚刚的目录名称更名为 mvtest2
[root@study tmp]# mv mvtest mvtest2
还有个rename指令,可以同时对多个文档更名
③一次移动多个文件
[root@study tmp]# mv bashrc1 bashrc2 mvtest2
4)touch:①创建文件;②修改文件时间
用法:touch [-acdmt] 文件
选项
选项 |
说明 |
| a | 修改atime |
| c | 修改ctime |
| d |
修改a、m时间 后接指定的时间而不用当前时间,也可以用--date="日期/时间" |
| m | 修改mtime |
| t |
修改a、m时间 后接指定时间而不用当前时间,格式[YYYYMMDDhhmm] |
例子
①常规,新建一个空文件并观察时间
[dmtsai@study tmp]# touch testtouch [dmtsai@study tmp]# ls -l testtouch -rw-rw-r--. 1 dmtsai dmtsai 0 Jun 16 00:45 testtouch
②复制,并观察前后文件的时间
[dmtsai@study tmp]# touch -d "2 days ago" bashrc [dmtsai@study tmp]# date; ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc Tue Jun 16 00:51:52 CST 2015 -rw-r--r--. 1 dmtsai dmtsai 231 Jun 14 00:51 bashrc -rw-r--r--. 1 dmtsai dmtsai 231 Jun 14 00:51 bashrc -rw-r--r--. 1 dmtsai dmtsai 231 Jun 16 00:51 bashrc
变化的是atime和mtime,而ctime没变
2、目录
1)新建:mkdir
用法:mkdir [-mp] 目录名
参数
- -m:指定该目录的权限(不然会用默认权限);
- -p:递归建立该目录(包括它所在的上层目录)。
例子
- -m指定目录权限
mkdir -m 711 test1
2)rmdir:删除(空)目录(可以用rm -r起到相同的作用)
用法:rmdir [-p] 目录名
参数
- -p:递归删除这个目录(会删除所有上层空的目录)

浙公网安备 33010602011771号