命令 | 作用 |
---|---|
useradd | 添加用户 |
passwd | 设置密码 |
usermod | 修改用户 |
userdel | 删除用户 |
su | 切换用户 |
例:
[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 ~]# 登出
此时已全部退出需重新连接
[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
命令 | 作用 |
---|---|
groupadd | 添加用户组 |
groupmod | 修改用户组 |
groups | 查询用户所属组 |
groupdel | 删除用户组 |
gpasswd | 添加删除组成员 |
newgrp | 改变有效组 |
例:
[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
date
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号
-u:显示GMT
--help:在线帮助
--version:显示版本信息
[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]
[root@localhost ~]# logname
root
su [user]
id [-g][--help][--version][用户名称]
sudo[参数选项] 提高普通用户的操作权限
[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 模板 图片 下载 桌面
top[-][d delay][q][c][S][s][i][n][b] 实时显示process的动态
top 实时显示所有的进程信息
top -c 实时显示所有的进程信息(显示完整命令)
top -p PID 实时显示指定进程的信息
结束监控快捷键:q
ps[options][--help] 查看进程信息(无法实时监控,只能获取当前时刻的进程信息)
ps 显示当前正在运行的进程信息
ps -A 显示系统中生源地进程信息
ps -ef 显示系统中生源地进程信息(完整信息)
ps -u 用户名 显示指定用户的进程信息
kill[-s<信息名称或编号>][程序] 中断执行中的程序
kill[-l<信息编号>]
kill 进程 PID 杀死指定进程
kill -9 进程PID 彻底杀死指定进程
kill -9 $(ps -ef|grep 用户名) 杀死指定用户所有进程
killall -u 用户名 杀死指定用户所有进程
shutdown [-t seconds][-rkhncfF]time[message] 关机
shutdown 不同版本有所差异
shutdown -h now 立马关机
shutdown +1 “警告信息” 一分钟再关机,并出现警告信息
shutdown -r +1 “警告信息” 一分钟再重启,并出现警告信息
shutdown -c 取消当前关机操作
reboot [-n][-w][-d][-f][-i] 重启
reboot 立马重启
who -[husfV][user] 显示当前登录系统的用户
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 清除屏幕
ls [参数选项] 目录名称 列出目录里的内容
ls 显示不隐藏的文件与文件夹
ls -l 显示不隐藏的文件与文件夹的详细信息
ls -al 显示所有文件与文件夹的详细信息
pwd -P 查看当前所在目录
cd[相对路径或绝对路径] 切换目录
cd 路径 切换目录
mkdir [-p] 文件夹的名字 创建目录
mkdir 文件夹名 创建目录
mkdir -p aaa/bbb 创建多级目录
rmdir [-p] 文件夹名 删除空的目录
rmdir 文件名 删除目录
rmdir -p bbb/ccc 删除ccc,如果删除完bbb是空的bbb也一起删除
rm[选项] 文件/目录 删除文件或者目录
rm 文件路径 删除文件
rm -r 目录路径 删除目录和目录里面所有的内容
cp [选项] 数据源 目的地 文件复制
cp aaa/a.txt ccc 将aaa文件夹中的a.txt文件拷贝到ccc文件中
cp -r aaa/*ccc 将aaa文件夹中所有内容拷贝到ccc文件夹中
mv [选项] 数据源 目的地 改名/移动文件或文件夹
mv 数据源 目的地 改名/移动
chgrp [选项参数][所属群组][文件或目录...] 更改属组
chgrp [选项参数][--reference=<参考文件或目录>][--version][文件或目录...]
chgrp -v root aaa 将aaa的属组改为root
chown 属主名 文件名 更改属主
chown [参数选项] 属主名 : 属组名 文件名 更改属主和属组
chown root aaa 将aaa的属主改为roo
chown root:root bbb 将bbb的属主和属组改为root
chown -R root:root aaa 将aaa文件夹和里面所有的属主和属组改为root
作用:修改属主,属组,其他用户的权限
修改方式:数字方式,符号方式
数字权限:
chmod [参数选项] 数字权限 文件或目录
符号权限:
chmod [参数选项] 符号权限 文件或目录
user 属主权限 --> u
group 属组权限 --> g
others 其他权限 --> o
全部身份 --> a
touch [参数选项] 文件名 如果文件不存在就创建文件,如果存在就修改时间属性
touch a.txt 不存在就创建,存在就修改时间属性
touch a{1..10).txt (两个点) 批量创建空文件
star a.txt 查看文件的详细信息
vi:
只能是编辑文本内容,不能对字体,段落进行排版
不支持鼠标操作
没有菜单
只有命令
vim:
是从vi发展出来的一个文本编辑器
代码补全,编译及错误跳转等方便编程的功能特别丰富
vi/vim三种模式
打开和新建文件
vim 文件名 如果文件已经存在,会直接打开该文件 / 如果文件不存在,打开一个临时文件,在保存且退出后,就会新建一个文件
进入编辑模式
进入末行模式保存文件
:q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
:q! 当vim进入文件对文件内容有操作但不想保存退出
:wq 正常保存退出
:wq! 强行保存退出
命令 | 功能 |
cat 文件名 | 看查小文件内容 |
less -N 文件名 | 分屏显示大文件内容 |
head -n 文件名 | 看查文件的前一部分 |
tail -n 文件名 | 看查文件的最后一部分 |
grep 关键字 文件名 | 根据关键字搜索文本文件内容 |
cat [参数选项] 文件 查看小型文件
cat a.txt 查看a.txt的内容
cat -n a.txt 查看a.txt的内容(加入行号)
less a.txt 看查a.txt的内容
less -N a.txt 看查a.txt的内容(加入行号)
注:q键退出
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 [参数选项] 文件 查看文件的前一部分
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 字符串 >> 文件名 将字符串写到文件中(不覆盖文件中内容)
cat 不存在的目录 &>> error.log 将命令的失败结构追加error.log文件的后面
AWK是一种处理文本文件的语言,是一个强大的文本分析工具
因为某些文件和目录的路径很深,所以需要增加软连接(快捷方式)
ln -s 目标文件路径 快捷方式路径
fing [参数选项] <指定目录> <指定条件> <指定内容> 在指定目录下查找文件
gzip [参数选项] [文件] 压缩文件
gzip a.txt 压缩文件
gzip * 压缩当前目录下所有文件
gzip dv* 解压文件并列出详细信息
gzip [参数选项] [文件] 解压文件
gunzip 压缩文件 解压
tar[必要参数] [选择参数] [文件] 打包,压缩和解压(文件/文件夹)
注意:tar本身不具有压缩功能,他是调用压缩功能实现的
tar -cvf 打包文件名 文件名 打包文件并指定打包之后的文件名(仅打包不压缩)
tar -zcvf 压缩文件名 文件名/文件夹名 压缩文件或者文件夹并指定压缩文件名(打包压缩)
tar -ztvf 压缩文件名 看查压缩文件中有哪些文件
tar -zxvf 压缩文件名 压缩
zip [必要参数] [选择参数] [文件] 压缩
注意:zip是个使用广泛的压缩文件,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件
zip -q -r 压缩文件名 文件/文件夹 压缩
unzip [必要参数] [选择参数] [文件] 解压
注意:解压“.zip”扩展名的压缩文件
unzip -l 压缩文件名 查看这个压缩文件中有多少内容
unzip -d 指定文件夹 压缩文件 解压
bzip2 [参数选项] 文件 压缩
注意:使用新的压缩算法,压缩后的文件比原来的要小,但是花费的时间边长
bzip2 a.txt 压缩
bunzip2 [参数选项] 文件 解压
bunzip2 -v a.bz2 解压并显示详细信息
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 www.baidu.com 检测是否与百度连通
ping -c 2 www.baidu.com 指定接收包的次数
netstat [参数选项] 显示网络状态
netstat -a 显示详细的连接状况
netstat -i 显示网卡列表
lsblk [参数选项] 列出硬盘的使用情况
理解为:list block的英文缩写
lsblk 列出硬盘的使用情况
lsblk -f 显示系统信息
df [参数选项] 显示目前在Linux系统上,硬盘的使用情况
df 显示整个硬盘使用情况
df 文件夹 显示文件夹使用情况
df -total 显示所有的信息
df -h 将结果变成KB,MB,GB形式展示,利于阅读
为u盘分配一个挂载点叫挂载
解除文件夹与优盘的关系叫卸载
mount [参数选项] 目录 用于挂载Linux系统外的设备
注意:“挂载点”的目录需要以下几个需求
目录事先存在,可以用mkdir命令新建目录
挂载点目录不可被其他进程使用到
挂载点下原有文件将被隐藏
mkdir 文件夹 创建文件夹(也是创建一个挂载点)
mount -t auto/dev/cdrom 文件夹 开始挂载
umount 文件夹 卸载
在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工具所不具备的
在计算机科学中,shell就是一个命令解释器
shell是位于操作系统和应用程序之间的,是他们二者最主要的接口
shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结构解释给应用程序
shell就是在操作系统和应用程序之间的一个命令翻译工具
shell的使用方式
手工方式
手工敲击键盘,直接输入命令,按Enter后
执行命令,显示命令执行的结果
重点:逐行输入命令,逐行进行确认执行
脚本方式
我们把手工执行的命令,写到一个文件中,然后运行这个文件,达到执行命令的效果
这个文件就叫做脚本文件
新建一个文件后缀名为sh
书写内容
执行
单行注释
多行注释
注:字符大多用!
1.普通变量
方式一
变量名=变量值 变量必须是一个整体,中间没有特殊字符
方式二
变量名='变量值' 单引号中的内容,原样赋值
方式三
变量名="变量值" 如果双引号里面有其他变量,会把变量的结果拼接,然后赋值
命令变量
方式一
变量名=`命令` 注意:`是反引号
方式二
变量名=$(命令)
执行流程:1.执行`或者$()范围内的命令 2.将命令执行后的结果,赋值给变量
2.使用变量
方式一
$变量名 非标准写法,图省事
方式二
"$变量名" 非标准写法,图省事
方式三
${变量名} 在双引号里面要使用变量的值
方式四
"${变量名}" 标准使用方式
3.只读变量
readonly 变量名
4.删除变量
unset 变量名
定义数组
数组名={值1 值2 ... 值n} arr={1 2 3 4 5}
给数组的元素赋值
数组名[索引]=值 arr[0]=1
获取元素
${数组名[下标]} ${arr[0]}
获取长度
${#数组名[*]} ${#arr[*]}
${#数组名[@]} ${#arr[@]}
例:
运算符 | 说明 | 举例 |
+ | 加法 | 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`
运算符 | 说明 | 举例 |
---|---|---|
= | 检测两个字符串是否相等,相等返回true | [ $a = $b ] |
!= | 检测两个字符串是否不相等,不相等返回true | [ $a != $b ] |
-z | 检测字符串长度是否为0,为0返回true | [ -z $a ] |
-n | 检测字符串长度是否不为0,不为0返回true | [ -n "$a" ] |
$ | 检测字符串是否为空,不为空返回true | [ $a ] |
注:方括号内前后都要有空格
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
运算符 | 说明 | 举例 |
---|---|---|
-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 ] |
运算符 | 说明 | 举例 |
---|---|---|
! | 取反运算 | [ !false ] 返回true |
-o (or) | 或运算,有一个表达式为true则返回true | [ $a -lt 20 -o $b -gt 100] |
-a (and) | 与运算,两个表达式都为true才返回true | [ $a -lt 20 -a $b -gt 100] |
运算符 | 说明 | 举例 |
---|---|---|
&& | 逻辑的AND | [[ true && true ]] 返回true |
|| | 逻辑的OR | [[ false || false ]] 返回false |
for循环
while循环