type
status
date
slug
summary
tags
category
icon
password
vim
vi 编辑器是Unix系统最初的编辑器,在GNU项目将vi编辑器移植到开源世界时,他们决定对其做一些改进,开发人员也就将它重命名为
vi improved。vim(vi improved) 是 vi 的升级版,所以只需要知道 vim 即可, 是一个非强大的文本编辑器,学习成本不低,需要长期使用才能记牢每一个指令操作。这是一份速查表,使用的时候注意区分大小写。
vim 的快捷键指令非常多,只列出一些实用性便于记忆。
打开文件
光标定位插入
快捷键 | 描述 |
i | 在当前光标位置插入 |
I | 在当前光标行第一个字符插入 |
a | 在当前光标后一个字符插入 |
A | 光标到当前行最后一个字符插入 |
H | 光标到第一行第一个字符 (是以终端大小来计算,不是原文本的第一行) |
M | 光标到中间第一行 (是以终端大小来计算) |
L | 光标到最后行第一个字符 (是以终端大小来计算) |
E | 将光标定位到右边的空格 |
o | 在当前光标下一行插入 |
O | 在当前光标上一行插入 |
:n | 将光标定位到 n 行 |
撤销
快捷键 | 描述 |
u | 撤销上一次编辑内容 |
U | 撤销当前光标整行内容 |
Ctrl + r | 还原初始文件状态 |
e! | 撤销所有修改,恢复打开文件时的状态 |
删除
快捷键 | 描述 |
dd | 删除当前行 |
dj | 删除上一行 |
dk | 删除下一行 |
:1,$d | 删除所有行 |
拷贝/粘贴
快捷键 | 描述 |
yy | 拷贝当前行 |
p | 在当前光标粘贴上一次拷贝的内容 |
搜索
快捷键 | 描述 |
:/text | 从上往下查找 text,按 n 向下搜索, 按 N 想前搜索 |
:?text | 从下往上查找 text,按 n 向下搜索, 按 N 想前搜索 |
替换
要想匹配
/ 需要反斜杠进行转义: \/快捷键 | 描述 |
:s/old/new | 找到old第一次出现的地方并用new来替换 |
:s/old/new/g | 找到所有old出现的地方并用new来替换(当前屏幕) |
:%s/old/new/g | 替换整个文件中的所有old |
:%s/old/new/gc | 替换整个文件中的所有old,但在每次出现时询问是否替换 |
:n,ms/old/new/g | 替换行号n和m之间的所有old |
退出
先按
ESC 键然后再操作后面的快捷键。快捷键 | 描述 |
:w | 写入但不退出 |
:w! | 强制保存,但不退出 |
:q! | 退出但不保存 |
:wq | 保存写入内容并退出 |
:w file | 将当前文件内容保存到 file 文件中 |
:qa! | 退出所有文件并不做保存,比如打开了多个文件 |
设置
快捷键 | 描述 |
:set ignorecase | 忽略大小写查找 |
:set noignorecase | 不忽略大小写查找 |
:set hlsearch | 高亮搜索结果 |
:set nohlsearch | 关闭高亮搜索显示 |
:set hlsearch | 高亮搜索结果 |
:set number | 显示行号 |
:set nonumber | 不显示行号 |
touch
创建一个空文件, 如果文件存在只会修改文件的创建时间
mkdir
make directory, 创建目录。
rm
删除指定目录或文件
注: 使用此命令需要非常小心, 一但删除无法恢复
find
指定某个目录下查找文件
ls
显示当前目录下的文件和目录,输出的列表是按字母排序 (某些发行版可能不一样)。
参数 | 描述 |
-l | 显示目录列表的详细信息 |
-h | 显示文件大小,需要和 -l 参数一起使用 |
-a | 列出所有文件,包括隐藏文件 |
-F | 显示文件类型 |
-i | 查看inode编号, 每个文件都有唯一的编号 |
-S | 以文件大小进行排序 |
-t | 以文件修改时间排序 |
-r | 输出结果倒序排列 |
文件权限说明,当敲入
ls -la 最左侧会出现10个字符:[-][rwx][r-x][r--] 转换为 1 234 567 890- 1 代表这个文件名是目录还是文件
- 文件
- d 目录
- l 链接文件
- b 则表示为设备文件里面的可供储存的周边设备(可随机存取设备)
- c 则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设 备)
- 234 拥有者权限, 分别为 可读、可写、可执行
- 567 群组使用者权限, 分别为 可读、可写、可执行
- 890 其他使用者权限, 分别为 可读、可写、可执行
权限的位置是不会改变的,有权限则显示,无权限则
- 显示。grep
强大的文本搜索工具,被称为Linux命令三剑客之老三。
命令用法:grep [option] pattern file...
参数 | 描述 |
-i | 忽略大小写 |
-n | 打印匹配行号 |
-c | 打印匹配成功的次数 |
--color | 高亮打印匹配文本 |
-o | 只打印匹配到的内容 |
-v | 反向查找 |
-E | 正则查找 |
-w | 匹配单词 |
-r | 从目录下递归搜索 |
cp
拷贝文件或目录
mv
mv 有2个用途:- 将文件或目录移动到另一个位置
- 将文件或目录重命名
注:实际上
mv 是用来移动文件或目录,只不过有类似重命名的功能而已。ifconfig
配置或显示系统网卡的网络参数
chmod
修改文件或目录权限
chmod [参数选项] [mode, 八进制或符号表示] files...
u符号代表当前用户。
g符号代表和当前用户在同一个组的用户,以下简称组用户。
o符号代表其他用户。
a符号代表所有用户。
r符号代表读权限以及八进制数4。
w符号代表写权限以及八进制数2。
x符号代表执行权限以及八进制数1。
X符号代表如果目标文件是可执行文件或目录,可给其设置可执行权限。
s符号代表设置权限suid和sgid,使用权限组合u+s设定文件的用户的ID位,g+s设置组用户ID位。
t符号代表只有目录或文件的所有者才可以删除目录下的文件。
+符号代表添加目标用户相应的权限。
- 符号代表删除目标用户相应的权限。
=符号代表添加目标用户相应的权限,删除未提到的权限。
文件权限码
权限 | 二进制值 | 八进制值 | 描述 |
--- | 000 | 0 | 没有任何权限 |
--x | 001 | 1 | 只有执行权限 |
-w- | 010 | 2 | 只有写入权限 |
-wx | 011 | 3 | 有写入和执行权限 |
r-- | 100 | 4 | 只有读取权限 |
r-x | 101 | 5 | 有读取和执行权限 |
rw- | 110 | 6 | 有读取和写入权限 |
rwx | 111 | 7 | 有全部权限 |
lsof
全名list open files, 列出当前系统已经被打开的文件。
systemctl
系统服务管理器指令, 通常用来设置某个服务器默认开机启动或关闭。
命令:
systemctl [command] [unit]service
管理操作系统服务的命令, 是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
ps
查看当前系统进程状态。
ps 命令非常复杂,且参数极多,由于 ps 历史问题,参数风格支持了三种 UNIX/BSD/``GNU` 这里不详细的介绍,感兴趣可以自行了解。- Unix 风格参数 - 前面加单破折线
- BSD 风格的参数 - 前面不加破折线
- GNU 风格长参数 - 前面加双破折线
Unix 风格参数
参数 | 描述 |
-A | 显示所有进程 |
-N | 显示与指定参数不符的所有进程 |
-a | 显示除控制进程和无终端进程外的所有进程 |
-d | 显示除控制进程外的所有进程 |
-e | 显示所有进程 |
-C cmdlist | 显示包含在cmdlist列表中的进程 |
-G grplist | 显示组ID在grplist列表中的进程 |
-U userlist | 显示属主的用户ID在userlist列表中的进程 |
-g grplist | 显示会话或组ID在grplist列表中的进程 |
-p pidlist | 显示PID在pidlist列表中的进程 |
-s sesslist | 显示会话ID在sesslist列表中的进程 |
-t ttylist | 显示终端ID在ttylist列表中的进程 |
-u userlist | 显示有效用户ID在userlist列表中的进程 |
-F | 显示更多额外输出(相对-f参数而言) |
-O format | 显示默认的输出列以及format列表指定的特定列 |
-M | 显示进程的安全信息 |
-c | 显示进程的额外条调度器信息 |
-l | 显示长列表 |
-o format | 仅显示由format指定的列表 |
-y | 不要显示进程标记(process tag, 表明进程状态的标记) |
-Z | 显示安全标签(security context)信息 |
-H | 用层级格式来显示进程(树状,用来显示父进程) |
-n namelist | 定义了WCHAN列显示的值 |
-w | 采用宽输出模式,不限宽显示 |
-L | 显示进程中的线程 |
-V | 显示PS命令的版本号 |
zip
归档数据,将目录或文件归档为
.zip 格式, zip 不是Linux中的标准归档工具, 是为了支持 windows 而存在。unzip
提取
zip 归档的文件或目录gzip
GNU 压缩/解压工具,用 Lempel-Ziv编码,格式为
.gz, 压缩后原文件将被删除注意:gzip 不能用于压缩整个目录, 只能用于压缩一个文件, 如果需要压缩整个目录可以考虑使用 zip 命令。
wget
用于从网络下载文件到本地
curl
curl 是一个非常强大的网络传输工具, 利用URL规则在命令行下工作的文件传输工具。参数 | 描述 |
-s, --silent | 不输出错误和进度信息, 只显示正常结果 |
-o, --output | 将结果输出到文件中 |
-O, --remote-name | 下载文件到本地,并将URL最后部分当做文件名 |
-L | HTTP请求跟随服务器重定向 |
-I, --head | 显示HTTP响应报文 |
-H | 设置请求头 |
-X | 指定HTTP请求方法,大写字母 |
-d | HTTP请求实体内容 |
--cookie | 指定发送cookie |
-v | 打印整个传输过程 |
-F, --form | 上传文件 |
-u | 指定用户名密码授权 |
--progress | 显示进度条 |
-f, --fail | 连接失败时不显示http错误 |
--retry | 请求重试 |
注意:参数不分前后
不传递任何参数只打印HTTP响应内容
- s 不输出错误和进度信息, 只显示正常结果
- o 指定文件名下载到本地,等价于 wget
- O 下载文件到本地, 并将URL最后部分当做文件名
- -progress 显示进度条
- L HTTP请求跟随服务器重定向
- I 或 --head 显示HTTP响应报文, 不打印响应内容
- H 设置请求头
- X 指明HTTP请求方法
- d 要发送的实体内容
- -cookie HTTP请求时携带的cookie信息
- v 打印整个传输过程
- F 上传文件,默认以POST方法请求
- u 请求授权
- -retry 请求重试
请求失败时设置重试次数
df
查看已挂载的磁盘使用情况。
描述
名称 | 描述 |
Filesystem | 设备的设备位置文件 |
Size | 能容纳多少个1024字节大小的块 |
Used | 已用了多少个1024字节大小的块 |
Avail | 还有多少个1024字节大小的块可用 |
Use% | 已用空间所占的比例 |
Mounted on | 设备挂载到了哪个挂载点上 |
du
显示文件或目录所占用的磁盘空间
参数 | 描述 |
-m | 以mb单位显示大小 |
-h | 自动格式化单位,以 K, M, G为单位 |
-s | 只显示总大小,列出最后累计的值 |
-c | 显示当前所有已列出文件总大小 |
-b | 以 bytes 为单位显示大小 |
apt-get
apt-get命令 是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个包管理系统。目录名称含义
目录名 | 描述 |
/ | 虚拟目录的根目录,通常不会在这里存储文件 |
/bin | 二进制目录,存放许多用户级的GNU工具 |
/boot | 启动目录,存放启动文件 |
/dev | 设备目录,Linux在这里创建设备节点 |
/etc | 系统配置文件目录 |
/home | 主目录,Linux在这里创建用户目录 |
/lib | 库目录,存放系统和应用程序的库文件 |
/media | 媒体目录,可移动媒体设备的常用挂载点 |
/mnt | 挂载目录,另一个可移动媒体设备的常用挂载点 |
/opt | 可选目录,常用于存放第三方软件包和数据文件 |
/proc | 进程目录,存放现有硬件及当期进程的相关信息 |
/root | ROOT用户的主目录 |
/sbin | 系统二进制目录,存放许多GNU管理员级工具 |
/run | 运行目录,存放系统运作时的运行时数据 |
/srv | 服务目录,存放本地服务的相关文件 |
/sys | 系统目录,存放系统硬件信息的相关文件 |
/tmp | 临时目录,可以在该目录中创建和删除临时工作文件 |
/usr | 用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里(Unix Software Resource) |
/var | 可变目录,用以存放经常变化的文件,比如日志文件 |
输出重定向
将命令输出的内容发送到一个文件中叫做
输出重定向 。 使用 > 大于号。下面展示了几个例子
有时不想覆盖文件而是追加内容,比如日志,可以使用
>> 2个大于号。echo
输出字符串或者变量
参数 | 描述 |
-n | 打印时不加换行符 |
-e | 解析字符 |
注: 一般情况下字符串不必加双引号, 如果包含转义字符就必须要加
- 作者:老白
- 链接:https://preston.us.kg/article/example-4
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

