linux

imageimage
image
image
image
image
image
image

Linux命令 ---账号管理

管理里用户命令
su root ----切换权限
useradd aaa ---创建用户
passwd aaa ---设置密码
usermod -l czbk aaa 把用户aaa的用户名变成czbk
ctrl + d 退出用户
userdel 用户名 删除用户
管理用户组命令
groupadd ----创建一个用户组
groupmod ----修改用户组名 -n kaifazu kaifa 改名kaifa改为kafazu
groups itcast ---查询用户所属组
groupdel kaifazu ---删除用户组
管理用户组内成员
groupadd kaifazu
useradd user1
useradd user2
useradd user3
gpasswd -a user1 kaifazu
gpasswd -a user2 kaifazu
gpasswd -a user3 kaifazu
grep 'kaifazu' /etc/group 查看组内成员
日期管理
date 显示当前时间
date -d "2020-12-12 11:11:11" 展示时间 CST 北京时间
date -s "2020-12-12 11:11:11" 设置时间(需要管理员权限)
显示用户
logname[--help][--version] 显示登录账号的信息
切换用户 su
su -c command 切换用户执行迷你改良,只想完毕之后再变为原来的使用者
例:su -c ls root 切换到root命令中执行ls
id命令 当前用户的详细信息
sudo 提高普通用户的操作权限
sudo ls 提高权限执行ls命令
sudu -u root ls 指定root 执行ls命令
top命令 实时显示process状态
ps命令 当前的进程信息
kill命令 杀死进程 kill + pid 杀死pid的进程 likk - 9 pid 强制杀死进程
kill -9 $(ps -ef\grep 用户名)杀死指定用户所有进程
kill -u 用户名 杀死指定用户所有进程
关机命令 shutdown
shutdown 一分钟后关机 shutdown -c 取消关机
shutdown -h now 立马关机
shutdown +1 "1分钟以后关机" 一分钟后关机
shutdown -r +1 "准备重启了" 一分钟后重启
重启命令 reboot
who命令 显示当前登录系统的用户 who -H 显示明细(标题)信息
timedatectl 矫正服务器时间、时区
timedatectl list-timezones 展示所有时区
timedatectl set-timezone "Asia/Shanghai" 设置时区
timedatectl set-ntp false 禁用ntp时间
timedatectl set-time "2030-01-01 11:11:11"
timedatectl set-ntp true 开启ntp时间
目录管理:只有一个根目录,所有文件和目录都在根目录下
ls 目录名称 列出目录里的内容
ls -l 详细信息
ls -a 隐藏信息
ls -al 当前所有文件都展示详细信息
pwd 查看当前的路径 pwd -P
cd 命令 切换目录 cd ..回退
mkdir 创建目录 创建一个文件夹
mkdir -p aaa/bbb 创建多级目录
rmdir 删除空的目录
rmir -p bbb/ccc 删除ccc,如果删完之后bbb时空的,bbb也一起删除
rm 删除文件或者目录
  touch a.txt创建文件
rm a.txt 删除文件
rm -r aaa 删除目录和目录里面所有的内容
cp 文件复制
cp aaa/a.txt ccc 把aaa中的a.txt 拷贝到ccc中
cp aaa/* ccc 把aaa中的文件拷贝到ccc中
cp -r aaa/* ccc 把aaa中的所有文件夹和文件拷贝到ccc中
mv命令 改名 移动文件或文件夹
mv 文件名 文件名 将源文件名改为目标文件名
mv 文件名 目录名 将文件移动到目标目录
mv aaa/* ccc 把aaa里面所有的东西剪切到ccc中
mv ccc/a.txt aaa 只剪切一个文件
文件基本属性:
d 目录
- 文件
| 为链接文档
权限:r:可读 w:可写 x:可执行 -:没有当前权限
例:drwxr-xr-x 2-4位:属主权限 5-7位:属组权限 8-10位:其他用户权限
chgrp 更改属组 chgrp root aaa 把指定aaa用户组改为root
chgrp -v itcast aaa 把aaa用户组改为itcast 多一个提示语句
chown 属主名 文件名 更改属主 chown 属主名:属组名 文件名  更改属主和属组 chown root aaa 把aaa所有者改为root
chown root:root bbb 把bbb所有者和属组都改为root
chown -R root:root aaa 将aaa文件夹和里面所有的属主和属组都改为root
chmod权限命令
数字权限 读-4 写-2 执行-1 无权限-0
语法:chmod 数字权限 文件或目录
chmod -R 770 aaa 设置权限
chmod -R 符号权限 aaa
u-user g-group o-other a-all _+(加入) -(除去) =(设定)
chmod u=rwx,g=rx,o=r a.txt
例题:
useradd java --添加三个用户
useradd erlang
useradd golang
groupadd dev-group --添加一个组
gpasswd -a java dev-group --将三个用户添加到一个组中
gpasswd -a erlang dev-group
gpasswd -a golang dev-group
grep 'dev-group' /etc/group --查看组中的用户
mkdir -p /tmp/work --创建一个文件夹work
chgrp -R dev-group /tmp/work --把文件夹所属的用户组改为dev-group
chmod -R 770 /tmp/work 更改权限
ls -al --查看当前文件夹内的文件所有信息
touch命令 如果文件不存再就创建文件,如果存在就修改时间属性
touch a.txt      touch a{1..10}.txt 创建a1-a10
stat a.txt 查看文件的属性
vi/vim编辑器
vi:只能是编辑文本内容,不能对字体段落进行排版,不支持鼠标操作,没有菜单,只有命令
vim:是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序中被广泛使用。
vi/vim 命令 编辑 末行模式
语法:vim 文件名
如果文件已经存在,会直接打开该文件
如果文件不存在,打开一个临时文件,在博爱出且退出后,就会新建一个文件
i insert 在当前字符前插入文本
I insert 在行首插入文本
a append 在当前字符后插入文本
A append 在当前行末添加文本
o 在当前行后插入一空行
O 在当前行前插入一空行
:q 当vim进入文件没有对文件内容做任何操作可以按“q"退出
:q! 当vim进入文件对文件内容有操作但不想保存退出
:wq 正常保存退出
:wq! 强行保存退出,只针对与root用户或文件所有人
cat small.txt 查看小文件内容 只能查看小型文件
cat -n small.txt 有行号
less 查看大文件
less a.txt 查看a.txt的内容
less -N a.txt(加入行号)
tail 查看文件的最后部分
tail -3 big.txt 查看文件的后三行
tail -f big.txt 动态查看文件的最后部分
tail -4f big.txt 动态查看文件的最后四行
tail -n+2 big.txt 从第二行开始到文件的末尾
tail -c 45 big.txt 文件的最后字符
head 和tail类似
grep命令
grep 关键字 文件 根据关键词,搜索文本文件内容
grep ri small.txt 含有关键字的整行显示出来
grep -n ri small.txt 含有关键字的整行(包括行号)显示出来
grep -i a small.txt 含有a的展示出来忽略大小写
grep -v ri small.txt 只要不包含ri的每行都展示出来
ps -ef 展示所有进程
ps -ef |grep sshd 含有sshd展示出来
ps -ef | grep sshd | grep -v "grep"
ps -ef | grep -c sshd 包含sshd的个数
vim定位行
vim 文件名+行数 查看文件并定位到具体行数 例 vim a.txt +5
echo命令
echo 字符串 展示文本
echo 字符串>文件名 将字符串写道文件中(覆盖文件中内容)
echo 字符串>>文件名 将字符串写道文件中(不覆盖文件中的内容)
cat 不存在的目录 &>> error.log 将命令的失败结果追加到error.log 文件的后面
awk命令
cat a.txt | awk '/zhang|li/' 包含zhang和li的行进行展示
cat a.txt | awk -F ' ' '{print $1,$2,$3,$4}' 先按照空格进行切割然后再进行打印
cat a.txt | awk -F ' ' '{OFS="==="}{print $1,$2,$3,$4}'先按照空格进行切割然后中间以===再进行打印
cat a.txt | awk -F ' ' '{print touppper($1)}' 转为大写tolower变为小写,lenth计算长度
cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel}'计算第四列的总分并显示
cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel,NR}' NR 总行数
cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel,NR,(totel/NR)}' NR 总行数 平均分
软连接
ln -s aaa/bbb/ccc/ddd/eee/a.txt a.txt 生成软连接(快捷方式)
find 命令再指定目录下查找文件
find . -name "*.txt" .表示当前目录 查找当前目录下.txt的所有文件
find . -ctime -1 查找一天之内操作的文件
find / -ctime "*.txt" 查找根目录下的所有.txt文件
备份压缩
gzip 压缩文件
gzip a.txt 压缩a.txt 文件
gzip * 压缩所有文件
gzip -dv *解压所有文件并列出详细信息
gunzip 解压文件
gunzip *( 解压所有文件)
tar命令 打包、压缩和解压(文件/文件夹)
tar -cvf a.tar a.txt c表示创建一个新的文件 v显示过程 f指定新的文件名 打包
tar -zcvf b.gz b.txt z表示压缩通过gzip指令处理压缩文件
tar -zcvf aaa.gz aaa 压缩指定文件夹
tar -ztvf aaa.gz t查看压缩文件例的内容
tar -zxvf aaa.gz 解压
zip unzip命令
-q不显示指令执行的过程
-r递归处理,将指定目录下的所有文件和子目录一并处理。
zip -q -r aaa.zip aaa 压缩指定文件/文件夹
upzip 只能解压.zip扩展名的压缩文件
-l显示压缩文件内所包含的文件
-d 指定文件解压缩后所要的存储目录
unzip -l aaa.zip 显示压缩文件下包含的文件
unzip -d bbb aaa.zip 解压到bbb文件夹下
bzip2 新的压缩算法
bzip2 a.txt 压缩文件会删除原来的文件
bunzip2 -v a.txt.bz2 解压并显示详细信息
网络与磁盘管理
ifconfig 查看当前网卡
ifconfig ens37 down 关闭网卡
ifconfig ens37 up 开启网卡
ifconfig nes37 192.168.23.199 netmask 255.255.255.0 配置IP地址和子网掩码
ping命令 检测是否与主机联通
ping www.baidu.com 检测是否与百度联通
ping -c 2 www.baidu.com 指定次数
netstat命令 显示网络状态
netstat -a 显示所有连接中的Socket
netstat -i 显示网卡列表
lsblk 硬盘的使用情况
lsblk -f 系统的信息
df命令 显示硬盘的使用情况(文件系统)
df aaa 文件夹的使用情况
df --total 文件的所有使用信息
df -h 转换单位便于阅读
mount命令挂载设备
挂载点创建
mkdir aaa
mount -t auto /dev/cdrom aaa 挂载到aaa
卸载
umount aaa
yum -y install tree  -y如果有选择命令全是yes(安装tree)
yum remove tree 卸载tree
yum list tom* 查找tom开头的软件名称
yum源 修改yum源 yum -y install wget
cd /ect/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.back
ym install -y wget 安装下载工具
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载阿里云的Centos-7.repo文件
cat CentOS-Base
yum clean all 清理之前的缓存,并重新加载yum
yun makecash 建立一个缓存文件
yum search tomcat 查找软件,验证阿里云的yum源是否可以正常使用
rpm 用来管理Linux各项套件的程序
rpm只能安装已经下载到本地机器上的rpm包。

shell入门
shell是一个命令解释器
shell是位于操作系统和应用程序之间,是他们二者最主要的接口
shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结构解释给应用程序

echo $SHELL展示SHELL
/bin/bash linux中默认的shell
手工方式:手工敲
脚本方式:写到一个文件中,然后运行这个文件,达到执行的效果,这个文件就叫做脚本文件。

编写第一个shell
新建一个文件后缀名为sh
书写内容
#!/bin/bash
#这是临时shell脚本
echo 'nihao'
echo 'itcast'
执行

touch a.sh 新建
vim a.sh 编写
#! /bin/bash
#这是第一个脚本文件
echo"itcast"
echo"nihao"
:wq!
chmod 777 a.sh
./a.sh

shell注释
单行注释 #
多行注释 :<<! 多行注释 ! !可以是任意字符

shell变量
普通变量
number=10 定义变量
echo $number 展示number
bash a.sh 运行
a='10'
echo $a 展示a
a='$number' 展示$number 会将''里面的值原样输出
b="$number" 展示10 会将number中的值拿出来再进行赋值

命令变量
c=`date`
echo $c 展示时间
d=$(date)
echo $d 展示时间 执行`或者$()范围内的命令 将命令执行后的结果赋值给变量

使用变量
$变量名 非标准写法图省事
"$变量名" 非标准写法,图省事
${变量名} 在双引号里面要使用变量的值
"${变量名}"

result="现在的时间为${d}"
echo "${result}"

只读变量 readonly变量名
删除变量 unset变量名
readonly result
unset result

shell数组
#定义一个数组
arr=(a b c d e f)
#给数组中的元素赋值
arr[0]=A
获取数组中的元素
echo ${arr[0]}
echo ${arr[1]}
获取数组的长度
echo "数组的长度${#arr[*]}"
echo "数组的长度${#arr[@]}"

shell算数运算符
num1=`expr 2 + 2`
echo "整数2+2的结果问$num1"

num2=`expr 2 - 2`
echo "整数2-2的结果为$num2"

#整数相乘
num3=`expr 2\* 2`
echo "整数2*2的结果为$num3"

#变量相加
a=10
b=20
num4=`expr $a + $b`
echo "变量a和变量b相加的结果为$num4"

#赋值
c=30
num5="${c}"
echo "变量c的值赋值给num5,打印num5的值$num5"

#自增
e=1
((e++))
echo "变量e为1,自增之后,结果为$e"

bash 文件名 运行或./ 文件名

shell字符串运算符
a="aaa"
b="bbb"
#判断两个字符串是否相等
# $?可以获取上一条语句的执行结果
[ "${a}"="${b}" ]
echo "判断两个字符串是否相等,0为真,1为假:$?"

#判断两个字符串是否不相等
[ "${a}"!="$[b]" ]
echo "判断两个字符串是否不相等,0为真,1为假:$?"

#判断字符串的长度是否为0
[ -z "${a}" ]
echo "判断字符串的长度是否为0,0为真,1为假: $?"

#判断字符串的长度是否不为0
[ -n "${a}" ]
echo "判断字符串的长度是否部位0,0为真,1为假:$?"

#判断字符串是否为空
[ $"{$a}" ]
#如果不为空,那么就是0
echo "判断字符串是否为空: $?"

#获取字符串的长度
echo "获取字符串的长度 ${#a}"

#关系运算符
#只能比较数字,不支持字符串,除非字符串的值是数字

a=10
b-20
#比较两个数是否相等
[ "${a}" -eq "${b}" ]
echo "a和b两个数字比较的结果为:$? " ]
#-ne 不灯于
#-gt 大于
#-lt 小于
#-ge 大于等于
#-le 小于等于

#if语句
#查找一个进程,如果这个进程存在,就打印true
if[ $(ps -ef | grep -c "ssh") -gt 1 ]
then
       echo "true"
fi

#查找一个进程,如果这个进程存在打印true,否则打印false
if[ (ps-ef | jgrep -c "ssh") -gt 1 ]
then
	echo "true"
else
	echo "false"
fi

#if第三种格式
#定义a b 三种提示判断
a=10
b=20
if [ "${a}" -eq "${b}"]
then
	echo "相等"
elif["${a}" -lt "${b}"]
then
	echo "a小于b"
else
	echo "a大于b"
fi

shell选择语句
#选择结构语句
v="czbk"
case "${v}" in
"czbk")
		echo "传智播客"
		;;
"baidu")
        echo "百度"
		;;
"guge"
		echo "谷歌"
		;;
esac

shell循环语句
for loop in A B C
do
	echo $loop
done
while循环
a=1
while[ "${a}" -le 10 ]
do
	echo "${a}"
	((a++))
done

shell函数
函数名(){}
函数调用 直接写函数名
有参无返回值
cabk(){
	echo "第一个参数$1"
	echo "第一个参数$2"
}
调用: czbk a b
有参有返回值
czbk(){
	echo "接收到参数$1和$2"
	return$(($1+$2))
}
czbk 10 20
echo $?

#在方法种键盘录入两个整数,返回这两个整数的和
#read 斌来年国民那个 ---表示把键盘录入的数据赋值给这个变量
method(){
	echo "请输入第一个数"
	read number1
	echo "请输入第二个数"
	read number2
	echo "两个数字分别为${number1},${number2}"
	return $(($number1+$number2))
}
#方法的调用
method
echo $? 

















image
image
image
image
image
image
image
image
image

posted @ 2022-06-02 22:35  生活的样子就该是那样  阅读(9)  评论(0编辑  收藏  举报