【命令行魔法:掌握Linux基础工具开发的独门技艺】(二)

简介: 【命令行魔法:掌握Linux基础工具开发的独门技艺】

【命令行魔法:掌握Linux基础工具开发的独门技艺】(一):https://developer.aliyun.com/article/1425528


复制


  • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  • 「#yw」:复制#个字到缓冲区
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  • 「#p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • 「yy + p」:复制当前行并在当前行的下一行进行粘贴。


  • 「n + yy + p」表示拷贝yy复制光标所在行的6行文字,并在下一行粘贴。


大小写快速切换


  • 「shift + `」:大小写快速切换


替换


  • 「r」:替换光标所在处的字符。


  • 「shifit + r = R」:切换到替换模式,替换光标所到之处的字符,直到按下「ESC」键为止。


撤销上一次操作


  • 「u」:如果您误执行一个命令,可以马上按下


  • 「u」,回到上一个操作。按多次“u”可以执行多次恢复。


  • 「ctrl + r」: 撤销的恢复


更改


  • 「cw」:更改光标所在处的字到字尾处
  • 「c#w」:例如,「c3w」表示更改3个字


跳至指定的行


  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
  • 「shift + 3 = #」:高亮要查找的多次使用的函数名(批量选中),「n」:下一个要查找的函数名


4. vim末行模式命令集操作


在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。


列出行号


  • 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。


  • 「set nonu」: 输入「set nonu」后,会取消文件中的每一行前面的行号。


  • 「vim test.c +5」:让vim在打开的时候光标设置到第5行


跳到文件中的某一行


  • 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行。


查找字符


  • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。
  • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「n」会往前寻找到您要的关键字为止。
  • 问题:/ 和 ?查找有和区别?操作实验一下


保存文件


  • 「w」: 在冒号输入字母「w」就可以将文件保存起来,如果无法写入,可以在「w」后跟一个「!」强制写入。
  • 「!command」:指令执行完后,输入q,再输入enter即可再次进入vim


离开vim


  • 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
  • 「wq」/「shift zz = ZZ(在命令模式下使用)」 :一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
  • 「ctrl + ww」:多窗口光标切换
  • 「vs filename」:对比文件光标在那一个界面,我们就正在编辑哪一个界面,底行也是这样。


  • 「vim filename + n」:启动vim设置光标的位置在第n行


  • 「ctrl + v」:切换为视图模式,按下「j」选择区域,再输入「shift + i = I」切换为插入模式,然后在输入「//」,按入「esc」即可批量化注释


  • 「ctrl + v」:切换为视图模式,按下「j」选择区域,在输入d,即可批量化取消注释。


5. 简单vim配置


配置文件的位置


  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下, 通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
  • 打开自己目录下的.vimrc文件,执行 vim .vimrc


常用配置选项,用来测试


  • 设置语法高亮: syntax on
  • 显示行号: set nu
  • 设置自动缩进:set autoindent 和 set cindent
  • 设置统一缩进为4:set softtabstop=4 和 set shiftwidth=4
inoremap ( ()<ESC>i  "设置(自动补全
inoremap [ []<ESC>i  "设置[自动补全
inoremap { {}<ESC>i  "设置{自动补全
inoremap < <><ESC>i  "设置<自动补全
inoremap ' ''<ESC>i  "设置'自动补全
inoremap " ""<ESC>i  "设置"自动补全
set nu               "设置显示行号
set tabstop=2        "设置tab健的长度为2
set ruler            "设置标尺
set ai               "设置文本高亮
set autoindent       "设置自动缩进(与上一行的缩进相同)


使用插件


要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户,接下来:


在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行):curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh,需要按照提示输入 root 密码. 您的 root 密码不会被上传, 请放心输入.


然后在bash命令行窗口输入:source ~/.bashrc就可以使用配置好的vim了。


参考资料


Vim从入门到牛逼(vim from zero to hero)


历史问题:当我们用sudo进行指令提权为什么还是不能执行?


我们可以想一下,我们上面对指令进行sudo提权,是输入自己的密码,输入自己的密码就可以执行root的指令,这样就会有很大的风险。所以我们在创建用户的时候默认在./etc/sudoers/下没有添加到白名单中,我们可以先切换root的身份,并进入root的家目录下


然后我们vim打开./etc/sudoers/文件,我们发现文件时空白的,并且文件不可被允许操作


这是因为此时我们的文件只对root是可读的,对于其他用户是没有任何权限的,并且root用户也只有对该文件的可读,所以我们上面才要切换为root账号。


在光标处下添加当前用户


随后我们进行wq保存并退出,发现并不行,这是因为我们的root对于这个文件也只有读权限,并没有写权限。


所以我们就可以通过w!进行强制写入和q!强制退出就可以了,然后我们再执行sudo进行指令提权


3.Linux编译器-gcc/g++使用


C语言使用gcc(推荐)/g++编译,C++只能使用g++编译。


1. 背景知识


  • 1. 预处理(进行宏替换)
  • 2. 编译(生成汇编)
  • 3. 汇编(生成机器可识别代码)
  • 4. 连接(生成可执行文件或库文件)


2. gcc如何完成


格式 gcc [选项] 要编译的文件 [选项] [目标文件]


我们先来写一段代码,方便后续的观察


预处理(进行宏替换)


  • 预处理功能主要包括头文件展开,宏替换,条件编译,去注释等。
  • 所谓的头文件展开,本质就是在预处理的时候,将头文件的内容拷贝至源文件。
  • 预处理指令是以#号开头的代码行。
  • 对于条件编译,可通过给编译器传递不同的宏值,来进行对代码的的动态裁剪!
  • 实例:gcc code.c -o code.exe  -D0 VERSION=1
  • 实例: gcc –E code.c –o code.i
  • 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程,并把预处理的结果打印在
  • 选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。


编译(生成汇编)-  计算机只认识二进制 - C语言->汇编语言


  • 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查 无误后,gcc 把代码翻译成汇编语言。
  • 用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
  • 实例: gcc –S code.i –o code.s


汇编(生成机器可识别代码)汇编语言->可重定位二进制文件:不能被执行的



  • 汇编阶段是把编译阶段生成的“.s”文件转成目标文件
  • 读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
  • 实例: gcc –c code.s –o code.o


【命令行魔法:掌握Linux基础工具开发的独门技艺】(三):https://developer.aliyun.com/article/1425542

相关文章
|
2天前
|
缓存 监控 前端开发
如何在 Linux 命令行中检查 CPU 使用率
【5月更文挑战第8天】
11 0
|
4天前
|
安全 Linux Python
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
|
4天前
|
数据可视化 小程序 Linux
【Linux】自动化构建工具make/Makefile和git介绍
【Linux】自动化构建工具make/Makefile和git介绍
12 0
|
5天前
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
6天前
|
缓存 Linux
linux性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)
这些工具可以帮助你监视系统的内存使用情况、识别内存泄漏、找到高内存消耗的进程等。根据具体的问题和需求,你可以选择使用其中一个或多个工具来进行内存性能分析。注意,内存分析通常需要综合考虑多个指标和工具的输出,以便更好地理解系统的行为并采取相应的优化措施。
24 6
|
9天前
|
Shell Linux
【Linux】Bash支持各种指令选项的原理:命令行参数
【Linux】Bash支持各种指令选项的原理:命令行参数
|
10天前
|
Linux
Linux课程四课---Linux开发环境的使用(自动化构建工具-make/Makefile的相关)
Linux课程四课---Linux开发环境的使用(自动化构建工具-make/Makefile的相关)
|
11天前
|
前端开发 Linux iOS开发
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
【4月更文挑战第30天】Flutter扩展至桌面应用开发,允许开发者用同一代码库构建Windows、macOS和Linux应用,提高效率并保持平台一致性。创建桌面应用需指定目标平台,如`flutter create -t windows my_desktop_app`。开发中注意UI适配、性能优化、系统交互及测试部署。UI适配利用布局组件和`MediaQuery`,性能优化借助`PerformanceLogging`、`Isolate`和`compute`。
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
|
11天前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。