Python高级(Linux、Ubuntu、vim常用指令、正则表达式)

923 阅读4分钟

1. 操作系统

向上支撑应用程序的运行,向下驱动硬件

2. 操作系统的分类

  1. 桌面操作系统:windows、mac、liunx(deepin,麒麟)
  2. 服务器:Linux、Windows、server
  3. 嵌入式:Linux
  4. 移动操作系统:iOS、Android(基于Linux)

3. 终端的基本操作命令(除Windows外适用)

  • ls:显示当前目录所有文件的名字

  • cd:在当前路径下,进入一个文件夹

      cd .. 向上一层
      cd ../../..向上多层
      cd - 调到上一次的路径,只能回跳最后两次路径
      cd ./路径 跳转到当前路径中的某一个路径,和不写./一样
      cd /根目录下的某个文件,绝对路径
      cd ~  快速回根默认路径
    
  • touch:新建一个文件

  • pwd: 显示当前路径

  • mkdir:新建一个文件夹

  • rm:删除文件,加-r删除文件夹

  • cp 内容 目录:复制内容到目录里,如果是文件夹加-r

  • mv 内容 目录:剪切内容到目录里,如果是文件夹可以不加-r

  • mv 原文件名 新文件名:重命名,如果新文件名此目录中没有,则为改名,如果有同名的文件名,则移动到同名文件夹中

  • tree: 查看当前目录的文件夹的树状图

注:一般命令度可以加文件相对、绝对位置

  • ls -lh: 显示当前路径下除隐藏文件的属性信息
  • ls -alh: 显示当前路径下包括隐藏文件的属性信息
  • ls > xxx.txt: 把ls显示的所有东西放到xxx.txt里面,查看使用gedit xxx.txt查看文件内容,内容会覆盖。
  • ls >> xxx.txt: 内容不会被覆盖,一直继续添加。
  • cat xxx.txt: 一次显示xxx.txt所有内容
  • more xxx.txt: 逐页显示所有内容
  • tree xx/xxx | more:把xx路径下的xxx树状图放到"|",通过more逐页显示出来
  • ln -s xxx.txt xxx_s_link.txt: 创建xxx的软连接,软连接指向原文件,原文件指向内存地址,删除原文件,则软连接无效
  • ln xxx.txt xxx_h_link.txt: 创建xxx的硬连接,与原文件都指向内存地址,删除原文件,则硬连接仍然有效,无法创建文件夹的硬连接
  • cat 1.txt 2.txt:读取2个文件显示在一起,用重定向 > 可以放到一个新建的文件中,显示顺序可以更改
  • grep "?" xxx.txt: 在xxx.txt文件中查找"?",在"?"前加-i,忽略大小写,加-n,前面显示行数,不能查找文件夹。
  • find ./ xxx.txt: 从当前目录中找xxx.txt文件,".txt"找以txt结尾的文件,"n"包含n的,"a.txt"以a开头的;?代表一个,*代表多个(所有)。
  • tar -cvf xxx.tar 123.txt: 把123.txt打包进xxx.tar
  • gzip xxx.tar: 压缩xxx.tar
  • gzip -d xxx.tar.gz: 解压缩包xxx.tar.gz
  • tar -xvf xxx.tar:解打包xxx.tar
  • tar -zcvf xxx.tar.gz 123.txt: 先打包再压缩
  • tar -zxvf xxx.tar.gz: 先解压再解包
  • tar -jcvf xxx.tar.bz2 123.txt:打包压缩格式2
  • tar -jxvf xxx.tar.bz2:解压解包格式2
  • chmod : 修改文件的权限,分为字母法和数字法
  • htop: 调出任务管理器面板(详细)

1.字母法:chmod u/g/o/a +/-/= rwx 文件

2. 数字法:“rwx” 这些权限也可以用数字来代替
如执行:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename

chmod 751 file:文件所有者:读、写、执行权限 & 同组用户:读、执行的权限 & 其它用户:执行的权限。

注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。 如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限

  • sudo -s 升级为管理员
  • ifconfig:查看本机的ip地址
  • ping IP地址: 测试能否连接IP地址的电脑
  • ssh 用户名@IP: 输入密码后进入IP地址的电脑
  • reboot: 立即重启
  • shutdown -r now:立即重启,会提示
  • shutdown -h now: 立即关机
  • shutdown -h 可选时间段或加分钟,在几点关机或几分钟后关机
  • scp 用户名@IP地址:目录/222.png ./ :把222.png拷到当前目录下

4. vim常用基本指令

vim有三种基本工作模式
1.命令模式
2.文本输入模式
3.末行模式

4.1 命令模式

任何时候,不管用户处于何种模式,只要按一下ESC键,即可使Vi进入命令模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。

4.2 文本输入模式

在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键ESC即可。

4.3 末行模式

末行模式也称ex转义模式。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。

  • 进入插入模式

    i: 插入光标前一个字符

    I: 插入行首

    a: 插入光标后一个字符

    A: 插入行未

    o: 向下新开一行,插入行首

    O: 向上新开一行,插入行首

  • 进入命令模式:ESC、从插入模式或末行模式进入命令模式

移动光标:

h: 左移 

j: 下移 

k: 上移 

l: 右移

M: 光标移动到中间行 

L: 光标移动到屏幕最后一行行首 

G: 移动到指定行,行号 -G

w: 向后一次移动一个字 

b: 向前一次移动一个字

{: 按段移动,上移 

}: 按段移动,下移

Ctr-d: 向下翻半屏 

Ctr-u: 向上翻半屏

Ctr-f: 向下翻一屏 

Ctr-b: 向上翻一屏

gg: 光标移动文件开头 

G: 光标移动到文件末尾

删除命令:

x: 删除光标后一个字符,相当于 Del 

X: 删除光标前一个字符,相当于 Backspace

dd: 删除光标所在行,n dd 删除指定的行数 D: 删除光标后本行所有内容,包含光标所在字符 

d0: 删除光标前本行所有内容,不包含光标所在字符

dw: 删除光标开始位置的字,包含光标所在字符

撤销命令:

u: 一步一步撤销 

Ctr-r: 反撤销

重复命令:

.: 重复上一次操作的命令

文本行移动:

>>: 文本行右移 

<<: 文本行左移

复制粘贴:

yy: 复制当前行,n yy 复制 n 行 

p: 在光标所在位置向下新开辟一行,粘贴

可视模式:

v: 按字符移动,选中文本 

V: 按行移动,选中文本可视模式可以配合 d, y, >>, << 实现对文本块的删除,复制,左右移动

替换操作:

r: 替换当前字符 

R: 替换当前行光标后的字符

查找命令:

/: str查找
n: 下一个
N:上一个

替换命令:把abc全部替换成123

末行模式下,将当前文件中的所有abc替换成123
:%s/abc/123/g

末行模式下,将第一行至第10行之间的abc替换成123
:1, 10s/abc/123/g
  • 末行模式 进入时,文件前面加vi或者vim,退出时切换到命令模式,输入“:”就是末行模式

      w: 保存
      
      q: 退出
      
      wq:保存并退出
    

5. 正则表达式

5.1 单字符匹配

字符 功能
. 匹配任意1个字符(除了\n)
[] 匹配[]中列举的字符
\d 匹配数字,即0-9
\D 匹配非零数字,即不是数字
\s 匹配空白,即空格、tab键、换行
\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9、中文等
\W 匹配非单词字符

5.2 匹配多个字符

字符 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符至少出现1次或者无限次,即至少有1次
匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现从m到n次

5.3 匹配开头和结尾

字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾

5.4 匹配分组

字符 功能
竖杠 匹配左右任意一个表达式
(ab) 匹配括号里的分组,外面作为条件
\num 引用分组num匹配到的字符串
(?p < name >) 分组起别名

5.5 Python贪婪和非贪婪

python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符; 非贪婪则相反,总是尝试匹配尽可能少的字符。 在"*"、"?"、"+"、"{m,n}"后面加上?,使贪婪变成非贪婪

<img data-original="https://rpic.douyucdn.cn/appCovers/2016/11/13/1213973_201611131917_small.jpg" src="https://rpic.douyucdn.cn/appCovers/2016/11/13/1213973_201611131917_small.jpg" style="display: inline;">

# 提取url地址
re.search(r"https://.*?\.jpg",test_str)