开发者学堂课程【Linux文件管理命令:文件管理命令】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/591/detail/8343
文件管理命令
内容介绍
一、复制文件和目录
二、练习
三、移动和重命名文件
四、删除
一、复制文件和目录
(1)命令
u
cp [OPTION].. [-T] SOURCE DEST
1
[root@centos7 data]# ll /etc/fstab
2
-rw-r--r--. 1 root root 595 Sep 19 19:44/etc/fstab
3
[root@centos7 data]# cp/etc/fstab /data/fstab.bak
4
[root@centos7 data]# 17 /etc/fstab/data/fstab.bak
5
-rw-r--r--1 root root 595 Sep24 18:58/data/fstab.bak
6 rw-r--r--.1 root root 595 Sep1919:44/etc/fstab
u
cp [OPTION]... SOURCE... DIRECTORY
1
[root@centos7 data]# cp /etc/fstab /etc/profile /root/anaconda-ks.cfg
2
[root@centos7 data]# ls
3
anaconda-ks.cfg fofstab fstab.bak profile
4
[root@centos7 data]# cp-t/data /etc/bashrc /etc/motd
5
[root@centos7 data]# ls
6
anaconda-ks.cfg bashrc fo fstab fstab.bak motd profile
7
[root@centos7 data]# cp /etc/issue /etc/
8 Display all 283 possibilities?(y or n)
u
cp [OPTION]... -t DIRECTORY SOURCE...
u cp SRC DEST
(2)SRC 是文件:
l 如果目标不存在:新建 DEST,并将 SRC 中内容填充至 DEST 中
l 如果目标存在:
ü 如果 DEST 是 文件:将 SRC 中的内容覆盖至 DEST 中(基于安全,建议为 cp 命令使用-i选项)
ü 如果 DEST 是目录:
在 DEST 下新建与原文件同名的文件,并将 SRC 中内容填充至新文件中
目标源 |
不存在 |
存在且为文件 |
存在且为目录 |
一个文件 |
新建 DEST ,并将 SRC 中内容填充至DEST |
将 SRC 中的内容覆盖至 DEST 中 注意数据丢失风险! 建议用-i选项 |
在 DEST 下新建与原文件同名的文件, 并将SRC中内容填充至新文件中 |
多个文件 |
提示错误 |
提示错误 |
在 DEST 下新建与原文件同名的文件, 并将原文件内容复制进新文件中 |
目录 须使用-r选项 |
创建指定 DEST 同名录,复制 SRC 目录中所有文件至 DEST 下
|
提示错误 |
在 DEST 下新建与原目录同名的目录, 并将SRC中内容复制至新目录中
|
(3)cp 常用选项
u -i:覆盖前提示 -n 不覆盖,注意两者顺序
u -r-R:递归复制目录及内部的所有内容
u -d:--no-dereference--preserv=links 不复制原文件,只复制链接名
u -b:--backup=numbered 目标存在,覆盖前先备份加数字后缀
u -a: 归档/备份(archive),相当于-dR--preserv=all
1
[root@centos7 data]# cp/root/anaconda-ks.cfg f1
2
[root@centos7 data]# ll /root/anaconda-ks.cfg f1
3
-rw------1 root root 1895 Sep 24 19:21 f1
4
-rw------. 1 wang root 1895 Sep 24 18:18/root/anaconda-ks.cfg
5
[root@centos7 data]# cp-a/root/anaconda-ks.cfgf2
6
[root@centos7 data]# ll -a/root/anaconda-ks.cfg f2
7
-rw------. 1 wang root 1895 Sep 24 18:18 f2
8 -rw------. 1 wang root 1895 Sep 24 18:18/root/anaconda-ks.cfo
u -v:--verbose 显示详细的复制过程
1 [root@centos7 data]# cp-av /etc /data
u --preserv[=ATTR_LIST]
ü mode: 权限
ü ownership: 属主属组
ü timestamp:
ü links
ü xattr
ü context
ü All
练习:
1
[root@centos7 data]# ll /etc/shadow
2
-----------1. root root 1339 Sep 21 16:11 /etc/shadow
3
[root@centos7 data]# cp-p/etc/shadow
4
[root@centos7 data]# ll /etc/shadow shadow
5
-----------1. root root 1339 Sep 21 16:11 /etc/shadow
6 -----------1 root root 1339 Sep 21 16:11 shadow
u -u:--update 只复制源比目标更新文件活目标不存在的文件
1
[root@centos7 data]# ll f1
2
-rw------- 1 root root 1895 Sep 24 19:21 f1
3
[root@centos7 data]# cp-u f1 f2
4
cp:overwrite 'f2'?y
5
[root@centos7 data]# ll f2
6
-rw----- --. 1 wang root 1895 Sep 24 19:30 f2
7
[root@centos7 data]# ll f1 f2 -rw----
8 -rW----. e.1 mong root 1895 sep 24 19:30 f2
需要注意的是,cp 命令只适合复制普通的文件,无法复制特殊文件(如硬盘文件等)
二、练习
1、定义别名命令 baketc,每天将 /etc/ 目录下所有文件,备份到/app独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见
1 [root@centos7 data]# alias baketc = ‘cp- av/etc//data/backup ’date+%F
’
2、创建/app/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限
1 [root@centos7 data]# cp -rp /root/ /data/rootdir
三、移动和重命名文件
u mv [OPTION]... [-T] SOURCE DEST
u mV [OPTION]... SOURCE... DIRECTORY
u mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
i 交互式
-f: 强制
-b: 目标存在,覆盖前先备份
改名:[root@centos7 data]# mv f1 f2
移动:[root@centos7 data]# mv f2 /root/
边移动边改名:[root@centos7 data]# mv /root/f2/data/f3
四、删除
u rm [OPTION]... FILE...(慎用,尽可能不要执行,本部分仅供学习,需要删除的时候改用 mv 移动文件)
u 常用选项:
-i 交互式
-f 强制删除
-r 递归,rm 不能直接删文件夹,用-r就可以
--no-preserve-root 删除/根目录
u 示例:
rm -rf /*
1
[root@centos7 data]# rm f4
2
[root@centos7 data]# \rm f1*
3
[root@centos7 data]# rm -f f
4
[root@centos7 data]# rm -r backup2018-09-24/
5
[root@centos7 data]# rm -rf backup2018-09-24/
(删除整个文件夹)
6
[root@centos7 data]# rm -rf /
7 [root@centos7 data]# rm -rf / --no-preserve-root