Linux是程序员必备的操作系统之一。不管是做后端开发运维还是前端开发都经常需要和Linux打交道。

但是Linux的命令非常多很多人记不住或者只会几个基本命令。我自己刚接触Linux的时候也是这样经常需要查命令很不方便。

后来我整理了一份Linux常用命令速查手册把常用的命令分类整理在一起方便查阅。今天就把这份手册分享给大家希望能帮到大家。

文件和目录操作

ls:列出目录内容

# 列出当前目录内容
ls

# 列出所有文件(包括隐藏文件)
ls -a

# 以长格式列出
ls -l

# 以人类可读的格式显示文件大小
ls -lh

# 按修改时间排序(最新的在前)
ls -lt

# 递归列出子目录内容
ls -R

cd:切换目录

# 切换到指定目录
cd /path/to/directory

# 切换到用户主目录
cd ~

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

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

pwd:显示当前目录

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

mkdir:创建目录

# 创建一个目录
mkdir directory_name

# 递归创建多级目录
mkdir -p /path/to/directory

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

rm:删除文件或目录

# 删除文件
rm filename

# 删除目录(空目录)
rm -d directory_name

# 递归删除目录及其内容
rm -r directory_name

# 强制删除,不提示
rm -f filename

# 递归强制删除(危险!慎用!)
rm -rf directory_name

cp:复制文件或目录

# 复制文件
cp source_file destination_file

# 复制文件到目录
cp source_file /path/to/directory/

# 递归复制目录及其内容
cp -r source_directory destination_directory

# 复制时保留文件属性
cp -p source_file destination_file

# 复制时显示进度
cp -v source_file destination_file

mv:移动或重命名文件

# 重命名文件
mv old_name new_name

# 移动文件到目录
mv source_file /path/to/directory/

# 移动多个文件到目录
mv file1 file2 file3 /path/to/directory/

# 移动时显示进度
mv -v source_file destination

touch:创建空文件或修改时间戳

# 创建空文件
touch filename

# 同时创建多个文件
touch file1 file2 file3

# 修改文件的访问时间
touch -a filename

# 修改文件的修改时间
touch -m filename

find:查找文件

# 按文件名查找
find /path -name "filename"

# 按文件类型查找(f=文件,d=目录)
find /path -type f

# 按文件大小查找(大于10MB)
find /path -size +10M

# 按修改时间查找(7天内修改的)
find /path -mtime -7

# 查找后执行命令
find /path -name "*.log" -exec rm {} \;

ln:创建链接

# 创建硬链接
ln source_file link_name

# 创建软链接(符号链接)
ln -s source_file link_name

文件查看和编辑

cat:查看文件内容

# 查看文件内容
cat filename

# 查看文件内容并显示行号
cat -n filename

# 合并多个文件
cat file1 file2 > combined_file

less:分页查看文件

# 分页查看文件
less filename

# 在less中常用操作:
# 空格/PageDown:向下翻页
# b/PageUp:向上翻页
# /关键词:向下搜索
# ?关键词:向上搜索
# n:下一个搜索结果
# N:上一个搜索结果
# q:退出

head:查看文件开头

# 查看文件前10行
head filename

# 查看文件前20行
head -n 20 filename

# 查看文件前100字节
head -c 100 filename

tail:查看文件结尾

# 查看文件后10行
tail filename

# 查看文件后20行
tail -n 20 filename

# 实时查看文件新增内容
tail -f filename

# 实时查看文件新增内容(文件名变化时重新打开)
tail -F filename

grep:搜索文件内容

# 在文件中搜索关键词
grep "keyword" filename

# 搜索时忽略大小写
grep -i "keyword" filename

# 显示行号
grep -n "keyword" filename

# 反向搜索(显示不包含关键词的行)
grep -v "keyword" filename

# 递归搜索目录下所有文件
grep -r "keyword" /path/to/directory

# 搜索时显示匹配的行数
grep -c "keyword" filename

wc:统计文件

# 统计文件的行数、单词数、字节数
wc filename

# 只统计行数
wc -l filename

# 只统计单词数
wc -w filename

# 只统计字节数
wc -c filename

# 统计字符数
wc -m filename

sort:排序文件内容

# 按字母顺序排序
sort filename

# 按数字顺序排序
sort -n filename

# 反向排序
sort -r filename

# 排序并去重
sort -u filename

uniq:去重

# 去除连续的重复行(需要先排序)
sort filename | uniq

# 显示重复的行
sort filename | uniq -d

# 显示每行出现的次数
sort filename | uniq -c

diff:比较文件差异

# 比较两个文件
diff file1 file2

# 并排显示差异
diff -y file1 file2

# 显示上下文差异
diff -c file1 file2

# 统一格式显示差异
diff -u file1 file2

系统信息和管理

uname:显示系统信息

# 显示内核名称
uname

# 显示所有系统信息
uname -a

# 显示内核版本
uname -r

# 显示主机名
uname -n

# 显示硬件架构
uname -m

hostname:显示或设置主机名

# 显示主机名
hostname

# 设置主机名
hostname new_hostname

uptime:显示系统运行时间

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

date:显示或设置日期时间

# 显示当前日期时间
date

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

# 显示UTC时间
date -u

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

cal:显示日历

# 显示当前月份日历
cal

# 显示指定年份日历
cal 2015

# 显示指定月份日历
cal 12 2015

who:显示登录用户

# 显示当前登录的用户
who

# 显示当前用户
whoami

# 显示用户登录历史
last

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

# 显示登录用户及其正在执行的命令
w

top:实时显示系统进程

# 实时显示系统进程和资源使用情况
top

# 在top中常用操作:
# P:按CPU使用率排序
# M:按内存使用率排序
# T:按运行时间排序
# k:杀死进程
# q:退出

ps:显示进程快照

# 显示当前终端的进程
ps

# 显示所有进程
ps -e

# 显示所有进程的详细信息
ps -ef

# 显示所有进程的详细信息(BSD风格)
ps aux

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

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

kill:终止进程

# 终止指定PID的进程
kill pid

# 强制终止进程
kill -9 pid

# 终止指定名称的进程
killall process_name

# 强制终止指定名称的进程
killall -9 process_name

free:显示内存使用情况

# 显示内存使用情况
free

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

# 以MB为单位显示
free -m

# 以GB为单位显示
free -g

df:显示磁盘使用情况

# 显示磁盘使用情况
df

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

# 显示文件系统类型
df -T

# 显示inode使用情况
df -i

du:显示目录大小

# 显示当前目录大小
du

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

# 显示指定目录大小
du -h /path/to/directory

# 只显示目录总大小
du -sh /path/to/directory

# 显示目录下所有子目录大小
du -h --max-depth=1 /path/to/directory

权限管理

chmod:修改文件权限

# 给所有者添加执行权限
chmod u+x filename

# 给所有用户添加读权限
chmod a+r filename

# 移除组用户的写权限
chmod g-w filename

# 设置权限为755(rwxr-xr-x)
chmod 755 filename

# 设置权限为644(rw-r--r--)
chmod 644 filename

# 递归修改目录下所有文件权限
chmod -R 755 /path/to/directory

chown:修改文件所有者

# 修改文件所有者
chown user filename

# 修改文件所有者和组
chown user:group filename

# 递归修改目录下所有文件所有者
chown -R user:group /path/to/directory

chgrp:修改文件所属组

# 修改文件所属组
chgrp group filename

# 递归修改目录下所有文件所属组
chgrp -R group /path/to/directory

umask:设置默认权限掩码

# 显示当前权限掩码
umask

# 设置权限掩码
umask 022

压缩和解压

tar:打包和解包

# 打包目录为tar文件
tar -cvf archive.tar /path/to/directory

# 打包并压缩为tar.gz
tar -czvf archive.tar.gz /path/to/directory

# 打包并压缩为tar.bz2
tar -cjvf archive.tar.bz2 /path/to/directory

# 解压tar文件
tar -xvf archive.tar

# 解压tar.gz文件
tar -xzvf archive.tar.gz

# 解压tar.bz2文件
tar -xjvf archive.tar.bz2

# 查看压缩包内容
tar -tvf archive.tar.gz

gzip:压缩和解压

# 压缩文件
gzip filename

# 解压文件
gzip -d filename.gz

# 解压文件(另一种方式)
gunzip filename.gz

# 压缩时保留原文件
gzip -k filename

zip:压缩为zip

# 压缩文件为zip
zip archive.zip file1 file2

# 压缩目录为zip(递归)
zip -r archive.zip /path/to/directory

# 解压zip文件
unzip archive.zip

# 查看zip文件内容
unzip -l archive.zip

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

网络管理

ifconfig:查看和配置网络接口

# 查看所有网络接口信息
ifconfig

# 查看指定网络接口信息
ifconfig eth0

# 启用网络接口
ifconfig eth0 up

# 禁用网络接口
ifconfig eth0 down

# 设置IP地址
ifconfig eth0 192.168.1.100 netmask 255.255.255.0

ip:现代网络配置工具

# 查看网络接口信息
ip addr

# 查看路由表
ip route

# 查看邻居表(ARP)
ip neigh

# 启用网络接口
ip link set eth0 up

# 禁用网络接口
ip link set eth0 down

# 设置IP地址
ip addr add 192.168.1.100/24 dev eth0

ping:测试网络连通性

# 测试与指定主机的连通性
ping google.com

# 指定ping的次数
ping -c 4 google.com

# 指定ping的间隔时间
ping -i 2 google.com

# 指定数据包大小
ping -s 1024 google.com

netstat:查看网络连接

# 查看所有网络连接
netstat -a

# 查看所有TCP连接
netstat -at

# 查看所有UDP连接
netstat -au

# 查看监听端口
netstat -l

# 显示进程信息
netstat -p

# 显示路由表
netstat -r

# 显示网络接口统计
netstat -i

ss:现代网络连接查看工具

# 查看所有网络连接
ss -a

# 查看所有TCP连接
ss -t

# 查看所有UDP连接
ss -u

# 查看监听端口
ss -l

# 显示进程信息
ss -p

# 显示详细信息
ss -s

curl:网络数据传输

# 发送GET请求
curl http://example.com

# 发送POST请求
curl -X POST -d "key=value" http://example.com

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

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

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

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

# 设置请求头
curl -H "Content-Type: application/json" http://example.com

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

wget:文件下载

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

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

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

# 断点续传
wget -c http://example.com/file.zip

# 递归下载整个网站
wget -r http://example.com

ssh:远程登录

# 远程登录
ssh user@hostname

# 指定端口登录
ssh -p 2222 user@hostname

# 执行远程命令
ssh user@hostname "command"

# 复制文件到远程主机
scp local_file user@hostname:/path/to/destination

# 从远程主机复制文件
scp user@hostname:/path/to/file local_destination

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

软件包管理

apt(Debian/Ubuntu)

# 更新软件包列表
sudo apt update

# 升级所有软件包
sudo apt upgrade

# 安装软件包
sudo apt install package_name

# 卸载软件包
sudo apt remove package_name

# 卸载软件包并删除配置文件
sudo apt purge package_name

# 搜索软件包
apt search keyword

# 查看软件包信息
apt show package_name

# 清理无用的软件包
sudo apt autoremove

# 清理下载的安装包缓存
sudo apt clean

yum(CentOS/RHEL)

# 安装软件包
sudo yum install package_name

# 卸载软件包
sudo yum remove package_name

# 升级所有软件包
sudo yum update

# 搜索软件包
yum search keyword

# 查看软件包信息
yum info package_name

# 列出已安装的软件包
yum list installed

# 清理缓存
sudo yum clean all

其他常用命令

echo:输出文本

# 输出文本
echo "Hello World"

# 输出带颜色的文本
echo -e "\033[31mRed Text\033[0m"

# 输出到文件(覆盖)
echo "content" > filename

# 输出到文件(追加)
echo "content" >> filename

history:查看命令历史

# 查看命令历史
history

# 查看最近10条命令
history 10

# 执行历史中的第n条命令
!n

# 执行上一条命令
!!

# 执行最近一条以keyword开头的命令
!keyword

man:查看命令帮助

# 查看命令的手册页
man command_name

# 查看命令的简短帮助
command_name --help

alias:设置命令别名

# 查看当前别名
alias

# 设置别名
alias ll='ls -l'

# 删除别名
unalias ll

nohup:后台运行命令

# 后台运行命令,不受终端关闭影响
nohup command &

# 后台运行并指定输出文件
nohup command > output.log 2>&1 &

crontab:定时任务

# 编辑定时任务
crontab -e

# 查看定时任务
crontab -l

# 删除所有定时任务
crontab -r

# 定时任务格式:
# 分 时 日 月 周 命令
# 每天凌晨2点执行
0 2 * * * /path/to/command
# 每小时执行一次
0 * * * * /path/to/command
# 每周一早上8点执行
0 8 * * 1 /path/to/command

写在最后

以上就是我整理的Linux常用命令速查手册。这些命令都是日常工作中经常会用到的掌握了这些命令基本上能应对大多数Linux操作场景。

当然Linux的命令还有很多这篇文章只是整理了最常用的一部分。如果大家想深入学习Linux可以去看,《鸟哥的Linux私房菜》,这本书讲得非常详细是Linux入门的经典教材。

另外学习Linux最好的方法就是多用多,练。不要只看教程要实际去操作去用这些命令用多了自然就记住了。

如果大家有什么常用的Linux命令我没有整理到的欢迎在评论区留言补充。

最后希望这份速查手册能帮到大家。祝大家都能熟练掌握Linux成为Linux高手。

记住:熟能生巧多练多用自然就会了。 与大家共勉。