开个Linux
系列文章的坑,这篇算是是这个坑的开篇。只要我觉得我知道的Linux
相关内容值得分享,那我就考虑填到这个坑里,这个坑的内容包括但不限于:Shell
命令介绍与使用(包括一些小技巧)、软件安装部署使用配置等等。
这篇先分享一下基础的shell
和vim
。
shell 解释器
shell
解释器一般运行在*nix
环境(对应Windows
环境的cmd.exe
或者powershell.exe
),主要是负责接收用户输入的操作指令(命令)、解释并将命令传递到操作系统内核执行,当然shell
解释器在windows
环境下也有不少移植产品,比如cygwin
之类的。
种类
不同系统上预装的shell
解释器可能不同,我们可以通过cat /etc/shells
查看当前系统支持的shell
解释器种类,并通过echo $SHELL
查看当前使用的解释器。
可以看到,这个系统目前仅支持bash
(/bin/bash
和/usr/bin/bash
都是bash
,sh
都是直接软链到bash
,默认*nix
环境基本都是bash
)。而且我们当前使用的就是/bin/bash
。除了bash
,其他种类的shell
解释器还有fish
、csh
以及zsh
等,这里我们主要使用bash
,因此其他的解释器有需要可以自行了解。
我们日常开发大多数是基于windows
环境下开发的,这时候你可以安装cygwin
模拟器,或者开启Windows10
的Linux
子系统。当然只是简单学习的话,我们可以直接通过安装git
获得阉割版的bash
——git bash
(最大的阉割就是没有诸如apt-get
、yum
、dnf
之类的包管理器,因此你无法直接安装其他命令)。
快捷键
一些基础的命令(比如:cd
、ls
、cat
之类的)我们就不介绍了,这里先介绍一些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
匹配往前的命令。
注意:以上这些快捷键笔者已经在CentOS7
和git bash
下全部验证能正常使用并且效果如同说明,如果有异议请以你为准。考虑到录制视频后还要剪辑添加各个文本提示,最后还要转gif
并且控制在2M
大小比较麻烦,这里我们就不演示效果了,具体自己试试就知。
Shell
的一些高级用法比如数组、函数、脚本编写之类的本篇不讲,坑先挖了,讲不讲看心情。
vim 基础
VIM 高手从来不用鼠标
这句话我是认同的,熟练掌握vim
可以很大程度上脱离鼠标,能有效提高*nix
环境下的工作效率。这一节我们简单介绍一下vim
的基础操作,免得在往后的Linux
使用生涯中每次还要百度、谷歌、SO
怎么退出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 | 切换后,先在当前光标所在行上方插入新行,然后让光标停留在新行首处 |
「切换到末行模式」
空格切换到末行模式非常简单,只需要在命令行模式输入:
半角冒号即可进入。
「退出文件」
命令模式除了切换到末行模式进行退出,还有一种退出方式,那就是ZZ
。ZZ
有两种效果。
效果一:如果当前文件是新文件并且没有任何改动,那么直接退出并且不会创建文件(相当于末行模式的q
)。
效果二:如果当前文件是新文件并且有改动或者不是新文件,那么这时候会保存并退出文件(相当于末行模式的wq
)。
工作模式——插入模式
进入插入模式后,一般都是编辑调整文本,这时候一般没什么比较特殊的命令可以介绍。特殊的笔者认为只有一个,那就是粘贴。我们可以从外部文件先复制一段文本到剪贴板里,然后在插入模式通过Shift Insert
快捷键插入到当前光标所在处。插入模式只能通过Esc
退出返回到命令模式,无法切换到末行模式或者直接退出。(当然,强行关闭窗体是一种做法!)
工作模式——末行模式
末行模式可以临时修改当前配置、临时执行命令、文本搜索与替换以及退出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
了,甚至比一些初级运维还要玩的溜,一些特别高级的(比如vim
插件)我们就不展开了,先自己搞个环境熟悉了这些基本操作再说(windows
环境推荐直接用git bash
上手,本篇的所有内容在git bash
上都能运行)。具体的vim
模式切换这里也画了张图:
结束语
本篇是Linux
大坑开篇,简单理解本篇就是一张bash
和vim
的快捷键和指令速查表。熟悉这些后续才有得开展,建议上手个十几遍以掌握每个速查表指令。