Linux 基础命令完整教程

目录


文件和目录操作

ls - 列出目录内容

列出当前目录或指定目录的文件和子目录。

# 列出当前目录
ls

# 列出详细信息(权限、所有者、大小、修改时间等)
ls -l

# 列出所有文件(包括隐藏文件,以 . 开头的文件)
ls -a

# 组合使用:列出所有文件的详细信息
ls -la

# 按时间排序,最新的在前
ls -lt

# 按大小排序
ls -lS

# 以人类可读的格式显示文件大小(K, M, G)
ls -lh

# 递归列出所有子目录
ls -R

# 列出指定目录
ls /home/user/documents

cd - 切换目录

改变当前工作目录。

# 切换到指定目录
cd /home/user/documents

# 切换到用户主目录
cd ~
# 或直接
cd

# 切换到上一级目录
cd ..

# 切换到上两级目录
cd ../..

# 切换到上一次所在的目录
cd -

# 切换到根目录
cd /

pwd - 显示当前目录

打印当前工作目录的完整路径。

# 显示当前目录的绝对路径
pwd

# 输出示例: /home/user/documents

mkdir - 创建目录

创建新目录。

# 创建单个目录
mkdir mydir

# 创建多个目录
mkdir dir1 dir2 dir3

# 递归创建多级目录(如果父目录不存在,一并创建)
mkdir -p parent/child/grandchild

# 创建目录并设置权限
mkdir -m 755 mydir

rmdir - 删除空目录

删除空目录(目录必须为空)。

# 删除空目录
rmdir emptydir

# 递归删除空目录
rmdir -p parent/child/grandchild

rm - 删除文件或目录

删除文件或目录。

# 删除文件
rm file.txt

# 删除多个文件
rm file1.txt file2.txt file3.txt

# 删除目录及其内容(递归删除)
rm -r mydir

# 强制删除,不提示确认
rm -f file.txt

# 递归强制删除目录(危险操作,谨慎使用)
rm -rf mydir

# 删除前提示确认
rm -i file.txt

# 删除所有 .txt 文件
rm *.txt

cp - 复制文件或目录

复制文件或目录到指定位置。

# 复制文件
cp source.txt destination.txt

# 复制文件到指定目录
cp file.txt /home/user/backup/

# 复制多个文件到目录
cp file1.txt file2.txt /home/user/backup/

# 递归复制目录
cp -r sourcedir/ destdir/

# 复制时保留文件属性(权限、时间戳等)
cp -p file.txt backup.txt

# 交互式复制(覆盖前提示)
cp -i source.txt destination.txt

# 复制时显示详细信息
cp -v file.txt /backup/

mv - 移动或重命名文件

移动文件/目录到新位置,或重命名文件/目录。

# 重命名文件
mv oldname.txt newname.txt

# 移动文件到目录
mv file.txt /home/user/documents/

# 移动多个文件到目录
mv file1.txt file2.txt /home/user/documents/

# 移动目录
mv olddir/ newdir/

# 交互式移动(覆盖前提示)
mv -i source.txt destination.txt

# 强制移动(不提示)
mv -f source.txt destination.txt

touch - 创建空文件或更新时间戳

创建新的空文件,或更新已存在文件的访问和修改时间。

# 创建空文件
touch newfile.txt

# 创建多个空文件
touch file1.txt file2.txt file3.txt

# 更新文件的时间戳为当前时间
touch existingfile.txt

# 只更新访问时间
touch -a file.txt

# 只更新修改时间
touch -m file.txt

文件查看和编辑

cat - 查看文件内容

连接文件并打印到标准输出。

# 查看文件内容
cat file.txt

# 查看多个文件
cat file1.txt file2.txt

# 显示行号
cat -n file.txt

# 合并多个文件到新文件
cat file1.txt file2.txt > merged.txt

# 追加内容到文件
cat file1.txt >> file2.txt

# 显示非打印字符
cat -v file.txt

less - 分页查看文件

以分页方式查看文件内容,支持向前和向后翻页。

# 分页查看文件
less file.txt

# 常用快捷键:
# 空格键 - 向下翻一页
# b - 向上翻一页
# j 或 ↓ - 向下移动一行
# k 或 ↑ - 向上移动一行
# g - 跳到文件开头
# G - 跳到文件末尾
# /pattern - 向下搜索 pattern
# ?pattern - 向上搜索 pattern
# n - 重复上次搜索
# q - 退出

more - 分页查看文件

以分页方式查看文件(只能向下翻页)。

# 分页查看文件
more file.txt

# 常用快捷键:
# 空格键 - 向下翻一页
# Enter - 向下移动一行
# q - 退出

head - 查看文件开头

显示文件的前几行。

# 显示前 10 行(默认)
head file.txt

# 显示前 20 行
head -n 20 file.txt
# 或简写
head -20 file.txt

# 显示前 100 个字节
head -c 100 file.txt

# 查看多个文件的开头
head file1.txt file2.txt

tail - 查看文件末尾

显示文件的后几行。

# 显示后 10 行(默认)
tail file.txt

# 显示后 20 行
tail -n 20 file.txt
# 或简写
tail -20 file.txt

# 实时监控文件变化(常用于查看日志)
tail -f /var/log/syslog

# 从第 100 行开始显示到文件末尾
tail -n +100 file.txt

# 实时监控,并显示最后 50 行
tail -n 50 -f logfile.log

nano - 文本编辑器

简单易用的命令行文本编辑器。

# 打开或创建文件
nano file.txt

# 常用快捷键:
# Ctrl + O - 保存文件
# Ctrl + X - 退出编辑器
# Ctrl + K - 剪切当前行
# Ctrl + U - 粘贴
# Ctrl + W - 搜索
# Ctrl + \ - 替换
# Ctrl + G - 显示帮助

vi / vim - 强大的文本编辑器

功能强大的文本编辑器。

# 打开文件
vi file.txt
# 或
vim file.txt

# 基本操作:
# i - 进入插入模式(开始编辑)
# Esc - 退出插入模式,回到命令模式
# :w - 保存文件
# :q - 退出
# :wq 或 :x - 保存并退出
# :q! - 不保存强制退出
# dd - 删除当前行
# yy - 复制当前行
# p - 粘贴
# u - 撤销
# /pattern - 搜索
# :set number - 显示行号

文件搜索

find - 查找文件

在目录树中搜索文件。

# 在当前目录查找文件
find . -name "file.txt"

# 在指定目录查找
find /home/user -name "*.txt"

# 忽略大小写查找
find . -iname "file.txt"

# 查找目录
find . -type d -name "mydir"

# 查找文件
find . -type f -name "*.log"

# 查找大于 100MB 的文件
find . -type f -size +100M

# 查找小于 10KB 的文件
find . -type f -size -10k

# 查找 7 天内修改过的文件
find . -type f -mtime -7

# 查找 30 天前修改的文件
find . -type f -mtime +30

# 查找并删除(危险操作)
find . -name "*.tmp" -delete

# 查找并执行命令
find . -name "*.txt" -exec cat {} \;

# 查找空文件
find . -type f -empty

# 查找空目录
find . -type d -empty

# 按权限查找
find . -type f -perm 644

locate - 快速查找文件

使用数据库快速查找文件(需要先更新数据库)。

# 查找文件
locate file.txt

# 忽略大小写
locate -i file.txt

# 只显示存在的文件
locate -e file.txt

# 限制结果数量
locate -n 10 file.txt

# 更新数据库(需要 root 权限)
sudo updatedb

which - 查找命令位置

显示命令的完整路径。

# 查找命令位置
which python

# 输出示例: /usr/bin/python

# 查找多个命令
which python java node

whereis - 查找命令、源码和手册

查找二进制文件、源代码和手册页的位置。

# 查找命令相关文件
whereis python

# 输出示例: python: /usr/bin/python /usr/lib/python2.7 /usr/share/man/man1/python.1.gz

# 只查找二进制文件
whereis -b python

# 只查找手册
whereis -m python

文件权限管理

chmod - 修改文件权限

改变文件或目录的访问权限。

# 使用数字模式设置权限
# 权限说明:
# r(读)=4, w(写)=2, x(执行)=1
# 第一位:所有者权限
# 第二位:组权限
# 第三位:其他用户权限

# 设置文件权限为 rwxr-xr-x (755)
chmod 755 file.txt

# 设置文件权限为 rw-r--r-- (644)
chmod 644 file.txt

# 递归修改目录权限
chmod -R 755 mydir/

# 使用符号模式
# u=用户(user), g=组(group), o=其他(others), a=所有(all)
# +=添加权限, -=移除权限, ==设置权限

# 给所有者添加执行权限
chmod u+x file.sh

# 给所有人添加读权限
chmod a+r file.txt

# 移除组的写权限
chmod g-w file.txt

# 给所有者设置读写权限,其他人只读
chmod u=rw,go=r file.txt

# 使脚本可执行
chmod +x script.sh

chown - 修改文件所有者

改变文件或目录的所有者和所属组。

# 修改文件所有者
sudo chown username file.txt

# 修改文件所有者和组
sudo chown username:groupname file.txt

# 只修改组
sudo chown :groupname file.txt

# 递归修改目录
sudo chown -R username:groupname mydir/

# 修改符号链接本身(不是目标文件)
sudo chown -h username symlink

chgrp - 修改文件所属组

改变文件或目录的所属组。

# 修改文件所属组
sudo chgrp groupname file.txt

# 递归修改目录
sudo chgrp -R groupname mydir/

umask - 设置默认权限

设置创建新文件和目录时的默认权限掩码。

# 查看当前 umask 值
umask

# 设置 umask(新文件默认权限为 666-022=644)
umask 022

# 设置 umask(新文件默认权限为 666-077=600)
umask 077

进程管理

ps - 显示进程状态

显示当前运行的进程。

# 显示当前用户的进程
ps

# 显示所有进程
ps aux

# 显示详细的进程树
ps auxf

# 显示指定用户的进程
ps -u username

# 显示进程的完整命令
ps aux --width 200

# 按内存使用排序
ps aux --sort=-%mem | head

# 按 CPU 使用排序
ps aux --sort=-%cpu | head

# 查找特定进程
ps aux | grep python

top - 实时显示进程

动态显示系统中进程的资源占用情况。

# 启动 top
top

# 常用快捷键:
# q - 退出
# h - 帮助
# k - 终止进程(输入 PID)
# M - 按内存使用排序
# P - 按 CPU 使用排序
# 1 - 显示每个 CPU 核心的使用情况
# u - 显示指定用户的进程

# 指定刷新间隔(秒)
top -d 5

# 只显示指定用户的进程
top -u username

htop - 增强版 top

更友好的交互式进程查看器(需要安装)。

# 启动 htop
htop

# 常用快捷键:
# F1 - 帮助
# F2 - 设置
# F3 - 搜索进程
# F4 - 过滤
# F5 - 树形显示
# F6 - 排序
# F9 - 终止进程
# F10 - 退出

kill - 终止进程

发送信号给进程,通常用于终止进程。

# 终止进程(默认发送 SIGTERM 信号)
kill PID

# 强制终止进程(发送 SIGKILL 信号)
kill -9 PID

# 发送指定信号
kill -SIGTERM PID

# 终止多个进程
kill PID1 PID2 PID3

# 列出所有可用信号
kill -l

killall - 按名称终止进程

通过进程名终止所有匹配的进程。

# 终止所有名为 firefox 的进程
killall firefox

# 强制终止
killall -9 firefox

# 交互式终止(确认后终止)
killall -i firefox

pkill - 按模式终止进程

通过模式匹配终止进程。

# 终止所有包含 python 的进程
pkill python

# 终止指定用户的进程
pkill -u username

# 强制终止
pkill -9 python

bg / fg - 后台/前台运行

管理后台和前台任务。

# 将当前任务放到后台(先按 Ctrl+Z 暂停任务)
bg

# 将后台任务调到前台
fg

# 将指定任务调到前台
fg %1

# 列出后台任务
jobs

# 在后台运行命令
command &

# 运行命令并忽略挂断信号
nohup command &

nice / renice - 调整进程优先级

设置或修改进程的优先级。

# 以指定优先级运行命令(-20 到 19,数值越小优先级越高)
nice -n 10 command

# 修改运行中进程的优先级
renice -n 5 -p PID

# 修改用户所有进程的优先级
sudo renice -n 5 -u username

系统信息

uname - 显示系统信息

显示系统的基本信息。

# 显示内核名称
uname

# 显示所有信息
uname -a

# 显示内核版本
uname -r

# 显示机器硬件名称
uname -m

# 显示操作系统名称
uname -o

hostname - 显示或设置主机名

显示或修改系统的主机名。

# 显示主机名
hostname

# 显示 FQDN(完全限定域名)
hostname -f

# 设置主机名(需要 root 权限)
sudo hostname newhostname

uptime - 显示系统运行时间

显示系统已运行时间和负载。

# 显示系统运行时间、用户数和负载
uptime

# 输出示例: 10:30:15 up 5 days, 2:15, 3 users, load average: 0.15, 0.20, 0.18

date - 显示或设置日期时间

显示或设置系统日期和时间。

# 显示当前日期和时间
date

# 以指定格式显示
date "+%Y-%m-%d %H:%M:%S"

# 显示 UTC 时间
date -u

# 设置日期时间(需要 root 权限)
sudo date -s "2024-01-01 12:00:00"

# 显示指定日期
date -d "2024-01-01"

# 显示昨天的日期
date -d "yesterday"

# 显示 3 天后的日期
date -d "+3 days"

cal - 显示日历

显示日历。

# 显示当前月份日历
cal

# 显示整年日历
cal 2024

# 显示指定月份
cal 12 2024

# 显示前后三个月
cal -3

whoami - 显示当前用户

显示当前登录的用户名。

# 显示当前用户名
whoami

who - 显示登录用户

显示当前登录系统的用户。

# 显示所有登录用户
who

# 显示详细信息
who -a

# 显示启动时间
who -b

w - 显示登录用户及其活动

显示当前登录用户及其正在执行的操作。

# 显示登录用户和活动
w

# 不显示头部信息
w -h

last - 显示登录历史

显示用户登录历史记录。

# 显示最近的登录记录
last

# 显示指定用户的登录记录
last username

# 显示最近 10 条记录
last -n 10

网络命令

ping - 测试网络连通性

测试与目标主机的网络连接。

# ping 主机
ping google.com

# ping 指定次数后停止
ping -c 4 google.com

# 设置 ping 间隔(秒)
ping -i 2 google.com

# ping IPv6 地址
ping6 ipv6.google.com

ifconfig - 配置网络接口

显示或配置网络接口(较老的命令)。

# 显示所有网络接口
ifconfig

# 显示指定接口
ifconfig eth0

# 启用网络接口
sudo ifconfig eth0 up

# 禁用网络接口
sudo ifconfig eth0 down

# 设置 IP 地址
sudo ifconfig eth0 192.168.1.100

ip - 网络配置工具

现代的网络配置工具(推荐使用)。

# 显示所有网络接口
ip addr show
# 或简写
ip a

# 显示路由表
ip route show
# 或简写
ip r

# 显示指定接口
ip addr show eth0

# 添加 IP 地址
sudo ip addr add 192.168.1.100/24 dev eth0

# 删除 IP 地址
sudo ip addr del 192.168.1.100/24 dev eth0

# 启用接口
sudo ip link set eth0 up

# 禁用接口
sudo ip link set eth0 down

netstat - 网络统计

显示网络连接、路由表、接口统计等。

# 显示所有连接
netstat -a

# 显示监听端口
netstat -l

# 显示 TCP 连接
netstat -t

# 显示 UDP 连接
netstat -u

# 显示进程信息
sudo netstat -p

# 显示数字地址(不解析主机名)
netstat -n

# 组合使用:显示所有 TCP 监听端口及进程
sudo netstat -tlnp

# 显示路由表
netstat -r

ss - Socket 统计

现代的 socket 统计工具(比 netstat 更快)。

# 显示所有 socket
ss -a

# 显示监听的 socket
ss -l

# 显示 TCP socket
ss -t

# 显示 UDP socket
ss -u

# 显示进程信息
ss -p

# 组合使用:显示所有监听的 TCP 端口
ss -tln

# 显示指定端口的连接
ss -tn sport = :80

curl - 传输数据

从服务器传输数据或向服务器发送数据。

# 获取网页内容
curl https://example.com

# 下载文件
curl -O https://example.com/file.zip

# 下载并指定文件名
curl -o myfile.zip https://example.com/file.zip

# 显示响应头
curl -I https://example.com

# 发送 POST 请求
curl -X POST -d "param1=value1&param2=value2" https://example.com/api

# 发送 JSON 数据
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://example.com/api

# 跟随重定向
curl -L https://example.com

# 显示详细信息
curl -v https://example.com

# 使用代理
curl -x proxy.example.com:8080 https://example.com

wget - 下载文件

从网络下载文件。

# 下载文件
wget https://example.com/file.zip

# 下载并指定文件名
wget -O myfile.zip https://example.com/file.zip

# 断点续传
wget -c https://example.com/largefile.zip

# 后台下载
wget -b https://example.com/file.zip

# 限速下载(KB/s)
wget --limit-rate=200k https://example.com/file.zip

# 下载整个网站
wget -r -p -k https://example.com

# 下载 FTP 文件
wget ftp://ftp.example.com/file.zip

ssh - 远程登录

通过 SSH 协议连接远程主机。

# 连接远程主机
ssh username@hostname

# 指定端口
ssh -p 2222 username@hostname

# 使用密钥文件
ssh -i ~/.ssh/id_rsa username@hostname

# 执行远程命令
ssh username@hostname 'ls -la'

# 端口转发
ssh -L 8080:localhost:80 username@hostname

scp - 远程复制文件

通过 SSH 在主机间复制文件。

# 复制本地文件到远程主机
scp file.txt username@hostname:/path/to/destination/

# 复制远程文件到本地
scp username@hostname:/path/to/file.txt /local/path/

# 递归复制目录
scp -r mydir/ username@hostname:/path/to/destination/

# 指定端口
scp -P 2222 file.txt username@hostname:/path/

# 显示进度
scp -v file.txt username@hostname:/path/

压缩和解压

tar - 打包和解包

创建或提取 tar 归档文件。

# 创建 tar 归档
tar -cvf archive.tar files/

# 创建 gzip 压缩的 tar 归档
tar -czvf archive.tar.gz files/

# 创建 bzip2 压缩的 tar 归档
tar -cjvf archive.tar.bz2 files/

# 解压 tar 归档
tar -xvf archive.tar

# 解压 gzip 压缩的 tar 归档
tar -xzvf archive.tar.gz

# 解压 bzip2 压缩的 tar 归档
tar -xjvf archive.tar.bz2

# 解压到指定目录
tar -xzvf archive.tar.gz -C /path/to/directory/

# 查看归档内容(不解压)
tar -tvf archive.tar

# 只解压指定文件
tar -xzvf archive.tar.gz file.txt

# 参数说明:
# c - 创建归档
# x - 解压归档
# v - 显示详细信息
# f - 指定文件名
# z - 使用 gzip 压缩/解压
# j - 使用 bzip2 压缩/解压
# t - 列出内容
# C - 指定目录

gzip / gunzip - 压缩和解压

使用 gzip 算法压缩文件。

# 压缩文件(原文件会被删除)
gzip file.txt

# 解压文件
gunzip file.txt.gz

# 保留原文件
gzip -k file.txt

# 递归压缩目录中的文件
gzip -r mydir/

# 查看压缩文件内容
zcat file.txt.gz

# 指定压缩级别(1-9,9 最高)
gzip -9 file.txt

bzip2 / bunzip2 - 压缩和解压

使用 bzip2 算法压缩文件(压缩率更高)。

# 压缩文件
bzip2 file.txt

# 解压文件
bunzip2 file.txt.bz2

# 保留原文件
bzip2 -k file.txt

# 查看压缩文件内容
bzcat file.txt.bz2

zip / unzip - ZIP 压缩

创建和解压 ZIP 文件。

# 创建 zip 文件
zip archive.zip file1.txt file2.txt

# 递归压缩目录
zip -r archive.zip mydir/

# 解压 zip 文件
unzip archive.zip

# 解压到指定目录
unzip archive.zip -d /path/to/directory/

# 查看 zip 内容(不解压)
unzip -l archive.zip

# 解压时覆盖已存在文件
unzip -o archive.zip

# 解压时不覆盖已存在文件
unzip -n archive.zip

# 添加文件到已存在的 zip
zip -u archive.zip newfile.txt

# 从 zip 中删除文件
zip -d archive.zip file.txt

用户和组管理

useradd - 添加用户

创建新用户账户。

# 创建用户
sudo useradd username

# 创建用户并指定主目录
sudo useradd -m -d /home/username username

# 创建用户并指定 shell
sudo useradd -s /bin/bash username

# 创建用户并指定用户组
sudo useradd -g groupname username

# 创建用户并添加到多个组
sudo useradd -G group1,group2 username

# 创建系统用户
sudo useradd -r username

usermod - 修改用户

修改用户账户信息。

# 修改用户主目录
sudo usermod -d /new/home username

# 修改用户 shell
sudo usermod -s /bin/zsh username

# 添加用户到组
sudo usermod -aG groupname username

# 修改用户名
sudo usermod -l newname oldname

# 锁定用户
sudo usermod -L username

# 解锁用户
sudo usermod -U username

userdel - 删除用户

删除用户账户。

# 删除用户
sudo userdel username

# 删除用户及其主目录
sudo userdel -r username

passwd - 修改密码

修改用户密码。

# 修改当前用户密码
passwd

# 修改指定用户密码(需要 root 权限)
sudo passwd username

# 删除用户密码
sudo passwd -d username

# 锁定用户密码
sudo passwd -l username

# 解锁用户密码
sudo passwd -u username

groupadd - 添加组

创建新用户组。

# 创建组
sudo groupadd groupname

# 创建组并指定 GID
sudo groupadd -g 1001 groupname

groupdel - 删除组

删除用户组。

# 删除组
sudo groupdel groupname

groups - 显示用户所属组

显示用户所属的所有组。

# 显示当前用户所属组
groups

# 显示指定用户所属组
groups username

id - 显示用户和组信息

显示用户的 UID、GID 和所属组。

# 显示当前用户信息
id

# 显示指定用户信息
id username

# 只显示 UID
id -u

# 只显示 GID
id -g

# 显示所有组 ID
id -G

su - 切换用户

切换到其他用户。

# 切换到 root 用户
su

# 切换到指定用户
su username

# 切换用户并加载其环境
su - username

# 以其他用户身份执行命令
su -c "command" username

sudo - 以超级用户权限执行

以 root 权限执行命令。

# 以 root 权限执行命令
sudo command

# 切换到 root shell
sudo -i

# 以指定用户身份执行命令
sudo -u username command

# 编辑 sudoers 文件
sudo visudo

# 列出当前用户的 sudo 权限
sudo -l

磁盘管理

df - 显示磁盘空间

显示文件系统的磁盘空间使用情况。

# 显示所有文件系统
df

# 以人类可读格式显示
df -h

# 显示 inode 使用情况
df -i

# 只显示指定类型的文件系统
df -t ext4

# 显示指定目录所在的文件系统
df /home

du - 显示目录空间

显示目录或文件的磁盘使用情况。

# 显示当前目录大小
du

# 以人类可读格式显示
du -h

# 显示目录总大小
du -sh

# 显示所有文件和目录的大小
du -ah

# 显示指定深度
du -h --max-depth=1

# 按大小排序
du -h | sort -h

# 显示最大的 10 个目录
du -h --max-depth=1 | sort -hr | head -10

mount - 挂载文件系统

挂载文件系统到目录。

# 显示所有挂载点
mount

# 挂载设备到目录
sudo mount /dev/sdb1 /mnt/usb

# 挂载 ISO 文件
sudo mount -o loop image.iso /mnt/iso

# 以只读方式挂载
sudo mount -o ro /dev/sdb1 /mnt/usb

# 重新挂载为读写
sudo mount -o remount,rw /mnt/usb

umount - 卸载文件系统

卸载已挂载的文件系统。

# 卸载文件系统
sudo umount /mnt/usb

# 强制卸载
sudo umount -f /mnt/usb

# 延迟卸载(等待使用完毕)
sudo umount -l /mnt/usb

fdisk - 磁盘分区工具

管理磁盘分区。

# 列出所有磁盘和分区
sudo fdisk -l

# 编辑指定磁盘的分区
sudo fdisk /dev/sdb

# 在 fdisk 交互模式中:
# m - 显示帮助
# p - 显示分区表
# n - 创建新分区
# d - 删除分区
# w - 保存并退出
# q - 不保存退出

mkfs - 创建文件系统

在分区上创建文件系统。

# 创建 ext4 文件系统
sudo mkfs.ext4 /dev/sdb1

# 创建 ext3 文件系统
sudo mkfs.ext3 /dev/sdb1

# 创建 FAT32 文件系统
sudo mkfs.vfat /dev/sdb1

# 创建 NTFS 文件系统
sudo mkfs.ntfs /dev/sdb1

fsck - 检查和修复文件系统

检查和修复文件系统错误。

# 检查文件系统(需要先卸载)
sudo fsck /dev/sdb1

# 自动修复错误
sudo fsck -y /dev/sdb1

# 检查所有文件系统
sudo fsck -A

文本处理

grep - 搜索文本

在文件中搜索匹配的文本模式。

# 在文件中搜索
grep "pattern" file.txt

# 忽略大小写
grep -i "pattern" file.txt

# 递归搜索目录
grep -r "pattern" /path/to/dir/

# 显示行号
grep -n "pattern" file.txt

# 反向匹配(显示不匹配的行)
grep -v "pattern" file.txt

# 只显示匹配的文件名
grep -l "pattern" *.txt

# 显示匹配行的前后各 3 行
grep -C 3 "pattern" file.txt

# 显示匹配行后的 3 行
grep -A 3 "pattern" file.txt

# 显示匹配行前的 3 行
grep -B 3 "pattern" file.txt

# 使用正则表达式
grep -E "pattern1|pattern2" file.txt

# 统计匹配行数
grep -c "pattern" file.txt

# 只显示匹配的部分
grep -o "pattern" file.txt

sed - 流编辑器

对文本进行转换和处理。

# 替换文本(只显示,不修改文件)
sed 's/old/new/' file.txt

# 替换所有匹配项
sed 's/old/new/g' file.txt

# 直接修改文件
sed -i 's/old/new/g' file.txt

# 删除空行
sed '/^$/d' file.txt

# 删除指定行
sed '3d' file.txt

# 删除第 2 到第 5 行
sed '2,5d' file.txt

# 显示指定行
sed -n '10,20p' file.txt

# 在行首添加文本
sed 's/^/prefix/' file.txt

# 在行尾添加文本
sed 's/$/suffix/' file.txt

# 多个替换
sed -e 's/old1/new1/g' -e 's/old2/new2/g' file.txt

awk - 文本处理工具

强大的文本分析和处理工具。

# 打印第一列
awk '{print $1}' file.txt

# 打印第一列和第三列
awk '{print $1, $3}' file.txt

# 打印最后一列
awk '{print $NF}' file.txt

# 使用指定分隔符
awk -F: '{print $1}' /etc/passwd

# 打印行号和内容
awk '{print NR, $0}' file.txt

# 条件过滤
awk '$3 > 100' file.txt

# 计算总和
awk '{sum += $1} END {print sum}' file.txt

# 计算平均值
awk '{sum += $1; count++} END {print sum/count}' file.txt

# 格式化输出
awk '{printf "%-10s %s\n", $1, $2}' file.txt

cut - 提取列

从文件中提取指定列。

# 提取第 1 列(以制表符分隔)
cut -f1 file.txt

# 提取第 1 和第 3 列
cut -f1,3 file.txt

# 提取第 1 到第 3 列
cut -f1-3 file.txt

# 使用指定分隔符
cut -d: -f1 /etc/passwd

# 提取字符位置 1-10
cut -c1-10 file.txt

sort - 排序

对文本行进行排序。

# 排序文件
sort file.txt

# 逆序排序
sort -r file.txt

# 数字排序
sort -n file.txt

# 按第 2 列排序
sort -k2 file.txt

# 去重排序
sort -u file.txt

# 忽略大小写
sort -f file.txt

# 按月份排序
sort -M file.txt

uniq - 去重

删除重复的相邻行。

# 去除重复行(需要先排序)
sort file.txt | uniq

# 只显示重复行
sort file.txt | uniq -d

# 只显示不重复的行
sort file.txt | uniq -u

# 统计每行出现次数
sort file.txt | uniq -c

# 忽略大小写
sort file.txt | uniq -i

wc - 统计

统计文件的行数、单词数和字节数。

# 统计行数、单词数、字节数
wc file.txt

# 只统计行数
wc -l file.txt

# 只统计单词数
wc -w file.txt

# 只统计字节数
wc -c file.txt

# 只统计字符数
wc -m file.txt

# 统计多个文件
wc file1.txt file2.txt

tr - 字符转换

转换或删除字符。

# 转换为大写
echo "hello" | tr 'a-z' 'A-Z'

# 转换为小写
echo "HELLO" | tr 'A-Z' 'a-z'

# 删除字符
echo "hello123" | tr -d '0-9'

# 压缩重复字符
echo "hello    world" | tr -s ' '

# 替换字符
echo "hello" | tr 'l' 'L'

其他常用命令

echo - 输出文本

显示文本或变量值。

# 输出文本
echo "Hello World"

# 输出变量
echo $HOME

# 不换行输出
echo -n "Hello"

# 输出到文件(覆盖)
echo "text" > file.txt

# 输出到文件(追加)
echo "text" >> file.txt

# 输出转义字符
echo -e "Line1\nLine2"

printf - 格式化输出

按指定格式输出文本。

# 格式化输出
printf "Name: %s, Age: %d\n" "Alice" 25

# 输出到文件
printf "text\n" > file.txt

# 格式化数字
printf "%.2f\n" 3.14159

history - 命令历史

显示命令历史记录。

# 显示命令历史
history

# 显示最近 10 条命令
history 10

# 执行历史命令(编号为 100)
!100

# 执行上一条命令
!!

# 执行最近的以 git 开头的命令
!git

# 清除历史记录
history -c

alias - 命令别名

创建命令别名。

# 创建别名
alias ll='ls -la'

# 查看所有别名
alias

# 删除别名
unalias ll

# 临时忽略别名
\ls

man - 查看手册

显示命令的手册页。

# 查看命令手册
man ls

# 搜索手册页
man -k keyword

# 查看指定章节
man 5 passwd

help - 命令帮助

显示 shell 内置命令的帮助。

# 查看内置命令帮助
help cd

# 查看所有内置命令
help

clear - 清屏

清除终端屏幕。

# 清屏
clear

# 或使用快捷键 Ctrl+L

exit - 退出

退出当前 shell 或终端。

# 退出
exit

# 带退出码退出
exit 0

ln - 创建链接

创建硬链接或符号链接。

# 创建符号链接(软链接)
ln -s /path/to/file linkname

# 创建硬链接
ln /path/to/file linkname

# 强制创建(覆盖已存在的链接)
ln -sf /path/to/file linkname

# 查看链接指向
ls -l linkname

xargs - 构建命令

从标准输入构建和执行命令。

# 删除查找到的文件
find . -name "*.tmp" | xargs rm

# 指定每次传递的参数数量
echo "1 2 3 4 5" | xargs -n 2 echo

# 使用占位符
find . -name "*.txt" | xargs -I {} cp {} /backup/

# 并行执行
find . -name "*.jpg" | xargs -P 4 -I {} convert {} {}.png

tee - 双向输出

同时输出到标准输出和文件。

# 输出到屏幕和文件
echo "text" | tee file.txt

# 追加到文件
echo "text" | tee -a file.txt

# 输出到多个文件
echo "text" | tee file1.txt file2.txt

# 配合 sudo 写入需要权限的文件
echo "text" | sudo tee /etc/config.txt

watch - 定期执行命令

定期执行命令并显示结果。

# 每 2 秒执行一次(默认)
watch df -h

# 指定间隔时间(秒)
watch -n 5 ls -l

# 高亮显示变化
watch -d free -m

# 执行复杂命令
watch 'ps aux | grep python'

总结

这份教程涵盖了 Linux 最常用的命令,包括:

  1. 文件和目录操作:ls, cd, mkdir, rm, cp, mv, touch
  2. 文件查看和编辑:cat, less, head, tail, nano, vim
  3. 文件搜索:find, locate, which, whereis
  4. 文件权限:chmod, chown, chgrp, umask
  5. 进程管理:ps, top, kill, bg, fg, nice
  6. 系统信息:uname, hostname, uptime, date, whoami
  7. 网络命令:ping, ifconfig, ip, netstat, curl, wget, ssh, scp
  8. 压缩解压:tar, gzip, bzip2, zip
  9. 用户管理:useradd, usermod, passwd, su, sudo
  10. 磁盘管理:df, du, mount, fdisk, mkfs
  11. 文本处理:grep, sed, awk, cut, sort, uniq, wc
  12. 其他工具:echo, history, alias, man, ln, xargs, tee, watch

掌握这些命令,你就能高效地在 Linux 系统中工作了!建议多加练习,熟能生巧。

Linux 基础命令完整教程

https://github.com/px6707/myblog
作者

panxiao

发布日期

2026 - 02 - 24

许可证

Unlicensed

评论