2. 总结什么是shell,以及常见的各类shell。
1.Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
2.常见的shell有
●sh:Steve Bourne
●bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
●csh:c shell , C 语言风格
●tcsh:
●ksh :Korn Shell, AIX 默认 shell
●zsh: MacOS默认shell
3 .结合man命令总结linux常用基本命令用法,以及查看帮助文档的方法。
常见命令
-
ls
ls
:列出当前目录下的文件和文件夹;ls -l
:以长格式列出详细信息;ls -a
:显示所有文件,包括隐藏文件。 -
cd
cd directory
:切换到指定的目录。 -
pwd
pwd
:显示当前工作目录的完整路径。 -
mkdir
mkdir directory
:创建一个新目录。 -
rmdir
rmdir directory
:删除一个空目录。 -
rm
rm file
:删除一个文件。rm -r directory
:递归删除目录及其内容。 -
cp
cp source destination
:复制文件或目录。 -
mv
mv source destination
:移动或重命名文件或目录。 -
touch
touch file
:创建一个空文件或更新文件的时间戳。 -
cat
cat file
:显示文件内容。
帮助文档
-
man命令
使用man
命令可以查看几乎所有Unix命令的手册页。例如,要查看ls
命令的帮助文档,你可以输入man ls
。
4. 总结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
/usr/bin #保证系统拥有完整功能而提供的应用程序
/usr/sbin #同上
/usr/lib #32位使用
/usr/lib64 #只存在64位系统
/usr/include #C程序的头文件(header files)
/usr/share #结构化独立的数据,例如doc, man等
/var #variable data files,可变数据目录
/var/cache #应用程序缓存数据目录
/var/lib #应用程序状态信息数据
/var/local #专用于为/usr/local下的应用程序存储可变数据/var/lock #锁文件
/var/log #日志目录及文件
/var/opt #专用于为/opt下的应用程序存储可变数据
/var/run #运行中的进程相关数据,通常用于存储进程pid文件/var/spool #应用程序数据池
/var/tmp #保存系统两次重启之间产生的临时数据
/proc #用于输出内核与进程信息相关的虚拟文件系统
/sys #用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux #security enhanced Linux,selinux相关的安全策略等信息的存储位置
5. 总结文件操作常见的命令和文件夹常见操作命令
文件常用命令
-
ls列出当前目录下的文件和文件夹。
ls -l
显示详细信息,包括权限、所有者等。 -
cat 显示文件内容。
-
touch 创建一个空文件或更新现有文件的时间戳。
-
cp 复制文件或文件夹
-
mv 移动或重命名文件或文件夹
-
rm 删除文件
-
less 分页查看文件内容
-
more 与
less
类似,但不支持向后翻页。
文件夹常用命令
-
mkdir 创建新文件夹。
-
rmdir 删除空文件夹。
-
cd 改变当前工作目录。
-
pwd 显示当前工作目录的完整路径。
-
tree 以树状图显示目录结构。
6. 总结文件元数据相关的知识点,包含硬链接和软连接的区别等知识
文件元数据相关知识点
元数据(metadata):用来描述一个文件的特征的系统数据
数据:泛指普通文件中的实际数据;
硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个则是inode区(inode table),用于储存文件元信息的区域。
inode与文件是一一对应的关系,每个文件都有自己的inode(inode: 中文译名为"索引节点")。根据 inode的编号,查询inode table,即可知道对应文件的元数据信息
- File Name(文件名):文件的名称。
- Size(文件大小):文件的大小,单位通常是字节。
- Blocks(占用扇区数):文件所占的扇区个数,通常为8的倍数。
- IO Block(数据块大小):每个数据块的大小,单位是字节。
- File Type(文件类型):文件的类型,例如普通文件、目录等。
- Inode(索引节点号):文件的唯一标识,包含文件的元数据信息,但不包含文件名。
- Links(硬链接次数):指向该文件的硬链接数量。
- Permissions(权限):文件的访问权限。
- Uid/Gid(用户ID/组ID):文件所有者的用户ID和组ID。
- Access Time(访问时间):文件最后一次被访问的时间。
- Modify Time(修改时间):文件内容最后一次被修改的时间。
- Change Time(状态改变时间):文件的元数据最后一次被改变的时间
硬链接和软链接的区别
硬链接(Hard Link)和软链接(Symbolic Link)都是文件链接的方式,但它们在实现和行为上有所不同:
-
硬链接:
- 硬链接指向的是文件的索引节点(inode),多个硬链接共享同一个inode和数据块。
- 硬链接只能在同一个文件系统内部创建,不能跨文件系统。
- 不能对目录创建硬链接,因为这可能导致循环引用等问题。
- 删除硬链接不会影响文件本身,只有当所有硬链接都被删除时,文件内容才会被删除。
- 硬链接拥有相同的inode号。
-
软链接:
- 软链接是一个特殊的文件,它包含目标文件的路径信息,类似于Windows中的快捷方式。
- 软链接可以跨越不同的文件系统,不受文件系统限制。
- 可以对文件或目录创建软链接。
- 如果软链接的目标文件被删除或移动,软链接将失效。
- 软链接拥有自己的inode号,不同于它所指向的文件。
7. 总结通配符,管道,重定向,并且结合示例,添加注释信息
通配符
在Linux中,通配符用于匹配文件名。
-
*:匹配任意数量的字符。
-
示例:
ls *.txt
列出当前目录下所有以.txt
结尾的文件。
-
-
?:匹配任意单个字符。
-
示例:
ls ?.log
列出当前目录下所有以单个字符开头并以.log
结尾的文件。
-
-
[ ]:匹配括号内的任意单个字符。
-
示例:
touch [a-z]*
创建所有以小写字母开头的文件。
-
管道用于将一个命令的输出作为另一个命令的输入。
-
基本管道:将
grep
命令的输出传递给less
命令。-
示例:ls | grep .txt 查找当前目录下所有以
.txt
结尾的文件列表。
-
-
多个管道:将多个命令连接起来,逐个处理输出。
重定向
重定向用于改变命令的输入和输出流。
-
输出重定向(>):将命令的输出重定向到文件中,如果文件存在,则覆盖。
-
示例:
ls -l > filelist.txt
将当前目录的详细列表输出到filelist.txt
文件中。
-
-
追加重定向(>>):将命令的输出追加到文件末尾。
-
示例:
date >> filelist.txt
将当前日期追加到filelist.txt
文件末尾。
-
-
输入重定向(<):将文件内容作为命令的输入。
-
示例:
sort < filelist.txt
读取filelist.txt
文件内容并排序。
-
8. 总结linux用户和用户组相关知识点以及常见的操作命令,添加注释信息
用户和用户组的基本概念
- 用户名(Username):用来识别用户的名称,可以是字母、数字组成的字符串,区分大小写。
- 密码(Password):用于验证用户身份的特殊验证码。
- 用户标识(UID):用来表示用户的数字标识符。
- 用户主目录(Home Directory):用户的私人目录,也是用户登录系统后默认所在的目录。
- 登录Shell:用户登录后默认使用的Shell程序,默认是
/bin/bash
。 - 组(Group):具有相同属性的用户属于同一个组。
- 组标识(GID):用来表示组的数字标识符。
常见操作命令
用户管理命令
-
添加用户(useradd)
useradd [选项] 用户名
:创建一个新用户。- 选项包括
-c
(注释性描述)、-d
(指定用户主目录)、-g
(指定用户所属的用户组)、-G
(指定用户所属的附加组)、-s
(指定用户的登录Shell)、-u
(指定UID)。
-
设置/修改密码(passwd)
passwd 用户名
:为指定用户设置或修改密码。
-
切换用户(su)
su 用户名
:切换到指定用户,相当于“select user”的缩写。
-
删除用户(userdel)
userdel [-r] 用户名
:删除用户,-r
选项表示同时删除用户的主目录。
-
修改用户属性(usermod)
usermod [选项] 用户名
:修改用户的属性,如用户名、用户组、UID等。
用户组管理命令
-
创建用户组(groupadd)
groupadd 用户组名
:创建一个新的用户组。
-
修改用户组(groupmod)
groupmod [-n] 新组名 原组名
:修改用户组的名称。
-
删除用户组(groupdel)
groupdel 用户组名
:删除一个用户组。
-
给组添加用户
usermod -aG 组名 用户名
:将用户添加到指定的用户组。
-
查看用户组信息(getent group)
getent group
:查看所有用户组信息。
9. 总结文件权限管理相关的知识点,包括权限位,特殊权限和ACL,添加详细的注释和解释
文件权限管理相关知识点
1. 权限位
Linux文件系统的权限位分为读(r)、写(w)、执行(x),分别对应数字4、2、1。权限位分为三组,分别对应所有者(owner)、所属组(group)和其他用户(others)。
- 读(r):允许查看文件内容或列出目录内容。
- 写(w):允许修改文件内容或在目录中创建、删除文件。
- 执行(x):允许执行文件或进入目录。
例如,chmod 755 file 会给文件所有者读写执行权限,所属组和其他用户读执行权限。
2. 特殊权限
特殊权限包括SUID、SGID和Sticky位,它们提供了额外的权限控制。
- SUID(Set User ID):当执行一个设置了SUID的文件时,程序会以文件所有者的权限运行,而不是执行者的身份。这通常用于如
passwd
这样的命令,普通用户可以使用它来更改自己的密码。 - SGID(Set Group ID):类似于SUID,但是以文件所属组的权限运行。这通常用于像
mail
这样的程序。 - Sticky位:通常用于
/tmp
这样的公共目录,它确保只有文件所有者、目录所有者或root能够删除或重命名文件。
3. ACL(Access Control List)
ACL提供了比传统权限更细粒度的控制,允许对单个用户或组设置特定的权限。
- 添加ACL权限:
setfacl -m u:username:rwx file
给特定用户设置读、写、执行权限。 - 查看ACL权限:
getfacl file
查看文件的ACL权限。 - 删除ACL权限:
setfacl -x u:username file
删除特定用户的ACL权限。
4. umask
umask(用户文件创建掩码)是一个系统默认设置,它决定了新创建文件的默认权限。umask值从所有可能的权限中减去,以确定新文件的权限。