Python高级
1.Linux基础命令
1.1 操作系统
- Windows
- mac OS
- Linux
- iOS
- Android
操作系统直接运行在计算机上的系统软件,它是控制硬件和支持软件运行的计算机程序
- 操作系统的作用
向下控制硬件向上支持软件的运行,具有承上启下的作用
- 小结
操作系统是一个控制硬件和支持软件运行的计算机程序,只有安装了操作系统计算机才能进行正常工作
1.2 虚拟机软件
-
虚拟机软件的介绍
它是能够虚拟出来计算机的一个软件
常用虚拟机软件:Vmware、VirtualBox
注意:只有安装了虚拟机软件才可以创建虚拟机,当然通过虚拟机软件还可以创建多个虚拟机
-
虚拟机的介绍
就是模拟一个真实的计算机,好比一个虚拟的电脑,对于快速学习一个新的操作系统就可以通过虚拟机来完成
说明:
虚拟机之间是相互独立的,删除虚拟机不会对其他虚拟机产生影响,当然也不会对电脑本身产生影响
1.3 Ubuntu操作系统
-
Ubuntu操作系统的介绍
Ubuntu操作系统是属于Linux操作系统中的一种,它是免费、稳定又可以拥有绚丽界面的一个操作系统
-
Ubuntu图形界面的介绍
- 任务栏
- 窗口操作按钮
- 窗口菜单条
-
与Windows目录结构对比
说明:
每一个盘符就是一个根目录,在Windows操作系统里面可能会出现多个根目录
说明:
Ubuntu没有盘符这个概念,只有一个根目录 / 。
- 小结
- Ubuntu操作系统属于Linux操作系统中的一种
- Ubuntu操作系统窗口菜单条会隐藏,鼠标移动上去会显示,而Windows操作系统的窗口菜单条不会隐藏
- Windows操作系统有可能会有多个盘符(C、D、E、F)
- Ubuntu操作系统没有一个盘符,只有一个根目录( / )
- Ubuntu操作系统比Windows操作系统运行更加稳定
1.4 Linux内核及发行版
-
Linux内核
Linux内核是操作系统内部操作和控制硬件设备的核心程序,它是由芬兰人林纳斯开发的
说明:
真正操作和控制硬件是由内核来完成的,操作系统是基于内核开发出来的。
-
Linux发行版
是Linux内核与各种常用软件的组合产品,通俗来说就是我们常说的Linux操作系统
常用的Linux发行版:Ubuntu、CentOS、Redhat
- 小结
- Linux内核时Linux操作系统管理硬件设备的核心程序
- 常用的Linux操作系统都是基于Linux内核开发出来的
1.5 查看目录命令
1.ctrl+alt+t:快速打开终端
2.ctrl+shift+'+':使终端字体放大
3.ctrl+'-':使终端字体缩小
-
查看目录命令的使用
命令 说明 ls 查看当前目录信息 tree 以树状方式显示目录信息 -
查看当前目录路径
命令 说明 pwd 查看当前目录路径 -
清除终端内容
命令 说明 clear 清除终端内容 -
小结
- ls和tree是我们查看目录信息最常用的命令
- ls只能查看一层目录信息
- tree可以查看多层目录信息
1.6 切换目录命令
-
切换目录命令的使用
命令 说明 cd目录 切换到指定目录 cd ~ 切换到当前用户的主目录 cd … 切换到上一级目录 cd . 切换到当前目录 cd - 切换到上一次目录 cd …/ 切换到当前目录下的上一级目录 注意:
- cd命令切换目录时,这个目录必须存在
- cd后面不写目录等于cd~
1.7 绝对路径和相对路径
-
绝对路径
从根目录算起的路劲叫做绝对路径
例如:
- /home/python/Desktop
- /usr/bin
-
相对路径
从当前目录算起的路径叫做相对路径
例如:
- ./test/hello
-
绝对路径和相对路径的使用
-
使用绝对路径切换到桌面
cd/home/ptyhon/Desktop
-
在下载目录以相对路径切换到桌面
cd Downloads
-
在桌面使用相对路径切换到上一级目录的上一级目录 cd Desktop cd …/…/
-
-
自动补全
- 当敲出 文件或者目录或者命令 的前几个字母之后,按下 tab键,如果输入的没有歧义,系统会自动补全
- 当切换目录或者使用命令的时候,如果不确定当前目录下有那些子目录或者其他命令,可以通过两次 tab键查看
1.8 创建、删除文件及目录命令
-
创建、删除文件及目录命令的使用
命令 说明 touch 文件名 创建指定文件 mkdir 目录名 创建目录(文件夹) rm 文件名或者目录名 删除指定文件或者目录 rmdir 目录名 删除空目录 注意:
文件后面没有书写后缀名,默认创造为 文本文件
rm命令的详细介绍:
选项 | 说明 |
---|---|
-d | 删除目录 |
-r | 递归删除,将指定目录下的所有文件及其子目录一并删除 |
-f | 强制删除文件或目录,忽略不存在的文件,不提示删除确认信息 |
-v | 显示删除指令 rm 的执行过程 |
rmdir命令的详细介绍:
选项 | 说明 |
---|---|
-p | 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错 |
1.9 复制、移动文件及目录命令
- 复制、移动文件及目录命令的使用
命令 | 说明 |
---|---|
cp | 拷贝文件、拷贝目录 (拷贝文件夹:cp 文件 文件 -r (多了 -r )) |
mv | 移动文件、移动目录、重命名 |
#注解:
1.可创建多个文档和文件 如上所示
2.cp 1.txt AA #意为:把1.txt文件拷贝到AA文档中
3.cp AA/1.txt BB #意为:把AA中的1.txt拷贝到BB文档中
4.mv AA BB #意为:把AA移动到BB中
5.mv 1.txt 11.txt #意为:把1.txt重命名为11.txt
#注意:
1.cp、mv:把A弄到B中,其中A的内容都会把中原先的内容给覆盖掉!!
cp命令的详细介绍:
选项 | 说明 |
---|---|
-r | 递归复制,用于复制目录 |
-p | 复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间) |
1.10 终端命令格式的组成
-
终端命令格式说明:
command [-options] [parameter]
每项信息的说明:
- command:命令名 ,比如:ls、pwd
- [-options]:选项, 可以有零个、一个或者多个选项,多个选项可以合并,比如:使用的 -r 就是选项
- [parameter]:参数, 可以有零个、一个或者 多个参数,比如:touch 文件名、mkdir 目录名、cd 目标 目录(路径),这些文件名和目录名都是参数
- []:代表可选
-
小结
- 终端命令完整格式:命令名 选项(可选) 参数(可选)
- 选项:用于调整命令的功能,比如:-r 选项调整cp命令的功能
- 选项可以分为短选项和长选项
- 短选项的格式:'-'后面接但个字母,比如:-r
- 长选项的格式:'–'后面接单词,比如:–help
- 参数:命令的操作对象,一般是文件名或者目录名
- 对于命令,它的选项和参数一般情况下没有顺序要求,但是scp命令是必须先选项然后再跟上参数
1.11 查看命令帮助
-
查看命令帮助方式
-
–help 使用说明:命令 --help
-
man 使用说明:man 命令
man命令的说明:
操作键 说明 空格 显示下一屏信息 回车 显示下一行信息 b 显示上一屏信息 f 显示下一屏信息 q 退出
-
1.12 ls命令选项
命令选项 | 说明 |
---|---|
-l | 以列表方式显示 |
-h | 以大小单位显示,默认是字节 |
-a | 显示隐藏文件和隐藏目录 |
ll 相当于 -la | -l与-a的功能结合 |
-i | 查看文件的inode号(inode存储文件的详细信息) |
-t | 按时间显示(时间越早,越在下) |
-d | 只列目录本身 |
1.13 mkdir和rm命令选项
- mkdir命令选项
命令选项 | 说明 |
---|---|
-p | 创建可嵌套的文件夹 |
- rm命令选项
命令选项 | 说明 |
---|---|
-i | 交互式提示 |
-r | 递归删除目录及其内容 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-d | 删除空目录 |
1.14 cp和mv命令选项
1.cp命令选项
命令选项 | 说明 |
---|---|
-i | 交互式提示,就是提示你是否做此决定 |
-r | 递归拷贝目录及其内容 |
-v | 显示拷贝后的路径描述 |
-a | 保留文件的原有权限 (针对的是其其他用户) |
-a选项说明:
- -a选项还支持拷贝文件夹并且文件夹中的权限不丢失
2.mv命令选项
命令选项 | 说明 |
---|---|
-i | 交互式提示 |
-v | 显示移动后的路径描述 |
2.Linux高级命令
Linux(UNIX)系统主要使用四个文件,用来存放用户账户管理有关的数据信息,即:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EtCShKor-1669362933032)(D:\Typora笔记\Python\QQ截图20221006164410.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E8WUWL2c-1669362933034)(D:\Typora笔记\Python\QQ截图20221006164820.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3wAmcSYH-1669362933034)(D:\Typora笔记\Python\QQ截图20221006164830.png)]
2.1 重定向命令
-
重定向命令的介绍
重定向也称为输出重定向,就是把终端执行命令的结果保存到目标文件。
说明:
只要再终端能显示信息的命令都可以使用重定向,比如:ls、tree
-
重定向命令的使用
命令 说明 > 如果文件存在会覆盖原有文件内容,相当于文件操作中的’w’模式 >> 如果文件存在会追加写入文件末尾,相当于文件操作中的’a’模式 -
小结
- 终端内容保存到文件使用重定向
- ‘>’ 表示每次只写入最新的数据,原有数据不保留
- ‘>>’ 表示每次再原有数据的基础上进行追加,原有数据保留
2.2 查看文件内容命令
-
查看文件内容命令的使用
命令 说明 cat 查看小型文件 more 分屏查看大型文件 gedit 即可以查看文件,又可以编辑文件 cat命令的详细介绍:
cat的命令格式:cat [OPTION] [FILE]…
选项 说明 -b 根据 字节 来截取,忽视多字节字符比如汉字,可以配合[-n]选项来忽视不完整的多字符 -c 根据 字符 来截取,多字节字符当作一个字符 -d 根据字段来截取时,定义分割字符,默认是TAB。配合[-f]输出指定的字段 -f 根据字段来截取时,输出指定的字段 -n 截取后忽略不完整的字符,配合[-b]使用 -s 根据字段来截取时,忽略不包含分隔符的行,配合[-d]使用 1.cat 命令的详细介绍比较地址: https://blog.csdn.net/weixin_35618957/article/details/116820722?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166504039416782391879258%2522%252C%2522scm%2522%253A%252220140713.130212432.pc%255Fall.%2522%257D&request_id=166504039416782391879258&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-6-116820722-null-null.142^v51^opensearch_v2,201^v3^add_ask&utm_term=cut%20-d%3A%20-f7&spm=1018.2226.3001.4187
说明:
- cat命令结合重定向可以完成多个文件的合并
操作键说明:(与man命令一致)
操作键 说明 空格 显示下一屏信息 回车 显示下一行信息 b 显示上一屏信息 f 显示下一屏信息 q 退出 -
管道( | )命令的使用
管道( | ):一个命令的输出可以通过管道做为另一个命令的输入,可以理解成是一个容器,存放再终端显示的内容 (**说人话:**管道就是存储终端数据的容器)
说明:
管道( | )一般结合more命令使用,主要是分配查看终端显示内容
-
小结
- 查看小文件使用cat命令
- 分屏查看大型文件使用more命令
- 查看终端显示内容并分屏展示,使用 管道( | ) 结合 more命令
2.3 链接命令
-
链接命令的介绍
链接命令是创建链接文件,链接文件分为:
- 软链接
- 硬链接
命令 说明 ln -s 创建软链接 ln 创建硬链接 -
软链接
类似于Windows下的快捷方式,当一个源文件的目录层级比较深,我们想要方便使用它可以给源文件创建一个软链接
注意点:
- 如果软链接和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径
- 删除源文件则软链接失败
- 可以给目录创建软链接
-
软链接小结
- 软链接的作用是方便文件的快速访问,比如:给一个复杂路径下的文件创建一个软链接,以后就可以通过软链接完成快速访问操作
- 创建软链接命令格式:ln -s 源文件路径(使用绝对路径)软链接
-
硬链接
类似于源文件的一个别名,也就是说这两个名字指向的是同一个文件数据
(**说人话:**把他名字删除,但他的数据还存在,只是在另一个名字存储)
注意点:
- 创建硬链接使用相对路径和绝对路径都可以
- 删除源文件,硬链接还可以访问到数据
- 创建硬链接,硬链接数会加1,删除源文件或者硬链接,硬链接数会减1
- 创建软链接,硬链接数不会加1
- 不能给目录创建硬链接
说明:
硬链接数:就是文件数据被文件名使用的次数,好比引用计数
-
硬链接小结
- 硬链接的作用是可以给重要文件创建硬链接,能够防止文件数据被误删
- 删除源文件,软链接失效,但是硬链接依然可以使用
- 创建硬链接命令格式:ln 源文件路径 硬链接
2.4 文本搜索命令
-
grep命令的使用
命令 说明 grep 文本搜索 说明:
搜索内容可用单引号(‘’) or双引号(“”) or 不写
-
grep命令选项的使用
命令选项 说明 -i 忽略大小写 -n 显示匹配行号 -v 显示不包含匹配文本的所有行 -
grep命令结合正则表达式的使用
正则表达式 说明 ^ 以指定字符串开头 $ 以指定字符串结尾 . 匹配一个非换行符的字符 说明:
^:与搜索内容一起,并且在内容 前面
$:与搜索内容一起,并且在内容 后面
-
扩展
- grep命令还可以文本搜索管道中的内容,比如: ls/ | grep ‘lib’
- 在使用grep命令的时候还可以省略搜索内容的引号,比如:ls/grep lib
-
小结
- grep命令式完成文本搜索操作的
- 文本搜索的命令格式:grep选项文本搜索内容
2.5 查找文件命令
-
find命令及选项的使用
命令 说明 find 在指定目录下查找文件(包括目录) 命令选项 说明 -name 根据文件名(包括目录名字)查找 -
find命令结合通配符的使用
通配符:
是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件
通配符 说明 * 代表0个或多个任意字符 ? 代表任意一个字符 注意:
与grep不一样,find的搜索对象 不能省单引号(‘’)和双引号(“”)
-
扩展
通配符不仅能结合find命令使用,还可以结合其他命令使用,比如:ls、mv、cp等。
注意:
只有find命令使用通配符 是不能省单引号(‘’)和双引号(“”),而其他命令必须省,否则会报错
2.6 压缩和解压缩命令
-
压缩格式的介绍
LInux默认支持的压缩格式:
- .gz
- .bz2
- .zip
- .zip是三者当中最简单的,但所占用的磁盘空间却是最大的
说明:
- .gz和.bz2的压缩包需要使用tar命令来压缩和解压缩
- .zip的压缩包需要使用zip命令来压缩,使用unzip命令来解压缩
压缩目的:
- 节省磁盘空间
-
tar命令及选项的使用
命令 说明 tar 压缩和解压缩命令 命令选项 说明 -c 创建打包文件 -v 显示打包或者解包的详细信息 -f 指定文件名称,必须放到所有选项后面 -z 压缩或解压缩(.gz) -j 压缩或解压缩(.bz2) -x 解包 (没有解压到指定目录这一功能) -C 解压缩到指定目录
压缩事例:
解压事例:
举一反三:
.gz 与 .bz2 一样的用法,区别是:(.gz)的压缩或解压缩—— -z;(.bz2)的压缩或解压缩—— -j
-
zip和nuzip命令及选项的使用
命令 说明 zip 压缩成.zip格式文件 unzip 解压缩.zip格式文件 命令选项 说明 -d 解压缩到指定目录
压缩案例:
解压案例:
- 小结:
- .gz和.bz2的压缩文件使用tar命令来完成压缩和解压缩
- .zip的压缩文件使用zip和unzip命令来完成压缩和解压缩
2.7 文件权限命令
-
chmod命令的介绍
命令 说明 chmod 修改文件权限 chmod修改文件权限有两种方式:
- 字母法
- 数字法
-
chmod字母法的使用
角色说明:
角色 说明 u user,表示该文件的所有者 g group,表示用户组 o other,表示其他用户 a all,表示所有用户 权限设置说明:
操作符 说明 + 增加权限 - 撤销权限 = 设置权限 权限说明:
权限 说明 r 可读 w 可写 x 可执行 - 无任何权限 -
chmod数字法的使用
数字法就是"rwx"这些权限也可以用数字来代替
权限说明:
权限 说明 r 可读,权限值是4 w 可写,权限值是2 x 可执行,权限值是1 - 无任何权限,权限值是0
-
扩展知识点
#知识点: 1.which 文件/程序名 #查找其路径 2,注释符# 有三个作用 1.#注释内容 #表示一个注释 2.#_*_coding:utf-8_*_ #表示指定文件编码格式 3.#!/python解释器的路径 #表示操作系统直接执行文件所选择的解析器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QcqM7AKD-1669362933035)(D:\D盘 图片\Typora图片\QQ截图20220321095449.png)]
当上个图中的info.py变成这种时:
./info.py 就不会报错,可以执行了,相当于 python3 info.py 语句的功能一样
2.8 获取管理员权限的相关命令
-
sudo命令的使用
命令 说明 sudo -s 切换到root用户,获取管理员权限 sudo 某个命令的执行需要获取管理员权限可以在执行命令前面加上sudo 说明:
- 如果只是某次操作需要使用管理员权限建议使用sudo,也就是说临时四月管理员权限
- 如果大量操作需要使用管理员权限 使用sudo -s,但是操作需谨慎!
-
whoami 命令的使用
命令 说明 whoami 查看当前用户 -
exit 命令的使用
命令 说明 exit 退出登录用户 说明:
- 如果时切换后的登陆用户,退出则返回上一个登陆账户
- 如果是终端界面,退出当前终端
-
who 命令的使用
命令 说明 who 查看所有的登录用户 -
passwd 命令的使用
命令 说明 passwd 修改用户密码,不指定用户默认修改当前登录用户密码 -
which 命令的使用
命令 说明 which 查看命令位置 -
关机和重启命令的使用
命令 说明 shutdown -h now 立刻关机 reboot 重启 -
小结
- sduo是临时获取管理员权限
- sudo -s 是切换到管理员用户,一直使用管理员权限,需要操作谨慎
- exit是退出当前用户
- passwd 默认修改当前用户密码
2.9 用户相关操作
- 创建用户
命令 | 说明 |
---|---|
useradd | 创建(添加)用户 |
useradd命令选项
选项 | 说明 |
---|---|
-m | 自动创建用户 主目录,主目录的名字就是用户名 |
-g | 指定用户所属的 用户组,默认不指定会自动创建一个同名的用户组 |
说明:
- useradd命令的使用需要使用管理员权限,前面需要加上sudo
- 创建用户如果不指定用户组,默认会自动创建一个同名的用户组
- 查看 用户 是否创建成功,可以查看**/etc/passwd** 这个文件 (如下图所示)
- 查看 用户组 是否创建成功,可以查看**/etc/group** 这个文件 (如下图所示)
passwd文件中的每项信息说明,以root: x:0:0:root:/root:/bin/bash 为例:
- 第一个:用户名
- 第二个:密码占位符
- 第三个:uid,用户id
- 第四个:gid,用户所在组id
- 第五个:用户描述,可选
- 第六个:用户的主目录所在位置
- 第七个:用户所有shell的类型,一般有bash或者sh,默认不设置是sh类型
group文件中的每项信息说明,以Bjb:x :1001:为例:
- 第一个:用户组名
- 第二个:用户组密码所占符,一般Linux系统的用户组都没有密码的
- 第三个:组id
id命令查看用户信息:
命令 | 说明 |
---|---|
id | 查看用户信息 |
- 第一个:用户id
- 第二个:用户组id
- 第三个:用户所在的用户组
-
设置密码
给其他用户设置密码,需要使用:sudo passwd 用户名
-
切换用户
命令 说明 su 切换用户 语法格式:
su - 用户名
-
修改用户信息
解决方法:
- 给Bjb用户设置一个sudo附加组,需要使用usermod修改用户信息
命令 说明 usermod 修改用户信息 usermod选项:
命令 说明 -G 设置一个附加组 -g 修改用户组(主组) 说明:
每个用户只有一个用户组,但附加组可以有多个。类似于:用户组是亲爹,附加组是干爹一样
格式:
usermod -G 用户组名 用户名
给新设置的用户添加附加组sudo以后,在sudo -s 切换到管理员就可以成功了!
-
删除附加组
命令 说明 gpasswd 添加和删除附加组信息 gpasswd命令选项:
选项 说明 -a 用户名 给用户添加附加组 -d 用户名 给用户删除附加组 格式:
gpasswd 命令选项 删除对象名(用户名) 用户组名
-
删除用户
命令 说明 userdel 删除用户 userdel命令选项:
选项 说明 -r 用户名 删除用户主目录,必须要设置,否则用户主目录不会删除 -
小结
- 创建用户命令格式:sudo useradd -m 用户名,默认会创建一个同名的用户组
- 查看用户信息使用id命令或者 /etc/passwd 文件
- 查看用户组信息使用 /etc/group 文件
- 给用户设置密码使用 sudo passwd 用户名
- 切换用户使用 su - 用户名
- 设置附加组使用 sudo usermod -G 组名 用户名
- 删除用户使用 sudo userdel -r 用户名,默认会删除同名的用户组
2.10 用户组相关操作
-
创建用户组
命令 说明 groupadd 创建(添加)用户组 格式:
groupadd 用户组
-
创建用户并指定用户组
格式:
useradd -m -g 用户组名 用户名
#useradd的命令选项: -m:自动创建用户 主目录,主目录的名字就是用户名 -g:指定用户所属的 用户组,默认不指定会自动创建一个同名的用户组
-
对用户进行修改用户组
格式:
usermod -g 用户组 用户
-
删除用户组
命令 说明 groupdel 删除用户组 格式:
groupdel 用户组名
说明:
- 如果用户组下面还有用户,要先删除其用户,才能删除用户组
-
小结
- 创建用户组使用:sudo groupadd 用户组名
- 创建用户并指定用户组使用**:sudo useradd -m -g 用户组 用户名**
- 修改用户组使用:sudo usermod -g 用户组 用户名
- 删除用户组使用:sudo groupdel 用户组名
2.11 远程登录、远程拷贝命令
-
远程登录、远程拷贝命令的介绍
命令 说明 ssh 远程登陆 scp 远程拷贝 -
ssh命令的使用
ssh是专门为远程登陆提供的一个安全性协议,常用于远程登录,相要使用ssh服务,需要安装相应的服务端和客户端软件,当软件安装成功以后就可以使用ssh命令了,以后可以通过远程登陆之间操作远程的服务器。
软件安装步骤:
- 假如Ubuntu作为服务器,需要安装ssh服务端软件,执行命令:sudo apt-get install openssh-server
- 客户端电脑如果是macOS系统则不需要安装ssh客户端软件,默认已经安装过了,直接可以使用ssh命令
- 客户端电脑如果是Windows系统则需要安装 OpenSSH for Windows 这个软件
ssh命令格式:
ssh 用户名@ip地址
说明:
- 在一台电脑上可以安装ssh客户端和ssh服务端软件
- 在Ubuntu安装ssh客户端命令:sudo aptp-get install openssh-clent
- 查看ssh客户端和shh服务端是否已安装的命令如下图所示:
-
scp命令的使用
scp是基于ssh进行远程文件拷贝的命令,也就是说需要保证服务端和客户端电脑安装了相应的ssh软件,以后可以把我们写代码远程拷贝到服务器
scp命令格式:
-
远程拷贝文件
- scp 本地文件 远程服务器用户名@远程服务器ip地址:指定拷贝到远程服务器的路径
- scp 远程服务器用户名@远程服务器ip地址:远程服务器文件 指定拷贝到本地电脑的路径
-
远程拷贝目标
- scp -r 本地目录 远程服务器用户名@远程服务器ip地址:指定拷贝到远程服务器的路径
- scp -r 远程服务器用户名@远程服务器ip地址:远程服务器目录 指定拷贝到本地电脑的路径
- -r 表示递归拷贝整个目录
-
-
Filezilla 软件的使用
Filezilla是一个免费开源的FTP软件,使用可视化方式进行上传和下载文件,以后可以通过 File Zila 来代替scp命令
3.多任务编程-1
3.1 编译器vim
- vim的介绍
vim是一款功能强大的文本编辑器,也是早年Vi编辑器的加强版,它的最大特色就是使用命名进行编辑,完全脱离了鼠标的操作。
-
vim的工作模式
-
命令模式 (初始状态)
-
编辑模式
-
末行模式
-
说明:
vim打开文件进入的是命令模式
注意点:
编辑模式和末行模式之间不能直接进行切换,都需要通过命令模式来完成
-
vim 的末行模式命令
-
:w 保存
-
:wq 保存并退出
-
:x 保存并退出
-
:q! 强制退出
-
-
vim 的常用命令
命令 | 说明 |
---|---|
yy | 复制光标所在行 |
p | 粘贴 |
dd | 删除/剪切当前行 |
V | 按行选中 |
u | 撤销 |
ctrl+r | 反撤销 |
>> | 往右缩进 |
<< | 往左缩进 |
:/搜索的内容 | 搜索指定内容 |
:%s/要替换的内容/替换后的内容/g | 全局替换 |
:开始行数,结束行数s/要替换的内容/替换后的内容 | 局部替换 |
. | 重复上一次命令操作 |
G | 回到最后一行 |
gg | 回到第一行 |
数字+G | 回到指定行 |
shift+6 | 回到当前行的行首 |
shift+4 | 回到当前行的行末 |
ctr+f | 下一屏 |
ctr+b | 上一屏 |
- 小结
vim是一款功能强大的命令文件编译器,可以对远程服务器的代码直接进行修改,这样的操作起来更加快速和方便
3.2 软件安装
- 软件安装的介绍
Ubuntu软件安装由两种方式:
- 离线安装(deb文件格式安装)
- 在线安装(apt-get方式安装)
#以下系统的安装包后缀
mac: .dmg
Ubuntu: .deb
windows: .exe
- deb文件格式安装
是Ubuntu的安装包格式,可以使用dpkg命令进行软件的安装和卸载
命令 | 说明 |
---|---|
dpkg | 安装和卸载deb安装包 |
dpkg命令选项:
选项 | 说明 |
---|---|
-i | 离线安装deb安装包 |
- apt-get方式安装
是在线安装deb软件包的命令,主要用于在线从互联网的软件创库中搜索、安装、升级、卸载软件
在线安装软件命令格式:
- sudo apt-get install 安装包,表示在线安装deb安装包
- 更改镜像源
因为使用apt-get命令默认是从国外的服务器下载安装软件的,会导致下载安装速度很慢,所以需要更改成国内的镜像源服务器
镜像源说明:
镜像源就是下载软件来源的服务器
更改镜像源的方式:
- 可视化方式更改镜像源
- 手动方式更改镜像源
说明:
-
手动修改镜像源,配置完成以后需要执行sudo apt-get update 这个命令,更新镜像源保证可以下载最新的软件
-
使用apt-get方式安装软件一定要联网
配置完成以后需要执行sudo apt-get update 这个命令,更新镜像源保证可以下载最新的软件
-
小结
Ubuntu操作系统安装软件有两种方式:
- sudo dpkg -i 安装包 命令
- sudo apt-get install 安装包 命令卸载
- 使用apt-get命令也就是在线安装需要更改镜像源,提高下载和安装速度
3.3 软件卸载
- 软件卸载的介绍
Ubuntu软件卸载有两种方式:
-
离线安装包的卸载(deb 文件格式卸载)
-
在线安装包的卸载(apt-get 方式卸载)
- deb文件格式卸载
命令格式:
sudo dpkg -r 安装包名 -r选项表示安装的卸载
- apt-get方式卸载
命令格式:
sudo apt-get remove 安装包名
- 小结
- Ubuntu操作系统卸载软件有两种方式:
- dpkg -r 安装包 命令
- apt-get remove 安装包 命令卸载
- Ubuntu操作系统卸载软件有两种方式:
3.4 多任务的介绍
- 提问
利用现学知识能够让两个函数或者方法同时执行吗?
不能,因为之前所写的程序都是单任务的,也就是说一个函数或者方法执行完成另外一个函数或 者方法才能执行,需要实现这种操作就需要利用多任务
多任务的最大好处:充分利用CPU资源,提高程序的执行效率
- 多任务的概念
多任务是指在同一时间内执行多个任务,例如:现在电脑安装的操作系统都是多任务操作系统, 可以同时运行着多个软件
-
多任务的执行方式
-
并发 (任务数大于cpu的核数表示并发的去执行多任务)
-
并行 (任务书小于等于cpr的核数表示并行的去执行多任务)
-
1.#并发:
在一段时间内'交替的'去执行任务
例如:
对于单核cpu处理多任务,操作系统轮流让各个软件交替执行,假如:软件1执行0.01秒,软件2执行0.01秒,在切换到软件3执行0.01秒......这样反复下去,表面上看,每个软件都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像这些软件都在同时执行一样,这里需要注意单核cpu是并发的执行多任务的
2.#并行:
对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的软件,'多个内核是真正意义上的一起执行软件。这里需要注意多核cpu是并行的执行多任务,始终有多个软件一起执行'
-
小结
-
使用多任务就能充分利用CPU资源,提高程序的执行效率,让你的程序具备处理多个任务的能力
-
多任务执行方式有两种方式:并发和并行,这里的并行才是多个任务真正意义上的一起执行
-
3.5 进程
- 进程的介绍
在Python程序中,想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式
- 进程的概念
一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说 每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行
比如:现实生活中的公司可以理解成是一个进程,公司提供办公资源(电脑、办公桌等),真正干 活的实员工、员工可以理解成线程
注意:
一个程序运行后至少有一个进程,一个进程默认有一个线程,进程里面可以创建多个线程,线 程实依附在进程里面的,没有进程就没有线程
- 进程的作用
说明:
多进程可以完成多任务,每个进程就好比一家独立的公司,每个公司都各自在运营,每个进程也各自在运行,执行各自的任务
-
小结
-
进程是操作系统进程资源分配的基本单位
-
进程是Python程序中实现多任务的一种方式
-
3.6 多进程的使用
- 导入进程包
**格式:**import multiprocessing
-
process进程类的说嘛
process([group[,target[,name[,args[,kwargs]]]]])
-
group:指定进程组,目前只能使用None
-
target:执行的目标任务名
-
name:进程名字
-
args:以元组方式给执行任务传参
-
kwargs:以字典方式给执行任务传参
-
Process创建的实例对象的常用方法:
- start():启动子进程实例(创建子进程),此时主进程优先于子进程
- join():等待子进程执行结束,在执行主进程
- terminate():不管任务是否完成,立即终止子进程
Process创建的实例对象的常用属性:
name:当前进程的别名,默认为Process-N,N为从1开始递增的整数
注意:
子进程之间执行是无序的,具体哪个进程先执行是由操作系统调度来决定
3.7 获取进程编号
-
获取进程编号的目的
获取进程编号的目的是验证主进程和子进程的关系,可以得知子进程是由那个主进程创建出来的
- 获取当前1进程编号
- 获取当前父进程编号
-
获取当前进程编号
os.getpid() 表示获取当前进程编号
-
获取当前父进程编号
os.getppid() 表示获取当前父进程编号
3.8 进程执行带有参数的任务
-
进程执行带有参数的任务的介绍
Process类执行任务并给任务传参数有两种方式:
- args 表示以元组的方式给执行任务传参
- kwargs 表示以字典方式给执行任务传参
-
args、kwargs 参数的使用
说明:
- 以元组方式传参,元组里面的元素顺序要和函数的参数顺序保持一致
- 以字典方式传参,字典里面的key要和函数里面的参数名保持一致,没有顺序要求
3.9 进程的注意点
-
进程的注意点介绍
-
进程之间不共享全局变量
-
主进程等待所有的子进程结束再结束
-
对于Linux和mac主进程执行的代码不会进程拷贝,但是对应windows系统来说主进程执行的代码也会进行拷贝,对于windows来说创建子进程的代码如果进程拷贝执行相当于递归无限制创建子进程,会报错
-
解决windows递归创建子进程,通过判断是否主模块来解决
-
-
进程之间不共享全局变量
import multiprocessing
import time
#定义全局变量
g_list=list()
#添加数据
def add_data():
for i in range(3):
#因为列表是可变类型,可以再原有内存的基础上修改数据,并且修改后内存地址不变
#所以不需要加上global关键字
#加上global 表示声明要修改全局变量的内存地址
g_list.append(i)
print("add:",i)
time.sleep(0.2)
#读取数据
def read_data():
print("read:",g_list)
if __name__ == '__main__': #在windows系统使用,不然会报错 ******