py01-linux编程

发布时间 2023-11-30 16:42:49作者: 王枫子

一、Linux目录说明:

1、/boot:存放Linux系统内核程序和启动程序
2、/dev:存放设备文件
3、/etc:存放系统配置文件
4、/home:存放普通用户信息
5、/root:存放管理员用户信息
6、/bin:存放一般命令文件(多为普通用户使用)
7、/sbin:存放系统命令(多为管理员使用)
8、/lib:存放库函数文件(调用命令)
9、/tmp:存放临时性文件(系统缓存文件,定时清除)
10、/usr:存放应用程序文件
11、/var:存放经常变动性文件(系统日志文件)
12、/proc:存放内存映像文件(系统内核运行状态的一些特殊文件,用户可以通过这些文件查看有关硬件及当前运行的进程的信息)
13、/mnt:挂载目录

二:命令:

文件管理命令:

1、ls:查看目录下文件
2、cd:切换目录
3、pwd:当前所在的绝对路径
4、mkdir 目录名:创建目录;mkdir -p /bin/a:逐层创建
5、touch 文件名:创建文件
6、rm 文件名:删除文件;rm -rf 目录:强制删除目录
7、rmdir:删除空目录
8、cp 源文件 目的文件:复制文件;-r 复制目录
9、mv 源 目的:剪切文件或目录,可以重命名
10、echo 文本:回显信息
11、>:覆盖重定向;>>:追加重定向;echo 内容 > 文件名:内容写入文件
12、cat 文件名:查看文件全部信息
13、more 文件名:分页查看文件信息,空格键翻页,翻页后不能向前翻页查看前面的内容了
14、less 文件名:分页查看文件信息,f键向前翻,b键向后翻,ctrl+c(z)退出
15、vi / vim:文本编辑器:
(1)一般模式-a、i、o->编辑模式-esc->一般模式-:->命令模式-enter->一般模式
(2)一般模式:a-光标之后插入内容,A-光标所在行尾插入内容,i-光标之前插入内容,I-光标所在行首插入内容,o-光标所在下一行插入内容,O-光标所在上一行插入内容
(3)一般模式下命令:dd-删除光标所在行,ndd-删除光标所在行及光标下面n-1行,x-删除光标所在字符,X-删除光标前的字符,nx-删除光标所在字符及后面n-1个字符,nX-删除光标所在前的n个字符,yy-复制光标所在行,nyy-复制光标所在行及下面n-1行,p-在光标下一行粘贴,P-在光标上一行粘贴,v-选中文本y复制p粘贴,u-撤销,gg-光标调到首行,ngg-光标调到第n行,G-光标调到尾行,nG-光标调到第n行,^-光标调到行首,$-光标调到行尾,/-向下查找?-向上查找n-找下一处

(4)命令模式下命令:
set nu-显示行号,set nonu-取消行号;
n1,n2 s/关键字1/关键字2/g -从n1行到n2行,用关键字2替换关键字1;
% s/关键字1/关键字2/g -全文中,用关键字2替换关键字1;
q!:强制退出不保存;
wq!:强制保存并退出;
w 文件名:另存为
16、clear:清屏
17、head -n 文件名:查看文件头部内容,不加-n默认看前10行
18、tail -n -f 文件名:查看文件头部内容,不加-n默认看后10行,-f可以实时查看内容
19、sort 文件名:排序显示文件内容,加-r倒叙
20、wc 文件名:统计,加-l统计行、-w统计单词、-c统计字符
21、find 查找范围 -name 文件名:指定范围查文件,不加范围查当前位置
22、locate 文件名:快速查找文件
23、grep 关键字 文件名:过滤,^关键字-关键字开头的,$关键字-关键字结尾的
24、chmod:修改权限,chmod 777 a.txt-加全部权限。chmod u/g/o+r/w/x a.txt:u-拥有者,g-所属组,o-其他。r-只读权限,w只写,x-可执行。+加权限,-减权限
25、tcpdump:抓包:
(1)tcpdump -i 接口名 协议名 port 端口号
(2)tcpdump -i 接口名 host ip地址
(3)tcpdump -i 接口名 协议名 src/dst ip port 端口号

进程管理与服务管理命令:

1、ps -ef:查看进程
2、pstree:查看进程树
3、kill -9 进程号:杀进程
4、killall -9 进程名:杀进程
5、pidof 进程名:查看进程名对应进程号
6、service 服务名 start/stop/restart:开启/结束/重启服务

系统管理与性能监控命令:
1、date:查看日期,date -s "20230101 01:01:01":设置日期时间
2、reboot:重启
3、halt:关机
4、shutdown -h now/01:01 :现在关机/定时到点关机
5、shutdown -r now/01:01/10 :现在重启/定时到点重启/定时10分钟后重启
6、shutdown -c 01:01 :取消定时关机或重启
7、history:查看历史命令
8、whith 可执行命令:查看可执行命令的位置
9、hostname 主机名:临时改主机名;vim /etc/sysconfig/network :永久更改主机名
10、uname:查看系统信息
11、top:实时查看CPU、内存、进程的状态信息
12、vmstat:静态查看CPU、内存、进程的状态信息
13、free:查看内存状态信息;cat /proc/meminfo:查看内存信息
14、cat /proc/cpuinfo:查看CPU信息
15、sleep 时间:延迟、休眠几秒
16、dmesg:查看开机日志,加-c清除日志,系统日志存放目录/var/log
17、uptime:查看系统运行时长
18、lspci;查看系统pci外连的设备
19、lsusb:查看USB相关信息
20、命令 &:命令后台运行
21、|:将前一个命令的结果交给后一个命令执行

磁盘管理命令:

1、du 文件名:查看文件占用磁盘大小,加-m以MB为单位显示,加-s显示总用量
2、df -h:查看文件系统磁盘占用情况
3、fdisk 磁盘文件名:分区,加-l识别Linux系统中所有磁盘分区情况
4、mkfs:格式化:mkfs -t 文件系统类型 分区名
5、mount 分区名 挂载点:挂载
6、umount 分区名/挂载点:都能卸载
备注:磁盘分区步骤:分区-->格式化-->挂载

三、shell

------1、env:查看环境变量
------2、export 局部变量名=变量值:将局部变量转换为环境变量
------3、unset 变量名:取消环境变量
------4、$变量名:提取变量值
------5、echo 变量名:打印变量值
------6、./脚本名:当前目录运行脚本(非当前目录加绝对路径)
------7、source 脚本名:运行脚本
------8、定义解释器:#!/bin/bash
------9、$0:脚本文件名;$1:第一个参数,那$2就是第二个参数;$#:参数总个数;$@:显示所有参数

#!/bin/bash
name1=$1
name2=$2
echo "$name1是传入的第一个参数"
echo "$name2是传入的第二个参数"

备注:文件名是a.sh
执行方式:./a.sh A B 或者:source a.sh A B

------10、函数:
(1)格式:

函数名()
{
  语句块
}

(2)调用:函数名 或 函数名 参数

sum()
{
  sum=0
  for i in $@
  do
    let sum=$sum+$i
  done
  echo "$sum"
}

备注:$@获取所有元素,函数名 参数:给函数传参

------11、常用方法小结
(1)read:从键盘上读取赋值变量
(2)test:检查某个条件是否成立,可以进行数值、字符和文件三个方面的测试
(3)seq:序列化-squeue,用于生成一个数到另一个树之间的所有整数,基本语法是'seq start count end'(start,开始数,可省略,默认1;count,增量,可省略,默认1;end,结束数)
(4)let 赋值表达式:用于赋值计算,如let a=6+1
(5)=两边不能有空格,不然给变量赋值时会赋空
(6)i++先赋值再加1,++i先加1再赋值
(7)字符串用单/双引号引起来,如果将一个命令执行的结果赋给某个变量要用反引号
(8)\n:换行
(9)\r:回车
(10)echo:换行,加-h不换行
(11)\t:制表符
(12)-e:不转义
(13)$?:执行完命令后执行echo $? ,输出0表示前面的命令成功,非0说明有问题
(14)break:终止循环
(15)continue:终止本次循环,继续下一次循环

小例子:从键盘读输入的内容,进行判断

#!/bin/bash
read -p "请输入用户名:" user
read -p "请输入密码:" pwd
if [$user="root" -a $ped="123"]
then
    echo "用户名密码正确"
else
    echo "用户名或密码错误"
fi

------12、运算符

(1)算术运算符:+、-、*、/、%、expr 1+5、((1+5))、let 1+5
(2)数字关系运算符:-gt(大于)、-lt(小于)、-eq(等于)、-le(小于等于)、-ge(大于等于)、-ne(不等于)
(3)逻辑运算符:-a(&&)与、-o(||)或、!非
(4)字符串运算符:=、!=
(5)文件判断运算符:-f 文件名(判断是否是普通文件)、-d 文件名(判断是否是目录)、-r 文件名(判断文件是否可读)、-w 文件名(判断文件是否可写)、-x 文件名(判断文件是否可执行)

------13、数组:一组元素的集合
(1)格式:数组名=(值1,值2...)
(2)${数组名[下标]}获取数组的某个元素;${数组名[@]}获取数组的全部元素;${#数组名[@]}统计数组的元素
------14、分支判断

if 条件1
then
    语句块1
elif 条件2 
then 
    语句块2
else
    语句块N
fi

------15、for循环
(1)方式一

for 变量名 in 取值列表
do
    语句块
done

(2)方式二

for ((初始值;条件判断式;变量变化式))
do
    语句块
done

例子:

for ((i=1;i<10;i=i+1))
do
    echo $i
done

(3)1-100的和

#!/bin/bash
sum=0
for i in 'seq 1 100'
do
    let sum=sum+i
done
echo $sum

------16、while循环

(1)格式:
while [条件]
do
    语句块
done

小例子:1+...+100的和

#!/bin/bash
sum=0
i=1
while [$i -le 100]
do
    let sum=$sum+$i
    let i=$i+1
done
echo $sum

未完待续。。