1.用户相关命令
1.账号管理
| 命令 | 作用 |
|---|---|
| useradd | 添加用户 |
| passwd | 设置密码 |
| usermod | 修改用户 |
| userdel | 删除用户 |
| su | 切换用户 |
例:
bash
[root@localhost ~]# useradd aaa
[root@localhost ~]# su aaa
[aaa@localhost root]$ su root
密码:
[root@localhost ~]# passwd aaa
更改用户 aaa 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# usermod
用法:usermod [选项] 登录
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
[root@localhost ~]# usermod -l ljb aaa
usermod: user aaa is currently used by process 3142
[root@localhost ~]# exit
[aaa@localhost root]$ exit
[root@localhost ~]# exit
[aaa@localhost root]$ exit
[root@localhost ~]# exit
[aaa@localhost root]$ exit
[root@localhost ~]# 登出
此时已全部退出需重新连接
bash
[root@localhost ~]# usermod -l ljb aaa
[root@localhost ~]# su aaa
su: user aaa does not exist
[root@localhost ~]# su ljb
[ljb@localhost root]$
[ljb@localhost root]$ su root
密码:
[root@localhost ~]# userdel
用法:userdel [选项] 登录
选项:
-f, --force force some actions that would fail otherwise
e.g. removal of user still logged in
or files, even if not owned by the user
-h, --help 显示此帮助信息并推出
-r, --remove 删除主目录和邮件池
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-Z, --selinux-user 为用户删除所有的 SELinux 用户映射
[root@localhost ~]# userdel -r -f ljb
userdel: user ljb is currently used by process 3616
[root@localhost ~]# su ljb
su: user ljb does not exist
2.用户组
| 命令 | 作用 |
|---|---|
| groupadd | 添加用户组 |
| groupmod | 修改用户组 |
| groups | 查询用户所属组 |
| groupdel | 删除用户组 |
| gpasswd | 添加删除组成员 |
| newgrp | 改变有效组 |
例:
bash
[root@localhost ~]# groupadd kaifa
[root@localhost ~]# groupmod
用法:groupmod [选项] 组
选项:
-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
[root@localhost ~]# groupmod -n kaifazu kaifa
[root@localhost ~]# groups itcast
itcast : itcast wheel
[root@localhost ~]# groupdel kaifazu
[root@localhost ~]# groupadd kaifa
[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# useradd user3
[root@localhost ~]# gpasswd
用法:gpasswd [选项] 组
选项:
-a, --add USER 向组 GROUP 中添加用户 USER
-d, --delete USER 从组 GROUP 中添加或删除用户
-h, --help 显示此帮助信息并推出
-Q, --root CHROOT_DIR 要 chroot 进的目录
-r, --delete-password remove the GROUP's password
-R, --restrict 向其成员限制访问组 GROUP
-M, --members USER,... 设置组 GROUP 的成员列表
-A, --administrators ADMIN,... 设置组的管理员列表
除非使用 -A 或 -M 选项,不能结合使用这些选项。
[root@localhost ~]# gpasswd -a user1 kaifa
正在将用户"user1"加入到"kaifa"组中
[root@localhost ~]# gpasswd -a user2 kaifa
正在将用户"user2"加入到"kaifa"组中
[root@localhost ~]# gpasswd -a user3 kaifa
正在将用户"user3"加入到"kaifa"组中
[root@localhost ~]# grep 'kaifa' /etc/group
kaifa:x:1002:user1,user2,user3
2.系统管理相关命令
日期管理
date
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号
-u:显示GMT
--help:在线帮助
--version:显示版本信息
bash
[root@localhost ~]# date
2023年 08月 21日 星期一 15:23:45 CST
[root@localhost ~]# date -d "2020-12-12 11:11:11"
2020年 12月 12日 星期六 11:11:11 CST
[root@localhost ~]# date --help
显示用户
logname--help--version
bash
[root@localhost ~]# logname
root
切换用户
su user
id命令
id -g--help--version用户名称
sudo命令
sudo参数选项 提高普通用户的操作权限
bash
[itcast@localhost root]$ id
uid=1000(itcast) gid=1000(itcast) 组=1000(itcast),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[itcast@localhost root]$ sudo ls
[sudo] itcast 的密码:
anaconda-ks.cfg 公共 视频 文档 音乐
initial-setup-ks.cfg 模板 图片 下载 桌面
3.进程项命令
top的命令
top-d delayqcSsinb 实时显示process的动态
top 实时显示所有的进程信息
top -c 实时显示所有的进程信息(显示完整命令)
top -p PID 实时显示指定进程的信息
结束监控快捷键:q
ps命令
psoptions--help 查看进程信息(无法实时监控,只能获取当前时刻的进程信息)
ps 显示当前正在运行的进程信息
ps -A 显示系统中生源地进程信息
ps -ef 显示系统中生源地进程信息(完整信息)
ps -u 用户名 显示指定用户的进程信息
kill命令
kill-s\<信息名称或编号\>程序 中断执行中的程序
kill-l\<信息编号\>
kill 进程 PID 杀死指定进程
kill -9 进程PID 彻底杀死指定进程
kill -9 $(ps -ef|grep 用户名) 杀死指定用户所有进程
killall -u用户名 杀死指定用户所有进程
4.关机和重启命令
shutdown命令
shutdown -t seconds-rkhncfFtimemessage 关机

shutdown 不同版本有所差异
shutdown -h now 立马关机
shutdown +1 "警告信息" 一分钟再关机,并出现警告信息
shutdown -r +1 "警告信息" 一分钟再重启,并出现警告信息
shutdown -c 取消当前关机操作
reboot -n-w-d-f-i 重启

reboot 立马重启
5.系统管理的其他命令
who命令
who -husfVuser 显示当前登录系统的用户

timedatectl命令

timedatectl 校正服务器时间,时区
timedatectl status 显示系统的当前时间和日期
timedatectl list-timezones 看查所有可用的时区
timedatectl set-timezone"Asia/Shanghai" 设置本地时区
timedatectl set-ntp false 禁用时间同步
timedatectl set-time "2023-8-24 20:58:00" 设置时间
timedatectl set-ntp true启用时间同步
clear命令
clear 清除屏幕
6.目录管理
ls命令
ls 参数选项 目录名称 列出目录里的内容

ls 显示不隐藏的文件与文件夹
ls -l 显示不隐藏的文件与文件夹的详细信息
ls -al 显示所有文件与文件夹的详细信息

pwd命令
pwd -P 查看当前所在目录
cd命令
cd相对路径或绝对路径 切换目录

cd 路径 切换目录
mkdir命令
mkdir -p 文件夹的名字 创建目录
mkdir 文件夹名 创建目录
mkdir -p aaa/bbb 创建多级目录
rmdir命令
rmdir -p 文件夹名 删除空的目录
rmdir 文件名 删除目录
rmdir -p bbb/ccc 删除ccc,如果删除完bbb是空的bbb也一起删除
rm命令
rm选项 文件/目录 删除文件或者目录

rm 文件路径 删除文件
rm -r 目录路径 删除目录和目录里面所有的内容
cp命令
cp 选项 数据源 目的地 文件复制
cp aaa/a.txt ccc 将aaa文件夹中的a.txt文件拷贝到ccc文件中
cp -r aaa/*ccc 将aaa文件夹中所有内容拷贝到ccc文件夹中
mv命令
mv 选项 数据源 目的地 改名/移动文件或文件夹

mv 数据源 目的地改名/移动

附:Linux文件基本属性


7.更改属主和属组
chgrp命令
chgrp 选项参数所属群组文件或目录... 更改属组
chgrp 选项参数--reference=\<参考文件或目录\>--version文件或目录...
chgrp -v root aaa 将aaa的属组改为root
chown命令
chown 属主名 文件名 更改属主
chown 参数选项 属主名 : 属组名 文件名 更改属主和属组

chown root aaa 将aaa的属主改为roo
chown root:root bbb 将bbb的属主和属组改为root
chown -R root:root aaa 将aaa文件夹和里面所有的属主和属组改为root
8.更改权限
chmod命令
作用:修改属主,属组,其他用户的权限
修改方式:数字方式,符号方式
数字权限:

chmod 参数选项 数字权限 文件或目录

符号权限:
chmod 参数选项 符号权限 文件或目录

user 属主权限 --> u
group 属组权限 --> g
others 其他权限 --> o
全部身份 --> a

9.文件管理
touch命令
touch 参数选项 文件名 如果文件不存在就创建文件,如果存在就修改时间属性

touch a.txt 不存在就创建,存在就修改时间属性
touch a{1..10).txt (两个点) 批量创建空文件
star a.txt 查看文件的详细信息
vi/vim编辑器
vi:
只能是编辑文本内容,不能对字体,段落进行排版
不支持鼠标操作
没有菜单
只有命令
vim:
是从vi发展出来的一个文本编辑器
代码补全,编译及错误跳转等方便编程的功能特别丰富
vi/vim三种模式

打开和新建文件
vim 文件名 如果文件已经存在,会直接打开该文件 / 如果文件不存在,打开一个临时文件,在保存且退出后,就会新建一个文件
进入编辑模式

进入末行模式保存文件
:q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
:q! 当vim进入文件对文件内容有操作但不想保存退出
:wq 正常保存退出
:wq! 强行保存退出

10.文件查看
|--------------|---------------|
| 命令 | 功能 |
| cat 文件名 | 看查小文件内容 |
| less -N 文件名 | 分屏显示大文件内容 |
| head -n 文件名 | 看查文件的前一部分 |
| tail -n 文件名 | 看查文件的最后一部分 |
| grep 关键字 文件名 | 根据关键字搜索文本文件内容 |
cat命令
cat 参数选项 文件 查看小型文件
cat a.txt 查看a.txt的内容
cat -n a.txt 查看a.txt的内容(加入行号)
less命令
less a.txt 看查a.txt的内容
less -N a.txt 看查a.txt的内容(加入行号)
注:q键退出
tail命令
tail 参数选项 文件 查看文件的最后部分
tali -3 big.txt 显示文件最后3行
tail -f big.txt 动态显示最后10行
tail -4f big.txt 动态显示最后4行
tail -n +2 big.txt 显示文件a.txt的内容,从第2行至文件末尾
tail -c 45 big.txt 显示最后一些字符
head命令
head 参数选项 文件 查看文件的前一部分
grep命令
grep 参数选项 关键字 文件 根据关键词,搜索文本文件内容
grep 关键字 small.txt 把包含关键字的行展示出来
grep -n 关键字 small.txt 把包含关键字的行展示出来且加上行号
grep -i 关键字 small.txt 把包含关键字的行展示出来,搜索时忽略大小写
grep -v 关键字 small.txt 把不包含关键字的行展示出来
ps -ef | grep 关键字 查找指定的进程信息,包含grep进程
ps -ef | grep 关键字 | grep -v "grep" 查找指定的进程信息,不包含grep进程
ps -ef|grep -c sshd 查找进程个数
vim定位行
vim 文件名+行数 查看文件并定位到具体行数
vim异常处理
如果vim异常退出,在磁盘上可能会保存有交换文件
删除 .swp文件(rm -r -f .xxx.swp)
echo命令
echo 字符串 展示文本
echo 字符串 > 文件名 将字符串写到文件中(覆盖文件中内容)
echo 字符串 >> 文件名 将字符串写到文件中(不覆盖文件中内容)
cat 不存在的目录 &>> error.log 将命令的失败结构追加error.log文件的后面
11.awk语法
AWK是一种处理文本文件的语言,是一个强大的文本分析工具
过滤和切割






计算


软连接
因为某些文件和目录的路径很深,所以需要增加软连接(快捷方式)
ln -s 目标文件路径 快捷方式路径

find命令(查找)
fing 参数选项 <指定目录> <指定条件> <指定内容> 在指定目录下查找文件
12.压缩命令
gzip命令
gzip 参数选项 文件 压缩文件
gzip a.txt 压缩文件
gzip * 压缩当前目录下所有文件
gzip dv* 解压文件并列出详细信息
gunzip命令
gzip 参数选项 文件 解压文件
gunzip 压缩文件 解压
tar命令
tar必要参数 选择参数 文件 打包,压缩和解压(文件/文件夹)
注意 :tar本身不具有压缩功能,他是调用压缩功能实现的
tar -cvf 打包文件名 文件名 打包文件并指定打包之后的文件名(仅打包不压缩)
tar -zcvf 压缩文件名 文件名/文件夹名 压缩文件或者文件夹并指定压缩文件名(打包压缩)
tar -ztvf 压缩文件名 看查压缩文件中有哪些文件
tar -zxvf 压缩文件名 压缩
zip文件
zip 必要参数 选择参数 文件 压缩
注意:zip是个使用广泛的压缩文件,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件
zip -q -r 压缩文件名 文件/文件夹 压缩
unzip命令
unzip 必要参数 选择参数 文件 解压
注意:解压".zip"扩展名的压缩文件
unzip -l 压缩文件名 查看这个压缩文件中有多少内容
unzip -d 指定文件夹 压缩文件 解压
bzip2命令
bzip2 参数选项 文件 压缩
注意 :使用新的压缩算法,压缩后的文件比原来的要小 ,但是花费的时间边长
bzip2 a.txt 压缩
bunzip2命令
bunzip2 参数选项 文件 解压
bunzip2 -v a.bz2 解压并显示详细信息
13.网络管理
ifconfig命令
ifconfig 参数选项 显示或者配置网络设备的命令
ifconfig 显示激活的网卡信息
ifconfig ens37 down 关闭网卡
ifconfig ens37 up 启动网卡
ifconfig ens37 192.168.23.199 配置ip地址
ifconfig ens37 192.168.23.133 netmask 255.255.255.0 配置ip地址和子网掩码
ping命令
ping 参数选项 检测是否与主机连通
ping www.baidu.com 检测是否与百度连通
ping -c 2 www.baidu.com 指定接收包的次数
netstat命令
netstat 参数选项 显示网络状态
netstat -a 显示详细的连接状况
netstat -i 显示网卡列表
14.磁盘管理
lsblk命令
lsblk 参数选项 列出硬盘的使用情况
理解为:list block的英文缩写
lsblk 列出硬盘的使用情况
lsblk -f 显示系统信息
df命令
df 参数选项 显示目前在Linux系统上,硬盘的使用情况
df 显示整个硬盘使用情况
df 文件夹 显示文件夹使用情况
df -total 显示所有的信息
df -h 将结果变成KB,MB,GB形式展示,利于阅读
mount命令

为u盘分配一个挂载点叫挂载
解除文件夹与优盘的关系叫卸载
mount 参数选项 目录 用于挂载Linux系统外的设备
注意:"挂载点"的目录需要以下几个需求
目录事先存在,可以用mkdir命令新建目录
挂载点目录不可被其他进程使用到
挂载点下原有文件将被隐藏
mkdir 文件夹 创建文件夹(也是创建一个挂载点)
mount -t auto/dev/cdrom 文件夹 开始挂载
umount 文件夹 卸载
yum
在linux中,如果我们想要查找,安装,下载或者卸载另外的软件,就需要yum来进行操作
yum -y install tree 安装tree
tree 执行tree,展示当前目录结构
yum remove tree 移除tree
yum list tom* 找出以tom为开头的软件名称
更改yum源
yum install -y wget 安装下载工具wget
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载阿里云的Centos-7.repo文件
yum clean all 清理之前的缓存,并重新加载yum
yum makecache 建立一个缓存文件
yum search tomcat 查找软件,验证阿里云的yum源是否可以正常使用
yum与rpm的区别
rpm只能安装已经下载到本地机器上的rpm包
yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这是rpm工具所不具备的
15.shell
1.shell概述
在计算机科学中,shell就是一个命令解释器
shell是位于操作系统和应用程序之间的,是他们二者最主要的接口
shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结构解释给应用程序

shell就是在操作系统和应用程序之间的一个命令翻译工具
shell的使用方式
手工方式
手工敲击键盘,直接输入命令,按Enter后
执行命令,显示命令执行的结果
重点:逐行输入命令,逐行进行确认执行
脚本方式
我们把手工执行的命令,写到一个文件中,然后运行这个文件,达到执行命令的效果
这个文件就叫做脚本文件
2.编写第一个shell脚本
新建一个文件后缀名为sh
书写内容

执行
3.shell注释
单行注释

多行注释

注:字符大多用!
3.shell变量
1.普通变量
方式一
变量名=变量值 变量必须是一个整体,中间没有特殊字符
方式二
变量名='变量值' 单引号中的内容,原样赋值
方式三
变量名="变量值" 如果双引号里面有其他变量,会把变量的结果拼接,然后赋值
命令变量
方式一
变量名=`命令` 注意:`是反引号
方式二
变量名=$(命令)
执行流程:1.执行`或者$()范围内的命令 2.将命令执行后的结果,赋值给变量
2.使用变量
方式一
$变量名 非标准写法,图省事
方式二
"$变量名" 非标准写法,图省事
方式三
${变量名} 在双引号里面要使用变量的值
方式四
"${变量名}" 标准使用方式
3.只读变量
readonly 变量名
4.删除变量
unset 变量名
4.shell数组
定义数组
数组名={值1 值2 ... 值n} arr={1 2 3 4 5}
给数组的元素赋值
数组名索引=值 arr0=1
获取元素
{数组名\[下标\]} {arr0}
获取长度
{#数组名\[\*\]} {#arr\*}
{#数组名\[@\]} {#arr@}
例:


5.shell算数运算符
|---------|--------|-----------------|
| 运算符 | 说明 | 举例 |
| + | 加法 | expr a + b |
| - | 减法 | expr a - b |
| * | 乘法 | expr a \\\* b |
| / | 除法 | expr a / b |
| % | 取余 | expr a % b |
| = | 赋值 | a=$b 将把变量b的值赋给a |
| ++ / -- | 自增,自减 | ((a++)) |
注意点:
1.原生的bash不支持简单的数学运算。可以通过其他命令实现 .expr
2.表达式和运算符之间要有空格
3.完整的表达式要被反引号包含
例: `expr 2 + 2`


6.字符串运算符
| 运算符 | 说明 | 举例 |
|---|---|---|
| = | 检测两个字符串是否相等,相等返回true | $a = $b |
| != | 检测两个字符串是否不相等,不相等返回true | $a != $b |
| -z | 检测字符串长度是否为0,为0返回true | -z $a |
| -n | 检测字符串长度是否不为0,不为0返回true | -n "$a" |
| $ | 检测字符串是否为空,不为空返回true | $a |
注:方括号内前后都要有空格



7.关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
| 运算符 | 说明 | 举例 |
|---|---|---|
| -eq (equals) | 检测两个数是否相等,相等返回true | $a -eq $b |
| -ne (not equals) | 检测两个数是否不相等,不相等返回true | $a -ne $b |
| -gt (greater than) | 检测左边的数是否大于右边的,如果是,则返回true | $a -ge $b |
| -lt (less than) | 检测左边的数是否小于右边的,如果是,则返回true | $a -lt $b |
| -ge (greater equals) | 检测左边的数是否大于等于右边的,如果是,则返回true | $a -ge $b |
| -le (less equals) | 检测左边的数是否小于等于右边的,如果是,则返回true | $a -le $b |

8.shell布尔运算符
| 运算符 | 说明 | 举例 |
|---|---|---|
| ! | 取反运算 | !false 返回true |
| -o (or) | 或运算,有一个表达式为true则返回true | $a -lt 20 -o $b -gt 100 |
| -a (and) | 与运算,两个表达式都为true才返回true | $a -lt 20 -a $b -gt 100 |


9.shell逻辑运算符
| 运算符 | 说明 | 举例 |
|---|---|---|
| && | 逻辑的AND | \[ true \&\& true ] 返回true |
| || | 逻辑的OR | \[ false || false ] 返回false |


10.shell判断语句


11.shell选择语句


12.shell循环语句
for循环


while循环


13.shell函数





