云栖实验室冬训营(1.17-3.8)可补!!!五场冬战,从入门到进阶,帮助开发者最佳实践,在云端快速实践和学习。体验有礼,点击进入:https://developer.aliyun.com/adc/series/wintercamp冬令营第一期:从零到一上手云服务器单人任务奖励:实战营技能证书+定制鼠标三期任务奖励:冬奥限量版云小宝全网首发第五期任务奖励:冬令营勋章+定制书包+无影试玩体验简介本场景将提供一个ECS实例(云服务器))配置AliyunLinux2。可以参考本教程学习Linux系统中的文本编辑工具Vim和文本处理命令。背景知识云服务器ECS(ElasticComputeService,简称ECS)是阿里云提供的IaaS(InfrastructureasaService)级别的云计算服务,具有优异的性能、稳定性、可靠性和弹性扩展能力。云服务器ECS为您省去了购买IT硬件的前期准备工作,让您像使用水、电、天然气等公共资源一样方便高效地使用服务器,实现计算的开箱即用和弹性伸缩资源。阿里云ECS不断提供创新的服务器来满足各种业务需求,助力您的业务发展。AliyunLinux2AliyunLinux2是阿里云推出的下一代Linux发行版。它为云上的应用环境提供Linux社区的最新增强功能。深度优化。AliyunLinux2OS镜像可以运行在阿里云的全规格系列VM实例上,包括ElasticBareMetalServers(Shenlong)。VimVim是从vi发展而来的文本编辑器。代码补全、编译、错误跳转等便捷的编程功能尤为丰富,在程序员中广泛使用,并与Emacs并列成为类Unix系统用户最喜爱的文本编辑器。Vim的设计哲学是命令的组合。用户已经学会了多种文本间移动、跳转等常用模式编辑命令,如果能灵活组合使用,可以比没有模式编辑器更高效地编辑文本。同时,Vim类似于很多快捷键设置和正则表达式,可以辅助记忆。Vim针对程序员进行了优化。内容一:文本编辑工具Vim文本编辑工具Vim具有三种运行模式Vim具有三种运行模式,即命令模式(Commandmode)、输入模式(Insertmode)和底线命令模式(Lastlinemode)。三模式切换快捷键:模式快捷键命令模式ESC输入模式i或底线命令模式:命令模式在命令模式下控制光标移动和输入命令,可以复制、粘贴、删除和搜索文本。使用命令vimfilename后进入编辑器视图,默认模式为命令模式。这时,键入一个键盘字母将被识别为一个命令。例如,在键盘上输入两次d将删除光标所在的行。以下是命令模式下常用的快捷操作:操作??快捷键光标左移h光标右移l(小写L)光标上移k光标下移j光标移到下一个词w将光标移动到上一个单词b移动光标到第n行nG将光标移动到第一行gg将光标移动到最后一行G快速返回到上一个光标位置Ctrl+o删除当前字符xdelete前一个字符X删除整行dd删除一个单词dw或daw删除到d$或D从行尾删除到行首d^删除到文件末尾dG删除到文件开头documentd1G删除n行ndd删除n个连续字符nx将光标所在的字母改成大写或小写~复制光标所在的整行yy(3yy表示复制3行)粘贴到光标后面(向下)p粘贴到光标前面(向上)Pcutdd交换上下行dp整行替换,即删除光标所在行,进入插入模式ccundooneornoperationsu{n}Undoall当前行的修改URedo撤消操作Ctrl+r整行向右缩进>>整行向左缩进<<如果文件没有被更改,则不保存离开,如果文件已经改好了,保存后退出ZZ输入模式,在命令模式下按i或任意键进入输入模式。在输入模式下,您可以正常使用键盘按键来插入和删除文本。底线命令模式在命令模式下按:键进入底线命令模式,可以在底线命令模式下输入单个或多个字符命令。下面是底线命令模式下常用的快捷操作:操作??命令save:wexit:qsaveandexit:wq(:wq!表示强制保存退出)savethefileasanotherfilename:wnew_filename显示行号:setnucancel行号:setnonu使本行内容居中:ce将本行文字向右移动:ri将本行内容向左移动:le在cursor:/word查找光标上方的字符名称为word:?word的字符串重复上次查找的动作:n从第一行到最后一行找到word1字符串,并将该字符串替换为word2:1,$s/word1/word2/gor:%s/word1/word2/g使用例子1.Listitem新建一个文件,进入vim命令模式。vim静夜思.txt2.按i进入输入模式,输入《静夜思》的诗名。3、按ECS键返回命令模式,输入底行命令:ce将诗题居中。4、按o键换行进入输入法,输入第一行诗词。5、按ECS键返回命令模式,输入底行命令:ce将首行诗居中。6、按o键换行进入输入法,输入第二行诗词。7、按ECS键返回命令模式,输入底行命令:ce将第二行诗居中。8、在命令模式下执行最下面一行命令:wq退出vim。目录二:文本文件查看命令cat命令说明:cat命令用于查看内容较少的纯文本文件。命令格式:cat[选项][文件]。命令参数说明:参数说明-n或--number显示行号-b或--number-nonblank显示行号,但不给空行编号-s或--squeeze-blank当超过两个时consecutivelinesBlankline,只有一行blankline命令用法举例:1.在test.txt文件中写入一个自增序列。对于我在$(seq110);做echo$i>>test.txt;完成2。查看文件的内容。cattest.txt命令的输出:3.清空文件内容。cat/dev/null>test.txt再次检查文件内容。cattest.txt命令的输出:more命令说明:more命令从前到后分页显示文件内容。常用操作命令:操作功能向下回车n行,n需要定义,默认为1行线!命令调用shell执行命令q退出more命令示例:查看系统日志文件/var/log/messages从第20行开始的页面more+20/var/log/messages命令输出:less命令说明:less命令可以分页显示文件或其他输出,类似于moe命令,但是less可以随意浏览文件,而more只能向前移动。但不能向后移动。命令格式:less[参数]文件。命令参数说明:参数说明-e当文件显示结束时,会自动离开-m显示百分比类似more命令-N显示每一行的行号-s显示一行连续的空行命令常用操作:快捷键描述/字符串方向下一个搜索字符串?串起搜索字符串n重复上一次搜索N反转上一次搜索b或pageup键向上翻页空格键或pagedown键向下翻页u向前翻半页d向后翻半页y向前滚动一行Enterkey向后滚动一行qexitlesscommand命令使用示例:查看命令历史使用记录,并以less页显示。历史|lesshead命令说明:head命令用于查看文件开头指定行数的内容。命令格式:head[参数][文件]。命令参数说明:参数说明-n[行数]显示文件开头指定行的内容,默认为10-c[字符数]显示开头指定的字符数-q不显示文件名信息,适用于多个文件,当有多个文件时,默认显示文件名命令用法示例:查看/etc/passwd文件的前5行。head-5/etc/passwd命令输出:tail命令说明:tail命令用于查看文件的最后N行或不断刷新内容。命令格式:tail[参数][文件]。命令参数说明:参数说明-f显示文件最新添加的内容-q有多个文件参数时,不输出每个文件名-v有多个文件参数时,始终输出每个文件名-c[字节数]显示文件末尾n字节的内容-n[行数]显示文件末尾n行的内容命令用法示例:查看/var/log/messages系统的最新10行日志文件并保持实时刷新。tail-f-n10/var/log/messages按ctrl+c退出实时文本查看界面。stat命令说明:用于显示文件的详细信息,包括inode、atime、mtime、ctime等命令使用示例:查看/etc/passwd文件的详细信息。stat/etc/passwd命令的输出:wc命令说明:wc命令用于统计指定文本的行数、字数和字节数。命令格式:wc[参数][文件]。命令参数说明:参数说明-l只显示行数-w只显示字数-c只显示字节数命令用法举例:统计/etc/passwd文件的行数。wc-l/etc/passwd命令输出:file命令说明:file命令用于识别文件类型。命令格式:文件[参数][文件]。命令参数说明:参数说明-b列出识别结果时,不显示文件名-c详细显示命令的执行过程,方便排查或分析程序的执行情况-f[文件]指定文件名,其内容有一个或多个指定文件名时,让file依次标识这些文件,格式为每列一个文件名-L直接显示符号链接指向的文件类型命令用法示例:查看/var/log/messages文件的文件类型。文件/var/log/messages命令的输出:diff命令描述:diff命令用于比较文件的差异。命令用法示例:1.构造两个相似的文件echo-e'第一行\n第二行\n我是log1第三行\n第四行\n第五行\n第六行'>1.logecho-e'第一行line\n第二行\n我是log2第三行\n第四行'>2.log2.分别查看两个文件3、使用diff查看两个文件比较结果的差异3c3表示两个文件在第3行和5行不一样,6d4表示2.log文件小于5和1.log文件第6行第4行与1.log文件对比。文本文件处理命令grep命令说明:grep命令用于在文件中查找满足条件的字符串。grep的全称是GlobalRegularExpressionPrint,意思是全局正则表达式版本。它可以使用正则表达式搜索文本并打印出匹配的行。在shell脚本中,grep通过返回一个状态值来表示搜索的状态:0:匹配成功。1:匹配失败。2:查找的文件不存在。命令格式:grep[参数][正则表达式][文件]。命令常用参数说明:参数说明-c或--count统计符合样式的列数-drecurse或-r指定要搜索的目录不是文件-e[模板样式]指定字符串作为用于查找文件内容的样式-E或--extended-regexp将样式视为扩展正则表达式以使用-G或--basic-regexp将样式视为普通表达式以使用-i或--ignore-case以忽略字符大小写差异-n或--line-number在显示符合样式的行之前,标记该行的列号-v或--revert-match显示所有不包含匹配文本的行命令用法示例:查看sshd服务配置文件监听端口配置所在行号。grep-nPort/etc/ssh/ssh_config命令输出:查询字符串在文本中出现的行数。grep-clocalhost/etc/hosts命令的输出结果:反向查找,不显示符合条件的行。ps-ef|grepsshdps-ef|grep-vgrep|grepsshd命令输出:递归搜索目录中包含关键字的文件。grep-r*.sh/etc命令的输出:使用正则表达式匹配httpd配置文件中异常状态码响应的相关配置。grep'ntp[0-9].aliyun.com'/etc/ntp.conf命令输出:sed命令描述:sed是一个流编辑器,是文本处理中非常有用的工具,可以完美匹配所使用的正则表达式表达式。在处理过程中,当前处理的行存储在称为模式空间的临时缓冲区中。然后使用sed命令对缓冲区的内容进行处理,处理完成后,将缓冲区的内容发送到屏幕上。然后处理下一行,重复直到文件结束。注意:sed命令不会修改原始文件。例如,delete命令只是表示某些行不会被打印出来,而不是从原始文件中删除。如果要更改源文件,则需要使用-i选项。命令格式:sed[参数][动作][文件]。参数说明:参数说明-e[script]执行多个脚本-f[scriptfile]执行指定的脚本文件-n只显示脚本处理后的结果-i输出到原文件,静默执行(修改原文件)动作描述:动作描述a在行后添加内容c替换行d删除行i在行前插入p打印相关行s替换内容命令用法示例:删除第3行到最后一行的内容。sed'3,$d'/etc/passwd命令输出:在最后一行添加一个新行。sed'$aadmin:x:1000:1000:admin:/home/admin:/bin/bash'/etc/passwd命令输出:替换内容。sed's/SELINUX=disabled/SELINUX=enforcing/'/etc/selinux/config命令输出:替换行。sed'1cabcdefg'/etc/passwd命令输出结果:awk命令说明:awk命令与sed命令类似,也是逐行扫描文件(从第一行到最后一行),寻找包含目标文本的行,如果匹配成功,就会执行用户想要的操作就行了;否则,线上不做任何处理。命令格式:awk[参数][脚本][文件]。参数说明:参数说明-Ffs指定fs作为输入行的分隔符,awk命令的默认分隔符是一个空格或者一个tab-f文件读取awk脚本-vval=val在执行处理之前process,设置一个变量var,并将其初始值设置为val内置变量:变量使用FS字段分隔符$n指定第n个字段分隔,如$1和$3分别代表当前读取的整行文本第一列和第三列$0NF记录了当前处理的行的字段(列)数。NR记录当前读取的行数。FNR记录源文件中当前行的行号。在awk中,还可以指定脚本命令的运行时间。默认情况下,awk会从输入中读取一行文本,然后针对这一行的数据执行程序脚本,但有时可能需要在处理数据之前运行一些脚本命令,这就需要使用BEGIN关键字,BEGIN会在awsk读取数据之前强制执行此关键字后指定的脚本命令。对应于BEGIN关键字,END关键字允许我们指定一些脚本命令,awk会在读取数据后执行。命令用法示例:查看本机IP地址。ifconfigeth0|awk'/inet/{print$2}'命令输出:查看机器的剩余磁盘容量。df-h|awk'/\/$/{print$4}'命令输出:统计系统用户数。awk-F:'$3<1000{x++}END{printx}'/etc/passwd命令输出:输出loginshell不以nologin结尾的用户名(在第七个字段做!~反向匹配),LoginShell信息。awk-F:'$7!~/nologin$/{print$1,$7}'/etc/passwd命令输出:输出/etc/passwd文件前三行记录的用户名和用户uid。头-3/etc/passwd|awk'BEGIN{FS=":";print"name\tuid"}{print$1,"\t"$3}END{print"sumlines"NR}'命令输出结果:查看tcp连接数。网络统计-na|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'命令输出:关闭指定服务的所有进程。ps-ef|grephttpd|awk{'打印$2'}|xargskill-9cut命令说明:cut命令主要用于对字符串进行切割,可以将输入的数据切割后输出。命令格式:cut[参数][文件]。参数说明:参数说明-b以字节为单位分割-c以字符为单位分割-d自定义分隔符,默认为制表符命令使用示例:按字节分割。按字裁剪。根据指定的字符进行切割。tr命令说明:tr命令用于替换、压缩和删除标准输入中的字符。命令格式:tr[参数][文本]。参数说明:参数说明-c反转指定字符-d删除指定字符-s将重复字符减少为一个字符-t[第一个字符集][第二个字符集]删除第一个字符集中的字符多于第二个字符set使用输出字符使两个字符集的长度相同命令示例:将输入字符从大写转换为小写。回声“你好世界”|tr'A-Z''a-z'命令输出:删除字符。echo"你好123世界456"|tr-d'0-9'命令输出:压缩字符。echo"thissss是一个文本linnnnnnne。"|tr-s'sn'命令输出:生成随机密码。猫/dev/urandom|tr-dca-zA-Z0-9|head-c13命令输出:
