Linux
Linux系统有7个运行级别(runlevel):
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有NFS)
- 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登陆后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
快捷键
Ctrl+a 光标移动到行首
Ctrl+e 光标移动到行尾
Ctrl+c 终止当前程序
Ctrl+d 删除光标前的字符,或者推出当前中断
Ctrl+l 清屏
Ctrl+u 剪切光标之前的字符
Ctrl+k 剪切光标之后的字符
Ctrl+y 复制u/k操作中的内容
Ctrl+r 查找最近用过的命令
Ctrl+shift+c 复制
Ctrl+shift+v 粘贴
tab 补全命令或路径
键盘↑和↓键切换使用过的命令
这些快捷键是可以更改的,但是不建议更改,一般保持默认就好
grep命令 – 强大的文本搜索工具
grep来自于英文词组“global search regular expression and print out the line”的缩写,意思是用于全面搜索的正则表达式,并将结果输出。人们通常会将grep命令与正则表达式搭配使用,参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵活。
与之容易混淆的是egrep命令和fgrep命令。如果把grep命令当作是标准搜索命令,那么egrep则是扩展搜索命令,等价于“grep -E”命令,支持扩展的正则表达式。而fgrep则是快速搜索命令,等价于“grep -F”命令,不支持正则表达式,直接按照字符串内容进行匹配。
语法格式: grep [参数] 文件
常用参数:
-i | 忽略大小写 |
-c | 只输出匹配行的数量 |
-l | 只列出符合匹配的文件名,不列出具体的匹配行 |
-n | 列出所有的匹配行,显示行号 |
-h | 查询多文件时不显示文件名 |
-s | 不显示不存在、没有匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
-w | 匹配整词 |
-x | 匹配整行 |
-r | 递归搜索 |
-q | 禁止输出任何结果,已退出状态表示搜索是否成功 |
-b | 打印匹配行距文件头部的偏移量,以字节为单位 |
-o | 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位 |
-F | 匹配固定字符串的内容 |
-E | 支持扩展的正则表达式 |
参考实例
搜索某个文件中,包含某个关键词的内容:
1 | [root@linuxcool ~]# grep root /etc/passwd |
搜索某个文件中,以某个关键词开头的内容:
1 | [root@linuxcool ~]# grep ^root /etc/passwd |
搜索多个文件中,包含某个关键词的内容:
1 | [root@linuxcool ~]# grep linuxprobe /etc/passwd /etc/shadow |
搜索多个文件中,包含某个关键词的内容,不显示文件名称:
1 | [root@linuxcool ~]# grep -h linuxprobe /etc/passwd /etc/shadow |
输出在某个文件中,包含某个关键词行的数量:
1 | [root@linuxcool ~]# grep -c root /etc/passwd /etc/shadow |
搜索某个文件中,包含某个关键词位置的行号及内容:
1 | [root@linuxcool ~]# grep -n network anaconda-ks.cfg |
搜索某个文件中,不包含某个关键词的内容:
1 | [root@linuxcool ~]# grep -v nologin /etc/passwd |
搜索当前工作目录中,包含某个关键词内容的文件,未找到则提示:
1 | [root@linuxcool ~]# grep -l root * |
搜索当前工作目录中,包含某个关键词内容的文件,未找到不提示:
1 | [root@linuxcool ~]# grep -sl root * |
递归搜索,不仅搜索指定目录,还搜索其内子目录内是否有关键词文件:
1 | [root@linuxcool ~]# grep -srl root /etc |
搜索某个文件中,精准匹配到某个关键词的内容(搜索词应与整行内容完全一样才会显示,有别于一般搜索):
1 | [root@linuxcool ~]# grep -x cd anaconda-ks.cfg |
判断某个文件中,是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含),方便在Shell脚本中判断和调用:
1 | [root@linuxcool ~]# grep -q linuxprobe anaconda-ks.cfg |
搜索某个文件中,空行的数量:
1 | [root@linuxcool ~]# grep -c ^$ anaconda-ks.cfg |
Linux系统的文件目录结构
目录结构:
bin:全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的。
dev:该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows下的分配盘符)。
etc:该目录主要存储一些配置文件。
home:表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的User/用户目录。
proc:process,表示进程,该目录中存储的是Linux运行时候的进程。
root:该目录是root用户自己的家目录。
sbin:全称super binary,该目录也是存储一些可以被执行的二进制文件,但是必须得有super权限的用户才能执行。
tmp:表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。
usr:存放的是用户自己安装的软件。类似于windows下的program files。
var:存放的程序/系统的日志文件的目录。 Mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下。
1 | [root@localhost /]# ls |
用户账号管理
用户账号的作用:用户账号可用来登录系统,可实现访问控制
用户模板目录:/etc/skel/
1 | [root@localhost ~]# ls -a /etc/skel/ |
useradd创建用户
- useradd 命令用于创建新的用户
- 命令格式:useradd【-选项】用户名
- 常用选项
- -u 指定用户UID
- -d 指定用户家目录
- -c 用户描述信息
- -g 指定用户附加组
- -G 指定用户附加组
- -s 指定用户的shell
1 | [root@localhost ~]# useradd user1 |
/etc/passwd用户信息文件
用户的基本信息存放在/etc/passwd文件
1 | [root@localhost ~]# vim /etc/passwd |
/etc/default/useradd用户默认值文件
1 | [root@localhost ~]# vim /etc/default/useradd |
/var/spool/mail/用户邮箱目录
1 | [root@localhost ~]# ls /var/spool/mail |
passwd设置用户密码
命令格式:passwd 【-选项】 【用户名】
密码规范(针对普通用户):长度不能小于8个字符,复杂度(数字、字母区分大小写,特殊字符)
常用选项
-S 查看密码信息
-l 锁定用户密码
-u 解锁用户密码
-d 删除密码
–stdin 通过管道方式设置用户名密码
1
2
3
4
5
6[root@localhost ~]# passwd user1
更改用户 user1 的密码 。
新的 密码:1
无效的密码: 密码是一个回文
重新输入新的 密码:1
passwd:所有的身份验证令牌已经成功更新。非交互设置用户密码
- 命令格式:echo 密码 | passwd –stdin 用户名
1
2
3[root@localhost ~]# echo 123| passwd --stdin user1
更改用户 user1 的密码 。
passwd:所有的身份验证令牌已经成功更新。用户的密码信息存放在/etc/shadow文件中,该文件默认任何人都没有任何权限(不包括root)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[root@localhost ~]# vim /etc/shadow
root:$6$XPT7VF/wmCYxiIy8$wtFfhDgnKuQ8zvMTEvPZAZ8FEn1RITEYeL8xoKtmR9ivqlXLkhPm7by14qAtL797PzECIEblSyGqIYqiZTmDK/::0:99999:7:::
每个字段含义解释:
第一字段:用户名
第二字段:密码加密字符串,加密算法为SHA512散列加密算法,如果密码位是“*”或者“!!”表示密码已过期
第三个字段:密码最后一次修改日期,日期从1970年1月1日起,每过一天时间戳加1
第四个字段:密码修改的期限,如果该字段为0示随时可以修改密码,例如:该字段为10,代表10天之内不可以修改密
第五个字段:密码有效期
第六个字段:密码到期前警告时间(和第五个字段相比)
第七个字段:密码过期后的宽限天数(和第五个字段相比)
第八个字段:账号失效时间,日期从1970年1月1日起第
九个字段:保留
chage命硬用于修改/etc/shadow文件信息,修改文件内容第三个字段(密码最后一次修改时间)
[root@localhost ~]# chage -d 0 user1 #用户登录需要重置密码
su切换用户
su命令用于切换当前用户身份到其他用户身份
命令格式:su 【-选项】 【用户名】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18只切换用户身份,不切换环境
[root@localhost ~]# su user1
[user1@localhost root]$ ls
ls: 无法打开目录.: 权限不够
[user1@localhost root]$ exit
exit
切换用户身份,连同环境一起切换
[root@localhost ~]# su - user1
上一次登录:一 8月 8 18:16:30 CST 2022pts/0 上
[user1@localhost ~]$ pwd
/home/user1
[user1@localhost ~]$
普通用户切换为root(需要输入root用户的密码)
[user1@localhost ~]$ su - root
密码:
上一次登录:一 8月 8 11:26:22 CST 2022从192.168.2.23pts/0 上
usermod修改用户属性
usermod命令用于修改已存在用户的基本信息
命令格式:usermod [-选项] 用户名
常用选项:
-u 修改用户UID
-c 修改用户描述信息
-d 修改用户家目录
-g 修改用户基本组
-G 添加用户附加组
-s 修改用户shell
1
2
3
4
5
6
7
8
9修改用户UID(用户如果已登录系统,不允许修改)
[root@localhost ~]# id user1
uid=1001(user1) gid=1001(user1) 组=1001(user1)
[root@localhost ~]# usermod -u 1111 user1
[root@localhost ~]# id user1
uid=1111(user1) gid=1001(user1) 组=1001(user1)
修改用户的解释器
[root@localhost ~]# usermod -s /bin/bash user1
userdel删除用户
userdel用于删除给定的用户以及与用户相关的文件,该命令若不加选项仅删除用户账号,不删除用户相关文件
命令格式:userdel[-选项]用户名
常用选项:
- -r删除用户同时,删除与用户相关的所有文件
1
2
3
4
5
6
7
8
9
10
11
12
13- #删除用户,仅删除账号,不删除家目录
[root@localhost ~]# userde1 user8
[root@loca1host ~]# ls /home
user1 user2 user4 user5 user8
[root@localhost ~]# id user8
id: user8: no such user
删除用户,连同用户家目录一并删掉
[root@loca1host ~]# userde1 -r user4
[root@localhost ~]# 1s /home
user1 user2 user5 user8
[root@localhost ~]# id user4
id: user4 : no such user