Linux课程笔记
1、Vim编辑器
概念:
vim是一个全屏幕纯文本编辑器,是vi的增强版
优点:
不需要鼠标介入可以完成所有操作
vim和vi的区别:
vi打开的文件是黑白的,用vim打开在部分代码处会有高亮显示,方便排错
用法:
vim /blh/text01.txt
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6Yqaxz8-1589764111076)(F:\Typora插入的图片\1589539756639.png)]
vi改别名为vim:
alias vi='vim'
这样改是临时的,如果要改成永久的,需要改配置文件。
vim使用方法:
使用命令
vim /blh/text01.txt
之后进入编辑模式,此时的窗口显示为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dXtwy0aF-1589764111080)(F:\Typora插入的图片\1589541014555.png)]
现在是只读模式,要对文件进行操作的话,需要按下键盘上的i进行操作,以下是常用的命令:
- a:在光标所在字符后面插入
- A:在光标所在行尾插入
- i:在光标所在字符前插入
- I:在光标所在行首插入
- o:在光标下插入新行
- O:在光标上一行插入新行
其实功能都一样的,都都是对文件进行修改,只不过是按不通过的快捷键给的定位不一样。
退出:标记完成后按ESC,然后输入:进入编辑模式,可以执行一些常见操作:
-
:w 保存不退出
-
:w 新文件名
-
:w /blh/aaa.txt
-
:q 不保存退出
-
:wq 保存退出
-
:!强制
-
:q!强制不保存退出
-
:wq!强制保存退出
vim命令操作模式:
- 移动操作:键盘上的上下左右,或者备用方案HJKL左下上右
- gg直接移动到文件头,G直接移动到文件尾
- ^移动到行首,$到行尾
- :n直接移动到指定行
- /n
- 删除操作:x 删除光标所在处单个字符
- dd 删除单行
- ndd 删除多行
- :n1,n2d 产出指定范围行
- p 使用dd命令后,dd既是删除,又是剪切,可以复制到光标后
- P 粘贴到光标前
- dG 删除光标所在行到行尾的数据
- /n
- 撤销:u
- 反撤销:ctrl+r
- /n
- 复制:yy 复制单行
- nyy 复制多行
- /n
- 替换:r 替换光标所在字符
- R 进入替换模式
vim配置文件
显示行号:这个代码是临时生效的
:set nu
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gBmhNpe0-1589764111083)(F:\Typora插入的图片\1589591053643.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YN8AXpiF-1589764111089)(F:\Typora插入的图片\1589591060324.png)]
修改默认显示则需要修改配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z9XuvsRH-1589764111092)(F:\Typora插入的图片\1589591237741.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iF1veV3r-1589764111093)(F:\Typora插入的图片\1589591228704.png)]
这样打开的时候就会默认显示行号了。
显示颜色:
开启:
:syntax on
关闭:
:syntax off
查找的字符串高亮显示
:set hlsearch
查找的字符串不高亮显示:
:set nohlsearch
状态栏
设置状态栏
:set ruler
关闭状态栏
:set noruler
隐藏字符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tX2QL0lo-1589764111095)(F:\Typora插入的图片\1589591876501.png)]
显示隐藏字符
:set list
不显示隐藏字符
:set nolist
注:windows的回车符为^MS,而linux的回车符为$
查找
- /查找内容 光标所在行向下查找
- ?查找内容 光标所在行向上查找
替换
-
1,10s/old/new/g 替换1-10行
-
:1,10s/a/bbb/g
-
%s/old/new/g 替换整篇文档
-
1,10s/^/#/g 给1-10行批量添加注释
-
1,10s/#//g 取消添加的注释
vim使用技巧:
1、导入其他文件内容
:r 文件名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ncWD44j-1589764111097)(F:\Typora插入的图片\1589593304899.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2CBHAa6-1589764111098)(F:\Typora插入的图片\1589593309587.png)]
2、在vim中执行系统命令
:!命令
:r !命令 导入命令结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qjt3zOe0-1589764111100)(F:\Typora插入的图片\1589593470815.png)]
注:设置ctrl+p为添加注释
:map ^p I#<ESC>
设置ctrl+b为取消注释
:map ^B ^x
3、字符串替换
:ab 源字符 替换的字符
4、多文件打开
vim -o 文件1 文件2 #小o为上下分配 大O为左右分配
注:上下切换为:按ctrl+w之后按键盘的上下即可切换
2、软件包安装
软件包分类:
- 源码包
- 二进制包
源码包:
代码开源
二进制包:
源码包编译 windows下的.exe文件就是二进制包
二进制包分类:
- DPKG包 主要应用于debian和unbuntu中
- RPM包 目前常用的
RPM包依赖
- 树形依赖
- 环形依赖
- 模块依赖 //函数库依赖
RPM包安装
rpm -ivh 包名
RPM安装
包全名:如果操作的是为未安装软件包,需要全名
包名:如果操作的是已经安装的软件包,包名就行
3、Shell编程
shell概述:
shell写的脚本使用人数相对较少,就不需要考虑效率。
shell:命令解释器。
echo命令
echo输出命令
echo 111111
echo -n "11111" #输出后不换行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dlWG6FSy-1589764111103)(F:\Typora插入的图片\1589614438735.png)]
echo -e 11\t22 #加入e之后可以使用转义字符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQjMYkvz-1589764111105)(F:\Typora插入的图片\1589614491404.png)]
echo -e "\e[1;31m aaaa \e[0m"
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVJkQMK5-1589764111108)(F:\Typora插入的图片\1589614896669.png)]
shell脚本执行方法
脚本一般采用.sh后缀
第一个脚本
#!/bin/bash
#上句标识以下程序为shell程序
echo "hello world! "
执行:
#先赋予执行权限
chmod 755 hello.sh
#然后执行
./hello.sh
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zIFVg3mb-1589764111109)(F:\Typora插入的图片\1589615571108.png)]
或者
bash hello.sh #不推荐
Bash基本功能
历史命令,默认最大记录1000条
history
history -w #内存缓存中的文件也写入
vim .bash_history #存放历史操作命令
vim /etc/profile #记录的条数
history -c #清除历史,不建议
历史命令的调用
- 使用键盘上的上下箭头获取
- 使用 !n 重复执行第n条命令
- 使用 !!执行上一条命令
- 使用!字串 执行最后一条以指定字串开头的命令
- 使用!$重复上一条命令的最后一个参数
别名
查看系统别名 alias
修改别名
alias #查看别名
vim /etc/.bashrc #修改别名的配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5EC30zVX-1589764111111)(F:\Typora插入的图片\1589617257085.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zIaZjBBI-1589764111116)(file:///C:\Users\白龙辉\AppData\Local\Temp\ksohtml984\wps1.jpg)]
别名的优先级
- 最优先执行的是绝对路径/相对路径的命令
- 其次是别名
- 然后是bash的内部命令
- 最后是环境变量
bash常用快捷键
ctrl+A | 光标移动到命令行开头 |
---|---|
ctrl+E | 光标移动到命令行尾部 |
ctrl+C | 强制终止当前命令 |
ctrl+L | 清屏 |
ctrl+U | 删除或剪切光标之前的命令 |
ctrl+K | 删除或剪切光标之后的命令 |
ctrl+Y | 粘贴 |
ctrl+R | 在历史命令中搜索 |
输入输出重定向
输出重定向
-
ls > aaa #把当前目录的ls结果存入文件aaa
-
ls >> aaa #追加 ls 2>> aaa #错误信息也记录下来 ls >> aaa 2>&1 #无论正确错误都可以保存 ls &>> aaa #也是正确错误都行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-smFz72C9-1589764111118)(F:\Typora插入的图片\1589618542959.png)]
输入重定向
文件作为输入
多命令执行符
-
cd /blh ; ls #进入目录并显示 cd /blh && ls # 前面正确执行后面。前面错误后面不执行 cd /blh || ls #前面正确不执行后面,前面错误执行后面
管道符
grep "root" /etc/passwd #查找passwd文件中包含root的行
通配符
通配符 | 作用 |
---|---|
? | 匹配任意一个字符 |
* | 匹配0个或多个 |
[] | 匹配括号中任意一个 |
[-] | 匹配范围 |
[^] | 逻辑非,匹配不是括号中的字符 |
bash的变量和运算符
- bash中变量的默认类型都是字符串型
- 等号两边不能加空格
- 变量的值以最后一次赋值为准
- 变量值可以叠加
变量分类
- 用户自定义变量
- 环境变量 使用大写,主要保存和系统操作环境相关的数据,分为用户自定义和系统定义两种
- 位置参数变量:向脚本中传参
- 预定义变量:bash中已经定义好的变量,变量名不能自己定义,作用也固定
- 变量查看 set -u 调用未声明的变量会报错 set查看所有变量,
- 变量删除 unset 变量名
环境变量
设置环境变量
export AGE=18 #声明环境变量
env #查看环境变量
env
set和env的区别
set可以查看所有变量,而env只能查看环境变量
系统自带环境变量
PATH变量
PATH变量是系统查找命令的路径
echo $PATH
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AvT6DsJ7-1589764111120)(F:\Typora插入的图片\1589627976578.png)]
中间是用冒号隔开的路径
量的值以最后一次赋值为准
- 变量值可以叠加
变量分类
- 用户自定义变量
- 环境变量 使用大写,主要保存和系统操作环境相关的数据,分为用户自定义和系统定义两种
- 位置参数变量:向脚本中传参
- 预定义变量:bash中已经定义好的变量,变量名不能自己定义,作用也固定
- 变量查看 set -u 调用未声明的变量会报错 set查看所有变量,
- 变量删除 unset 变量名
环境变量
设置环境变量
export AGE=18 #声明环境变量
env #查看环境变量
env
set和env的区别
set可以查看所有变量,而env只能查看环境变量
系统自带环境变量
PATH变量
PATH变量是系统查找命令的路径
echo $PATH
[外链图片转存中…(img-AvT6DsJ7-1589764111120)]
中间是用冒号隔开的路径