【Linux命令Day3笔记】

Linux命令

https://www.bilibili.com/video/BV1dt411f7TZ?p=64

Day3 笔记

编辑器使用

工作模式:

  1. 命令模式 – 默认
  2. 编辑模式 -
  3. 末行模式 - :

具体使用

  1. vim编辑器使用

    命令模式

    (1) 光标移动

    hjkl 前 下 上 后 移动光标

    0 行首 $ 行尾

    gg文件头部 G文件尾部 500G第500行

    (2) 删除操作

    删除光标所在字符 x

    删除光标前面的字符 X

    删除单词 dw (注意移动单词到光标单词的第一个字符上)

    d0 删除光标前面所有东西

    d$ / D 删除光标后面的所有内容

    dd删除一行

    4dd 删除4行

    (3) 撤销操作

    u 撤销

    ctrl r 反撤销

    (4) 复制粘贴

    p粘贴 (粘贴在光标所在下一行)

    P 粘贴在当前行

    yy 复制所在行

    4yy 复制4行内容

    (5) 可视操作

    v 切换到可视模式

    复制 y 删除 d (无换行操作)

    (6) 查找操作
    /查找的内容(从光标位置 向下 最下边后 返回到头部)
    n 向下切换 N 向上切换
    ?查找的内容 (从光标位置向上查找 顶部之后 返回尾部)
    光标移动到单词处 # 开始搜索当前单词

    (7) 替换操作
    r 单个字符替换
    <</>> 缩进修改

    (8) 查看man文档

    K 跳转到man文档 3K则跳转到第三章
    zz保存退出

编辑模式 a 切换模式

​ a 在光标后开始插入字符

​ A 当前行尾部开始插入字符

​ i 在光标前开始插入字符

​ o 光标下一行创建新行并开始输入内容

​ O 光标上一行创建新行并开始输入内容

​ s 删除光标字符开始输入

​ S删除一整行并开始输入

​ **末行模式 :切换模式 **
​ 300 跳转到行
​ 字符串的替换
​ 当前行的替换 s/tom/jack/g 则替换tom为jack
​ 替换所有的 %s/tom/jack/g 则全部替换
​ 替换某几行的内容 :27,30s/tom/jack/g

​ :!pwd 则可输入命令

​ 退出模式 esc esc 则可退回

​ 保存文件 :w保存 :q 退出 :q! 退出不保存 :wq 保存退出

分屏操作

​ 末行模式下 水平分屏 :sp ctrl ww 切换 关闭全部要加all

​ 垂直分屏: :vsp

  1. gcc编译器
    预处理 gcc -E sum.c -o sum.i
    编译生成汇编文件 gcc -S sum.i -o sum.s
    生成二进制文件 gcc -c sum.s -o sum.o
    链接生成可执行程序 gcc sum.o -o app

    直接生成可执行程序 gcc sum.c -o myapp

    指定头文件路径 gcc sum.c -I ./incude -o app -I include

    指定宏 gcc sum.c -o app -I include -D DEBUG -O1/2/3 (优化等级) -Wall (输出警告信息) -g (添加调试信息)

    -o 指定生成的文件的名字

    -D 在编译的时候定义宏 (控制log的输出)

    -I 指定头文件的路径

    -g gdb调试的时候需要添加该参数

    -O 编译优化,3个等级(1-3)等级

    -Wall 编译期间输出警告信息

  2. 静态库
    (1) 命名规则
    lib + 库的名字 + .a
    .libmaytest.a

    (2) 制作步骤
    生成对应的.o gcc -c *.c
    将生成的.o文件打包 ar rcs + 静态库的名字 (libMytest.a) + 生成的所有的. o

    (3) 发布和使用静态库
    发布静态库
    头文件

    (4) 优缺点

    gcc main.c -I include -L lib -l Mycalc -o myapp

    ​ 自己的程序 头文件 静态库 具体静态库(需要掐头去尾)生成可执行的文件
    nm libMyCalc.a 可查看
    优点:发布程序时不需要提供对应的库;执行调用库时加载速度快
    缺点:打包到应用程序 导致库体积很大; 库发生了改变需要重新编译程序

  3. 动态库(共享库)
    (1)命名规则
    lib + 库的名字 + .so

    image-20220314213427393
    0-3G的用户空间 程序启动后才加载动态库

    (2)制作步骤

    生成与位置无关的代码(生成.o)gcc -fPIC -c *.c -I ./incude
    将.o打包成共享库(动态库)gcc -shared -o libMyCalc.so *.o -I include

    (3) 发布和使用共享库
    gcc main.c lib/libMyCalc.so -o ap -Iincude
    gcc main.c -I include -L ./lib -l MyCalc -o myapp

    (4)解决执行程序时动态库无法被加载的问题ldd 查看可执行程序所依赖的共享库

    echo $ LD_LIBRARY_PATH

    exprot LD_LIBRARY_PATH = ./lib 直接修改环境变量(关闭当前终端后失效)
    永久设置bash配置文件

    ls -a ;vi .bashrc; 添加以上语句

    一般使用方法

    找到动态连接器的配置文件 – 动态库的路径 ls -l ld.so.conf

    写入配置文件 sudo vi ld.so.conf 添加o 添加后 wq

    更新 sudo ldconfig -v

  4. 动态库的优缺点

    优点:执行程序体积小;动态库更新不需要编译程序 (接口不变)

    缺点:发布程序时需要提供动态库;没有打包在应用程序中,加载较慢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值