第二周
Posted kfscott
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二周相关的知识,希望对你有一定的参考价值。
第二周
1、描述Linux发行版的系统目录名称命名规则以及用途
-
文件名规则
- 文件名最长255个字节
- 包括路径在内文件名称最长4095个字节
- 蓝色-->目录;绿色-->可执行文件;红色-->压缩文件;浅蓝色-->链接文件;灰色-->其他文件
- 除了斜杠和NUL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
- 标准Linux文件系统(如ext4),文件名称大小写敏感,例如:MAIL、Mail、mail、mAiL。需要注意的是这里导致大小写敏感的是文件系统,而不是Linux本身,如果在Linux系统中挂载了Fat32的文件系统就不会区分大小写了
- 以“.”开头的文件为隐藏文件
-
文件系统结构
- /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放在此目录
- /bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
- /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
- /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
- /lib64:专用于x86_64系统上的辅助共享库文件存放位置
- /etc:配置文件目录
- /home/USERNAME:普通用户家目录
- /root:管理员的家目录
- /media:便携式移动设备挂载点
- /mnt:临时文件系统挂载点
- /dev:设备文件及特殊文件存储位置
- b:block device,随机访问
- c:character device,线性访问
- /opt:第三方应用程序的安装位置
- /srv:系统上运行的服务用到的数据
- /tmp:临时文件存储位置
- /usr:universal shared,read-only data
- bin:保证系统拥有完整功能而提供的应用程序
- sbin:
- lib:32位使用
- lib64:只存在64位系统
- include:C程序的头文件
- share:结构化独立的数据,例如doc,man等
- local:第三方应用程序的安装位置
- bin,sbin,lib,lib64,etc,share
- /var:variable data files
- cache:应用程序缓存数据目录
- lib:应用程序状态信息数据
- local:专用于为/usr/local下的应用程序存储可变数据
- lock:锁文件
- log:日志目录及文件
- opt:专用于为/opt下的应用程序存储可变数据
- run:运行中的进程相关数据,通常用于存储进程pid文件
- spool:应用程序数据池
- tmp:保存系统两次重启之间产生的临时数据
- /proc:用于输出内核与进程信息相关的虚拟文件系统
- /sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
- /selinux:security enhanced Linux,selinux相关的安全策略等信息的存储位置
2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
-
元数据包括
-
文件类型
-
权限
-
UID
-
GID
-
链接数(指向这个文件名路径名称个数)
-
该文件的大小和不同的时间戳
-
指向磁盘上文件的数据块指针
-
有关文件的其他数据
-
-
查看方式
可以用"stat"命令来查看文件元数据内容
[root@centos7 ~]# stat /bin/bash File: ‘/bin/bash’ Size: 964600 Blocks: 1888 IO Block: 4096 regular file Device: 802h/2050d Inode: 137106 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:shell_exec_t:s0 Access: 2020-06-02 01:01:13.023999283 +0800 Modify: 2019-08-08 20:06:56.000000000 +0800 Change: 2020-04-16 12:31:08.006739529 +0800 Birth: -
-
file:文件名
-
size:文件的大小
-
block:文件使用的数据块总数
-
IO Block:IO块的大小
-
regular file:文件类型(这里是常规文件),如果是目录或者其他文件类型会显示不同的结果
-
device:设备编号
-
inode:inode号
-
links:硬连接数
-
access:文件权限
-
uid:文件属主和属主uid
-
gid:文件所属组和所属组的gid
-
context:是selinux的内容,如果没有打开selinux就不会显示了
-
access、modify、change:文件的时间戳信息,分别代表:文件访问时间,修改时间和元数据信息改变时间
-
-
修改时间戳
-
查看文件,比如cat,more,less一个文件后,文件的atime会更新
说明:从kernel2.6.29开始,文件系统默认集成了一个relatime的属性,可以使用mount命令查看。在访问时,有2种情况会更新atime,第一种是mtime比atime新;第二种是上次访问是1天前的了。
[root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 68 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 17:26:46.443816956 +0800 Modify: 2020-04-24 17:26:46.443816956 +0800 Change: 2020-04-24 17:26:46.443816956 +0800 Birth: - [root@centos7 data]# cat f1 # 可以看到atime已经更改 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 68 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 17:26:53.282816548 +0800 Modify: 2020-04-24 17:26:46.443816956 +0800 Change: 2020-04-24 17:26:46.443816956 +0800 Birth: -
-
使用vim更改文件的内容会同时更新文件的mtime、ctime和atime;如果使用echo修改文件只会修改mtime和ctime,不会修改atime。
说明:使用vim打开文件,但是没有修改,使用“:q”退出,只会更改atime,如果修改了内容或者使用了“:wq”退出,则三个时间都会修改
[root@centos7 data]# stat f1 File: ‘f1’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 70 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 17:47:26.431981437 +0800 Modify: 2020-04-24 17:47:26.431981437 +0800 Change: 2020-04-24 17:47:26.431981437 +0800 Birth: - # 使用echo的方式,只修改了mtime和ctime,没有修改atime [root@centos7 data]# echo abc >> f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 8 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 70 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 17:47:26.431981437 +0800 Modify: 2020-04-24 17:47:34.695980944 +0800 Change: 2020-04-24 17:47:34.695980944 +0800
-
更改文件的名称,大小,权限等只会更新文件的ctime
[root@centos7 data]#stat f1 File: ‘f1’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: 805h/2053d Inode: 70 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-24 17:51:46.791987719 +0800 Modify: 2020-04-24 17:52:06.253986559 +0800 Change: 2020-04-24 17:52:06.253986559 +0800 Birth: - # 改了名字之后,只有ctime修改 [root@centos7 data]#mv f1 f2 [root@centos7 data]#stat f2 File: ‘f2’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: 805h/2053d Inode: 70 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-24 17:51:46.791987719 +0800 Modify: 2020-04-24 17:52:06.253986559 +0800 Change: 2020-04-24 17:53:17.430982316 +0800 Birth: - # 修改了权限之后,只有ctime改变 [root@centos7 data]#stat f2 File: ‘f2’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: 805h/2053d Inode: 70 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-24 17:51:46.791987719 +0800 Modify: 2020-04-24 17:52:06.253986559 +0800 Change: 2020-04-24 17:53:17.430982316 +0800 Birth: - [root@centos7 data]# [root@centos7 data]#chmod 777 f2 [root@centos7 data]#stat f2 File: ‘f2’ Size: 4 Blocks: 8 IO Block: 4096 regular file Device: 805h/2053d Inode: 70 Links: 1 Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-04-24 17:51:46.791987719 +0800 Modify: 2020-04-24 17:52:06.253986559 +0800 Change: 2020-04-24 17:54:13.422978979 +0800 Birth: -
-
使用touch命令,指定修改
-
不加任何参数,如果文件不存在则创建文件,如果文件存在就刷新时间戳
[root@centos7 data]# ll f1 ls: cannot access f1: No such file or directory [root@centos7 data]# touch f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:38:58.147987920 +0800 Modify: 2020-04-24 16:38:58.147987920 +0800 Change: 2020-04-24 16:38:58.147987920 +0800 Birth: - # touch了文件f1之后,时间戳更新了 [root@centos7 data]# touch f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:39:05.115987505 +0800 Modify: 2020-04-24 16:39:05.115987505 +0800 Change: 2020-04-24 16:39:05.115987505 +0800 Birth: -
-
-a 仅改变 atime和ctime
[root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:39:05.115987505 +0800 Modify: 2020-04-24 16:39:05.115987505 +0800 Change: 2020-04-24 16:39:05.115987505 +0800 Birth: - # 只修改了atime和ctime,而mtime没有修改 [root@centos7 data]# touch -a f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:41:55.755977334 +0800 Modify: 2020-04-24 16:39:05.115987505 +0800 Change: 2020-04-24 16:41:55.755977334 +0800 Birth: -
-
-m 仅改变 mtime和ctime
[root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:41:55.755977334 +0800 Modify: 2020-04-24 16:39:05.115987505 +0800 Change: 2020-04-24 16:41:55.755977334 +0800 Birth: - # 只修改了mtime和ctime,没有修改atime [root@centos7 data]# touch -m f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:41:55.755977334 +0800 Modify: 2020-04-24 16:44:04.003969689 +0800 Change: 2020-04-24 16:44:04.003969689 +0800 Birth: -
-
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
# 指定f1的atime和mtime为2019-04-26 19:10:10 [root@centos7 data]# touch -t 201904261910.10 f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2019-04-26 19:10:10.000000000 +0800 Modify: 2019-04-26 19:10:10.000000000 +0800 Change: 2020-04-24 16:49:48.299949168 +0800
-
-
3、总结软连接和硬连接的区别,并用实例操作说明。
-
软链接:
- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
-
硬链接:
-
硬链接,以文件副本的形式存在。但不占用实际空间。
-
不允许给目录创建硬链接
-
硬链接只有在同一个文件系统中才能创建
-
-
实例操作
创建硬连接和软连接都使用“ln”命令
-
ln命令格式
ln [参数][源文件或目录][目标文件或目录]
-
创建硬连接
# 创建a1文件的硬连接文件a1.link,可以看到inode都是67 [root@centos7 data]# touch a1 [root@centos7 data]# ln a1 a1.link [root@centos7 data]# ll -i a1 a1.link 67 -rw-r--r--. 2 root root 0 Apr 24 12:07 a1 67 -rw-r--r--. 2 root root 0 Apr 24 12:07 a1.link
-
创建软连接,使用“-s”参数
[root@centos7 data]# touch a1 [root@centos7 data]# ln -s a1 a1.slink [root@centos7 data]# ll a1 a1.slink -rw-r--r--. 1 root root 0 Apr 26 19:15 a1 lrwxrwxrwx. 1 root root 2 Apr 26 19:16 a1.slink -> a1
-
硬连接不能给目录创建,软连接可以
[root@centos7 data]# mkdir d1 # 创建硬连接报错 [root@centos7 data]# ln d1 d1.link ln: ‘d1’: hard link not allowed for directory # 创建软连接成功 [root@centos7 data]# ln -s d1 d1.link [root@centos7 data]# ll -d d1 d1.link drwxr-xr-x. 2 root root 6 Apr 24 12:09 d1 lrwxrwxrwx. 1 root root 2 Apr 24 12:10 d1.link -> d1
-
软链接可以 跨文件系统 ,硬链接不可以
# 跨文件系统创建硬连接报错 [root@centos7 data]# ln a1 /root/a2.link ln: failed to create hard link ‘/root/a2.link’ => ‘a1’: Invalid cross-device link # 跨文件系统创建软连接成功 [root@centos7 data]# ln -s ../data/a1 /root/a1.link [root@centos7 data]# ll /root/a1.link lrwxrwxrwx. 1 root root 10 Apr 24 12:32 /root/a1.link -> ../data/a1
-
-
注意点
- 在创建软链接时,源文件要写目标文件的相对路径;创建硬连接的源文件和目标文件路径都是相对于当前所在目录。
[root@centos7 data]# ln -s ../data/a1 /root/a1.slink [root@centos7 data]# ll /root/a1.slink lrwxrwxrwx. 1 root root 10 Apr 24 12:58 /root/a1.slink -> ../data/a1 # 可以看到两个文件内容相同,软连接创建成功 [root@centos7 data]# cat /data/a1 sdflasdfasfasdf [root@centos7 data]# cat /root/a1.slink sdflasdfasfasdf
- 删除软链接时,路径最后不能加“/”
- 加了“/”,如果该链接指向的是文件则不会做任何操作;如果指向的是目录则会删除目录中的内容
# d1目录中有个子目录d2 [root@centos7 data]# ls d1 d2 # 创建一个d1的软连接d1.slink [root@centos7 data]# ln -s d1 d1.slink [root@centos7 data]# ls d1 d1.slink # 删除时写的是d1.slink/ [root@centos7 data]# rm -rf d1.slink/ # 使用ls命令,在d1目录下看不到任何内容 [root@centos7 data]# ls d1 [root@centos7 data]# ls d1 d1.slink # 所以在删除时不能带“/” [root@centos7 data]# rm -rf d1.slink [root@centos7 data]# ls d1 [root@centos7 data]# ls d1 d2
4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
-
touch
格式:touch [OPTION]... FILE...
选项:
-
不加任何参数,如果文件不存在则创建文件,如果文件存在就刷新时间戳
[root@centos7 data]# ll f1 ls: cannot access f1: No such file or directory [root@centos7 data]# touch f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:38:58.147987920 +0800 Modify: 2020-04-24 16:38:58.147987920 +0800 Change: 2020-04-24 16:38:58.147987920 +0800 Birth: - # touch了已经存在的文件f1之后,时间戳更新了 [root@centos7 data]# touch f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:39:05.115987505 +0800 Modify: 2020-04-24 16:39:05.115987505 +0800 Change: 2020-04-24 16:39:05.115987505 +0800 Birth: -
-
-a 仅改变 atime和ctime
[root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:39:05.115987505 +0800 Modify: 2020-04-24 16:39:05.115987505 +0800 Change: 2020-04-24 16:39:05.115987505 +0800 Birth: - # 只修改了atime和ctime,而mtime没有修改 [root@centos7 data]# touch -a f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:41:55.755977334 +0800 Modify: 2020-04-24 16:39:05.115987505 +0800 Change: 2020-04-24 16:41:55.755977334 +0800 Birth: -
-
-m 仅改变 mtime和ctime
[root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:41:55.755977334 +0800 Modify: 2020-04-24 16:39:05.115987505 +0800 Change: 2020-04-24 16:41:55.755977334 +0800 Birth: - # 只修改了mtime和ctime,没有修改atime [root@centos7 data]# touch -m f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2020-04-24 16:41:55.755977334 +0800 Modify: 2020-04-24 16:44:04.003969689 +0800 Change: 2020-04-24 16:44:04.003969689 +0800 Birth: -
-
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳,其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
# 指定f1的atime和mtime为2019-04-26 19:10:10 [root@centos7 data]# touch -t 201904261910.10 f1 [root@centos7 data]# stat f1 File: ‘f1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2019-04-26 19:10:10.000000000 +0800 Modify: 2019-04-26 19:10:10.000000000 +0800 Change: 2020-04-24 16:49:48.299949168 +0800
-
-c 如果文件不存在,则不予创建
# f2文件不存在 [root@centos7 data]# ll f2 ls: cannot access f2: No such file or directory # 使用-c参数,看到并没有创建f2 [root@centos7 data]# touch -c f2 [root@centos7 data]# ll f2 ls: cannot access f2: No such file or directory
-
-
cp
格式:
-
cp [OPTION]... [-T] SOURCE DEST
SOURCE和DEST都是指的“单个文件”
-
cp [OPTION]... SOURCE... DIRECTORY
SOURCE...指可以同时复制多个文件,后面跟要复制的目录
-
cp [OPTION]... -t DIRECTORY SOURCE...
使用-t参数可以把目标目录放前面,要复制的文件放后面,这种用法较少
工作原理:
cp SRC DEST
- SRC是文件:
- 如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
- 如果目标存在:
- 如果DEST是文件:将SRC中的内容覆盖至DEST中,基于安全,建议为cp命令使用-i选项
- 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
- 如果目标存在:
- SRC是目录:此时使用选项:-r
- 如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中
- 如果DEST存在:
- 如果DEST是文件:报错
- 如果DEST是目录:在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中
常用选项:
-
-i 覆盖前提示
默认系统出于安全考虑已经为cp命令设置了别名添加了-i选项,如果不使用"-i",就会直接覆盖 [root@centos7 ~]# alias cp alias cp=‘cp -i‘ 复制时如果目标文件有相同名字存在,则会询问是否覆盖原有文件,下面第一次复制没有提示,第二次复制由于已经存在第一次复制的内容,就会提示是否覆盖之前的文件,要覆盖需要输“y或者yes” [root@centos7 ~]# cp -i /etc/passwd /data [root@centos7 ~]# cp -i /etc/passwd /data cp: overwrite ‘/data/passwd’?
-
-n 不覆盖,注意两者顺序
[root@centos7 ~]# ll /data/passwd -rw-r--r--. 1 root root 2418 Apr 23 17:00 /data/passwd # 使用“-n”参数之后,发现文件的时间没有改变,说明并没有覆盖 [root@centos7 ~]# cp -n /etc/passwd /data [root@centos7 ~]# ll /data/passwd -rw-r--r--. 1 root root 2418 Apr 23 17:00 /data/passwd
-
-r, -R 递归复制目录及内部的所有内容
# cp默认不能复制目录,需要使用-r或-R参数 [root@centos7 ~]# cp /etc/sysconfig/ /data/sysconfigbak cp: omitting directory ‘/etc/sysconfig/’ [root@centos7 ~]# cp -r /etc/sysconfig/ /data/sysconfigbak [root@centos7 ~]# ls -d /data/sysconfigbak /data/sysconfigbak
-
-d --no-dereference --preserv=links 不复制原文件,只复制链接名
# /etc/grub2.cfg是个软连接文件指向/boot/grub2/grub.cfg [root@centos7 ~]# ll /etc/grub2.cfg lrwxrwxrwx. 1 root root 22 Apr 16 12:32 /etc/grub2.cfg -> ../boot/grub2/grub.cfg # 如果直接使用cp复制/etc/grub2.cfg文件,实际是把软连接所指的/boot/grub2/grub.cfg文件复制了 [root@centos7 ~]# cp /etc/grub2.cfg /data/ # 可以看到复制之后的/data/grub2.cfg和/boot/grub2/grub.cfg两个文件大小相同 [root@centos7 ~]# ll /etc/grub2.cfg /boot/grub2/grub.cfg /data/grub2.cfg -rw-r--r--. 1 root root 4281 Apr 16 12:39 /boot/grub2/grub.cfg -rw-r--r--. 1 root root 4281 Apr 23 16:39 /data/grub2.cfg lrwxrwxrwx. 1 root root 22 Apr 16 12:32 /etc/grub2.cfg -> ../boot/grub2/grub.cfg # 使用“-d”参数就可以仅复制软链接 [root@centos7 ~]# cp -d /etc/grub2.cfg /data/ [root@centos7 ~]# ll /data/grub2.cfg lrwxrwxrwx. 1 root root 22 Apr 23 16:34 /data/grub2.cfg -> ../boot/grub2/grub.cfg
-
--preserv[=ATTR_LIST]
默认:只写--preserv 相当于--preserv=mode,ownership,timestamp
可以加的参数:mode: 权限、ownership: 属主属组、timestamp、links、xattr、context、all
# 在直接cp时,复制的文件一些元数据会发生改变 [root@centos7 ~]# cp /etc/passwd /data cp: overwrite ‘/data/passwd’? yes # 可以看到复制的文件和源文件“时间戳”不同 [root@centos7 ~]# ll /etc/passwd /data/passwd -rw-r--r--. 1 root root 2418 Apr 23 16:44 /data/passwd -rw-r--r--. 1 root root 2418 Apr 22 22:22 /etc/passwd # 使用“--preserv”,在复制时就保留了源文件的元数据 [root@centos7 ~]# cp --preserv /etc/passwd /data/ cp: overwrite ‘/data/passwd’? yes [root@centos7 ~]# ll /etc/passwd /data/passwd -rw-r--r--. 1 root root 2418 Apr 22 22:22 /data/passwd -rw-r--r--. 1 root root 2418 Apr 22 22:22 /etc/passwd
-
-a 归档,相当于-dR --preserv=all,是个比较重要的参数
# “-a”参数包含了“-dR --preserv=all”所有参数的功能,是个比较重要的参数 [root@centos7 ~]# cp -a /etc/passwd /data cp: overwrite ‘/data/passwd’? yes [root@centos7 ~]# ll /etc/passwd /data/passwd -rw-r--r--. 1 root root 2418 Apr 22 22:22 /data/passwd -rw-r--r--. 1 root root 2418 Apr 22 22:22 /etc/passwd
-
-
-
mv
作用:移动和重命名文件
格式:
- mv [OPTION]... [-T] SOURCE DEST
- mv [OPTION]... SOURCE... DIRECTORY
- mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-
移动文件或者给文件改名
[root@centos7 data]# touch f1 [root@centos7 data]# ls f1 [root@centos7 data]# mv f1 f2 [root@centos7 data]# ls f2
-
-i 交互式
# 默认系统已经添加了别名,有相同文件名存在时,询问是否覆盖 [root@centos7 ~]# alias mv alias mv=‘mv -i‘ [root@centos7 data]# mkdir /root/rootdir [root@centos7 data]# mv -i /root/rootdir /data/rootdir mv: overwrite ‘/data/rootdir/rootdir’? yes [root@centos7 data]#
-
-f 强制
[root@centos7 data]# mkdir /data/rootdir [root@centos7 data]# mkdir /root/rootdir [root@centos7 data]# mv -f /root/rootdir /data/rootdir [root@centos7 data]#
-
-b 目标存在,覆盖前先备份
[root@centos7 data]# touch /root/rootfile [root@centos7 data]# touch /data/rootfile [root@centos7 data]# mv -b /root/rootfile /data/rootfile mv: overwrite ‘/data/rootfile’? yes # 可以看到多了一个~结尾的文件,就是备份文件 [root@centos7 data]# ll /data total 0 -rw-r--r--. 1 root root 0 Apr 23 17:33 rootfile -rw-r--r--. 1 root root 0 Apr 23 17:33 rootfile~ [root@centos7 data]#
-
rm
作用:删除文件或目录
格式:
- rm [OPTION]... FILE...
常用选项:
-
-i 交互式
# 默认系统已经为“rm”加了“-i”参数的别名 [root@centos7 data]# alias rm alias rm=‘rm -i‘ [root@centos7 data]# rm -i f1 rm: remove regular empty file ‘f1’? y
-
-f 强制删除
[root@centos7 data]# touch f1 [root@centos7 data]# rm -if f1 # 把“-i”参数写在后面就会有提示了 [root@centos7 data]# touch f1 [root@centos7 data]# rm -fi f1 rm: remove regular empty file ‘f1’? y
-
-r 递归,用于删除目录
[root@centos7 data]# ls d1 d2 [root@centos7 data]# rm -r d1 rm: descend into directory ‘d1’? y rm: remove directory ‘d1/d2’? y rm: remove directory ‘d1’? y # 可以直接使用“-rf”参数 [root@centos7 data]# mkdir -p d1/d2 [root@centos7 data]# ls d1 d2 [root@centos7 data]# rm -rf d1
-
rmdir
rmdir命令只能删除空目录,功能可以被rm命令取代
-
-p: 递归删除父空目录
# 不能直接删除d1目录,因为d1里面还有子目录 [root@centos7 data]# mkdir -p d1/d2 [root@centos7 data]# rmdir -p d1 rmdir: failed to remove ‘d1’: Directory not empty # 删除了d2空目录之后,d1就变成了空目录,d1也会一起被删除 [root@centos7 data]# rmdir -p d1/d2 [root@centos7 data]# ls d1 ls: cannot access d1: No such file or directory
-
-v: 显示详细信息
[root@centos7 data]# rmdir -pv d1/d2 rmdir: removing directory, ‘d1/d2’ rmdir: removing directory, ‘d1’
-
-
tree
作用:显示目录树
常用参数:
-
-d: 只显示目录
[root@centos7 data]# tree d1 d1 └── d2 ├── d3 │?? └── f3 └── f2 2 directories, 2 files [root@centos7 data]# tree -d d1 d1 └── d2 └── d3 2 directories
-
-L level:指定显示的层级数目
[root@centos7 data]# tree -L 1 . └── d1 1 directory, 0 files [root@centos7 data]# tree -L 2 . └── d1 └── d2 2 directories, 0 files [root@centos7 data]# tree -L 3 . └── d1 └── d2 ├── d3 └── f2 3 directories, 1 file [root@centos7 data]# tree -L 4 . └── d1 └── d2 ├── d3 │?? └── f3 └── f2
-
-
mkdir
作用: 创建目录
常用选项:
-
-p: 存在于不报错,且可自动创建所需的各目录
# 在没有d2目录时,无法创建d3目录,加上“-p”参数,就直接把所有目录都创建了 [root@centos7 data]# mkdir d1/d2/d3 mkdir: cannot create directory ‘d1/d2/d3’: No such file or directory [root@centos7 data]# mkdir -p d1/d2/d3
-
-v: 显示详细信息
[root@centos7 data]# mkdir -pv d1/d2/d3 mkdir: created directory ‘d1’ mkdir: created directory ‘d1/d2’ mkdir: created directory ‘d1/d2/d3’
-
-m MODE: 创建目录时直接指定权限
# 创建一个拥有777权限的目录dir [root@centos7 data]# mkdir -m 777 dir [root@centos7 data]# ll -d dir drwxrwxrwx. 2 root root 6 Apr 24 17:22 dir
-
5、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符
可以在vim中使用搜索替代的方式,命令:“%s@^ +@@g”
[root@centos7 tmp]# cp /etc/profile /tmp
[root@centos7 tmp]# vim /tmp/profile
使用:“%s@^ +@@g”来删除行首的空格
6、在vim中设置tab缩进为4个字符
在用户家目录创建“.vimrc”文件,在该文件中设置“set tabstop=4”
以上是关于第二周的主要内容,如果未能解决你的问题,请参考以下文章