1、描述linux发行版本的系统目录名称规则及用途

文件系统结构

/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程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin,sbin, lib, lib64,etc, share

/var:variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储

/proc:用于输出内核与进程信息相关的虚拟文件系统

/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置文件系统结构

文件命名规则:

1) 文件名最长225个字节;
2) 包含路径在内的文件名最长4095字节;
3) 蓝色—>目录绿色—>可执行文件红色—>压缩文件浅蓝色—>链接文件灰色—>其他文件
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
4) 除了“/”和“null”不能做文件名,其他字符均可做文件名;
5) 区分大小写;标准Linux文件系统(如ext4),文件名称大小写敏感例如:MAIL,Mail,mail, mAiL
6) 以“.”开头的文件为隐藏文件

2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?

linux 中数据分为两种:一种是表示文件存储大小的数据,一种是表示描述文件属性,特征的数据,称为元数据。
元数据信息包含:
File:文件名
Size:文件大小(单位:B)
Blocks:文件所占块个数
IO Block:每个数据块的大小(单位:B)
regular file:普通文件(此处显示文件的类型)
Inode:文件的Inode号,文件的索引节点号
Links:硬链接次数
Access:权限
Uid:(属主id/属主名)
Gid:(属组id/属组名)
Context:文件所在的环境
Access:最近访问时间access time (atime)
Modify:数据改动时间modification time (mtime)
Change:元数据改动时间status time (ctime)
Creat/Birth:文件创建时间
查看元数据命令stat

  1. [root@bogon ~]# stat anaconda-ks.cfg
  2. File: anaconda-ks.cfg
  3. Size: 1956 Blocks: 8 IO Block: 4096 regular file
  4. Device: 802h/2050d Inode: 201326658 Links: 1
  5. Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
  6. Context: system_u:object_r:admin_home_t:s0
  7. Access: 2020-05-29 23:27:49.082000227 +0800
  8. Modify: 2020-05-29 23:26:49.781162156 +0800
  9. Change: 2020-05-29 23:26:49.781162156 +0800
  10. Birth: -

修改文件的时间戳信息可以利用 touch 命令

touch 是一个外部命令,如果文件存在则修改此文件的时间并且文件内容不变保留原来数据,若不存在则创建文件,因此,利用 touch 可以修改文件的时间戳信息。

  1. [root@bogon ~]# type touch
  2. touch is hashed (/usr/bin/touch)
  3. [root@bogon ~]# touch anaconda-ks.cfg
  4. [root@bogon ~]# stat anaconda-ks.cfg
  5. File: anaconda-ks.cfg
  6. Size: 1956 Blocks: 8 IO Block: 4096 regular file
  7. Device: 802h/2050d Inode: 201326658 Links: 1
  8. Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
  9. Context: system_u:object_r:admin_home_t:s0
  10. Access: 2020-06-21 16:23:52.294997236 +0800
  11. Modify: 2020-06-21 16:23:52.294997236 +0800
  12. Change: 2020-06-21 16:23:52.294997236 +0800
  13. Birth: -

3、总结软链接和硬链接的区别。并用实际操作说明。

硬链接

创建硬链接会增加额外的记录项以引用文件

对应于同一文件系统上一个物理文件

每个目录引用相同的inode号

创建时链接数递增

删除文件时:
rm命令递减计数的链接

文件要存在,至少有一个链接数

当链接数为零时,该文件被删除

不能跨越驱动器或分区

软链接

一个符号链接指向另一个文件

ls -l的显示链接的名称和引用的文件

一个符号链接的内容是它引用文件的名称

可以对目录进行

可以跨分区

指向的是另一个文件的路径;

其大小为指向的路径字符串的长度;

不增加或减少目标文件inode的引用计数

4、linux的文件管理类命令都有哪些,其常用的使用方法及相关实例演示。

ls命令

ls是最常见的目录操作命令,主要作用是显示目录下的内容。这个命令的基本信息如下:
●命令名称:ls。
●英文原意:list。
●所在路径:/bin/ls。
●执行权限:所有用户。
●功能描述:显示目录下的内容。
对命令的基本信息进行说明:英文原意有助于理解和记忆命令;执行权限是命令只能被超级用户执行,还是可以被所有用户执行;功能描述指的是这个命令的基本作用。

命令格式

image.png

常见用法

-a
选项-a选项中的a是all的意思,也就是显示隐藏文件。

image.png

加入“-a”选项后,显示出来的文件明显变多了。而多出来的这些文件都有一个共同的特性,就是以“.”开头。
在Linux中以“.”开头的文件是隐藏文件,只有通过“-a”选项才能查看。
隐藏文件不是为了把文件藏起来不让其他用户找到,而是为了告诉用户这些文件都是重要的系统文件,如非必要,不要乱动!

“-l”选项
image.png
“-l”选项用于显示文件的详细信息 那么“-l”选项显示的这7列分别是什么含义?
●第一列:权限。
●第二列:引用计数。
文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
●第三列:所有者,
也就是这个文件属于哪个用户。默认所有者是文件的建立用户
●第四列:所属组。
默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
●第五列:大小。
默认单位是字节。
●第六列:文件修改时间。
文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
●第七列:文件名。
“-d”选项
如果我们想查看某个目录的详细信息
image.png
这个命令会显示目录下的内容,而不会显示这个目录本身的详细信息。如果想显示目录本身的信息,就必须加入“-d”选项。
image.png
“-h”选项
“ls -l”显示的文件大小是字节,但是我们更加习惯的是千字节用KB显示,兆字节用MB显示,而“-h”选项就是按照人们习惯的单位显示文件大小的.
image.png
“-i”选项
每个文件都有一个被称作inode(i节点)的隐藏属性,可以看成系统搜索这个文件的ID,而“-i”选项就是用来查看文件的inode号的,例如:
image.png
从理论上来说,每个文件的inode号都是不一样的,当然也有例外(如硬链接)

cd命令

cd是切换所在目录的命令,这个命令的基本信息如下。●
命令名称:cd。
●英文原意:change directory。●
所在路径:Shell内置命令。
●执行权限:所有用户。
●功能描述:切换所在目录。
Linux的命令按照来源方式分为两种:Shell内置命令和外部命令。
所谓Shell内置命令,就是Shell自带的命令,这些命令是没有执行文件的;
而外部命令就是由程序员单独开发的,是外来命令,所以会有命令的执行文件。
Linux中的绝大多数命令是外部命令,而cd命令是一个典型的Shell内置命令,所以cd命令没有执行文件所在路径。

命令格式

image.png
cd命令是一个非常简单的命令,仅有的两个选项-P和-L的作用非常有限,很少使用。-
P (大写)是指如果切换的目录是软链接目录,则进入其原始的物理目录,而不是进入软链接目录;
-L(大写)是指如果切换的目录是软链接目录,则直接进入软链接目录。

常见用法

cd命令切换目录只需在命令后加目录名称即可。
image.png
通过命令提示符,我们可以确定当前所在目录已经切换。

简化用法cd命令可以识别一些特殊符号,用于快速切换所在目录,

image.png
“cd ~”命令可以快速回到用户的家目录,cd命令直接按回车键也是快速切换到家目录。
image.png
image.png
image.png

绝对路径和相对路径

cd命令本身不难,但是这里有两个非常重要的概念,就是绝对路径和相对路径。
初学者由于对字符界面不熟悉,所以有大量的错误都是因为对这两个路径没有搞明白,比如进错了目录、打开不了文件、打开的文件和系统文件不一致等。
我们先要弄明白什么是绝对、什么又是相对
但在Linux的路径中是有绝对路径的,那是因为Linux有最高目录,也就是根目录。如果路径是从根目录开始,一级一级指定的,那使用的就是绝对路径。
image.png
这些切换目录的方法使用的就是绝对路径。
谓相对路径,就是只从当前所在目录开始,切换目录
image.png
虽然绝对路径输入更加烦琐,但是更准确,报错的可能性也更小。对初学者而言,建议大家使用绝对路径。

mkdir命令

mkdir是创建目录的命令
●命令名称:mkdir。
●英文原意:make directories。
●所在路径:/bin/mkdir。
●执行权限:所有用户。
●功能描述:创建空目录。

命令格式

image.png
mkdir也是一个非常简单的命令,其主要作用就是新建一个空目录。

常见用法

建立目录
image.png
我们建立一个名为cangls的目录,通过ls命令可以查看到这个目录已经建立。注意:我们在建立目录的时候使用的是相对路径,所以这个目录被建立到当前目录下。

递归建立目录
mkdir默认只能在已经存在的目录中建立新目录。而如果需要建立一系列的新目录,则需要加入“-p”选项,递归建立才可以。
image.png
所谓的递归建立,就是一级一级地建立目录。

rmdir命令

既然有建立目录的命令,就一定会有删除目录的命令rmdir。
●命令名称:rmdir。
●英文原意:remove empty directories。
●所在路径:/bin/rmdir。
●执行权限:所有用户。
●功能描述:删除空目录。

命令格式

image.png

常见用法

image.png
命令后面加目录名称即可。既然可以递归建立目录,当然也可以递归删除目录
image.png
但rmdir命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错
image.png
这个命令比较“笨”,所以我们不太常用。后续我们不论删除的是文件还是目录,都会使用rm命令

tree命令

tree命令以树形结构显示目录下的文件
●命令名称:tree。
●英文原意:list contents of directories in a tree-like format。
●所在路径:/usr/bin/tree。
●执行权限:所有用户。
●功能描述:显示目录树。
tree命令非常简单,用法也比较单一,就是显示目录树
image.png

文件操作命令

touch命令

touch的意思是触摸,如果文件不存在,则会建立空文件;如果文件已经存在,则会修改文件的时间戳(访问时间、数据修改时间、状态修改时间都会改变)。千万不要把touch命令当成新建文件的命令,牢牢记住这是触摸的意思。
●命令名称:touch。
●英文原意:change file timestamps。
●所在路径:/bin/touch。
●执行权限:所有用户。
●功能描述:修改文件的时间戳。

命令格式

image.png
Linux中的每个文件都有三个时间,分别是访问时间(Access Time)、数据修改时间(Modify Time)和状态修改时间(Change Time)。
这三个时间可以通过stat命令来进行查看。
touch命令只能手工指定是只修改访问时间,还是只修改数据修改时间,而不能指定只修改状态修改时间。因为不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,所以状态修改时间会随之改变。
在Linux中,文件没有创建时间

常见用法

image.png
如果文件不存在,则会建立文件。
image.png

stat命令

在Linux中,文件有访问时间、数据修改时间、状态修改时间这三个时间,而没有创建时间。stat是查看文件详细信息的命令,而且可以看到文件的这三个时间
●命令名称:stat。
●英文原意:display file or file system status。
●所在路径:/usr/bin/stat。
●执行权限:所有用户。
●功能描述:显示文件或文件系统的详细信息。

命令格式

image.png

常见用法

查看文件的详细信息
image.png
查看文件系统信息
如果使用“-f”选项,就不再是查看指定文件的信息,而是查看这个文件所在文件系统的信息
image.png
三种时间的含义
查看系统当前时间
image.png
再查看bols文件的三种时间,可以看到,和当前时间是有差别的
image.png
而如果用cat命令读取一下这个文件,就会发现文件的访问时间(Access Time)变成了cat命令的执行时间
image.png
而如果用echo命令向文件中写入点数据,那么文件的数据修改时间(Modify Time)就会发生改变。但是文件数据改变了,系统会认为文件的状态也会改变,所以状态修改时间(Change Time)也会随之改变
image.png
而如果只修改文件的状态(比如改变文件的所有者),而不修改文件的数据,则只会更改状态修改时间(ChangeTime)
image.png
如果用touch命令再次触摸这个文件,则这个文件的三个时间都会改变。
image.png
注意:centos8版本中 access时间不会自动更新 更新的判断标准变更为是否比系统时间更早 (需要看老王的视频在确定一下)

cat命令

cat命令用来查看文件内容。
●命令名称:cat。
●英文原意:concatenate files and print on the standard output。
●所在路径:/bin/cat。
●执行权限:所有用户。
●功能描述:合并文件并打印输出到标准输出。

命令格式

image.png

常见用法

cat命令用于查看文件内容,不论文件内容有多少,都会一次性显示。如果文件非常大,那么文件开头的内容就看不到了。不过Linux可以使用“PgUp+上箭头”向上翻页,但是这种翻页是有极限的,如果文件足够长,那么还是无法看全文件的内容。所以cat命令适合查看不太大的文件。当然,在Linux中是可以使用其他的命令或方法来查看大文件的,我们以后再来学习。cat命令本身非常简单,我们可以直接查看文件的内容。
image.png
而如果使用“-n”选项,则会显示行号。
image.png
如果使用“-A”选项,则相当于使用了“-vET”选项,可以查看文本中的所有隐藏符号,包括回车符($)、Tab键(^I)等。
image.png

more命令

如果文件过大,则cat命令会有心无力,这时more命令的作用更加明显。more是分屏显示文件的命令。
●命令名称:more。
●英文原意:file perusal filter for crt viewin。
●所在路径:/bin/more。
●执行权限:所有用户。
●功能描述:分屏显示文件内容。

命令格式

image.png
more命令比较简单,一般不用什么选项,命令会打开一个交互界面,可以识别一些交互命令。
●空格键:向下翻页。
●b:向上翻页。
●回车键:向下滚动一行。
●/字符串:搜索指定的字符串。
●q:退出。

常见用法

image.png

less命令

less命令和more命令类似,只是more是分屏显示命令,而less是分行显示命令。
●命令名称:less。
●英文原意:opposite of more。
●所在路径:/usr/bin/less。
●执行权限:所有用户。
●功能描述:分行显示文件内容。

命令格式

image.png
less命令可以使用上、下箭头,用于分行查看文件内容。

5、复制/etc/profile至/tmp/,用查找替换命令删除tmp/profile文件中的行首的空白字符。

  1. [root@bogon ~]# cp /etc/profile /tmp/
  2. [root@bogon ~]# cd /tmp
  3. [root@bogon tmp]# ls -a
  4. .
  5. ..
  6. .esd-1000
  7. .font-unix
  8. .ICE-unix
  9. profile
  10. [root@bogon tmp]# cat /tmp/profile |tr -d ' '
  11. #/etc/profile
  12. #Systemwideenvironmentandstartupprograms,forloginsetup
  13. #Functionsandaliasesgoin/etc/bashrc
  14. #It'sNOTagoodideatochangethisfileunlessyouknowwhatyou
  15. #aredoing.It'smuchbettertocreateacustom.shshellscriptin
  16. #/etc/profile.d/tomakecustomchangestoyourenvironment,asthis
  17. #willpreventtheneedformerginginfutureupdates.
  18. pathmunge(){
  19. case":${PATH}:"in
  20. *:"$1":*)
  21. ;;
  22. *)
  23. if["$2"="after"];then
  24. PATH=$PATH:$1
  25. else
  26. PATH=$1:$PATH
  27. fi
  28. esac
  29. }
  30. if[-x/usr/bin/id];then
  31. if[-z"$EUID"];then
  32. #kshworkaround
  33. EUID=`/usr/bin/id-u`
  34. UID=`/usr/bin/id-ru`
  35. fi
  36. USER="`/usr/bin/id-un`"
  37. LOGNAME=$USER
  38. MAIL="/var/spool/mail/$USER"
  39. fi
  40. #Pathmanipulation
  41. if["$EUID"="0"];then
  42. pathmunge/usr/sbin
  43. pathmunge/usr/local/sbin
  44. else
  45. pathmunge/usr/local/sbinafter
  46. pathmunge/usr/sbinafter
  47. fi
  48. HOSTNAME=`/usr/bin/hostname2>/dev/null`
  49. HISTSIZE=1000
  50. if["$HISTCONTROL"="ignorespace"];then
  51. exportHISTCONTROL=ignoreboth
  52. else
  53. exportHISTCONTROL=ignoredups
  54. fi
  55. exportPATHUSERLOGNAMEMAILHOSTNAMEHISTSIZEHISTCONTROL
  56. #Bydefault,wewantumasktogetset.Thissetsitforloginshell
  57. #Currentthresholdforsystemreserveduid/gidsis200
  58. #Youcouldcheckuidgidreservationvalidityin
  59. #/usr/share/doc/setup-*/uidgidfile
  60. if[$UID-gt199]&&["`/usr/bin/id-gn`"="`/usr/bin/id-un`"];then
  61. umask002
  62. else
  63. umask022
  64. fi
  65. foriin/etc/profile.d/*.sh/etc/profile.d/sh.local;do
  66. if[-r"$i"];then
  67. if["${-#*i}"!="$-"];then
  68. ."$i"
  69. else
  70. ."$i">/dev/null
  71. fi
  72. fi
  73. done
  74. unseti
  75. unset-fpathmunge

6、在vim中设置tab的缩进为4个字符。

  1. ehco set ts=4 set expandtab set autoindent .vimrc