【命令行魔法:掌握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

相关文章
|
12天前
|
监控 数据可视化 Ubuntu
|
1月前
|
监控 Unix Linux
Linux系统工具
Linux系统工具
42 6
|
13天前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
32 5
Linux系统之安装Ward服务器监控工具
|
15天前
|
JSON JavaScript Linux
Linux系统之安装cook菜谱工具
【10月更文挑战第15天】Linux系统之安装cook菜谱工具
32 2
Linux系统之安装cook菜谱工具
|
4天前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
26 1
|
4天前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
11 1
|
17天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
64 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
223 2
|
2月前
|
监控 安全 Linux
如何利用Kali Linux进行网站渗透测试:最常用工具详解
如何利用Kali Linux进行网站渗透测试:最常用工具详解
109 6
|
2月前
|
安全 Linux 测试技术
Kali Linux预装的自动化渗透测试工具
Kali Linux预装的自动化渗透测试工具
129 2