常见 Linux 命令详细解释

以下是常见 Linux 命令及其参数的详细解释,按照使用频率排序,并附带了使用示例。

1. scp(安全复制)

scp(Secure Copy Protocol)用于在本地和远程主机之间进行加密传输文件。它基于 SSH 协议,因此数据传输过程中是安全的,适合在不安全的网络中传输敏感文件。

语法

scp [选项] 源文件 目标文件

常用选项

  • -r:递归复制整个目录。使用时,源文件应为目录。
  • -P:指定远程主机的端口号(注意是大写 P)。例如,远程主机使用 2222 端口时,使用 -P 2222
  • -i:指定用于身份验证的私钥文件。例如,-i /path/to/private_key
  • -v:启用详细模式,显示 SCP 执行过程的详细信息。
  • -C:启用压缩,在传输大量数据时有助于提高传输效率。
  • -q:启用静默模式,不显示任何输出。
  • -l:限制传输的带宽,单位为 Kbit/s。例如,-l 500 限制带宽为 500 Kbit/s。
  • -B:禁止启用密码验证,强制使用密钥认证。
  • -o:传递 SSH 配置选项,如 -o StrictHostKeyChecking=no 可以跳过 SSH 主机密钥检查。

示例

scp -v -P 2222 -l 500 -i ~/.ssh/id_rsa -r ./myfolder deployer@127.0.0.1:/data

使用 -l 选项限制传输带宽为 500 Kbit/s。

注意事项

  • 权限问题:如果目标路径的权限不足,可以通过 sudo 来提升权限,但是需要确保自己有远程 sudo 权限。
  • 密钥认证:使用 -i 选项时,确保私钥文件的权限是 600,否则 SSH 会拒绝使用该密钥进行连接。

2. sshpass(自动输入密码的 SSH)

sshpass -p "password" ssh -o StrictHostKeyChecking=no root@127.0.0.1 sh /data/custom.sh

使用 sshpass 自动输入密码,登录并执行远程脚本。


3. ssh(连接服务器/开启隧道-端口转发)

常用选项:

  • -L:本地端口转发。
  • -i:指定私钥文件。
ssh -L 0:3307:remote_ip:3306 user@host

通过 SSH 创建本地端口转发。


4. vim(文本编辑器)

vim 是 Linux 系统中功能强大的文本编辑器,广泛用于文件编辑、编程和系统管理。其分为三种模式:

  1. 普通模式:启动后默认进入普通模式,执行导航、删除、复制等操作。
  2. 插入模式:用于文本输入,按 i 进入,按 Esc 退出。
  3. 命令行模式:执行保存、退出、查找替换等命令,按 : 进入。

插入模式

  • i:在当前光标前插入。
  • a:在当前光标后插入。
  • o:在当前行下方新建一行并进入插入模式。

保存和退出

  • :w:保存文件。
  • :q:退出 Vim。
  • :wqZZ:保存并退出。
  • :q!:强制退出(不保存修改)。
  • :x:保存并退出(等价于 :wq)。

文本操作

  1. 复制、粘贴

    • yy:复制当前行。
    • nyy:复制当前行及其后 n 行。
    • p:在光标后粘贴。
    • P:在光标前粘贴。
  2. 删除

    • dd:删除当前行。
    • ndd:删除当前行及其后 n 行。
    • x:删除光标所在的字符。
  3. 撤销和重做

    • u:撤销上一步操作。
    • Ctrl + r:重做上一步撤销。
  4. 查找

    • /pattern:向下查找 pattern
    • ?pattern:向上查找 pattern
    • n:重复上一次查找(同方向)。
    • N:反向重复上一次查找。
  5. 替换

    • :%s/old/new/g:将文件中所有的 old 替换为 new
    • :n,m s/old/new/g:将第 n 到第 m 行的 old 替换为 new
    • :%s/old/new/gc:替换时逐个确认。

窗口操作

  1. 分屏

    • :split:sp:水平分屏。
    • :vsplit:vsp:垂直分屏。
    • Ctrl + w + w:在分屏间切换。
    • Ctrl + w + h/j/k/l:移动到左/下/上/右的窗口。
  2. 关闭窗口

    • :q:关闭当前窗口。
    • :only:关闭其他窗口,保留当前窗口。

代码编辑功能

  1. 缩进

    • >>:将当前行向右缩进。
    • <<:将当前行向左缩进。
    • n>>n<<:缩进当前行及其后 n 行。
  2. 高亮匹配括号

    将光标放在括号上,按 % 可跳转到匹配的括号。

  3. 代码折叠

    • zf:根据选定范围折叠。
    • zo:打开折叠。
    • zc:关闭折叠。

配置文件

Vim 的行为可以通过配置文件 .vimrc 进行定制。以下是一个简单示例:

set number          " 显示行号
syntax on           " 开启语法高亮
set tabstop=4       " 设置制表符宽度为 4 个空格
set expandtab       " 使用空格替代 Tab
set autoindent      " 自动缩进

高级用法

  1. 打开多个文件
vim file1 file2

使用 :n 切换到下一个文件,:prev 切换到上一个文件。

  1. 宏操作

    • q<register>:开始录制宏,<register> 可以是任意字母。
    • 执行一系列操作后,按 q 停止录制。
    • @<register>:执行宏。
    • n@<register>:重复执行宏 n 次。
  2. 多行注释

    • 选中多行:按 Ctrl + v 进入列模式,选择需要注释的行。
    • 插入注释符:按 Shift + i,输入注释符(如 #),然后按 Esc

示例

  1. 替换文件中的字符串
:%s/foo/bar/g

将文件中所有的 foo 替换为 bar

  1. 删除空行
:g/^$/d
  1. 批量修改代码缩进
:%!indent -kr

5. xargs(构建和执行命令行)

xargs 是一个用于构建并执行命令行的工具,通常结合管道使用。它从标准输入中读取数据(如文件列表、参数等),并将其转换为适合命令行的格式,接着执行指定的命令。

xargs [选项] [命令]
  • xargs 会从标准输入中读取数据并将其转化为命令行参数,然后执行指定的命令。

常用选项

  • -n:指定每次执行命令时使用的参数个数。

    例如,xargs -n 2 表示每次使用两个参数来执行命令。

  • -I:指定替换字符串。此选项允许你在命令中指定一个占位符(如 {}),并用输入数据替换该占位符。

    例如,xargs -I {} echo Hello, {} 会将标准输入的每一项替换 {},并执行命令 echo Hello, <item>

  • -d:指定输入分隔符。

    默认情况下,xargs 使用空白字符(空格、制表符、换行符)作为分隔符,使用 -d 可以指定其他字符作为输入分隔符。

  • -p:提示用户在执行每个命令前进行确认。

    例如,xargs -p rm 在执行每个 rm 命令之前都会要求用户确认。

  • -0:与 find 命令结合使用时,使用空字符(而不是换行符)作为分隔符,以正确处理文件名中包含空格和特殊字符的情况。

    例如,find . -name "*.txt" -print0 | xargs -0 rm 用于删除所有 .txt 文件,正确处理文件名中包含空格的情况。

示例

  1. 基本用法

    echo "file1 file2 file3" | xargs rm

    这个命令会删除 file1file2file3 文件。xargs 会将输入的数据(文件名)传递给 rm 命令。

  2. 使用 -n 每次传递指定数量的参数

    echo "file1 file2 file3 file4" | xargs -n 2 rm

    该命令每次将两个文件作为参数传递给 rm 命令,执行 rm file1 file2rm file3 file4

  3. 使用 -I 指定替换字符串

    echo "file1 file2 file3" | xargs -I {} mv {} /path/to/destination/

    该命令将每个文件移动到 /path/to/destination/ 目录中。{} 是占位符,表示每次传递给 mv 命令的文件名。

  4. find 命令结合使用

    find . -name "*.txt" | xargs rm

    find 命令查找当前目录及其子目录下所有 .txt 文件,并将它们传递给 xargs rm 命令进行删除。

  5. 处理包含空格的文件名(使用 -0

    find . -name "*.txt" -print0 | xargs -0 rm

    这个命令使用 -print0-0 选项,确保即使文件名中包含空格或其他特殊字符,xargs 仍能正确处理文件。


6. awk(文本处理工具)

awk 是一种强大的文本处理工具,特别擅长按行、按字段处理文本数据。awk 可以用于筛选、格式化、统计和生成报告等任务。

awk '条件 { 动作 }' 文件
  • 条件:指定处理文本的条件。
  • 动作:当条件满足时执行的操作,通常用于输出、修改或其他文本处理。

常用选项

  • -F:指定输入字段分隔符,默认情况下是空白字符(空格或制表符)。例如,awk -F ',' 用于处理以逗号为分隔符的 CSV 文件。
  • -v:定义变量,例如,awk -v var=value '...' 用于在 awk 脚本中传递外部变量。
  • print:打印指定的内容或字段。
  • NF:表示当前行的字段数。
  • $1, $2, ... $n:表示当前行的第 1、第 2、...、第 n 个字段。

示例

  1. 打印每一行的第一个字段

    echo "apple orange banana" | awk '{print $1}'
  2. 打印文件的第 1 和第 3 个字段

    awk '{print $1, $3}' file.txt
  3. 使用分隔符

    echo "apple,orange,banana" | awk -F ',' '{print $2}'
  4. 筛选满足条件的行

    awk '$2 > 50 {print $1, $2}' file.txt
  5. 计算总和

    awk '{sum += $1} END {print sum}' file.txt

    计算文件中所有第一列的数字之和。


7. grep(文本搜索)

常用选项:

  • -E:启用扩展正则表达式。
  • -r:递归搜索目录。
  • -i:忽略大小写。
  • -v:反向匹配,显示不匹配的行。
  • -l:只显示匹配的文件名。
grep -i "pattern" file.txt

8. sort(排序)

常用选项:

  • -n:按数字排序。
  • -r:逆序排序。
  • -u:去除重复的行。 也可使用uniq
sort -n file.txt

9. comm(比较文件)

用于比较两个排序过的文件,显示它们的共同部分和差异部分。

常用选项:

  • -1:不显示文件 1 中独有的部分。
  • -2:不显示文件 2 中独有的部分。
  • -3:不显示两个文件共有的部分。
comm file1.txt file2.txt

10. tr(字符转换)

常用选项:

  • -d:删除字符。
  • -s:压缩字符。
tr 'a-z' 'A-Z' # 将小写字母转换为大写字母
tr -s '[[:space:]]' '\n' # 根据空白字符分词
#[[:space:]]:一个 POSIX 字符类,匹配所有空白字符(如空格、制表符、换行符等)。

11. tar(打包与压缩)

常用选项:

  • -c:创建一个新的 tar 包。
  • -x:解包。
  • -v:显示处理过程。
  • -f:指定目标文件。
  • -z:通过 gzip 压缩或解压。
  • -j:通过 bzip2 压缩或解压。
tar -cvf 1101_log.tar 1101_log/*
tar -zxvf file.tar.gz

12. gzip(压缩)

gzip 是一个用于压缩单个文件的工具,会删除原始文件并生成 .gz 压缩文件

常用选项:

  • -d:解压文件
  • -r:递归压缩目录中的所有文件(每个文件单独生成 .gz 文件)
  • -v:显示压缩过程
gzip -d /tmp/test.gz

13. zipunzip(压缩和解压 .zip 文件)

zip:用于压缩文件和目录。

zip [选项] 压缩包 文件/目录

常用选项

  • -r:递归压缩
  • -m:不保留原文件
  • -v:显示过程
zip -r /tmp/test.zip /tmp/testdir

unzip:用于解压 .zip 文件。

常用选项**:

  • -d:指定解压目录
  • -v:显示解压过程
unzip /tmp/test.zip -d ./tmp/test

14. split(文件拆分)

用于将大文件拆分为小文件。

语法

split [选项] 文件 前缀

常用选项:

  • -a: 指定生成的小文件后缀的长度,默认为2
  • -b: 指定每个拆分文件的大小。单位可为 b(字节)、k(千字节)、m(兆字节)。
  • -d: 使用数字作为小文件的后缀,而不是字母,默认为字母
  • -l: 指定每个小文件的行数,默认为1000行
  • -n: 指定生成的小文件的数量,默认为2
  • --verbose: 显示拆分过程的详细信息
split -b 35m -d /path/to/bigfile bigfile_

bigfile 拆分为多个 35MB 的文件。


15. nohup(后台运行)**

挂起信号简介

挂起信号(SIGHUP, Signal Hang Up)是当用户注销或关闭终端时,系统发送给与该终端相关进程的信号。默认情况下,进程会因接收到挂起信号而终止。

nohup 命令会忽略挂起信号,使进程在终端关闭后仍然继续运行。

nohup 命令 [参数] &

常用选项

  • &:将命令放入后台运行,配合 nohup 使用。
  • nohup.out:如果未指定输出文件,命令的标准输出和错误输出会默认重定向到 nohup.out 文件中。
nohup python3 script.py > output.log 2>&1 &

16. ps(进程状态)**

ps 命令用于查看当前系统的进程信息,包括正在运行的程序及其状态。

常用选项**:

  • -e:显示所有进程(相当于 ps -A)。
  • -f:显示完整格式的信息,包括 UID、PPID、C、STIME 等。
  • -ef:组合选项,显示所有进程的详细信息。

- `a`:显示与终端相关的所有进程。
- `u`:以用户为中心的格式显示。
ps -u $(whoami) # 查看当前用户的进程
ps -ejH # 查看进程的层级关系(父子关系)

17. kill(终止进程)**

kill 命令用于向指定进程发送信号,常用于终止进程。

kill [选项] 进程ID

常用选项

  • -9(SIGKILL):强制终止进程,不会保存数据或进行清理操作。
  • -15(SIGTERM):默认信号,优雅地终止进程,允许进程进行清理工作后退出。
信号编号信号名称说明
1SIGHUP重新加载进程配置(常用于守护进程)。
2SIGINT中断进程(相当于 Ctrl+C)。
9SIGKILL强制终止进程。
15SIGTERM优雅地终止进程(默认)。
kill -15 1234 # 优雅地终止进程
kill -9 1234 # 发送 `SIGKILL` 信号强制终止进程 ID 为 `1234` 的进程。
ps -ef | grep python | awk '{print $2}' | xargs kill -9 # 查找运行的 Python 进程并强制终止。

18. tcpdump(抓包)

用于网络数据包的捕获和分析。可以使用Wireshark图形化分析抓包文件。

tcpdump [选项] [表达式]

常用选项:

  • -i:指定网络接口。
  • -w:将输出保存到文件。
  • -nn:禁用域名解析。
  • -v:显示详细输出。
  • -s0:捕获完整的数据包。
tcpdump -w tcpdump.pcap -i docker0 # 在 `docker0` 网络接口上抓取数据包,并将其保存到 `tcpdump.pcap` 文件中。
tcpdump -i en0 host 127.0.0.1 -nnv -s0 -c 50 # 捕获到 `127.0.0.1` 主机的 50 个数据包,并显示详细信息。

19. top(实时进程监控)

top 命令用于实时显示系统的进程信息,包括每个进程的 CPU 和内存使用情况,帮助用户了解系统资源的分配情况。

常用选项

  • -u:显示某个用户的进程。
  • -p:监控特定的进程ID。
  • -d:设置更新频率(秒)。
  • -n:指定更新次数。

快捷键操作(在 top 命令运行时,你可以使用以下快捷键操作):

  • P:按 CPU 使用率排序进程。
  • M:按内存使用率排序进程。
  • T:按时间/累计时间排序进程。
  • q:退出 top 命令。
  • h:显示 top 的帮助信息。
  • k:终止(kill)一个进程,输入进程的 PID。
  • r:改变进程的优先级(即调整 nice 值)。
  • u:只显示某个用户的进程。
  • n:设置刷新间隔时间(默认是 3 秒)。
  • c:切换显示命令行或程序名称。

20. uptime(系统运行时间)

uptime 命令显示系统的运行时间、当前时间、登录用户数量以及负载信息,是系统管理员常用的查看系统健康状况的工具。

21. w(查看当前登录用户和系统活动)

w 命令用于显示当前系统登录用户的信息以及他们正在执行的活动。它可以提供有关每个用户的详细信息,如登录时间、正在运行的进程、终端等

22. sync(同步磁盘)

sync 命令用于将文件系统的缓存数据写入磁盘,确保数据的持久性。该命令常用于系统关闭前,或者需要手动同步的场景。
sync; echo 3 > /proc/sys/vm/drop_caches # 同步缓存并清空缓存,包括 swap 空间。

25. du(磁盘使用情况)

du 命令用于显示文件和目录的磁盘使用情况,可以帮助用户查看目录或文件占用的磁盘空间。

du [选项] [文件/目录]

常用选项

  • -h:以易读的格式显示(例如 KB、MB)。
  • -s:显示总计,即只显示目录的总大小。
  • -a:显示所有文件和目录的使用情况。
  • --max-depth=N:只显示到指定深度的目录信息。
du -sh /home/user/
du -ah # 显示当前目录及其所有子目录和文件的磁盘使用情况。
du -h --max-depth=2 /home/user/ # 显示目录的前两级使用情况

26. df(文件系统磁盘空间)

df 命令用于查看文件系统的磁盘空间使用情况,帮助了解磁盘空间的分配与使用情况。

常用选项**:

  • -h:以易读格式显示(例如 KB、MB)。
  • -T:显示文件系统类型。
  • -a:包括所有文件系统(即使它们的使用空间为 0)。
  • -i:显示 inode 的使用情况(文件系统中的索引节点)。
df -hT # 除了显示空间使用情况,还显示文件系统的类型(例如 ext4、xfs)。
df -hi # 显示所有文件系统的 inode 使用情况,帮助判断是否达到 inode 限制。

27. rpm(RPM 包管理器)

用于安装和管理 RPM 包。

常用选项:

  • -i:安装包。
  • -v:显示详细信息。
  • -h:显示安装进度。
rpm -ivh package.rpm # 安装名为 `package.rpm` 的软件包。

28. systemctl(系统控制)

用于管理系统服务。

常用选项:

  • status:查看服务状态。
  • start:启动服务。
  • stop:停止服务。
  • enable:设置服务开机自启动。
  • disable:禁用服务开机自启动。
systemctl start firewalld
systemctl stop firewalld
systemctl enable firewalld
systemctl disable firewalld

29. firewall-cmd(Firewalld 管理)

用于管理 firewalld 防火墙。

常用选项:

  • --get-active-zones:查看当前激活的防火墙区域。
  • --add-port:开放端口。
  • --remove-port:关闭端口。
  • --set-default-zone:设置默认区域。
  • --add-rich-rule:添加高级规则。
firewall-cmd --get-active-zones                           # 查看激活的域
firewall-cmd --get-default-zones                            # 查看默认的域
firewall-cmd --zone=public --list-ports              # 查看开放的端口
firewall-cmd --zone=public --list-rich-rules  # 查看添加的规则
firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放 80 端口并设置为永久生效,
firewall-cmd --zone=trusted --remove-port=9201 # 关闭 9201 端口。

30. iptables(防火墙规则管理)

管理 IP 防火墙规则。

常用选项:

  • -I:插入新规则。
  • -D:删除规则。
  • -L:列出当前规则。
  • -p:指定协议。
  • --dport:指定目标端口。
iptables -I INPUT -s 10.150.3.11 -p tcp --dport 9201 -j ACCEPT
iptables -D INPUT -s 10.150.3.11 -p tcp --dport 9201 -j ACCEPT
#  -m multiport --dport 9201,8500,15672

标签: none

添加新评论