Linux
1.用户管理
1.1账户管理
useradd 用户名 //创建用户
passwd 用户名 //设置用户密码
usermod -l 新用户名 原用户名 //修改用户名
userdel -f -r 用户名 //删除用户
1.密码不可以是回文:例如(121)
2.密码长度大于8位且是字母和数字的集合
3.Ctrl + D 退出当前用户
4.需要在管理员权限进行设置
5.cat /etc/passwd 查看所有用户信息
6.pwd //查看当前目录
1.2用户组管理
cat /etc/group //查看所有的用户组
groupadd 组名 //创建用户组
groupmod -n 新组名 原组名 //修改用户组名
groupdel 组名 //删除用户组
groups 用户名 //查看用户所在的组
1.3用户组内成员管理
gpasswd -a 用户名 组名 //将用户添加到用户组
gpasswd -d 用户名 组名 //从用户组中删除用户
grep 组名 /etc/group //查看组内用户
2.系统管理
2.1设置时间
date //显示当前时间
date -d "yyyy-MM-dd HH:mm:ss" //显示指定的时间
date -s "yyyy-MM-dd HH:mm:ss" //设置时间,需要管理权限
由于硬件的原因,机器或多或少的与标准时间对不上,一个月的误差几秒到几分钟不等。对于服务器来说时间不准,会有很多麻烦。例如,支付的时候,无法下单,游戏无法登录等。
timedatectl set-ntp true //开启时间同步服务器
ntpdate time.nist.gov //与时间服务器同步
2.2切换用户
logname //显示当前登录的用户
who -H //显示所有登录的用户
su 用户名 //切换用户
id //显示当前用户的信息
sudo //以管理员权限运行其他命令
2.3进程管理
top //实时监控系统的进程状态(类似Windows系统的任务管理器)
//按q退出
ps //显示当前运行的进程信息
ps -A //显示系统中所有进程信息
ps -ef //显示系统中所有的进程信息(完整信息)
ps -u 用户名 //显示指定用户的进程信息
kill 进程pid //杀死指定的进程
kill -9 进程pid //强制杀死指定的进程
killall -u 用户名 //杀死用户的所有进程
2.4关机和重启
shutdown //默认1分钟之后关机(不同版本会有差异)
shutdown now //立即关机
shutdown 20:25 //系统会在今天20:25关机
shutdown +1 "警告信息" //1分钟之后关机,并显示警告信息
shutdown -r +1 "警告信息" //1分钟后关机并重启,显示警告信息
shutdown -c //取消关机
reboot //重启
3.目录管理
3.1查看目录
ls //显示所有文件或目录(不包含隐藏文件)
ls -l //显示所有文件或者目录的详细信息(不包括隐藏文件)
ls -al //显示所有文件或目录的详细信息(包括隐藏文件)
注意:带"."的表示隐藏文件,带"d"表示目录; 带"-"表示文件
pwd //查看当前所在目录
3.2切换目录
cd 路径 切换目录
cd / 切换到根目录
cd .. 返回上一级目录
3.3新建目录
mkdir [目录] //创建文件夹
mkdir -p [目录] //创建多级文件夹
rmdir [目录] //删除文件夹(只能删除空的文件夹)
rmdir -p [目录] //级联删除目录(文件夹必须都是空的)
3.4删除目录
rm [文件] //删除文件
rm -r [目录] //删除文件夹
rm -r -f [目录] //删除目录和目录里面所有的内容不可恢复
3.5复制文件/目录
cp [源文件] [目标目录] //把源文件复制到目标目录
cp [源文件] [目标文件] //把源文件的内容复制到目标文件
cp -r [源目录] [目标目录]
目标目录存在:源目录复制到目标目录
目标目录不存在:自动创建目标目录,再把源目录中所有的内容复制到目标目录
cp -r aaa/* ccc
3.5移动文件/目录
mv [源文件] [目标目录] //把文件移动到目录
注意:目标目录一定要存在,否则表示修改文件名
mv [源文件] [目标文件] //修改文件名称
mv [源目录] [目标目录] //移动文件夹
目标目录存在:把源目录移动到目标目录
目标目录不存在:表示修改目录名称
4.文件的属性
4.1所属组修改
chgrp -v [用户组] [文件目录] //修改文件所属的用户组
chgrp -R dev-group /tmp/work //将文件夹的所有东西的属组改为dev-group
4.2所属用户修改
chown [用户] [文件或目录] //修改文件的所属用户
chown [用户]:[用户组] [文件或目录] //修改属主或者属组
chown -R [用户]:[用户组] [目录] //修改目录及其所有内容的用户和用户组
4.3权限修改
chmod -R 数字权限 文件或目录
r=4,w=2,x=1
rwx=4+2+1=7(可读可写可执行)
chmod -R 符号权限 文件或目录
u=rwx //用户权限
g=rwx //用户组权限
o=rx //其他用户权限
chmod -R o-rwx bbb //将文件夹bbb的权限设置为其他人没有权限
5.文件管理
5.1创建文件
touch a.txt //不存在就创建,存在就修改时间属性
touch a{1..10}.txt //批量创建文件a1~a10
mkdir folder{1..10} // 一次新建多个文件夹
stat a.txt //查看文件的详细信息
5.2编辑文件
vi和vim是命令版的文件编辑器,功能类似于Windows的记事本,可以对文件进行创建、编辑、保存等操作。这些都是通过命令来完成的。
vi/vim的三种模式:
命令模式:通过快捷键达到快速输入的目的
编辑模式:对文件进行编辑
末行模式:对文件进行退出、保存等操作
- 切换模式
按"i"键: 进入编辑模式
按"esc"键: 回到命令模式
按":"键:进入末行模式
按两次"esc": 回到命令模式
- 命令模式
dd 快速删除一行
ndd 删除当前n行
yy 拷贝一行
nyy 拷贝当前行后的n行
大P 当前光标前粘贴
小p 当前光标后粘贴
gg 回到开头行
shift+g 回到结尾行
- 末行模式
:wq 保存并退出
:wq! 强制保存并退出
:q 正常退出
:q! 忽略所有更改,并强制退出
:/text 查找文件中的内容,text是要查找的关键词
5.3文件查看
cat -n 文件 //查看文件内容
less -N 文件名 //分屏显示文件内容
head -n 文件名 //查看文件的前一部分(n表示行数)
tail -n 文件名 //查看文件的后一部分
grep [选项] 关键词 文件名 //根据关键词搜索文本内容
[-n] 显示行号
[-i] 搜索是忽略大小写
vim 文件名 +行号 //vim定位到文件的指定行
5.4输出字符串
echo 字符串 //直接输出字符串到命令行
echo 字符串>文件 //将字符串输出到文件(覆盖原文件)
echo 字符串>>文件 //将字符串输出到文件(不覆盖原文件)
5.5软连接
ln -s 目录文件路径 快捷路径
5.6搜索文件
//语法:
find 目录 条件
find . -name "*.txt" //搜索当前目录及其子目录下的所有.txt文件
find . -ctime -20 //搜索最近20天的文件
find . size 0 //搜索长度等于0的文件
6.压缩解压
6.1gzip压缩文件
gzip 文件 //压缩文件
gzip * //压缩当前目录下的所有文件
gunzip 文件 //解压文件
gunzip * //解压当前目录下的所有文件
6.2tar打包压缩
tar 命令能够将用户所指定的文件或目录打包成一个文件,但不做压缩。
一般Linux上常用的压缩方式是选用tar将许多文件打包成一个tar文件,再调用gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。
tar [必要参数] <文件或目录列表>
-c: 创建一个新tar文件
-v: 显示运行过程的信息
-f: 指定文件名
-z: 调用gzip压缩命令进行压缩
-t: 列出文件中的内容
-x: 解开tar文件
-C: 指定解压路径
- 打压缩包
tar -cvf 打包文件名 文件名 //打包文件并指定打包之后的文件名(仅打包不压缩)
tar -zcvf 压缩文件名 文件名/文件夹 //压缩文件或者文件夹并指定压缩文件名(打包压缩)
- 解压缩包
tar -xvf aaa.tar //将tar包中的文件提取到当前目录
tar -xvf aaa.tar.gz -C 解压目录 //将压缩包解压到指定目录
- 查看压缩包
tar -tvf aaa.tar.gz
6.3zip打包压缩
- zip打包压缩
zip -q -r 压缩文件名 文件/文件夹
- 解压zip压缩包
unzip -l 压缩文件 //查看压缩文件内容(不解压)
unzip -d 指定输出目录 压缩文件 //解压文件到指定目录
7.网络管理
7.1配置ip地址
ifconfig //显示激活的网卡信息
ifconfig ens37 down //关闭ens37网卡
ifconfig ens37 up //启动ens37网卡
ifconfig ens37 192.168.31.99 //配置ens37网卡ip地址
ipconfig ens37 192.168.31.100 netmask 255.255.255.0 //配置ip地址和子网掩码
7.2查看网络状态
ping 192.168.31.100 //测试网络是否连通
netstat //显示网络状态
netstat -i //显示网卡列表
8.安装程序
8.1yum的基本使用
yum是一个软件包管理器,它可以帮助我们做一些下载、安装、卸载、更新软件包等操作。
yum -y install tree //安装tree工具(在命令行显示目录结构的程序)
yum remove tree //移除tree工具
yum list tomcat //列出所有tomcat软件包
8.2yum源修改
yum源指的是互联网的软件包的服务器,CentOS默认的Yum源服务器默认是国外的,访问速度比较慢。我们可以自己配置国内的yum源。
CentOS默认的yum源配置文件在/etc/yum.repos.d/CentOS-Base.repo
路径下,我们可以找到这个文件改掉就可以了。
#检测是否安装
rpm -qa | grep wget
#安装下载工具
yum -y wget install
#进入yum源所在的文件夹
cd /etc/yum.repos.d
#备份yum源(以免搞坏了,再改回来就行)
mv CentOS-Base.repo CentOS-Base.repo.back
#下载阿里的yum源
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
8.3rpm安装程序
rpm是早期Linux自带的软件包管理工具,也可以进行安装、卸载等操作。和yum不同的是rpm只能安装本地已经下载好的软件包。
9.Linux安装卸载JDK
9.1卸载jdk
#查询已安装的JDK包
rpm -qa | grep jdk
# 卸载jdk1.7的所有依赖
sudo yum -y remove java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_6
# 卸载jdk1.8的所有依赖
sudo yum -y remove java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_6
9.2安装jdk
下载jdk并上传至Linux系统的/usr/java
目录
1.到Oracle官网下载`jdk-8u271-linux-x64.tar.gz`安装包
2.将jdk-8u271-linux-x64.tar.gz安装包上传到Linux系统中/usr/java目录下
需要使用ftp上传工具,也可以使用finalshell直接拖拽
解压安装包
进入/usr/java目录中对jdk的压缩包解压
tar -zxvf jdk-8u271-linux-x64.tar.gz
配置JAVA_HOME环境变量
vim /etc/profile
#把下面的内容一次性全部复制进去
export JAVA_HOME=/usr/java/jdk1.8.0_271
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
让当前环境变量生效
source /etc/profile
Shell
1.第一个shell脚本
1.新建一个.sh文件
touch a.sh
2.编写a.sh文件的内容
#!/bin/bash
#这是第一个shell脚本
echo 'hello'
echo 'shell'
3.执行
./a.sh
bash.sh
2.注释
单行注释
#这是一个注释
多行注释
:<<字符
注释的内容
字符
3.变量
定义变量:
普通变量:1.变量名=变量值 (这个变量值不可以有特殊符号)
2.变量名='变量值'(会对其中的值原样输出)
3.变量名="变量值"(如果双引号里面有其他变量,会把变量的值进行拼接,然后赋值)
命令变量:1.变量名=`命令`
2.变量名=$(命令)
a=10
b="$a"
c='$a'
echo $a //10
echo $b //10
echo $c //$a
使用变量:
1.$变量名
2."$变量名"
3.${变量名}
4."${变量名}"
只读变量: readonly 变量名
删除变量: unset变量名
4.数组
定义数组
arr=(1 2 3 4 5)
给数组的元素赋值
arr[0]=1
获取元素
${arr[0]}
获取长度
${#arr[*]}
${#arr[@]}
5.算术运算符
+ 加法 expr $a + $b
- 减法 expr $a - $b
* 乘法 expr $a \* $b
/ 除法 expr $a / $b
% 取余 expr $a % $b
= 赋值 a=$b
++/-- 自增,自减 ((a++))
注意: 表达式和运算符之间要有空格
完整的表达式要被反引号包含 (`expr 2 + 2`)
6.字符串运算符
= 检测俩字符串是否相等,相等返回true [ $a = $b ]
!= 检测俩字符串是否不相等,不相等返回true [ $a != $b ]
-z 检测俩字符串长度是否为0,为0返回true [ -z $ a ]
-n 检测俩字符串长度是否不为0,不为0返回true [ -n "$a" ]
$ 检测俩字符串是否为空,不为空返回true [ $a ]
注意:[ "${a}" = "${b}" ] 0为真,1位假
7.关系运算符
-eq [ $a -eq $b ]
检测俩个数是否相等,相等返回true
-ne [ $a -ne $b ]
检测俩个数是否不相等,不相等返回true
-gt [ $a -gt $b]
检测左边的数是否大于右边的,如果是,则返回true
-lt [ $a -lt $b ]
检测左边的数是否小于右边的,如果是,则返回true
-ge [ $a -ge $b ]
检测左边的数是否大于等于右边的,如果是,则返回true
-le [ $a -le $b ]
检测左边的数是否小于等于右边的,如果是,则返回true
8.布尔运算符
! [ !false ]
取反运算
-o [ $a -lt 20 -o $b -gt 100 ]
或运算,有一个表达式为true,则返回true
-a [ $a -lt 20 -a $b -gt 100 ]
与运算,俩个表达式都为true,才返回true
9.逻辑运算符
&& [[ true && true ]] 逻辑and
|| [[ false || false ]] 逻辑or
10.判断语句
If[ 条件 ] If[ 条件 ] If[ 条件1 ]
then then then
语句体 语句体 语句体
fi else elif[ 条件2 ]
语句体 语句体
fi else
语句体
fi
11.选择语句
case 值 in
模式1)
语句体
;;
模式2)
语句体2
;;
esac
12.循环
12.1for循环
for 变量 in 范围 for loop in A B C
do do
循环体 echo $loop
done done
12.2while循环
while 条件
do
循环体
done
13.函数
无参无返回值:
函数名(){
函数体
}
有参无返回值:
czbk(){
echo "第一个参数$1"
echo "第2个参数$2"
}
czbk a b
有参有返回值:
czbk(){
echo "接收到参数$1和$2"
return $(($1 + $2))
}
czbk 10 20
echo $?