自我学习笔记002
1、描述Linux发行版的系统目录名称命名规则以及用途。
目录名称 | 相应内容 |
---|---|
/boot | 开机所需文件、内核、开机菜单以及所需配置文件等 |
/dev | 以文件形式存放任何设备与接口 |
/etc | 配置文件 |
/home | 用户家目录 |
/bin | 存放单用户模式下还可以操作的命令 |
/sbin | 开机过程中需要的命令 |
/lib | 开机时用到的库函数,以及/bin /sbin下面的命令要调用的函数 |
/srv | 一些网络服务的数据文件目录 |
/media | 用于挂在设备文件的目录 |
/opt | 放置第三方软件 |
/tmp | 任何人均可以使用共享的临时目录 |
/proc | 虚拟文件系统、例如系统内核、进程、外部设备及网络状态等 |
/usr/local | 用户自行安装的软件 |
/usr/sbin | Linux系统开机时不会用到的软件、命令、脚本 |
/usr/share | 帮助与说明文件,也课放置共享文件 |
/var | 主要用来存放日志文件 |
命名规则:
-
文件名严格区分大小写。
-
文件可以使用除了/以外的任意字符,但是不建议使用特殊字符。
-
文件名长度最长不能超过255个字符。
-
所有以 . 开头的文件都为隐藏文件。
根据文件名写法不同:
-
绝对路径:有根目录(/)开始起写的完整的文件名路径和目录名称路径。/etc/hostname
-
相对路径:相对于当前路径的文件名写法,如 ./home/test
2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
文件系统中的数据分为两类:
- 数据:指的是普通文件中的实际数据;
- 元数据:指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者、以及文件数据块的分布信息等等;
查看文件的元数据信息需要用到一个命令:stat
stat命令的作用为显示文件的状态信息,输出的信息比ls命令输出的信息更加详细。
[root@Pandj home]# stat pandj.py
File: ‘pandj.py’
Size: 175 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 655531 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-13 20:43:18.891986174 +0800
Modify: 2019-12-13 20:43:18.891986174 +0800
Change: 2019-12-13 20:43:18.894985864 +0800
Birth: -
[root@Pandj home]#
- File:文件的名称;
- Size:文件的大小;
- Blocks:占用的磁盘块数;
- IO Block:IO块大小;
- regular file:这里是显示文件的类型,这是一个普通文件
- Device:所在设备;
- inode:Inode节点号;
- Links:被链接的次数;
- Access(第一个):访问权限;
- Uid:uid号和属主;
- Gid:gid号和属组;
- Access(第二个):文件最近一次的访问时间;
- Modify:文件的修改时间;
- Chang:文件的改变时间;
修改时间定义:
当该文件的【内容数据】变更时,将会更新这个时间,内容数据指的是文件内容,而不是文件属性或权限、
在默认的情况下ls查看的就是文件的mtime(修改时间)、
touch:修改文件时间或创建新文件
-
建立一个空文件
-
将某一个文件日期自定义为目前(mtime与atime)
参数 | 含义 |
---|---|
-a | 或--time=atime或--time=access或--time=use 只更改读取时间 |
-c | 或 –no-create 不建立任何文件 |
-d | <时间日期> 使用指定的日期,而非现在的时间 |
-f | 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题 |
-m | 或--time=mtime或--time=modify 只更改修改时间 |
-r | <参考文件或目录> 把指定文件或目录的日期和时间通通设置成参考文件或目录的日期时间 |
-t | <日期时间> 使用指定的日期时间,而非现在的时间 |
--help | 在线帮助 |
修改文件读取时间:
[root@Pandj home]# stat pandj.py
File: ‘pandj.py’
Size: 175 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 655531 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-13 20:43:18.891986174 +0800
Modify: 2019-12-13 20:43:18.891986174 +0800
Change: 2019-12-13 20:43:18.894985864 +0800
Birth: -
[root@Pandj home]# touch -a pandj.py #只修改文件的访问时间
[root@Pandj home]# stat pandj.py
File: ‘pandj.py’
Size: 175 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 655531 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-15 17:44:10.184835630 +0800 #当前文件的访问时间已修改
Modify: 2019-12-13 20:43:18.891986174 +0800 #当前文件的修改时间未修改
Change: 2019-12-15 17:44:10.184835630 +0800
Birth: -
修改文件的修改时间:
[root@Pandj home]# date;ll pandj.py;ll --time=atime pandj.py;ll --time=ctime pandj.py
Sun Dec 15 17:50:36 CST 2019 #当前系统时间
-rw-r--r-- 1 root root 175 Dec 13 20:43 pandj.py #当前文件修改时间
-rw-r--r-- 1 root root 175 Dec 15 17:44 pandj.py #当前文件读取时间
-rw-r--r-- 1 root root 175 Dec 15 17:44 pandj.py #当前文件创建时间
[root@Pandj home]# touch -d "-2 day ago" pandj.py #修改时间为两天后 -d 使用指定日期
[root@Pandj home]# date;ll pandj.py;ll --time=atime pandj.py;ll --time=ctime pandj.py
Sun Dec 15 17:53:02 CST 2019
-rw-r--r-- 1 root root 175 Dec 17 2019 pandj.py #文件修改时间改变
-rw-r--r-- 1 root root 175 Dec 17 2019 pandj.py #文件读取时间改变
-rw-r--r-- 1 root root 175 Dec 15 17:53 pandj.py #文件创建时间不变
[root@Pandj home]# touch -t "202001010101" pandj.py #修改时间为2020年 -t 使用指定时间
[root@Pandj home]# date;ll pandj.py;ll --time=atime pandj.py;ll --time=ctime pandj.py
Sun Dec 15 17:54:57 CST 2019
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py #文件修改时间改变为2020
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py #文件读取时间改变为2020
-rw-r--r-- 1 root root 175 Dec 15 17:54 pandj.py
3、总结软连接和硬连接区别,并用实例操作说明。
- 本质区别:硬连接是同一个文件不同文件名 软连接是不同的文件
[root@Pandj home]# ln pandj.py pandj.py.link1 #创建一个link1的硬链接
[root@Pandj home]# ln -s pandj.py pandj.py.link2 #创建一个link2的软链接
[root@Pandj home]# ll
total 12
drwxr-xr-x 9 root root 4096 Dec 15 17:03 mysite
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py #查看属性,源文件与硬链接属性一致
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py.link1 #查看属性,硬连接与源文件属性一致
lrwxrwxrwx 1 root root 8 Dec 15 18:04 pandj.py.link2 -> pandj.py #查看属性,软连接属性与硬连接及源文件均不一致
#备注:硬连接删除,对源文件无影响,对软连接无影响
#备注:软连接删除,对源文件无影响,对硬连接无影响
#备注:源文件删除,对硬连接无影响,软连接会失效
#备注:源文件及所有硬连接被删除,文件才会被删除。
- 硬连接不支持跨分区、软连接支持跨分区
[root@Pandj home]# ll
total 8
drwxr-xr-x 9 root root 4096 Dec 15 17:03 mysite
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py
[root@Pandj home]# ln pandj.py /dev/pandj.py.link
ln: failed to create hard link ‘/dev/pandj.py.link’ => ‘pandj.py’: Invalid cross-device link
[root@Pandj home]# ln -s pandj.py /dev/pandj.py.link
[root@Pandj home]# ll /dev/pandj.py.link
lrwxrwxrwx 1 root root 8 Dec 15 18:10 /dev/pandj.py.link -> pandj.py
- 目录:硬连接不支持目录连接、软连接支持目录连接
[root@Pandj home]# ll
total 8
drwxr-xr-x 9 root root 4096 Dec 15 17:03 mysite
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py
[root@Pandj home]# ln mysite mysite.link #试图为文件创建硬连接,提示失败
ln: ‘mysite’: hard link not allowed for directory
[root@Pandj home]# ln -s mysite mysite.link #试图为文件创建软连接,提示成功
[root@Pandj home]# ll
total 8
drwxr-xr-x 9 root root 4096 Dec 15 17:03 mysite
lrwxrwxrwx 1 root root 6 Dec 15 18:13 mysite.link -> mysite
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py
- 相互关系,删除源文件后,硬连接仍然会存在,软连接会失效
[root@Pandj home]# ln pandj.py pandj.py.link
[root@Pandj home]# ln -s pandj.py pandj.py.link2
[root@Pandj home]# ll
total 12
drwxr-xr-x 2 root root 4096 Dec 15 18:15 mysite
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py.link
lrwxrwxrwx 1 root root 8 Dec 15 18:15 pandj.py.link2 -> pandj.py
[root@Pandj home]# rm -f pandj.py #删除源文件,查看状态,硬连接仍然存在,软连接红字提示失效。
[root@Pandj home]# ll
total 8
drwxr-xr-x 2 root root 4096 Dec 15 18:15 mysite
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py.link
lrwxrwxrwx 1 root root 8 Dec 15 18:15 pandj.py.link2 -> pandj.py
- 硬连接inode相同,软连接inode不同。
[root@Pandj home]# ln pandj.py pandj.py.link1
[root@Pandj home]# ln -s pandj.py pandj.py.link2
[root@Pandj home]# stat pandj.py #查看源文件的信息,inode号为655531
File: ‘pandj.py’
Size: 175 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 655531 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 01:01:00.000000000 +0800
Modify: 2020-01-01 01:01:00.000000000 +0800
Change: 2019-12-15 18:22:26.341946428 +0800
Birth: -
[root@Pandj home]# stat pandj.py.link1 #查看硬连接的信息,inode号为655531
File: ‘pandj.py.link1’
Size: 175 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 655531 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 01:01:00.000000000 +0800
Modify: 2020-01-01 01:01:00.000000000 +0800
Change: 2019-12-15 18:22:26.341946428 +0800
Birth: -
[root@Pandj home]# stat pandj.py.link2 #查看软连接的信息,inode号为655364
File: ‘pandj.py.link2’ -> ‘pandj.py’
Size: 8 Blocks: 0 IO Block: 4096 symbolic link
Device: fd01h/64769d Inode: 655364 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-15 18:22:35.532323087 +0800
Modify: 2019-12-15 18:22:35.532323087 +0800
Change: 2019-12-15 18:22:35.532323087 +0800
Birth: -
[root@Pandj home]#
- 连接数:创建硬连接源文件的连接数会增加,创建软连接源文件的连接数不会增加
[root@Pandj home]# ll #查看当前源文件pandj.py的连接数为 1
total 8
drwxr-xr-x 2 root root 4096 Dec 15 18:15 mysite
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py
[root@Pandj home]# ln pandj.py pandj.py.link1 #创建一个硬连接,查看当前文件的连接数为 2
[root@Pandj home]# ll
total 12
drwxr-xr-x 2 root root 4096 Dec 15 18:15 mysite
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py.link1
[root@Pandj home]# ln -s pandj.py pandj.py.link2 #创建一个软连接,查看当前文件的链接数为 2
[root@Pandj home]# ll
total 12
drwxr-xr-x 2 root root 4096 Dec 15 18:15 mysite
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py.link1
lrwxrwxrwx 1 root root 8 Dec 15 18:25 pandj.py.link2 -> pandj.py
[root@Pandj home]#
- 文件类型:硬连接的文件类型和源文件一致,软连接的文件类型和源文件不一致,是link类型。
[root@Pandj home]# ll
total 12
drwxr-xr-x 2 root root 4096 Dec 15 18:15 mysite
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py.link1
lrwxrwxrwx 1 root root 8 Dec 15 18:25 pandj.py.link2 -> pandj.py
- 连接使用命令不一致,硬连接使用 ln 来创建, 软连接使用 ln -s 来创建链接
[root@Pandj home]# ln pandj.py pandj.py.link
[root@Pandj home]# ln -s pandj.py pandj.py.link2
4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
touch:创建新文件或者修改文件时间
[root@Pandj tmp]# touch pandj.txt #创建文件
[root@Pandj tmp]# ll pandj.txt
-rw-r--r-- 1 root root 0 Dec 15 18:42 pandj.txt
[root@Pandj home]# touch -a pandj.py #只修改文件的访问时间
[root@Pandj home]# stat pandj.py
File: ‘pandj.py’
Size: 175 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 655531 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-15 17:44:10.184835630 +0800 #当前文件的访问时间已修改
Modify: 2019-12-13 20:43:18.891986174 +0800 #当前文件的修改时间未修改
Change: 2019-12-15 17:44:10.184835630 +0800
Birth: -
[root@Pandj home]# date;ll pandj.py;ll --time=atime pandj.py;ll --time=ctime pandj.py
Sun Dec 15 17:50:36 CST 2019 #当前系统时间
-rw-r--r-- 1 root root 175 Dec 13 20:43 pandj.py #当前文件修改时间
-rw-r--r-- 1 root root 175 Dec 15 17:44 pandj.py #当前文件读取时间
-rw-r--r-- 1 root root 175 Dec 15 17:44 pandj.py #当前文件创建时间
[root@Pandj home]# touch -d "-2 day ago" pandj.py #修改时间为两天后 -d 使用指定日期
[root@Pandj home]# date;ll pandj.py;ll --time=atime pandj.py;ll --time=ctime pandj.py
Sun Dec 15 17:53:02 CST 2019
-rw-r--r-- 1 root root 175 Dec 17 2019 pandj.py #文件修改时间改变
-rw-r--r-- 1 root root 175 Dec 17 2019 pandj.py #文件读取时间改变
-rw-r--r-- 1 root root 175 Dec 15 17:53 pandj.py #文件创建时间不变
[root@Pandj home]# touch -t "202001010101" pandj.py #修改时间为2020年 -t 使用指定时间
[root@Pandj home]# date;ll pandj.py;ll --time=atime pandj.py;ll --time=ctime pandj.py
Sun Dec 15 17:54:57 CST 2019
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py #文件修改时间改变为2020
-rw-r--r-- 1 root root 175 Jan 1 2020 pandj.py #文件读取时间改变为2020
-rw-r--r-- 1 root root 175 Dec 15 17:54 pandj.py
ls:文件查看及目录查看
参数 | 含义 | |
---|---|---|
-a | 显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为隐藏,不会列出) |
|
-A | 显示除隐藏文件“.”和“..”以外的所有文件列表 |
|
-C | 多列显示输出结果。这是默认选项 |
|
-l | 与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列 |
|
-F | `在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“ | ”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符` |
-b | 将文件中的不可输出的字符以反斜线“”加字符编码的方式输出 |
|
-c | 与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间 |
|
-d | 仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表 |
|
-f | 此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果 |
|
-i | 显示文件索引节点号(inode)。一个索引节点代表一个文件 |
|
--file-type | 与“-F”选项的功能相同,但是不显示“*” |
|
-k | 以KB(千字节)为单位显示文件大 |
|
-l | 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等 |
|
-m | 用“,”号区隔每个文件和目录的名称 |
|
-n | 以用户识别码和群组识别码替代其名称 |
|
-r | 以文件名反序排列并输出目录内容列表 |
|
-s | 显示文件和目录的大小,以区块为单位 |
|
-t | 用文件和目录的更改时间排序 |
|
-L | 如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目 |
|
-R | 递归处理,将指定目录下的所有文件及子目录一并处理 |
|
--full-time | 列出完整的日期与时间 |
|
--color[=WHEN] | 使用不同的颜色高亮显示不同类型的 |
常用案例举例:
以时间倒序方式来查看当前目录下的文件:
[root@Pandj home]# ls -tSlr
total 12
lrwxrwxrwx 1 root root 8 Dec 15 18:25 pandj.py.link2 -> pandj.py
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py.link1
-rw-r--r-- 2 root root 175 Jan 1 2020 pandj.py
drwxr-xr-x 2 root root 4096 Dec 15 18:15 mysite
cp:复制文件
参数 | 含义 |
---|---|
-a | 此参数的效果和同时指定"-dpR"参数相同 |
-d | 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录 |
-f | 强行复制文件或目录,不论目标文件或目录是否已存在 |
-i | 覆盖既有文件之前先询问用户 |
-l | 对源文件建立硬连接,而非复制文件 |
-p | 保留源文件或目录的属性 |
-R/r | 递归处理,将指定目录下的所有文件与子目录一并处理 |
-s | 对源文件建立符号连接,而非复制文件 |
-u | 使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件 |
-S | 在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀 |
-b | 覆盖已存在的文件目标前将目标文件备份 |
-v | 详细显示命令执行的操作 |
mv:移动文件或者重命名文件
选项 | 含义 |
---|---|
--backup=<备份模式> |
若需覆盖文件,则覆盖前先行备份 |
-b | 当文件存在时,覆盖前,为其创建一个备份 |
-f | 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录 |
-i | 交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。 |
--strip-trailing-slashes |
删除源文件中的斜杠“/” |
-S<后缀> |
为备份文件指定后缀,而不使用默认的后缀 |
--target-directory=<目录> |
指定源文件要移动到目标目录 |
-u |
当源文件比目标文件新或者目标文件不存在时,才执行移动操作 |
rm:删除文件
选项 | 含义 |
---|---|
-d | 直接把欲删除的目录的硬连接数据删除成0,删除该目录 |
-f | 强制删除文件或目录 |
-i | 删除已有文件或目录之前先询问用户 |
-r/R | 递归处理,将指定目录下的所有文件与子目录一并处理 |
--preserve-root | 不对根目录进行递归操作 |
-v | 显示指令的详细执行过程 |
file:查看文件类型
选项 | 含义 |
---|---|
-b | 列出辨识结果时,不显示文件名称 |
-c | 详细显示指令执行过程,便于排错或分析程序执行的情形 |
-f<名称文件> | 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称 |
-L | 直接显示符号连接所指向的文件类别 |
-m<魔法数字文件> | 指定魔法数字文件 |
-v | 显示版本信息 |
-z | 尝试去解读压缩文件的内容 |
cat:查看文件内容
选项 | 含义 |
---|---|
-n或-number | 有1开始对所有输出的行数编号 |
-b或--number-nonblank | 和-n相似,只不过对于空白行不编号 |
-s或—squeez-blank | 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
-A | 显示不可打印字符,行尾显示“$” |
-e | 等价于"-vE"选项 |
-t | 等价于"-vT"选 |
more:查看文件内容
tail:查看文件末尾的内容
head:查看文件开头的内容
less:查看文件内容
5、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
[root@Pandj home]# cp /etc/profile /tmp/
[root@Pandj tmp]# more profile | sed 's#^[ \t]*##g'
6、在vim中设置tab缩进为4个字符
根据自己需要。如果只配置自己使用可以在当前用户下创建文件.vimrc文件写入配置信息
如果是所有用户都希望生效可修改/etc/vimrc文件写入配置信息
set ts=4
set expandtab
set autoindent
网友评论