shell 不保存退出_开坑啦!Linux系列之shell与vim速查表

本文是Linux系列的开篇,介绍了shell解释器的基本概念和常见种类,如bash、fish等,并分享了一些常用的bash快捷键。此外,文章详细讲解了Vim编辑器的三种模式(命令模式、插入模式、末行模式)及其常用操作,帮助读者快速掌握Vim基础,提升Linux环境下的工作效率。
摘要由CSDN通过智能技术生成

    开个Linux系列文章的坑,这篇算是是这个坑的开篇。只要我觉得我知道的Linux相关内容值得分享,那我就考虑填到这个坑里,这个坑的内容包括但不限于:Shell命令介绍与使用(包括一些小技巧)、软件安装部署使用配置等等。

    这篇先分享一下基础的shellvim

shell 解释器

    shell解释器一般运行在*nix环境(对应Windows环境的cmd.exe或者powershell.exe),主要是负责接收用户输入的操作指令(命令)、解释并将命令传递到操作系统内核执行,当然shell解释器在windows环境下也有不少移植产品,比如cygwin之类的。

种类

    不同系统上预装的shell解释器可能不同,我们可以通过cat /etc/shells查看当前系统支持的shell解释器种类,并通过echo $SHELL查看当前使用的解释器。

7c5c6d22ffb79870ffff58326dede4cb.png
Shell解释器与当前使用的解释器

    可以看到,这个系统目前仅支持bash(/bin/bash/usr/bin/bash都是bashsh都是直接软链到bash,默认*nix环境基本都是bash)。而且我们当前使用的就是/bin/bash。除了bash,其他种类的shell解释器还有fishcsh以及zsh等,这里我们主要使用bash,因此其他的解释器有需要可以自行了解。

    我们日常开发大多数是基于windows环境下开发的,这时候你可以安装cygwin模拟器,或者开启Windows10Linux子系统。当然只是简单学习的话,我们可以直接通过安装git获得阉割版的bash——git bash(最大的阉割就是没有诸如apt-getyumdnf之类的包管理器,因此你无法直接安装其他命令)。

快捷键

    一些基础的命令(比如:cdlscat之类的)我们就不介绍了,这里先介绍一些bash下笔者常用的快捷键(通常在其他shell解释器下也有相同的效果)。

    「移动相关快捷键」

快捷键说明
Ctrl A光标回到行首
Ctrl E光标回到行末
Ctrl B光标向行首移动一个字符
Ctrl F光标向行末移动一个字符
Alt B光标向行首移动一个单词
Alt F光标向行末移动一个单词

    「文本操作相关快捷键」

快捷键说明
Ctrl D删除光标后的第一个字符
Ctrl H删除光标前的第一个字符
Ctrl K剪切光标后的所有字符
Ctrl U剪切光标前的所有字符
Alt D剪切光标后的第一个单词
Ctrl W剪切光标前的第一个单词
Ctrl Y粘贴由Ctrl U或者Ctrl K或者Ctrl W或者Alt D命令剪切的字符

    bash下我记得是没有复制快捷键,要想实现复制效果也不麻烦,直接剪切后先Ctrl Y粘贴一份剪贴板内容即可;要想实现单词或者文本删除功能也简单,只剪切不粘贴即可。

    「指令操作相关快捷键」

快捷键说明
Ctrl ?撤销前一次操作(通常与文本操作快捷键配置使用)
Ctrl P <=> 上一条历史命令
Ctrl N <=> 下一条历史命令
Ctrl I <=> Tab等同于键入了Tab
Ctrl O <=> Ctrl M <=> Enter等同于键入了Enter
Ctrl C中断终端中正在执行的任务(这个应该都比较熟悉)
Ctrl S使终端发呆,可以使正在输出的终端屏幕停下来(比如你tail -f查看日志时就会用上)
Ctrl Q恢复Ctrl S引起的终端发呆
Ctrl D命令行为空状态下输入该快捷键将退出终端,等同于键入了logout
Ctrl R搜索历史命令

    这里的Ctrl R还有一个小技巧,搜索历史命令是依赖于history的,默认是匹配最近一次的命令,如果最近一次的命令不是我们想要的,那么可以通过再一次Ctrl R匹配往前的命令。

5755ee02b393410778b6d0d006df1abe.gif
Ctrl R向上搜索历史命令

    注意:以上这些快捷键笔者已经在CentOS7git bash下全部验证能正常使用并且效果如同说明,如果有异议请以你为准。考虑到录制视频后还要剪辑添加各个文本提示,最后还要转gif并且控制在2M大小比较麻烦,这里我们就不演示效果了,具体自己试试就知。

    Shell的一些高级用法比如数组、函数、脚本编写之类的本篇不讲,坑先挖了,讲不讲看心情。

vim 基础

VIM 高手从来不用鼠标

    这句话我是认同的,熟练掌握vim可以很大程度上脱离鼠标,能有效提高*nix环境下的工作效率。这一节我们简单介绍一下vim的基础操作,免得在往后的Linux使用生涯中每次还要百度、谷歌、SO怎么退出vim

bcf16b74d36b5f6fa5525f2fdc6d6776.png
传言180万程序员不知如何退出Vim编辑器

    首先是介绍vim的打开方式和对应的三种工作模式:命令模式(command mode)、插入模式(insert mode)、末行模式(last line mode)。

打开方式

    通常可以通过vim ${files}命令打开一个或者多个文件,通常可能会用到的选项有:

  • -R:只读方式打开文件(通常用于其他终端正在编辑该文件,一般也会有提示);
  • -r:恢复之前系统崩溃时正在编辑的文件(或者文件编辑一半,直接关了vnc或者SecureCRT之类的窗体,一般会在该目录生成.${file}.swp的隐藏文件);
  • +:打开后直接跳转到文本末尾行;
  • +${num}:打开后跳转到指定行。

工作模式——命令模式

    一般通过vim命令打开某个文件时,默认就是处于命令模式,命令模式下可以移动光标、复制剪切粘贴,但不能编辑文本,下面介绍笔者常用的命令模式指令。

    「移动相关指令」

指令说明
gg光标跳到第一行
G光标跳到最后一行
${num}gg光标跳到指定行,大于10行时按键时要迅速

    「文本操作相关指令」

指令说明
yy复制当前行
${num}yy复制包括当前行及往下的num
y0复制光标处至行首的所有字符
y$复制光标处至行末的所有字符
yw复制光标处至第一个单词末的所有字符
dd剪切当前行
${num}dd剪切包括当前行及往下的num
d0剪切光标处至行首的所有字符
d$剪切光标处至行末的所有字符
dw剪切光标处至第一个单词末的所有字符
p粘贴由d或者y剪切或者复制下来的文字(必须在命令模式下才有效)
u撤销上一条文本操作命令的执行

    「切换到插入模式」

指令说明
a切换后,光标停留在后一个字符处
A切换后,光标停留在行末处
i切换后,光标停留在光标前一个字符处
I切换后,光标停留在行首处
o切换后,先在当前光标所在行下方插入新行,然后让光标停留在新行首处
O切换后,先在当前光标所在行上方插入新行,然后让光标停留在新行首处

    「切换到末行模式」

空格切换到末行模式非常简单,只需要在命令行模式输入:半角冒号即可进入。

    「退出文件」

    命令模式除了切换到末行模式进行退出,还有一种退出方式,那就是ZZZZ有两种效果。

    效果一:如果当前文件是新文件并且没有任何改动,那么直接退出并且不会创建文件(相当于末行模式的q)。

    效果二:如果当前文件是新文件并且有改动或者不是新文件,那么这时候会保存并退出文件(相当于末行模式的wq)。

工作模式——插入模式

    进入插入模式后,一般都是编辑调整文本,这时候一般没什么比较特殊的命令可以介绍。特殊的笔者认为只有一个,那就是粘贴。我们可以从外部文件先复制一段文本到剪贴板里,然后在插入模式通过Shift Insert快捷键插入到当前光标所在处。插入模式只能通过Esc退出返回到命令模式,无法切换到末行模式或者直接退出。(当然,强行关闭窗体是一种做法!c364c2215b47cd769d20fc432c7e1db2.png)

工作模式——末行模式

    末行模式可以临时修改当前配置、临时执行命令、文本搜索与替换以及退出vim操作。

    「文本搜索与替换指令」

指令说明
/{searchText}在光标所在处向下搜索指定字串。当搜索到字串后,通过输入n可以继续向下搜索,输入N可以往上搜索
/?{searchText}在光标所在处向上搜索指定字串。当搜索到字串后,通过输入n可以继续向上搜索,输入N可以往下搜索
s#{oldString}#{newString}#在当前行搜索{oldString},然后将第一个出现的${oldString}替换成{newString}
s#{oldString}#{newString}#g在当前行搜索{oldString},然后全局替换换成{newString}
%s#{oldString}#{newString}#g全文搜索{oldString},然后全局替换成{newString}
{start},{end}s#{oldString}#{newString}#g在第start行到第end行之间搜索{oldString},然后全局替换成{newString}
.,+${num}s#{oldString}#{newString}#g在当前行到当前行往下num行之间搜索{oldString},然后全局替换成{newString}
u撤销上一条替换命令的执行

    「退出」

指令说明
w保存当前改动并返回到命令模式
q直接退出当前文件,如果有改动会提示无法退出
q!强制退出当前文件,如果有改动则丢弃改动(找不回来)
wq保存后退出
wq!强制保存后退出(如果文件没写权限则强制写入)
x基本等同于wq
qa退出所有文件,一般用在多文件编辑

    熟悉以上这些基本能够不怵vim了,甚至比一些初级运维还要玩的溜c364c2215b47cd769d20fc432c7e1db2.png,一些特别高级的(比如vim插件)我们就不展开了,先自己搞个环境熟悉了这些基本操作再说(windows环境推荐直接用git bash上手,本篇的所有内容在git bash上都能运行)。具体的vim模式切换这里也画了张图:

b4d99649f261c523db485751b2c81945.png
VIM模式切换

结束语

    本篇是Linux大坑开篇,简单理解本篇就是一张bashvim的快捷键和指令速查表。熟悉这些后续才有得开展,建议上手个十几遍以掌握每个速查表指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值