2万字系统总结,带你实现Linux命令自由?
前言
Linux的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发,接触Linux机会相对较少,因此往往容易忽视它。但是学好它却是程序员必备修养之一。
如果本文对你有所帮助,请点个吧。
作者使用的是阿里云服务器ECS(最便宜的那种)CentOS7。764位。当然你也可以在自己的电脑安装虚拟机,虚拟机中再去安装CentOS系统(这就完全免费了)。至于它的安装教程可以去谷歌搜索下,相关教程非常多。Linux基础操作系统
操作系统OperatingSystem简称OS,是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁。
操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序。
什么是LinuxLinux系统内核与Linux发行套件的区别Linux系统内核指的是由LinusTorvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品。
总结:真正的Linux指的是系统内核,而我们常说的Linux指的是发行版完整的包含一些基础软件的操作系统。Linux对比Windows稳定且有效率;免费(或少许费用);漏洞少且快速修补;多任务多用户;更加安全的用户与文件权限策略;适合小内核程序的嵌入系统;相对不耗资源。Linux系统种类红帽企业版Linux:RHEL是全世界内使用最广泛的Linux系统。它具有极强的性能与稳定性,是众多生成环境中使用的(收费的)系统。Fedora:由红帽公司发布的桌面版系统套件,用户可以免费体验到最新的技术或工具,这些技术或工具在成熟后会被加入到RHEL系统中,因此Fedora也成为RHEL系统的试验版本。CentOS:通过把RHEL系统重新编译并发布给用户免费使用的Linux系统,具有广泛的使用人群。Deepin:中国发行,对优秀的开源成品进行集成和配置。Debian:稳定性、安全性强,提供了免费的基础支持,在国外拥有很高的认可度和使用率。Ubuntu:是一款派生自Debian的操作系统,对新款硬件具有极强的兼容能力。Ubuntu与Fedora都是极其出色的Linux桌面系统,而且Ubuntu也可用于服务器领域。终端连接阿里云服务器
通过执行sshroot121。42。11。34命令,然后输入服务器连接密码就可以顺利登陆远程服务器。从现在开始我们就可以在本地电脑操作远程服务器。这个黑色的面板就是终端也就是Shell(命令行环境)。sshrootxxx这是一条命令,必须要在Shell中才能执行。Shell
Shell这个单词的原意是外壳,跟kernel(内核)相对应,比喻内核外面的一层,即用户跟内核交互的对话界面。Shell是一个程序,提供一个与用户对话的环境。这个环境只有一个命令提示符,让用户从键盘输入命令,所以又称为命令行环境(commandlineinterface,简写为CLI)。Shell接收到用户输入的命令,将命令送入操作系统执行,并将结果返回给用户。Shell是一个命令解释器,解释用户输入的命令。它支持变量、条件判断、循环操作等语法,所以用户可以用Shell命令写出各种小程序,又称为Shell脚本。这些脚本都通过Shell的解释执行,而不通过编译。Shell是一个工具箱,提供了各种小工具,供用户方便地使用操作系统的功能。Shell的种类
Shell有很多种,只要能给用户提供命令行环境的程序,都可以看作是Shell。
历史上,主要的Shell有下面这些:BourneShell(sh)BourneAgainshell(bash)CShell(csh)TENEXCShell(tcsh)Kornshell(ksh)ZShell(zsh)FriendlyInteractiveShell(fish)
其中Bash是目前最常用的Shell。MacOS中的默认Shell就是Bash。
通过执行echoSHELL命令可以查看到当前正在使用的Shell。还可以通过catetcshells查看当前系统安装的所有Shell种类。命令命令行提示符
进入命令行环境以后,用户会看到Shell的提示符。提示符往往是一串前缀,最后以一个美元符号结尾,用户可以在这个符号后面输入各种命令。
执行一个简单的命令pwd:〔rootiZm5e8dsxce9ufaic7hi3uZ〕pwdroot复制代码
命令解析:root:表示用户名;iZm5e8dsxce9ufaic7hi3uZ:表示主机名;:表示目前所在目录为家目录,其中root用户的家目录是root普通用户的家目录在home下;:指示你所具有的权限(root用户为,普通用户为)。执行whoami命令可以查看当前用户名;执行hostname命令可以查看当前主机名;
关于如何创建、切换、删除用户,在后面的用户与权限会具体讲解,这里先使用root用户进行演示。
〔备注〕root是超级用户,具备操作系统的一切权限。命令格式commandparameters(命令参数)复制代码长短参数单个参数:lsa(a是英文all的缩写,表示全部)多个参数:lsal(全部文件列表形式展示)单个长参数:lsall多个长参数:lsreverseall长短混合参数:lsalll复制代码参数值短参数:commandp10(例如:sshroot121。42。11。34p22)长参数:commandparamters10(例如:sshroot121。42。11。34port22)复制代码快捷方式
在开始学习Linux命令之前,有这么一些快捷方式,是必须要提前掌握的,它将贯穿整个Linux使用生涯。通过上下方向键来调取过往执行过的Linux命令;命令或参数仅需输入前几位就可以用Tab键补全;CtrlR:用于查找使用过的命令(history命令用于列出之前使用过的所有命令,然后输入!命令加上编号(!2)就可以直接执行该历史命令);CtrlL:清除屏幕并将当前行移到页面顶部;CtrlC:中止当前正在执行的命令;CtrlU:从光标位置剪切到行首;CtrlK:从光标位置剪切到行尾;CtrlW:剪切光标左侧的一个单词;CtrlY:粘贴CtrlUKY剪切的命令;CtrlA:光标跳到命令行的开头;CtrlE:光标跳到命令行的结尾;CtrlD:关闭Shell会话;文件和目录文件的组织
查看路径pwd
显示当前目录的路径
which
查看命令的可执行文件所在路径,Linux下,每一条命令其实都对应一个可执行程序,在终端中输入命令,按回车的时候,就是执行了对应的那个程序,which命令本身对应的程序也存在于Linux中。
总的来说一个命令就是一个可执行程序。
浏览和切换目录ls
列出文件和目录,它是Linux最常用的命令之一。
【常用参数】a显示所有文件和目录包括隐藏的l显示详细列表h适合人类阅读的t按文件最近一次修改时间排序i显示文件的inode(inode是文件内容的标识)
cd
cd是英语changedirectory的缩写,表示切换目录。cd跳转到根目录cd跳转到家目录cd。。跳转到上级目录cd。home跳转到当前目录的home目录下cdhomelion跳转到根目录下的home目录下的lion目录cd不添加任何参数,也是回到家目录复制代码
〔注意〕输入cdho单次tab键会自动补全路径两次tab键会列出所有可能的目录列表。du
列举目录大小信息。
【常用参数】h适合人类阅读的;a同时列举出目录下文件的大小信息;s只显示总计大小,不显示具体信息。浏览和创建文件cat
一次性显示文件所有内容,更适合查看小的文件。catcloudinit。log复制代码
【常用参数】n显示行号。less
分页显示文件内容,更适合查看大的文件。lesscloudinit。log复制代码
【快捷操作】空格键:前进一页(一个屏幕);b键:后退一页;回车键:前进一行;y键:后退一行;上下键:回退或前进一行;d键:前进半页;u键:后退半页;q键:停止读取文件,中止less命令;键:显示当前页面的内容是文件中的第几行到第几行以及一些其它关于本页内容的详细信息;h键:显示帮助文档;键:进入搜索模式后,按n键跳到一个符合项目,按N键跳到上一个符合项目,同时也可以输入正则表达式匹配。head
显示文件的开头几行(默认是10行)headcloudinit。log复制代码
【参数】n指定行数headcloudinit。logn2tail
显示文件的结尾几行(默认是10行)tailcloudinit。log复制代码
【参数】n指定行数tailcloudinit。logn2f会每过1秒检查下文件是否有更新内容,也可以用s参数指定间隔时间tailfs4xxx。logtouch
创建一个文件touchnewfile复制代码mkdir
创建一个目录mkdirnewfolder复制代码
【常用参数】p递归的创建目录结构mkdirponetwothree文件的复制和移动cp
拷贝文件和目录cpfilefilecopyfile是目标文件,filecopy是拷贝出来的文件cpfileone把file文件拷贝到one目录下,并且文件名依然为filecpfileonefilecopy把file文件拷贝到one目录下,文件名为filecopycp。txtfolder把当前目录下所有txt文件拷贝到folder目录下复制代码
【常用参数】r递归的拷贝,常用来拷贝一整个目录mv
移动(重命名)文件或目录,与cp命令用法相似。mvfileone将file文件移动到one目录下mvnewfolderone将newfolder文件夹移动到one目录下mv。txtfolder把当前目录下所有txt文件移动到folder目录下mvfilenewfilefile文件重命名为newfile复制代码文件的删除和链接rm
删除文件和目录,由于Linux下没有回收站,一旦删除非常难恢复,因此需要谨慎操作rmnewfile删除newfile文件rmf1f2f3同时删除f1f2f33个文件复制代码
【常用参数】i向用户确认是否删除;f文件强制删除;r递归删除文件夹,著名的删除操作rmrf。ln
英文Link的缩写,表示创建链接。
学习创建链接之前,首先要理解链接是什么,我们先来看看Linux的文件是如何存储的:
Linux文件的存储方式分为3个部分,文件名、文件内容以及权限,其中文件名的列表是存储在硬盘的其它地方和文件内容是分开存放的,每个文件名通过inode标识绑定到文件内容。
Linux下有两种链接类型:硬链接和软链接。硬链接
使链接的两个文件共享同样文件内容,就是同样的inode,一旦文件1和文件2之间有了硬链接,那么修改任何一个文件,修改的都是同一块内容,它的缺点是,只能创建指向文件的硬链接,不能创建指向目录的(其实也可以,但比较复杂)而软链接都可以,因此软链接使用更加广泛。lnfile1file2创建file2为file1的硬链接复制代码
如果我们用rmfile1来删除file1,对file2没有什么影响,对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上删除。只有同时删除了file1与file2后,它们共同指向的文件内容才会消失。软链接
软链接就类似windows下快捷方式。lnsfile1file2复制代码
执行lsl命名查看当前目录下文件的具体信息total0rwrr1rootroot0Jan1406:29file1lrwxrwxrwx1rootroot5Jan1406:42file2file1表示file2指向file1复制代码
其实file2只是file1的一个快捷方式,它指向的是file1,所以显示的是file1的内容,但其实file2的inode与file1并不相同。如果我们删除了file2的话,file1是不会受影响的,但如果删除file1的话,file2就会变成死链接,因为指向的文件不见了。用户与权限用户
Linux是一个多用户的操作系统。在Linux中,理论上来说,我们可以创建无数个用户,但是这些用户是被划分到不同的群组里面的,有一个用户,名叫root,是一个很特殊的用户,它是超级用户,拥有最高权限。
自己创建的用户是有限权限的用户,这样大大提高了Linux系统的安全性,有效防止误操作或是病毒攻击,但是我们执行的某些命令需要更高权限时可以使用sudo命令。sudo
以root身份运行命令sudodate当然查看日期是不需要sudo的这里只是演示,sudo完之后一般还需要输入用户密码的复制代码useraddpasswduseradd添加新用户passwd修改用户密码
这两个命令需要root用户权限useraddlion添加一个lion用户,添加完之后在home路径下可以查看passwdlion修改lion用户的密码复制代码userdel
删除用户,需要root用户权限userdellion只会删除用户名,不会从home中删除对应文件夹userdellionr会同时删除home下的对应文件夹复制代码su
切换用户,需要root用户权限sudosu切换为root用户(exit命令或CTRLD快捷键都可以使普通用户切换为root用户)sulion切换为普通用户su切换为root用户复制代码群组的管理
Linux中每个用户都属于一个特定的群组,如果你不设置用户的群组,默认会创建一个和它的用户名一样的群组,并且把用户划归到这个群组。groupadd
创建群组,用法和useradd类似。groupaddfriends复制代码groupdel
删除一个已存在的群组groupdelfoo删除foo群组复制代码groups
查看用户所在群组groupslion查看lion用户所在的群组复制代码usermod
用于修改用户的账户。
【常用参数】l对用户重命名。需要注意的是home中的用户家目录的名字不会改变,需要手动修改。g修改用户所在的群组,例如usermodgfriendslion修改lion用户的群组为friends。G一次性让用户添加多个群组,例如usermodGfriends,foo,barlion。aG会让你离开原先的群组,如果你不想这样做的话,就得再添加a参数,意味着append追加的意思。chgrp
用于修改文件的群组。chgrpbarfile。txtfile。txt文件的群组修改为bar复制代码chown
改变文件的所有者,需要root身份才能运行。chownlionfile。txt把其它用户创建的file。txt转让给lion用户chownlion:barfile。txt把file。txt的用户改为lion,群组改为bar复制代码
【常用参数】R递归设置子目录和子文件,chownRlion:lionhomefrank把frank文件夹的用户和群组都改为lion。文件权限管理chmod
修改访问权限。chmod740file。txt复制代码
【常用参数】R可以递归地修改文件访问权限,例如chmodR777homelion
修改权限的确简单,但是理解其深层次的意义才是更加重要的。下面我们来系统的学习Linux的文件权限。〔rootlion〕lsldrwxrxrx5rootroot4096Apr132020climblrwxrwxrwx1rootroot7Jan1406:41hello2。chello。crwrr1rootroot149Jan1306:14hello。c复制代码
其中drwxrxrx表示文件或目录的权限。让我们一起来解读它具体代表什么?d:表示目录,就是说这是一个目录,普通文件是,链接是l。r:read表示文件可读。w:write表示文件可写,一般有写的权限,就有删除的权限。x:execute表示文件可执行。:表示没有相应权限。
权限的整体是按用户来划分的,如下图所示:
现在再来理解这句权限drwxrxrx的意思:它是一个文件夹;它的所有者具有:读、写、执行权限;它的群组用户具有:读、执行的权限,没有写的权限;它的其它用户具有:读、执行的权限,没有写的权限。
现在理解了权限,我们使用chmod来尝试修改权限。chmod它不需要是root用户才能运行的,只要你是此文件所有者,就可以用chmod来修改文件的访问权限。数字分配权限
权限
数字
r
4hrw
2hrx
1hr因此要改变权限,只要做一些简单的加法就行:chmod640hello。c分析6420表示所有者具有rw权限4400表示群组用户具有r权限0000表示其它用户没有权限对应文字权限为:rwr复制代码用字母来分配权限u:user的缩写,用户的意思,表示所有者。g:group的缩写,群组的意思,表示群组用户。o:other的缩写,其它的意思,表示其它用户。a:all的缩写,所有的意思,表示所有用户。:加号,表示添加权限。:减号,表示去除权限。:等于号,表示分配权限。chmodurxfile文件file的所有者增加读和运行的权限chmodgrfile文件file的群组用户增加读的权限chmodorfile文件file的其它用户移除读的权限chmodgrorfile文件file的群组用户增加读的权限,其它用户移除读的权限chmodgorfile文件file的群组和其他用户移除读的权限chmodxfile文件file的所有用户增加运行的权限chmodurwx,gr,ofile文件file的所有者分配读写和执行的权限,群组其它用户分配读的权限,其他用户没有任何权限复制代码查找文件locate
搜索包含关键字的所有文件和目录。后接需要查找的文件名,也可以用正则表达式。安装locateyumyinstallmlocate安装包updatedb更新数据库复制代码locatefile。txtlocatefil。txt复制代码
〔注意〕locate命令会去文件数据库中查找命令,而不是全磁盘查找,因此刚创建的文件并不会更新到数据库中,所以无法被查找到,可以执行updatedb命令去更新数据库。find
用于查找文件,它会去遍历你的实际硬盘进行查找,而且它允许我们对每个找到的文件进行后续操作,功能非常强大。find何处何物做什么复制代码何处:指定在哪个目录查找,此目录的所有子目录也会被查找。何物:查找什么,可以根据文件的名字来查找,也可以根据其大小来查找,还可以根据其最近访问时间来查找。做什么:找到文件后,可以进行后续处理,如果不指定这个参数,find命令只会显示找到的文件。根据文件名查找findnamefile。txt当前目录以及子目录下通过名称查找文件find。namesyslog当前目录以及子目录下通过名称查找文件findnamesyslog整个硬盘下查找syslogfindvarlognamesyslog在指定的目录varlog下查找syslog文件findvarlognamesyslog查找syslog1、syslog2。。。等文件,通配符表示所有findvarlognamesyslog查找包含syslog的文件复制代码
〔注意〕find命令只会查找完全符合何物字符串的文件,而locate会查找所有包含关键字的文件。根据文件大小查找findvarsize10Mvar目录下查找文件大小超过10M的文件findvarsize50kvar目录下查找文件大小小于50k的文件findvarsize1Gvar目录下查找文件大小查过1G的文件findvarsize1Mvar目录下查找文件大小等于1M的文件复制代码根据文件最近访问时间查找findname。txtatime7近7天内访问过的。txt结尾的文件复制代码仅查找目录或文件find。namefiletypef只查找当前目录下的file文件find。namefiletyped只查找当前目录下的file目录复制代码操作查找结果findname。txtprintfpu找出所有后缀为txt的文件,并按照pu格式打印,其中p文件名,u文件所有者findname。jpgdelete删除当前目录以及子目录下所有。jpg为后缀的文件,不会有删除提示,因此要慎用findname。cexecchmod600{};对每个。c结尾的文件,都进行exec参数指定的操作,{}会被查找到的文件替代,;是必须的结尾findname。cokchmod600{};和上面的功能一直,会多一个确认提示复制代码软件仓库
Linux下软件是以包的形式存在,一个软件包其实就是软件的所有文件的压缩包,是二进制的形式,包含了安装软件的所有指令。RedHat家族的软件包后缀名一般为。rpm,Debian家族的软件包后缀是。deb。
Linux的包都存在一个仓库,叫做软件仓库,它可以使用yum来管理软件包,yum是CentOS中默认的包管理工具,适用于RedHat一族。可以理解成Node。js的npm。yum常用命令yumupdateyumupgrade更新软件包yumsearchxxx搜索相应的软件包yuminstallxxx安装软件包yumremovexxx删除软件包切换CentOS软件源
有时候CentOS默认的yum源不一定是国内镜像,导致yum在线安装及更新速度不是很理想。这时候需要将yum源设置为国内镜像站点。国内主要开源的镜像站点是网易和阿里云。
1、首先备份系统自带yum源配置文件mvetcyum。repos。dCentOSBase。repoetcyum。repos。dCentOSBase。repo。backup
2、下载阿里云的yum源配置文件到etcyum。repos。dCentOS7wgetOetcyum。repos。dCentOSBase。repohttp:mirrors。aliyun。comrepoCentos7。repo复制代码
3、生成缓存yummakecache复制代码阅读手册
Linux命令种类繁杂,我们凭借记忆不可能全部记住,因此学会查用手册是非常重要的。man安装更新mansudoyuminstallymanpages安装sudomandb更新复制代码man手册种类可执行程序或Shell命令;系统调用(Linux内核提供的函数);库调用(程序库中的函数);文件(例如etcpasswd);特殊文件(通常在dev下);游戏;杂项(man(7),groff(7));系统管理命令(通常只能被root用户使用);内核子程序。man数字命令
输入man数字命令函数,可以查到相关的命令和函数,若不加数字,man默认从数字较小的手册中寻找相关命令和函数man3rand表示在手册的第三部分查找rand函数manls查找ls用法手册复制代码
man手册核心区域解析:(以manpwd为例)NAME命令名称和简单描述pwdreturnworkingdirectorynameSYNOPSIS使用此命令的所有方法pwd〔LP〕DESCRIPTION包括所有参数以及用法Thepwdutilitywritestheabsolutepathnameofthecurrentworkingdirectorytothestandardoutput。Someshellsmayprovideabuiltinpwdcommandwhichissimilaroridenticaltothisutility。Consultthebuiltin(1)manualpage。Theoptionsareasfollows:LDisplaythelogicalcurrentworkingdirectory。PDisplaythephysicalcurrentworkingdirectory(allsymboliclinksresolved)。Ifnooptionsarespecified,theLoptionisassumed。SEEALSO扩展阅读相关命令builtin(1),cd(1),csh(1),sh(1),getcwd(3)复制代码help
man命令像新华词典一样可以查询到命令或函数的详细信息,但其实我们还有更加快捷的方式去查询,commandhelp或commandh,它没有man命令显示的那么详细,但是它更加易于阅读。Linux进阶文本操作grep
全局搜索一个正则表达式,并且打印到屏幕。简单来说就是,在文件中查找关键字,并显示关键字所在行。基础语法greptextfiletext代表要搜索的文本,file代表供搜索的文件实例〔rootlion〕greppathetcprofilepathmunge(){pathmungeusrsbinpathmungeusrlocalsbinpathmungeusrlocalsbinafterpathmungeusrsbinafterunsetfpathmunge复制代码常用参数i忽略大小写,grepipathetcprofilen显示行号,grepnpathetcprofilev只显示搜索文本不在的那些行,grepvpathetcprofiler递归查找,greprhelloetc,Linux中还有一个rgrep命令,作用相当于grepr高级用法
grep可以配合正则表达式使用。grepEpathetcprofile完全匹配pathgrepEpathetcprofile匹配path开头的字符串grepE〔Pp〕athetcprofile匹配path或Path复制代码sort
对文件的行进行排序。基础语法sortname。txt对name。txt文件进行排序复制代码实例用法
为了演示方便,我们首先创建一个文件name。txt,放入以下内容:ChristopherShawnTedRockNoahZacharyBella复制代码
执行sortname。txt命令,会对文本内容进行排序。常用参数o将排序后的文件写入新文件,sortonamesorted。txtname。txt;r倒序排序,sortrname。txt;R随机排序,sortRname。txt;n对数字进行排序,默认是把数字识别成字符串的,因此138会排在25前面,如果添加了n数字排序的话,则25会在138前面。wc
wordcount的缩写,用于文件的统计。它可以统计单词数目、行数、字符数,字节数等。基础语法wcname。txt统计name。txt复制代码实例用法〔rootlion〕wcname。txt131391name。txt复制代码第一个13,表示行数;第二个13,表示单词数;第三个91,表示字节数。常用参数l只统计行数,wclname。txt;w只统计单词数,wcwname。txt;c只统计字节数,wccname。txt;m只统计字符数,wcmname。txt。uniq
删除文件中的重复内容。基础语法uniqname。txt去除name。txt重复的行数,并打印到屏幕上uniqname。txtuniqname。txt把去除重复后的文件保存为uniqname。txt复制代码
【注意】它只能去除连续重复的行数。常用参数c统计重复行数,uniqcname。txt;d只显示重复的行数,uniqdname。txt。cut
剪切文件的一部分内容。基础语法cutc24name。txt剪切每一行第二到第四个字符复制代码常用参数d用于指定用什么分隔符(比如逗号、分号、双引号等等)cutd,name。txt;f表示剪切下用分隔符分割的哪一块或哪几块区域,cutd,f1name。txt。重定向管道流
在Linux中一个命令的去向可以有3个地方:终端、文件、作为另外一个命令的入参。
命令一般都是通过键盘输入,然后输出到终端、文件等地方,它的标准用语是stdin、stdout以及stderr。标准输入stdin,终端接收键盘输入的命令,会产生两种输出;标准输出stdout,终端输出的信息(不包含错误信息);标准错误输出stderr,终端输出的错误信息。
重定向
把本来要显示在终端的命令结果,输送到别的地方(到文件中或者作为其他命令的输入)。输出重定向
表示重定向到新的文件,cutd,f1notes。csvname。csv,它表示通过逗号剪切notes。csv文件(剪切完有3个部分)获取第一个部分,重定向到name。csv文件。
我们来看一个具体示例,学习它的使用,假设我们有一个文件notes。csv,文件内容如下:Mark1,951100,很不错1Mark2,952100,很不错2Mark3,953100,很不错3Mark4,954100,很不错4Mark5,955100,很不错5Mark6,956100,很不错6复制代码
执行命令:cutd,f1notes。csvname。csv最后输出如下内容:Mark1Mark2Mark3Mark4Mark5Mark6复制代码
【注意】使用要注意,如果输出的文件不存在它会新建一个,如果输出的文件已经存在,则会覆盖。因此执行这个操作要非常小心,以免覆盖其它重要文件。输出重定向
表示重定向到文件末尾,因此它不会像命令这么危险,它是追加到文件的末尾(当然如果文件不存在,也会被创建)。
再次执行cutd,f1notes。csvname。csv,则会把名字追加到name。csv里面。Mark1Mark2Mark3Mark4Mark5Mark6Mark1Mark2Mark3Mark4Mark5Mark6复制代码
我们平时读的log日志文件其实都是用这个命令输出的。输出重定向2
标准错误输出catnotexistfile。csvres。txt2errors。log复制代码当我们cat一个文件时,会把文件内容打印到屏幕上,这个是标准输出;当使用了res。txt时,则不会打印到屏幕,会把标准输出写入文件res。txt文件中;2errors。log当发生错误时会写入errors。log文件中。输出重定向2
标准错误输出(追加到文件末尾)同相似。输出重定向21
标准输出和标准错误输出都重定向都一个地方catnotexistfile。csvres。txt21覆盖输出catnotexistfile。csvres。txt21追加输出复制代码
目前为止,我们接触的命令的输入都来自命令的参数,其实命令的输入还可以来自文件或者键盘的输入。
输入重定向
符号用于指定命令的输入。catname。csv指定命令的输入为name。csv复制代码
虽然它的运行结果与catname。csv一样,但是它们的原理却完全不同。catname。csv表示cat命令接收的输入是notes。csv文件名,那么要先打开这个文件,然后打印出文件内容。catname。csv表示cat命令接收的输入直接是notes。csv这个文件的内容,cat命令只负责将其内容打印,打开文件并将文件内容传递给cat命令的工作则交给终端完成。输入重定向
将键盘的输入重定向为某个命令的输入。sortnEND输入这个命令之后,按下回车,终端就进入键盘输入模式,其中END为结束命令(这个可以自定义)wcmEND统计输入的单词复制代码管道
把两个命令连起来使用,一个命令的输出作为另外一个命令的输入,英文是pipeline,可以想象一个个水管连接起来,管道算是重定向流的一种。
举几个实际用法案例:cutd,f1name。csvsortsortedname。txt第一步获取到的name列表,通过管道符再进行排序,最后输出到sortedname。txtdusortnrheaddu表示列举目录大小信息sort进行排序,n表示按数字排序,r表示倒序head前10行文件greplogIrvarlogcutd:f1sortuniqgreplogIrvarlog表示在log文件夹下搜索varlog文本,r表示递归,I用于排除二进制文件cutd:f1表示通过冒号进行剪切,获取剪切的第一部分sort进行排序uniq进行去重复制代码流
流并非一个命令,在计算机科学中,流stream的含义是比较难理解的,记住一点即可:流就是读一点数据,处理一点点数据。其中数据一般就是二进制格式。上面提及的重定向或管道,就是把数据当做流去运转的。
到此我们就接触了,流、重定向、管道等Linux高级概念及指令。其实你会发现关于流和管道在其它语言中也有广泛的应用。Angular中的模板语法中可以使用管道。Node。js中也有stream流的概念。查看进程
在Windows中通过CtrlAltDelete快捷键查看软件进程。w
帮助我们快速了解系统中目前有哪些用户登录着,以及他们在干什么。〔rootlion〕w06:31:53up25days,9:53,1user,loadaverage:0。00,0。01,0。05USERTTYFROMLOGINIDLEJCPUPCPUWHATrootpts0118。31。243。5305:561。00s0。02s0。00sw06:31:53:表示当前时间up25days,9:53:表示系统已经正常运行了25天9小时53分钟1user:表示一个用户loadaverage:0。00,0。01,0。05:表示系统的负载,3个值分别表示1分钟的平均负载,5分钟的平均负载,15分钟的平均负载USER:表示登录的用于TTY:登录的终端名称为pts0FROM:连接到服务器的ip地址LOGIN:登录时间IDLE:用户有多久没有活跃了JCPU:该终端所有相关的进程使用的CPU时间,每当进程结束就停止计时,开始新的进程则会重新计时PCPU:表示CPU执行当前程序所消耗的时间,当前进程就是在WHAT列里显示的程序WHAT:表示当下用户正运行的程序是什么,这里我运行的是w复制代码ps
用于显示当前系统中的进程,ps命令显示的进程列表不会随时间而更新,是静态的,是运行ps命令那个时刻的状态或者说是一个进程快照。基础语法〔rootlion〕psPIDTTYTIMECMD1793pts000:00:00bash4756pts000:00:00psPID:进程号,每个进程都有唯一的进程号TTY:进程运行所在的终端TIME:进程运行时间CMD:产生这个进程的程序名,如果在进程列表中看到有好几行都是同样的程序名,那么就是同样的程序产生了不止一个进程复制代码常用参数ef列出所有进程;efH以乔木状列举出所有进程;u列出此用户运行的进程;aux通过CPU和内存使用来过滤进程psauxless;auxsortpcpu按CPU使用降序排列,auxsortpmem表示按内存使用降序排列;axjf以树形结构显示进程,psaxjf它和pstree效果类似。top
获取进程的动态列表。top07:20:07up25days,10:41,1user,loadaverage:0。30,0。10,0。07Tasks:67total,1running,66sleeping,0stopped,0zombieCpu(s):0。7us,0。3sy,0。0ni,99。0id,0。0wa,0。0hi,0。0si,0。0stKiBMem:1882072total,552148free,101048used,1228876buffcacheKiBSwap:0total,0free,0used。1594080availMemPIDUSERPRNIVIRTRESSHRSCPUMEMTIMECOMMAND956root10101339641584810240S0。70。8263:13。01AliYunDun1root2005164436642400S0。00。23:23。63systemd2root200000S0。00。00:00。05kthreadd4root020000S0。00。00:00。00kworker0:0H复制代码top07:20:07up25days,10:41,1user,loadaverage:0。30,0。10,0。07相当w命令的第一行的信息。展示的这些进程是按照使用处理器CPU的使用率来排序的。kill
结束一个进程,killPID。kill956结束进程号为956的进程kill956957结束多个进程kill97291强制结束进程复制代码管理进程进程状态
主要是切换进程的状态。我们先了解下Linux下进程的五种状态:状态码R:表示正在运行的状态;状态码S:表示中断(休眠中,受阻,当某个条件形成后或接受到信号时,则脱离该状态);状态码D:表示不可中断(进程不响应系统异步信号,即使用kill命令也不能使其中断);状态码Z:表示僵死(进程已终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放);状态码T:表示停止(进程收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU等停止信号后停止运行)。前台进程后台进程
默认情况下,用户创建的进程都是前台进程,前台进程从键盘读取数据,并把处理结果输出到显示器。例如运行top命令,这就是一个一直运行的前台进程。
后台进程的优点是不必等待程序运行结束,就可以输入其它命令。在需要执行的命令后面添加符号,就表示启动一个后台进程。
启动后台进程,它的缺点是后台进程与终端相关联,一旦关闭终端,进程就自动结束了。cpname。csvnamecopy。csv复制代码nohup
使进程不受挂断(关闭终端等动作)的影响。nohupcpname。csvnamecopy。csv复制代码
nohup命令也可以和结合使用。nohupcpname。csvnamecopy。csv复制代码bg
使一个后台暂停运行的进程,状态改为后台运行。bg1不加任何参数的情况下,bg命令会默认作用于最近的一个后台进程,如果添加参数则会作用于指定标号的进程复制代码
实际案例1:1。执行greprloggreplog21命令启动一个前台进程,并且忘记添加符号2。ctrlz使进程状态转为后台暂停3。执行bg将命令转为后台运行复制代码
实际案例2:前端开发时我们经常会执行yarnstart启动项目此时我们执行ctrlz先使其暂停然后执行bg使其转为后台运行这样当前终端就空闲出来可以干其它事情了,如果想要唤醒它就使用fg命令即可(后面会讲)复制代码jobs
显示当前终端后台进程状态。〔rootlion〕jobs〔1〕Stoppedtop〔2〕Runninggrepcolorautorloggreplog21复制代码fg
fg使进程转为前台运行,用法和bg命令类似。
我们用一张图来表示前后台进程切换:
我们可以使程序在后台运行,成为后台进程,这样在当前终端中我们就可以做其他事情了,而不必等待此进程运行结束。守护进程
一个运行起来的程序被称为进程。在Linux中有些进程是特殊的,它不与任何进程关联,不论用户的身份如何,都在后台运行,这些进程的父进程是PID为1的进程,PID为1的进程只在系统关闭时才会被销毁。它们会在后台一直运行等待分配工作。我们将这类进程称之为守护进程daemon。
守护进程的名字通常会在最后有一个d,表示daemon守护的意思,例如systemd、httpd。systemd
systemd是一个Linux系统基础组件的集合,提供了一个系统和服务管理器,运行为PID1并负责启动其它程序。〔rootlion〕psauxUSERPIDCPUMEMVSZRSSTTYSTATSTARTTIMECOMMANDroot10。00。2516483852?SsFeb011:50usrlibsystemdsystemdswitchedrootsystemdeserialize22复制代码
通过命令也可以看到PID为1的进程就是systemd的系统进程。
systemd常用命令(它是一组命令的集合):systemctlstartnginx启动服务systemctlstopnginx停止服务systemctlrestartnginx重启服务systemctlstatusnginx查看服务状态systemctlreloadnginx重载配置文件(不停止服务的情况)systemctlenablenginx开机自动启动服务systemctldisablenginx开机不自动启动服务systemctlisenablednginx查看服务是否开机自动启动systemctllistunitfilestypeservice查看各个级别下服务的启动和禁用情况复制代码文件压缩解压打包:是将多个文件变成一个总的文件,它的学名叫存档、归档。压缩:是将一个大文件(通常指归档)压缩变成一个小文件。
我们常常使用tar将多个文件归档为一个总的文件,称为archive。然后用gzip或bzip2命令将archive压缩为更小的文件。
tar
创建一个tar归档。基础用法tarcvfsort。tarsort将sort文件夹归档为sort。tartarcvfarchive。tarfile1file2file3将file1file2file3归档为archive。tar复制代码常用参数cvf表示create(创建)verbose(细节)file(文件),创建归档文件并显示操作细节;tf显示归档里的内容,并不解开归档;rvf追加文件到归档,tarrvfarchive。tarfile。txt;xvf解开归档,tarxvfarchive。tar。gzipgunzip
压缩解压归档,默认用gzip命令,压缩后的文件后缀名为。tar。gz。gziparchive。tar压缩gunziparchive。tar。gz解压复制代码tar归档压缩
可以用tar命令同时完成归档和压缩的操作,就是给tar命令多加一个选项参数,使之完成归档操作后,还是调用gzip或bzip2命令来完成压缩操作。tarzcvfarchive。tar。gzarchive将archive文件夹归档并压缩tarzxvfarchive。tar。gz将archive。tar。gz归档压缩文件解压复制代码zcat、zless、zmore
之前讲过使用catlessmore可以查看文件内容,但是压缩文件的内容是不能使用这些命令进行查看的,而要使用zcat、zless、zmore进行查看。zcatarchive。tar。gz复制代码zipunzip
压缩解压zip文件(zip压缩文件一般来自windows操作系统)。命令安装RedHat一族中的安装方式yuminstallzipyuminstallunzip复制代码基础用法unziparchive。zip解压。zip文件unziplarchive。zip不解开。zip文件,只看其中内容ziprsort。zipsort将sort文件夹压缩为sort。zip,其中r表示递归复制代码编译安装软件
之前我们学会了使用yum命令进行软件安装,如果碰到yum仓库中没有的软件,我们就需要会更高级的软件安装源码编译安装。编译安装
简单来说,编译就是将程序的源代码转换成可执行文件的过程。大多数Linux的程序都是开放源码的,可以编译成适合我们的电脑和操纵系统属性的可执行文件。
基本步骤如下:下载源代码解压压缩包配置编译安装实际案例1、下载
我们来编译安装htop软件,首先在它的官网下载源码:bintray。comhtopsource
下载好的源码在本机电脑上使用如下命令同步到服务器上:scp文件名用户名服务器ip:目标路径scpDesktophtop3。0。0。tar。gzroot121。42。11。34:。复制代码
也可以使用wegt进行下载:wegt下载地址wegthttps:bintray。comhtopsourcedownloadfile?filepathhtop3。0。0。tar。gz复制代码2、解压文件tarzxvfhtop3。0。0。tar。gz解压cdhtop3。0。0进入目录复制代码3、配置
执行。configure,它会分析你的电脑去确认编译所需的工具是否都已经安装了。4、编译
执行make命令5、安装
执行makeinstall命令,安装完成后执行lsusrlocalbin查看是否有htop命令。如果有就可以执行htop命令查看系统进程了。网络ifconfig
查看ip网络相关信息,如果命令不存在的话,执行命令yuminstallnettools安装。〔rootlion〕ifconfigeth0:flags4163UP,BROADCAST,RUNNING,MULTICASTmtu1500inet172。31。24。78netmask255。255。240。0broadcast172。31。31。255ether00:16:3e:04:9c:cdtxqueuelen1000(Ethernet)RXpackets1592318bytes183722250(175。2MiB)RXerrors0dropped0overruns0frame0TXpackets1539361bytes154044090(146。9MiB)TXerrors0dropped0overruns0carrier0collisions0lo:flags73UP,LOOPBACK,RUNNINGmtu65536inet127。0。0。1netmask255。0。0。0looptxqueuelen1000(LocalLoopback)RXpackets0bytes0(0。0B)RXerrors0dropped0overruns0frame0TXpackets0bytes0(0。0B)TXerrors0dropped0overruns0carrier0collisions0复制代码
参数解析:eth0对应有线连接(对应你的有线网卡),就是用网线来连接的上网。eth是Ethernet的缩写,表示以太网。有些电脑可能同时有好几条网线连着,例如服务器,那么除了eht0,你还会看到eth1、eth2等。lo表示本地回环(LocalLoopback的缩写,对应一个虚拟网卡)可以看到它的ip地址是127。0。0。1。每台电脑都应该有这个接口,因为它对应着连向自己的链接。这也是被称之为本地回环的原因。所有经由这个接口发送的东西都会回到你自己的电脑。看起来好像并没有什么用,但有时为了某些缘故,我们需要连接自己。例如用来测试一个网络程序,但又不想让局域网或外网的用户查看,只能在此台主机上运行和查看所有的网络接口。例如在我们启动一个前端工程时,在浏览器输入127。0。0。1:3000启动项目就能查看到自己的web网站,并且它只有你能看到。wlan0表示无线局域网(上面案例并未展示)。host
ip地址和主机名的互相转换。软件安装yuminstallbindutils复制代码基础用法〔rootlion〕hostgithub。combaidu。comhasaddress13。229。188。59〔rootlion〕host13。229。188。5959。188。229。13。inaddr。arpadomainnamepointerec21322918859。apsoutheast1。compute。amazonaws。com。复制代码ssh连接远程服务器
通过非对称加密以及对称加密的方式(同HTTPS安全连接原理相似)连接到远端服务器。ssh用户ip:port1、sshroot172。20。10。1:22端口号可以省略不写,默认是22端口2、输入连接密码后就可以操作远端服务器了复制代码配置ssh
config文件可以配置ssh,方便批量管理多个ssh连接。
配置文件分为以下几种:全局ssh服务端的配置:etcsshsshdconfig;全局ssh客户端的配置:etcsshsshconfig(很少修改);当前用户ssh客户端的配置:。sshconfig。
【服务端config文件的常用配置参数】
服务端config参数
作用
Port
sshd服务端口号(默认是22)
PermitRootLogin
是否允许以root用户身份登录(默认是可以)
PasswordAuthentication
是否允许密码验证登录(默认是可以)
PubkeyAuthentication
是否允许公钥验证登录(默认是可以)
PermitEmptyPasswords
是否允许空密码登录(不安全,默认不可以)
〔注意〕修改完服务端配置文件需要重启服务systemctlrestartsshd
【客户端config文件的常用配置参数】
客户端config参数
作用
Host
别名
HostName
远程主机名(或IP地址)
Port
连接到远程主机的端口
User
用户名
配置当前用户的config:创建configvim。sshconfig填写一下内容Hostlion别名HostName172。x。x。xip地址Port22端口Userroot用户复制代码
这样配置完成后,下次登录时,可以这样登录sshlion会自动识别为root用户。
〔注意〕这段配置不是在服务器上,而是你自己的机器上,它仅仅是设置了一个别名。免密登录
ssh登录分两种,一种是基于口令(账号密码),另外一种是基于密钥的方式。
基于口令,就是每次登录输入账号和密码,显然这样做是比较麻烦的,今天主要学习如何基于密钥实现免密登录。基于密钥验证原理
客户机生成密钥对(公钥和私钥),把公钥上传到服务器,每次登录会与服务器的公钥进行比较,这种验证登录的方法更加安全,也被称为公钥验证登录。具体实现步骤
1、在客户机中生成密钥对(公钥和私钥)sshkeygen(默认使用RSA非对称加密算法)
运行完sshkeygen会在。ssh目录下,生成两个文件:idrsa。pub:公钥idrsa:私钥
2、把客户机的公钥传送到服务
执行sshcopyidroot172。x。x。x(sshcopyid它会把客户机的公钥追加到服务器。sshauthorizedkeys的文件中)。
执行完成后,运行sshroot172。x。x。x就可以实现免密登录服务器了。
配合上面设置好的别名,直接执行sshlion就可以登录,是不是非常方便。wget
可以使我们直接从终端控制台下载文件,只需要给出文件的HTTP或FTP地址。wget〔参数〕〔URL地址〕wgethttp:www。minjieren。comwordpress3。1zhCN。zip复制代码
wget非常稳定,如果是由于网络原因下载失败,wget会不断尝试,直到整个文件下载完毕。常用参数c继续中断的下载。备份scp
它是SecureCopy的缩写,表示安全拷贝。scp可以使我们通过网络,把文件从一台电脑拷贝到另一台电脑。
scp是基于ssh的原理来运作的,ssh会在两台通过网络连接的电脑之间创建一条安全通信的管道,scp就利用这条管道安全地拷贝文件。scpsourcefiledestinationfilesourcefile表示源文件,destinationfile表示目标文件复制代码
其中sourcefile和destinationfile都可以这样表示:userip:filename,user是登录名,ip是域名或ip地址。filename是文件路径。scpfile。txtroot192。168。1。5:root表示把我的电脑中当前文件夹下的file。txt文件拷贝到远程电脑scproot192。168。1。5:rootfile。txtfile。txt表示把远程电脑上的file。txt文件拷贝到本机复制代码rsync
rsync命令主要用于远程同步文件。它可以同步两个目录,不管它们是否处于同一台电脑。它应该是最常用于增量备份的命令了。它就是智能版的scp命令。软件安装yuminstallrsync复制代码基础用法rsyncarvImagesbackups将Images目录下的所有文件备份到backups目录下rsyncarvImagesroot192。x。x。x:backups同步到服务器的backups目录下复制代码常用参数a保留文件的所有信息,包括权限,修改日期等;r递归调用,表示子目录的所有文件也都包括;v冗余模式,输出详细操作信息。
默认地,rsync在同步时并不会删除目标目录的文件,例如你在源目录中删除一个文件,但是用rsync同步时,它并不会删除同步目录中的相同文件。如果向删除也可以这么做:rsyncarvdeleteImagesbackups。系统halt
关闭系统,需要root身份。halt复制代码reboot
重启系统,需要root身份。reboot复制代码poweroff
直接运行即可关机,不需要root身份。Vim编辑器Vim是什么?
Vim是从vi发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。Vim常用模式交互模式插入模式命令模式可视模式交互模式
也成为正常模式,这是Vim的默认模式,每次运行Vim程序的时候,就会进入这个模式。
例如执行vimname。txt则会进入交互模式。
交互模式特征:在这个模式下,你不能输入文本;它可以让我们在文本间移动,删除一行文本,复制黏贴文本,跳转到指定行,撤销操作,等等。插入模式
这个模式是我们熟悉的文本编辑器的模式,就是可以输入任何你想输入的内容。进入这个模式有几种方法,最常用的方法是按字母键i(i、I、a、A、o、O都可以进入插入模式,只是所处的位置不同),退出这种模式,只需要按下Esc键。i,I进入输入模式Insertmode:i为从目前光标所在处输入,I为在目前所在行的第一个非空格符处开始输入;a,A进入输入模式Insertmode:a为从目前光标所在的下一个字符处开始输入,A为从光标所在行的最后一个字符处开始输入;o,O进入输入模式Insertmode:o为在目前光标所在的下一行处输入新的一行;O为在目前光标所在处的上一行输入新的一行。命令模式
命令模式也称为底线命令模式,这个模式下可以运行一些命令例如退出,保存,等动作。
也可以用这个模式来激活一些Vim配置,例如语法高亮,显示行号,等。甚至还可以发送一些命令给终端命令行,例如ls、cp。
为了进入命令模式,首先要进入交互模式,再按下冒号键。
用一张图表示三种模式如何切换:
基本操作打开Vim
在终端命令行中输入vim回车后Vim就会被运行起来,也可以用Vim来打开一个文件,只需要在vim后面再加文件名。如vimfile。name,如果文件不存在,那么会被创建。插入
进入文件之后,此时处于交互模式,可以通过输入i进入插入模式。移动
在Vim的交互模式下,我们可以在文本中移动光标。h向左移动一个字符j向下移动一个字符k向上移动一个字符i向右移动一个字符
当然也可以使用四个方向键进行移动,效果是一样的。跳至行首和行末行首:在交互模式下,为了将光标定位到一行的开始位置,只需要按下数字键0即可,键盘上的Home键也有相同效果。行末:在交互模式下,为了将光标定位到一行的末尾,只需要按下美元符号键即可,键盘上的End键也有相同效果。按单词移动
在交互模式下,按字母键w可以一个单词一个单词的移动。退出文件
在交互模式下,按下冒号键:进入命令模式,再按下q键,就可以退出了。
如果在退出之前又修改了文件,就直接想用:q退出Vim,那么Vim会显示一个红字标明错误信息。此时我们有两个选择:保存并退出:wq或:x;不保存且退出:q!。标准操作删除字符
在交互模式下,将光标定位到一个你想要删除的字符上,按下字母键x你会发现这个字符被删除了。
也可以一次性删除多个字符,只需要在按x键之前输入数字即可。删除(剪切)单词,行删除一行:连按两次d来删除光标所在的那一行。删除多行:例如先输入数字2,再按下dd,就会删除从光标所在行开始的两行。删除一个单词:将光标置于一个单词的首字母处,然后按下dw。删除多个单词:例如先按数字键2再按dw就可以删除两个单词了。从光标所在位置删除至行首:d0。从光标所在位置删除至行末:d。复制单词,行复制行:按两次y会把光标所在行复制到内存中,和dd类似,dd用于剪切光标所在行。复制单词:yw会复制一个单词。复制到行末:y是复制从光标所在处到行末的所有字符。复制到行首:y0是复制光标所在处到行首的所有字符。粘贴
如果之前用dd或者yy剪切复制过来的,可以使用p来粘贴。同样也可以使用数字p来表示复制多次。替换一个字符
在交互模式下,将光标置于想要替换的字符上。按下r键,接着输入你要替换的字符即可。撤销操作
如果要撤销最近的修改,只需要按下u键,如果想要撤销最近四次修改,可以按下4,再按下u。重做
取消撤销,也就是重做之前的修改使用ctrlr。跳转到指定行
Vim编辑的文件中,每一行都有一个行号,行号从1开始,逐一递增。
行号默认是不显示,如果需要它显示的话,可以进入命令模式,然后输入setnu,如果要隐藏行号的话,使用setnonu。跳转到指定行:数字gg,例如7gg,表示跳转到第7行。要跳转到最后一行,按下G。要跳转到第一行,按下gg。高级操作查找
处于交互模式下,按下键,那么就进入查找模式,输入你要查找的字符串,然后按下回车。光标就会跳转到文件中下一个查找到的匹配处。如果字符串不存在,那么会显示patternnotfound。n跳转到下一个匹配项;N跳转到上一个匹配项。
〔注意〕用斜杠来进行的查找是从当前光标处开始向文件尾搜索,如果你要从当前光标处开始,向文件头搜索则使用?,当然也可以先按下gg跳转到第一行在进行全文搜索。查找并替换
替换光标所在行第一个匹配的字符串:语法:s旧字符串新字符串实例:sonetwo复制代码
替换光标所在行所有旧字符串为新字符串:语法:s旧字符串新字符串g复制代码
替换第几行到第几行中所有字符串:语法:n,ms旧字符串新字符串g实例:2,4sonetwog复制代码
最常用的就是全文替换了:语法:s旧字符串新字符串g复制代码合并文件
可以用冒号r(:r)实现在光标处插入一个文件的内容。:rfilename可以用Tab键来自动补全另外一个文件的路径复制代码分屏
Vim有一个特别便捷的功能那就是分屏,可以同时打开好几个文件,分屏之后,屏幕每一块被称为一个viewport,表示视口。横向分屏:sp文件名垂直分屏:vsp文件名分屏模式下的快捷键Ctrlw再加Ctrlw,表示从一个viewport移动光标到另外一个viewport;Ctrlw再加方向键,就可以移动到这个方向所处的下一个视口了;Ctrlw再加号,表示扩大当前视口;Ctrlw再加号,表示缩小当前视口;Ctrlw再加号,表示平均当前视口;Ctrlw再加r键,会反向调换视口位置;Ctrlw再加q键,会关闭当前视口;Ctrlw再加o键,会关闭除当前视口以外的所有视口;运行外部命令:!
在Vim中可以运行一些终端命令,只要先输入:!,然后接命令名称。
例如::!ls在Vim中打开的文件所在的目录运行ls命令复制代码可视模式
前面只讲了Vim的三种模式,其实还有一种模式叫做可视模式。
进入它的三种方式(都是从交互模式开始):v字符可视模式,进入后配合方向键选中字符后,然后再按d键可以删除选中。V行可视模式,进入后光标所在行默认被选中,然后再按d键可以删除所在行。Ctrlv块可视模式,它是可视模式最有用的功能了,配合d和I键可以实现删除选中的内容和插入内容。
同时选中多行,并在选中行头部插入内容的具体操作步骤:1。ctrlv进入块可视模式2。使用方向键进行选中(上下左右)假设选中5行3。输入I键进行多行同时插入操作4。插入完成后连续按两下esc键,实现多行同时插入相同字符复制代码
进入可视模式之后的操作键:d键,表示删除选中;I键,表示在选中之前插入;u键,表示选中变为小写;U键,表示选中变为大写;Vim配置选项参数
在Vim被启动后,可以运行一些指令来激活一些选项参数,但是这些选项参数的配置在退出Vim时会被忘记,例如前面讲解的激活行号。如果希望所在的配置是永久性的,那么需要在家目录(cd)创建一个Vim的配置文件。vimrc。。vimrcsetnumber显示行号syntaxon激活语法高亮setshowcmd实时看到输入的命令setignorecase搜索时不区分大小写setmousea激活鼠标,用鼠标选中时相当于进入可视模式复制代码
Vim配置非常丰富,我们可以通过个性化配置把Vim打造成属于自己的IDE等等。在github上也可以搜索到一些强大的Vim配置文件。总结
相信通过本文的学习,你应该会对Linux有一个更加全面的认识。
都看到这里了,就点个赞吧
湖南首个数字政协委员上线履职畅谈全媒体传播助力乡村振兴铸魂视频加载中1月13日,2023年湖南省两会期间,湖南首个数字政协委员上线履职。数字政协委员上线履职是红网时刻新闻在2023年湖南省两会期间,重磅推出的元宇宙新闻系列报道。红网时刻新
数字技术如何助力社会应急救援?有何难点急需解决?专家热议1月12日是腾讯科技向善创新周的第四日,一场以社会应急专题论坛2023数字技术助力公众应急参与为主题的论坛在线上举办。会上有专家指出,当前社会力量与官方救援力量的协同不足是影响实现
鹅鸭杀账号注册不了解决方法,鹅鸭杀三端注册保姆级教程鹅鸭杀账号注册不了的情况,通常是因为网络问题所导致的,需要使用加速器加速网络后才能正常进行注册,官方提供GP账号苹果账号以及邮箱账号,推荐大家使用邮箱账号,可以使用任意邮箱注册,并
数字化转型的一秒钟一秒钟可以干什么?数字化时代,当消费者在电商平台点下支付的一秒钟,后台完成了17亿次计算而就在这一秒钟里,有超过3000个快件进入到了寄递渠道一秒钟可以将5000个建筑施工项目数十
数字人民币在非试点区的使用体验数字人民币已经开展试点两年多了,但仍有部分城市不在试点区,相信大家都有疑问数字人民币在非试点区能不能用?好不好用?能用在什么地方?别急,接下来为您一一解答。数字人民币是什么?首先给
小米13Lite现身GooglePlayConsole数据库IT之家1月12日消息,在推出小米13和小米13Pro组成的小米13系列之后,小米可能计划很快推出同系列的另一款智能手机。小米13Lite已现身GooglePlayConsole数
微信群空间助手小程序将于3月30日下线IT之家1月12日消息,据微信群空间助手发布的停服公告显示,由于产品调整,群空间助手小程序将于北京时间2023年3月30日下线,届时将无法访问。请务必在2023年3月30日之前对需
支付宝一面多线程事务怎么回滚?背景介绍1。最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个
三大偏僻场景测试折叠屏信号OPPO一枝独秀,华为4G比三星5G强?近年来,智能手机飞速发展,已经成了我们生活中不可或缺的一部分。不过手机也有一个非常关键的地方,那就是信号,即使再贵的手机,出门没有信号也和砖头没什么差别。那么,在如今大热的折叠屏手
点名批评!爱奇艺这个操作惹争议1月12日,爱奇艺App限制投屏相关话题一度冲上微博热搜榜。微博热搜截图近期有众多网友反映,爱奇艺App限制投屏,黄金VIP会员只能选低清晰度的480P投屏,若希望以最高4K清晰度
宏基因组学研究微生物多样性的新兴学科宏基因组学研究微生物多样性的新兴学科作者TaniaLouis编辑MeisterXia一览宏基因组学是一门直接研究环境样本中所有微生物基因组集合的学科,是分子生物学和计算机科学结合的