Linuxvim和bash基础笔记(自用)

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)]

中间是用冒号隔开的路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值