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

相关文章
|
27天前
|
Rust Ubuntu Java
[Linux工具] Makefile
Makefile是Linux环境下用于自动化编译和链接程序的配置文件,常用于简化大型项目的编译流程。通过定义目标文件、依赖文件及生成命令,Makefile能高效管理编译任务。它不仅适用于C语言项目,还可扩展到其他编程语言和非编程任务中。
53 20
[Linux工具] Makefile
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
347 8
|
13天前
|
监控 安全 Ubuntu
Linux下如何安装配置Fail2ban防护工具
通过以上步骤,可以在Linux系统中成功安装和配置Fail2ban,从而有效保护服务器免受暴力破解等攻击。Fail2ban通过实时监控日志文件,自动更新防火墙规则,为系统安全提供了一层重要的保护。
69 36
|
25天前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
79 28
|
22天前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
34 11
|
1月前
|
安全 网络协议 Linux
结合 `nc` 工具利用笑脸漏洞(Smile Bug)攻击 Metasploitable2 Linux
本文介绍如何使用 `nc`(Netcat)工具结合笑脸漏洞(Smiley Bug)攻击 Metasploitable2 Linux 靶机。首先概述了 `nc` 的基本功能和高级用法,包括建立连接、监听端口、文件传输等操作。接着详细描述了笑脸漏洞的原理及其在网络攻防中的应用,展示了通过 `nc` 发送恶意输入检测漏洞的方法。最后结合 Python 脚本实现更复杂的攻击场景,并强调了合法性和环境隔离的重要性。
51 13
|
2月前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
177 6
|
3月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
98 3
|
3月前
|
Linux 数据安全/隐私保护
适用于 Linux 的最佳命令行下载加速器
适用于 Linux 的最佳命令行下载加速器
101 3
|
3月前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
273 1