Skip to main content

Linux 命令大全完整指南

Linux 命令行是每个开发者、系统管理员和运维工程师的必备技能。本指南整理了最常用的 Linux 命令,按功能分类,帮助您快速查找和使用。

1. 文件管理

文件管理命令用于创建、删除、复制、移动和查看文件及目录。

基础文件操作

命令描述示例
ls列出目录内容ls -la /home
cp复制文件/目录cp file.txt backup.txt
mv移动/重命名文件mv old.txt new.txt
rm删除文件/目录rm file.txt
rmdir删除空目录rmdir empty_dir
mkdir创建目录mkdir new_folder
pwd显示当前路径pwd
cd切换目录cd /home/user

详细文件信息

命令描述示例
ls -l长格式显示ls -l
ls -a显示隐藏文件ls -a
ls -h人性化显示大小ls -lh
ls -R递归显示子目录ls -R
file查看文件类型file document.pdf
stat显示文件详细信息stat file.txt
tree以树形结构显示目录tree /home

文件查看命令

命令描述示例
cat查看文件内容cat file.txt
less分页查看大文件less largefile.log
more分页显示more file.txt
head查看文件开头head -n 20 file.txt
tail查看文件结尾tail -f logfile.log
nl带行号显示nl file.txt

文件查找

命令描述示例
find查找文件find /home -name "*.txt"
locate快速查找文件locate filename
which查找命令位置which python
whereis查找二进制/源码/手册whereis ls

文件权限

命令描述示例
chmod修改文件权限chmod 755 script.sh
chown修改文件所有者chown user:group file.txt
chgrp修改文件组chgrp developers file.txt
umask设置默认权限掩码umask 022

文件比较与差异

命令描述示例
diff比较文件差异diff file1.txt file2.txt
cmp比较两个文件cmp file1.txt file2.txt
comm比较两个已排序文件comm file1.txt file2.txt

链接文件

命令描述示例
ln创建硬链接ln source.txt link.txt
ln -s创建软链接ln -s /path/to/file link_name

文本处理

命令描述示例
grep文本搜索grep "pattern" file.txt
awk文本处理和分析awk '{print $1}' file.txt
sed流编辑器sed 's/old/new/g' file.txt
sort排序文本sort file.txt
uniq去重uniq file.txt
cut提取字段cut -d',' -f1 data.csv
wc统计行/字/字符wc -l file.txt

2. 文档编辑

文本编辑和处理命令用于编辑和格式化文档。

基础编辑命令

命令描述示例
vi/vim文本编辑器vim file.txt
nano简单文本编辑器nano file.txt
emacs全屏编辑器emacs file.txt
ed行编辑器ed file.txt

文本处理

命令描述示例
tr字符转换tr 'a-z' 'A-Z' < file.txt
colrm删除列colrm 1 3 file.txt
join合并文件join file1.txt file2.txt
paste合并文件行paste file1.txt file2.txt
split分割文件split -l 100 file.txt part_
uniq去除重复行uniq file.txt
sort排序文本sort file.txt
tee输出到文件和屏幕echo "text" | tee output.txt

格式化

命令描述示例
fmt格式化文本fmt -w 80 file.txt
fold折叠长行fold -w 50 file.txt
expand将制表符转成空格expand file.txt
unexpand将空格转成制表符unexpand file.txt

正则表达式

命令描述示例
grep使用正则表达式搜索grep -E "pattern" file.txt
egrep扩展正则表达式egrep "pattern" file.txt
fgrep固定字符串搜索fgrep "literal" file.txt

3. 文件传输

用于在不同系统间传输文件。

FTP 传输

命令描述示例
ftpFTP 客户端ftp ftp.example.com
sftp安全 FTPsftp user@host
lftp高级 FTP 客户端lftp ftp://user@host
ncftp增强 FTP 客户端ncftp ftp.example.com

远程复制

命令描述示例
scp安全复制scp file.txt user@host:/path/
rsync同步文件和目录rsync -avz /source/ user@host:/dest/
wget下载文件wget https://example.com/file.zip
curl传输数据curl -O https://example.com/file.zip

其他传输

命令描述示例
uucpUnix 到 Unix 复制uucp source destination
uuto发送文件uuto file remote!user
tftpTFTP 客户端tftp host

4. 磁盘管理

磁盘和目录空间管理命令。

目录操作

命令描述示例
cd切换目录cd /home/user
pwd显示当前目录pwd
ls列出目录内容ls -la
dirs显示目录栈dirs -p
pushd切换目录并入栈pushd /var/log
popd从栈中弹出目录popd

磁盘使用

命令描述示例
df显示磁盘空间使用情况df -h
du显示目录空间使用情况du -sh /home
lsblk列出块设备lsblk
fdisk磁盘分区工具sudo fdisk /dev/sda

挂载和卸载

命令描述示例
mount挂载文件系统mount /dev/sdb1 /mnt/usb
umount卸载文件系统umount /mnt/usb
eject弹出介质eject /dev/cdrom

磁盘配额

命令描述示例
quota显示磁盘配额quota -v
quotacheck检查磁盘配额sudo quotacheck -av
quotaon启用配额sudo quotaon -av
quotaoff禁用配额sudo quotaoff -av
edquota编辑配额sudo edquota username

5. 磁盘维护

磁盘检查、修复和格式化工具。

文件系统检查

命令描述示例
fsck检查文件系统sudo fsck /dev/sda1
e2fsckext2/ext3/ext4 文件系统检查sudo e2fsck /dev/sda1
badblocks检查坏块sudo badblocks /dev/sda
fsck.minixMINIX 文件系统检查sudo fsck /dev/fd0

文件系统管理

命令描述示例
mkfs创建文件系统sudo mkfs.ext4 /dev/sdb1
mkfs.ext2创建 ext2 文件系统sudo mkfs.ext2 /dev/sdb1
mkfs.ext4创建 ext4 文件系统sudo mkfs.ext4 /dev/sdb1
mkfs.ntfs创建 NTFS 文件系统sudo mkfs.ntfs /dev/sdb1

磁盘格式化

命令描述示例
mkbootdisk创建启动盘sudo mkbootdisk --device /dev/fd0 $(uname -r)
mformat格式化 DOS 文件系统mformat A:
fdformat格式化软盘fdformat /dev/fd0
mkdosfs创建 FAT 文件系统sudo mkdosfs /dev/sdb1

交换空间

命令描述示例
mkswap创建交换空间sudo mkswap /dev/sdb2
swapon启用交换空间sudo swapon /dev/sdb2
swapoff禁用交换空间sudo swapoff /dev/sdb2

其他维护

命令描述示例
dd复制和转换文件dd if=/dev/zero of=file.img bs=1M count=100
cfdisk磁盘分区工具sudo cfdisk /dev/sda
hdparm硬盘参数工具sudo hdparm -t /dev/sda
sync强制写入磁盘sync

6. 网络通讯

网络配置和通信命令。

网络配置

命令描述示例
ifconfig配置网络接口ifconfig eth0 192.168.1.100
ipIP 地址和路由管理ip addr add 192.168.1.100/24 dev eth0
netstat显示网络连接netstat -tuln
ss显示网络套接字ss -tuln

网络测试

命令描述示例
ping测试连通性ping google.com
traceroute路由跟踪traceroute google.com
tracepath跟踪路径tracepath google.com
telnet远程登录telnet host port
nc网络瑞士军刀nc -zv host port

HTTP 工具

命令描述示例
wget下载文件wget https://example.com/file.zip
curl传输数据curl https://api.example.com/data
httpdHTTP 服务器httpd -k start
apachectlApache 控制apachectl start

网络监控

命令描述示例
tcpdump捕获网络包sudo tcpdump -i eth0
ngrep网络包搜索ngrep pattern
nmap端口扫描nmap -sS host
netstat网络统计netstat -i

其他网络工具

命令描述示例
hostname显示/设置主机名hostname
dnsconfDNS 配置dnsconf
wall发送消息到所有终端wall "System maintenance"
write发送消息到用户终端write username
talk与用户对话talk username
mesg设置消息接收mesg n

7. 系统管理

用户、进程和系统管理命令。

用户管理

命令描述示例
adduser添加用户sudo adduser newuser
useradd添加用户sudo useradd -m username
usermod修改用户sudo usermod -aG group username
userdel删除用户sudo userdel username
passwd修改密码passwd username

组管理

命令描述示例
groupadd添加组sudo groupadd developers
groupmod修改组sudo groupmod -n newname oldname
groupdel删除组sudo groupdel groupname
groups显示用户组groups username

进程管理

命令描述示例
ps显示进程ps aux
top实时显示进程top
htop交互式进程查看htop
pstree进程树pstree -p
pgrep查找进程pgrep firefox
pkill终止进程pkill firefox
kill发送信号到进程kill 1234
killall按名称终止进程killall firefox

系统信息

命令描述示例
uname显示系统信息uname -a
whoami显示当前用户whoami
id显示用户 ID 和组 IDid username
who显示登录用户who
w显示登录用户及活动w
last显示登录历史last
free显示内存使用free -h
uptime显示运行时间uptime

系统控制

命令描述示例
reboot重启系统sudo reboot
shutdown关闭系统sudo shutdown -h now
halt停止系统sudo halt
poweroff关闭电源sudo poweroff
init改变运行级别init 0 (关机)

8. 系统设置

系统配置和环境设置命令。

环境变量

命令描述示例
export设置环境变量export PATH=$PATH:/new/path
env显示环境变量env
printenv打印环境变量printenv HOME
unset删除环境变量unset VARIABLE
alias设置命令别名alias ll='ls -la'
unalias删除别名unalias ll

系统配置

命令描述示例
set显示变量设置set
declare声明变量declare -i count=0
ulimit设置资源限制ulimit -n 4096
timeconfig设置时区sudo timeconfig
clock设置系统时钟sudo clock -w

模块管理

命令描述示例
lsmod显示已加载模块lsmod
modinfo显示模块信息modinfo module_name
modprobe加载模块sudo modprobe module_name
rmmod卸载模块sudo rmmod module_name
depmod生成模块依赖sudo depmod

服务管理

命令描述示例
systemctl系统服务管理sudo systemctl start service
service服务管理sudo service apache2 start
chkconfig设置服务自动启动sudo chkconfig service on
update-rc.d设置启动链接sudo update-rc.d service defaults

计划任务

命令描述示例
crontab编辑计划任务crontab -e
at在指定时间执行命令at now + 5 minutes
batch在系统负载低时执行batch

系统信息

命令描述示例
dmesg显示内核消息`dmesg
lspci显示 PCI 设备lspci
lsusb显示 USB 设备lsusb
lscpu显示 CPU 信息lscpu
lsblk显示块设备lsblk

9. 备份压缩

文件压缩、备份和归档命令。

压缩工具

命令描述示例
gzipGNU 压缩gzip file.txt
gunzip解压 gzipgunzip file.txt.gz
bzip2bzip2 压缩bzip2 file.txt
bunzip2解压 bzip2bunzip2 file.txt.bz2
xzxz 压缩xz file.txt
unxz解压 xzunxz file.txt.xz

归档工具

命令描述示例
tar归档工具tar -czvf archive.tar.gz directory/
zip创建 zip 压缩包zip -r archive.zip directory/
unzip解压 zip 压缩包unzip archive.zip
rar创建 rar 压缩包rar a archive.rar directory/
unrar解压 rar 压缩包unrar x archive.rar

备份工具

命令描述示例
dump文件系统备份sudo dump -0uf /dev/st0 /home
restore恢复备份sudo restore -rf /dev/st0
cpio复制文件到归档find . -print | cpio -ov > archive.cpio

编码解码

命令描述示例
uuencode编码二进制文件uuencode file.txt file.txt > encoded.txt
uudecode解码文件uudecode encoded.txt

10. 设备管理

硬件设备管理命令。

键盘设置

命令描述示例
loadkeys加载键盘布局sudo loadkeys us
dumpkeys显示键盘映射dumpkeys
setleds设置键盘 LEDsetleds +num

显示设置

命令描述示例
fbset帧缓冲设置sudo fbset -i
SVGATextModeSVGAText 模式SVGATextMode 132x60

电源管理

命令描述示例
poweroff关闭系统sudo poweroff
halt停止系统sudo halt
shutdown关闭系统sudo shutdown -h now
apmdAPM 守护进程apmd

设备创建

命令描述示例
MAKEDEV创建设备文件sudo MAKEDEV hd

其他重要命令

实用工具

命令描述示例
bc计算器echo "10 + 5" | bc
xargs构建参数列表find . -name "*.txt" | xargs rm
nohup不挂断地运行命令nohup ./script.sh &
jobs显示后台任务jobs
bg后台运行作业bg %1
fg前台运行作业fg %1

IP 和网络

命令描述示例
ipIP 地址管理ip addr show
ss套接字统计ss -tuln

进程管理

命令描述示例
killall按名称终止进程killall process_name
pkill模式匹配终止进程pkill pattern

文件查找

命令描述示例
locate快速文件查找locate filename
which查找命令路径which python

命令行快捷键

Bash 快捷键

快捷键功能
Ctrl + A移动到行首
Ctrl + E移动到行末
Ctrl + U删除光标前内容
Ctrl + K删除光标后内容
Ctrl + L清屏(等价于 clear
Ctrl + R搜索历史命令
Tab自动补全
Tab + Tab显示所有可能选项
!!执行上一条命令
!$上一条命令的最后一个参数

常用组合命令

实用脚本片段

# 查找并删除大于 100MB 的文件
find / -size +100M -type f -exec rm -rf {} \;

# 统计当前目录文件数量
ls -1 | wc -l

# 查看系统负载
uptime

# 查看磁盘使用情况
df -h

# 查看内存使用情况
free -h

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

# 监控网络连接
netstat -tuln

# 查看最近的登录记录
last | head -20

# 查找文件
find /path -name "*.txt"

# 批量重命名
for file in *.txt; do mv "$file" "${file%.txt}.log"; done

# 查看日志文件的最后 100 行
tail -100 /var/log/syslog

命令行最佳实践

1. 使用手册页

# 查看命令手册
man command_name

# 查看简化说明
command_name --help

# 查看简短描述
whatis command_name

2. 输出重定向

# 重定向到文件
command > output.txt

# 追加到文件
command >> output.txt

# 重定向错误
command 2> error.txt

# 同时重定向标准和错误
command > output.txt 2>&1

# 丢弃输出
command > /dev/null 2>&1

3. 管道操作

# 组合多个命令
command1 | command2 | command3

# 示例:查看最大的 10 个文件
du -ah / | sort -rh | head -10

# 示例:统计行数
cat file.txt | wc -l

4. 环境变量和别名

# 创建永久别名
echo "alias ll='ls -la'" >> ~/.bashrc
source ~/.bashrc

# 设置环境变量
export PATH=$PATH:/new/directory
echo "export PATH=\$PATH:/new/directory" >> ~/.bashrc

5. 错误处理

# 检查命令是否成功
command && echo "Success" || echo "Failed"

# 使用 exit code
command
if [ $? -eq 0 ]; then
echo "Command succeeded"
fi

总结

掌握这些 Linux 命令可以大大提高工作效率。建议:

  1. 从基础命令开始:先熟练掌握 ls, cd, cp, mv, rm, cat 等基本命令
  2. 练习管道和重定向:这是命令行强大的核心功能
  3. 学习正则表达式:配合 grep, sed, awk 使用效果更佳
  4. 查看手册页man 命令是最好的学习资源
  5. 实践出真知:在实际工作中多使用命令行解决问题

通过不断练习和使用,这些命令会成为您日常工作中的得力助手。