工具对比

对比项 rpm yum dpkg apt
系列 RedHat 系 RedHat 系 Debian 系 Debian 系
区别 包安装工具 依赖管理工具 包安装工具 依赖管理工具
对比项 rpm yum dpkg apt
系列 RedHat 系 RedHat 系 Debian 系 Debian 系
区别 包安装工具 依赖管理工具 包安装工具 依赖管理工具
移除软件包 rpm -e [module1][module2]… yum -remove dpkg -r package apt remove package
移除软件包及配置 dpkg -P apt purge package
下载的包存放位置 /var/cache/apt/archives
软件安装默认位置 rpm -ql /usr/share
可执行文件位置 /usr/bin /usr/bin
配置文件位置 /etc /etc
lib 文件位置 /usr/lib /usr/lib
可执行文件位置 /usr/bin /usr/bin
配置文件位置 /etc /etc
lib 文件位置 /usr/lib /usr/lib

基本命令

top(持续监听进程运行状态)

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
  • -b:使用批处理模式输出。一般和”-n”选项合用,用于把 top 命令重定向到文件中;
  • -n 次数:指定 top 命令执行的次数。一般和”-“选项合用;
  • -p 进程 PID:仅查看指定 ID 的进程;
  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
  • -u 用户名:只监听某个用户的进程;

在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:

  • ? 或 h:显示交互模式的帮助;
  • P:按照 CPU 的使用率排序,默认就是此选项;
  • M:按照内存的使用率排序;
  • N:按照 PID 排序;
  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
  • r:按照 PID 给某个进程重设优先级(Nice)值;
  • q:退出 top 命令;

jobs(后台进程)

选项 含义
-l(L 的小写) 列出进程的 PID 号。
-n 只列出上次发出通知后改变了状态的进程。
-p 只列出进程的 PID 号。
-r 只列出运行中的进程。
-s 只列出已停止的进程

kill(终止进程)

1
2
3
4
5
6
7
kill -STOP[-TERM/-QUIT/-INT] <PID>
# STOP 暂停进程
# INT (Ctrl+C) : 只对当前前台进程,和他的所在的进程组的每个进程都发送SIGINT信号,之后这些进程会执行信号处理程序再终止
# QUIT (Ctrl+\) :
# TERM : 当前进程会收到信号,而其子进程不会收到.如果当前进程被kill(即收到SIGTERM),则其子进程的父进程将为init,即pid为1的进程(kill <PID>)
# KILL : 当前进程收到该信号,注意该信号时无法被捕获的,也就是说进程无法执行信号处理程序,会直接发送默认行为,也就是直接退出 (kill -9 <PID>)
# HUP : 终止进程(无法终止nohup进程)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SIGHUP     终止进程     终端线路挂断
SIGINT 终止进程 中断进程
SIGQUIT 建立CORE文件终止进程,并且生成core文件
SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟踪自陷
SIGBUS 建立CORE文件 总线错误
SIGSEGV 建立CORE文件 段非法错误
SIGFPE 建立CORE文件 浮点异常
SIGIOT 建立CORE文件 执行I/O自陷
SIGKILL 终止进程 杀死进程
SIGPIPE 终止进程 向一个没有读进程的管道写数据
SIGALARM 终止进程 计时器到时
SIGTERM 终止进程 软件终止信号
SIGSTOP 停止进程 非终端来的停止信号
SIGTSTP 停止进程 终端来的停止信号
SIGCONT 忽略信号 继续执行一个停止的进程
SIGURG 忽略信号 I/O紧急信号
SIGIO 忽略信号 描述符上可以进行I/O
SIGCHLD 忽略信号 当子进程停止或退出时通知父进程
SIGTTOU 停止进程 后台进程写终端
SIGTTIN 停止进程 后台进程读终端
SIGXGPU 终止进程 CPU时限超时
SIGXFSZ 终止进程 文件长度过长
SIGWINCH 忽略信号 窗口大小发生变化
SIGPROF 终止进程 统计分布图用计时器到时
SIGUSR1 终止进程 用户定义信号1
SIGUSR2 终止进程 用户定义信号2
SIGVTALRM 终止进程 虚拟计时器到时

pkill

Mostly used for stopping processes.

1
2
# Kill all processes which match their full command instead of just the process name
pkill -f 'filename'

wait

Wait for a process to complete before proceeding.

image-20221127203916231

#

dpkg —list(查看已安装软件)

1
2
3
4
5
6
# 查看已安装软件
dpkg --list

# 卸载软件
sudo apt remove --purge [name] #卸载软件同时删除配置文件
sudo apt remove [name] #卸载该软件

shell 命令行的操作

暂停/恢复终端

<C-s> 暂停当前终端

<C-q> 恢复当前终端

文本操作

Ctrl + d — 删除一个字符,即 Delete 键(命令行若无字符,相当于 exit,处理多行标准输入时也表示 EOF)。

Ctrl + h — 退格删除一个字符,即 Backspace 键。

Ctrl + u — 删除光标所在位置左边与行首之间的所有字符。

Ctrl + k — 删除光标所在位置与行尾之间的所有字符。

Ctrl + w — 删除光标所在位置前任意个空格及其前的一个单词,或光标所在位置左边至所在单词首的所有字符。

<C-y> 复制上一次删除或剪切的条目

Ctrl + t — 光标处在行尾,则交换前两个字符的位置;否则交换光标处字符与前一字符位置,并且光标向右移动单个字符位置。

Ctrl + x + u — 按住 Ctrl 的同时再先后按 x 和 u,依次撤销命令行除添加字符的首次修改及其后的所有修改,否则恢复到空行。

移动光标

<C-a> 回到命令行的开头

<C-e> 回到命令行的结尾

<C-xx> 光标在输入的命令行首与行尾切换跳转

<C-f> 光标向前(Forward)/右移动一个字符位置

<C-b> 光标往回(Backward)/左移动一个字符位置

历史搜索模式

<C+r> 历史搜索模式: 提示符后的输入字符串匹配查找 history 记录中命令条目

<C+g> 从历史搜索模式(Ctrl + r)退出

Ctrl + p — 调出命令历史中的前一条(Previous)命令,即向上箭头键 ↑。

Ctrl + n — 调出命令历史中的下一条(Next)命令,即向下箭头键 ↓。

!(Bang)命令

!! — 输出并执行最近已执行过的一条命令。

!num — 执行 history 记录中第 num 条命令条目,num 正整数时,为正序;负数时,为反序。

!num:p — 输出第 num 条命令条目,不执行。

!num:gs/str1/str2/— 将第 num 条命令条目中的 str1 字符串替换为 str2,(若不加 g,则仅替换第一个匹配)。

!string — 输出最近已执行过的以 string 开头的命令条目。等同 !?string?。

!?string? — 输出最近已执行过的以 string 开头的命令条目。等同 !string。

!string:p — 输出最近已执行过的以 string 开头的命令条目。

文档格式化 gg + = + G

ps

  • (process status)命令用于显示当前进程的状态

ps [options] [--help]

  • -A 列出所有的进程

  • -w 显示加宽可以显示较多的资讯

  • -au 显示较详细的资讯

  • ==-aux 显示所有包含其他使用者的进程==

  • au(x) 输出格式 :

    1
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    • USER: 行程拥有者
    • PID: pid
    • %CPU: 占用的 CPU 使用率
    • %MEM: 占用的记忆体使用率
    • VSZ: 占用的虚拟记忆体大小
    • RSS: 占用的记忆体大小
    • TTY: 终端的次要装置号码 (minor device number of tty)
    • STAT: 该行程的状态:
      • D: 无法中断的休眠状态 (通常 IO 的进程)
      • R: 正在执行中
      • S: 静止状态
      • T: 暂停执行
      • Z: 不存在但暂时无法消除
      • W: 没有足够的记忆体分页可分配
      • <: 高优先序的行程
      • N: 低优先序的行程
      • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱 A I/O)
    • START: 行程开始时间
    • TIME: 执行的时间
    • COMMAND:所执行的指令
  • ==ps -ef | grep: 查找指定进程==

  • ==ps -u root: 显示 root 进程用户信息==

whereis

  • 用于查找文件。

  • 该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。

  • 该指令只能用于查找二进制文件、源代码文件和 man 手册页,一般文件的定位需使用 locate 命令。

语法

1
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

参数

  • -b  只查找二进制文件。
  • -B<目录>  只在设置的目录下查找二进制文件。
  • -f  不显示文件名前的路径名称。
  • -m  只查找说明文件。
  • -M<目录>  只在设置的目录下查找说明文件。
  • -s  只查找原始代码文件。
  • -S<目录>  只在设置的目录下查找原始代码文件。
  • -u  查找不包含指定类型的文件。
  • whereis filename - 输出信息从左至右分别为查询的程序名、文件路径、文件的 man 手册页路径。

vim 内插件

ctrlp(vim 内文件树)

image-20221121204804627

  • ctrl + j/k 进行上下选择
  • ctrl + x 在当前窗口水平分屏打开文件
  • ctrl + v 同上, 垂直分屏
  • ctrl + t在 tab 中打开
  • ctrl + r字符串模式正则表达式模式 之间切换

NERDTree(文件树)

image-20221201182125369

  • ?: 快速帮助文档
  • o: 打开一个目录或者打开文件,创建的是 buffer,也可以用来打开书签
  • go: 打开一个文件,但是光标仍然留在 NERDTree,创建的是 buffer
  • t: 打开一个文件,创建的是 Tab,对书签同样生效
  • T: 打开一个文件,但是光标仍然留在 NERDTree,创建的是 Tab,对书签同样生效
  • i: 水平分割创建文件的窗口,创建的是 buffer
  • gi: 水平分割创建文件的窗口,但是光标仍然留在 NERDTree
  • s: 垂直分割创建文件的窗口,创建的是 buffer
  • gs: 和 gi,go 类似
  • x: 收起当前打开的目录
  • X: 收起所有打开的目录
  • e: 以文件管理的方式打开选中的目录
  • D: 删除书签

auto-pairs(括号自动匹配)

NerdCommenter(注释)

  • \cc 注释当前行和选中行
  • \cu 取消注释
  • \c<space> 如果被选区域有部分被注释,则对被选区域执行取消注释操作,其它情况执行反转注释操作
  • \ci 执行反转注释操作,选中区域注释部分取消注释,非注释部分添加注释
  • \cA 跳转到该行结尾添加注释,并进入编辑模式
  • \cn没有发现和\cc 有区别
  • \cm 对被选区域用一对注释符进行注释,前面的注释对每一行都会添加注释
  • \cs 添加性感的注释,代码开头介绍部分通常使用该注释
  • \cy 添加注释,并复制被添加注释的部分
  • \c$ 注释当前光标到改行结尾的内容
  • \ca转换注释的方式,比如: /**/和//
  • \cl \cb 左对齐和左右对其,左右对其主要针对/**/

fd(文件查找)

shellcheck(查错)

shellcheck

tldr (Too long; Didn’t read)

image-20221120191539960

rg(riggrep)(在当前文件下文件内查找)

image-20221120193545743

fzf(命令行的模糊搜索)

image-20221120200210604

image-20221120200217174

fish(History 存储的 command-line)

image-20221120201126673

tree(or broot nnn)(文件树)

image-20221120201107434

sed(脚本编写方式读文本)

1
2
3
4
#sed

cat file.sh | sed 's/REGEX/SUBSTITUTION/'
# 其中 REGEX 部分是我们需要使用的正则表达式,而 SUBSTITUTION 是用于替换匹配结果的文本。

image-20221122222441207

less(逐页 3 滚动读文本)

1
2
3
# less

less [filename]

image-20221122222756073

perl(文本处理工具[正则])

image-20221123204439531

wc(文本 3 统计工具)

image-20221123210116651

awk(适合处理文本的编程语言)

image-20221123211814842

bc(计算器语言)

image-20221123213912118

xargs(将标准输入作为参数)

tmux(终端多路复用)2

image-20221124221659078

- sessions 会话

  • tmux 开始一个新的会话
  • tmux new -s NAME 以指定名称开始一个新的会话
  • tmux ls 列出当前所有会话
  • tmux 中输入 <C-b> d ,将当前会话分离
  • tmux a 重新连接最后一个会话。您也可以通过 -t 来指定具体的会话
  • tmux kill-session -t {(name)}

- windows 窗口

  • <C-b> c 创建一个新的窗口,使用 <C-d>关闭
  • <C-b> N 跳转到第 N 个窗口,注意每个窗口都是有编号的
  • <C-b> p 切换到前一个窗口
  • <C-b> n 切换到下一个窗口
  • <C-b> , 重命名当前窗口
  • <C-b> w 列出当前所有窗口
  • <C-b> x 销毁当前窗口
  • <C-b> <C-z> 退出 tmux
  • <C-b> i 查看窗口信息

- panes 面板

  • <C-b> " 水平分割
  • <C-b> % 垂直分割
  • <C-b> <方向> 切换到指定方向的面板,<方向> 指的是键盘上的方向键
  • <C-b> z 切换当前面板的缩放
  • <C-b> [ 开始往回卷动屏幕。您可以按下<C-space>来开始选择(上下左右),<Alt+w复制选中的部分;<C-b> } 粘贴
  • <C-b> <空格> 在不同的面板排布间切换
  • <C-b> <C-arrow> 界面移动 1 行
  • <C-b> <Alt-arrow> 界面移动 5 行
  • <C-b> x 销毁面板
  • <C-b> t 显示时钟

vimrc

map 映射模式

:key: map 映射模式 (map、nmap、imap、vmap、vnoremap、nunmap、nmapclear…)

  • nore:非递归 map 默认是递归映射的
  • n-:表示在普通模式下生效
  • v-:表示在可视模式下生效
  • i-:表示在插入模式下生效
  • c-:表示在命令行模式下生效
  • un-:表示删除此映射
  • clear:表示清楚快捷键映射

键表

  • <k0> - <k9> 小键盘 0 到 9
  • <S-...> Shift +键

  • <C-...> Control +键

  • <M-...> Alt +键 或 meta +键
  • <A-...><M-...>
  • <Esc> Escape 键
  • <Up> 光标上移键
  • <Space> 插入空格
  • <Tab> 插入 Tab
  • <CR>等于<Enter>

特殊参数

特殊参数必须映射命令的后边,在其他任何参数的前面

  • <buffer>
    • 如果这些映射命令的第一个参数是<buffer>,映射将只局限于当前缓冲区(也就是你此时正编辑的文件)内
  • <silent>
    • 指执行键绑定时不在命令行上回显
  • <special>
    • 用于定义特殊键怕有副作用的场合
  • <expr>
    • 如果定义新映射的第一个参数是<expr>,那么参数会作为表达式来进行计算,结果使用实际使用的
  • <unique>
    • 一般用于定义新的键映射或者缩写命令的同时检查是否该键已经被映射,如果该映射或者缩写已经存在,则该命令会失败