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

相关文章
|
5月前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
439 5
|
5月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
468 16
|
5月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
273 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
7月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
206 1
Linux系统性能调优技巧和相关工具
|
7月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
801 16
|
6月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
9月前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
452 32
|
8月前
|
Java Linux 开发工具
Linux下版本控制器(SVN) -命令行客户端
Linux下版本控制器(SVN) -命令行客户端
254 4
|
9月前
|
Linux 数据安全/隐私保护
使用Linux命令行接入无线网络Wi-Fi的示例。
现在,你已经使用命令行成功地连接到 Wi-Fi 网络了。这两个示例涵盖了用 `nmcli` 和 `wpa_supplicant` 连接无线网络的常见场景,让你能够不依赖图形化界面来完成这个任务。在日常使用中熟练掌握这些基本操作能增强你对 Linux 系统的理解,帮助你更有效地处理各种问题。
744 12