插件窝 干货文章 万字详解 Linux 常用指令(值得收藏)

万字详解 Linux 常用指令(值得收藏)

file bash 文件 显示 990    来源:    2025-04-13

Linux 常用指令详解

一、文件与目录操作

1. 基础导航命令

pwd - 显示当前工作目录

pwd
# /home/username

cd - 改变目录

cd /path/to/directory  # 绝对路径
cd ../parent           # 相对路径
cd ~                   # 返回家目录
cd -                   # 返回上一个目录

ls - 列出目录内容

ls              # 简单列出
ls -l           # 长格式显示
ls -a           # 显示隐藏文件
ls -lh          # 人类可读的文件大小
ls -t           # 按修改时间排序
ls -R           # 递归列出子目录
ls --color=auto # 彩色显示

2. 文件操作命令

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

touch filename.txt
touch -t 202301011200 filename.txt  # 设置特定时间戳

cp - 复制文件或目录

cp file1 file2            # 复制文件
cp -r dir1 dir2           # 递归复制目录
cp -v file1 file2         # 显示详细信息
cp -p file1 file2         # 保留原始属性
cp -u file1 file2         # 仅当源文件更新时才复制

mv - 移动或重命名文件

mv oldname newname        # 重命名
mv file /path/to/dir/     # 移动文件
mv -i file1 file2         # 覆盖前询问
mv -n file1 file2         # 不覆盖已存在文件

rm - 删除文件或目录

rm file                   # 删除文件
rm -r dir                 # 递归删除目录
rm -f file                # 强制删除,不提示
rm -i file                # 交互式删除
rm --preserve-root        # 保护根目录(默认)

3. 目录操作命令

mkdir - 创建目录

mkdir dirname
mkdir -p parent/child     # 创建多级目录
mkdir -m 755 dirname      # 设置权限

rmdir - 删除空目录

rmdir dirname
rmdir -p parent/child     # 删除多级空目录

4. 文件查看命令

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

cat file.txt
cat -n file.txt          # 显示行号
cat -b file.txt          # 非空行显示行号
cat file1 file2 > combined # 合并文件

less/more - 分页查看文件

less filename
more filename
# 常用操作:
# 空格 - 下一页
# b - 上一页
# /pattern - 搜索
# q - 退出

head - 显示文件开头部分

head file.txt            # 默认显示前10行
head -n 20 file.txt      # 显示前20行
head -c 100 file.txt     # 显示前100字节

tail - 显示文件结尾部分

tail file.txt            # 默认显示最后10行
tail -n 20 file.txt      # 显示最后20行
tail -f logfile          # 实时跟踪文件变化
tail -F logfile          # 跟踪文件名变化

nl - 显示文件内容并添加行号

nl file.txt
nl -b a file.txt        # 包括空行
nl -w 3 file.txt        # 设置行号宽度

5. 文件查找命令

find - 查找文件

find /path -name "*.txt"        # 按名称查找
find . -type f -mtime -7        # 7天内修改的文件
find / -size +10M               # 大于10MB的文件
find ~ -user username           # 按用户查找
find /var/log -name "*.log" -exec rm {} \; # 查找并删除
find . -perm 644                # 按权限查找

locate - 快速查找文件(需先更新数据库)

locate filename
updatedb                       # 更新数据库

which - 显示命令的完整路径

which ls
# /bin/ls

whereis - 定位命令的二进制、源码和手册页

whereis python
# python: /usr/bin/python /usr/lib/python2.7 /usr/include/python2.7 /usr/share/man/man1/python.1.gz

二、文件内容处理

1. 文本处理命令

grep - 文本搜索

grep "pattern" file.txt
grep -i "pattern" file.txt      # 忽略大小写
grep -v "pattern" file.txt      # 反向匹配
grep -r "pattern" /path         # 递归搜索
grep -n "pattern" file.txt      # 显示行号
grep -c "pattern" file.txt      # 统计匹配行数
grep -E "regexp" file.txt       # 扩展正则表达式
egrep "regexp" file.txt         # 同上

awk - 强大的文本处理工具

awk '{print $1}' file.txt       # 打印第一列
awk -F: '{print $1}' /etc/passwd # 指定分隔符
awk '/pattern/ {print $0}' file # 匹配模式
awk 'NR==3,NR==5' file.txt      # 打印3-5行
awk '{sum+=$1} END{print sum}' file # 计算总和

sed - 流编辑器

sed 's/old/new/g' file.txt      # 替换文本
sed -i 's/old/new/g' file.txt   # 直接修改文件
sed '5d' file.txt               # 删除第5行
sed '1,3d' file.txt             # 删除1-3行
sed '/pattern/d' file.txt       # 删除匹配行
sed -n '10,20p' file.txt        # 打印10-20行
sed '3i\new line' file.txt      # 在第3行前插入
sed '3a\new line' file.txt      # 在第3行后追加

cut - 剪切文件内容

cut -d: -f1 /etc/passwd         # 以:分隔,取第一列
cut -c1-5 file.txt              # 取每行1-5字符

sort - 排序文件内容

sort file.txt                   # 按字母排序
sort -n file.txt                # 按数字排序
sort -r file.txt                # 逆序排序
sort -u file.txt                # 去重排序
sort -k2 file.txt               # 按第二列排序
sort -t: -k3n /etc/passwd       # 以:分隔,按第三列数字排序

uniq - 报告或忽略重复行

uniq file.txt                   # 去除连续重复行
uniq -c file.txt                # 计数重复行
uniq -d file.txt                # 只显示重复行
uniq -u file.txt                # 只显示唯一行

wc - 统计行数、单词数和字节数

wc file.txt                     # 行数 单词数 字节数 文件名
wc -l file.txt                  # 只统计行数
wc -w file.txt                  # 只统计单词数
wc -c file.txt                  # 只统计字节数
wc -m file.txt                  # 统计字符数

diff - 比较文件差异

diff file1 file2
diff -u file1 file2             # 统一格式输出
diff -r dir1 dir2               # 递归比较目录
diff -y file1 file2             # 并排比较

comm - 比较两个已排序文件

comm file1 file2                # 三列输出: 独有行 独有行 共有行
comm -12 file1 file2            # 只显示共有行

paste - 合并文件行

paste file1 file2               # 并排合并
paste -d, file1 file2           # 指定分隔符
paste -s file1                  # 转置为单行

tr - 字符转换或删除

tr 'a-z' 'A-Z' < file.txt       # 小写转大写
tr -d '\r' < file.txt           # 删除回车符
tr -s ' ' < file.txt            # 压缩连续空格

2. 文件比较与校验

cmp - 逐字节比较文件

cmp file1 file2

md5sum/sha1sum - 计算校验和

md5sum file.txt
sha1sum file.txt
sha256sum file.txt

file - 确定文件类型

file filename
file -i filename               # 显示MIME类型

三、权限与所有权

1. 权限管理

chmod - 改变文件权限

chmod 755 file.txt             # 数字模式
chmod u+x file.txt             # 符号模式
chmod -R 755 dir               # 递归修改
chmod a+r file.txt             # 所有人可读
chmod g-w file.txt             # 组用户不可写

chown - 改变文件所有者

chown user:group file.txt
chown -R user:group dir        # 递归修改
chown :group file.txt          # 只改组

chgrp - 改变文件所属组

chgrp group file.txt
chgrp -R group dir             # 递归修改

umask - 设置默认权限掩码

umask 022                      # 设置掩码
umask                          # 查看当前掩码

2. 特殊权限

SUID/SGID/Sticky bit

chmod u+s file                 # 设置SUID
chmod g+s dir                  # 设置SGID
chmod +t dir                   # 设置Sticky bit
chmod 4755 file                # 数字设置SUID
chmod 2755 dir                 # 数字设置SGID
chmod 1777 dir                 # 数字设置Sticky bit

四、系统信息与进程管理

1. 系统信息

uname - 显示系统信息

uname -a                       # 全部信息
uname -s                       # 内核名称
uname -n                       # 主机名
uname -r                       # 内核版本
uname -m                       # 硬件架构

hostname - 显示或设置主机名

hostname
hostname newname               # 临时修改

uptime - 显示系统运行时间

uptime
# 12:34:56 up 10 days,  2:30,  3 users,  load average: 0.00, 0.01, 0.05

date - 显示或设置系统时间

date                           # 当前时间
date +"%Y-%m-%d %H:%M:%S"      # 格式化输出
date -s "2023-01-01 12:00:00"  # 设置时间
date -d "1 day ago"            # 相对时间

cal - 显示日历

cal
cal -3                         # 显示前中后三个月
cal -y                         # 显示全年日历
cal 2023                       # 显示特定年份

free - 显示内存使用情况

free -h                        # 人类可读格式
free -m                        # MB为单位
free -s 5                      # 每5秒刷新

df - 显示磁盘空间使用

df -h                          # 人类可读格式
df -i                          # 显示inode信息
df -T                          # 显示文件系统类型

du - 显示目录空间使用

du -sh dir                     # 目录总大小
du -h --max-depth=1 /          # 一级子目录大小
du -ah dir                     # 显示所有文件大小

top/htop - 动态显示进程信息

top
htop                           # 增强版top
# 常用操作:
# q - 退出
# k - 杀死进程
# M - 按内存排序
# P - 按CPU排序

2. 进程管理

ps - 显示进程状态

ps aux                         # 显示所有进程
ps -ef                         # 完整格式
ps -u username                 # 特定用户进程
ps -p PID                      # 特定PID进程
ps -o pid,comm,pcpu            # 自定义输出

kill - 终止进程

kill PID                       # 默认发送TERM信号
kill -9 PID                    # 强制终止
kill -l                        # 列出所有信号
killall processname            # 终止所有同名进程
pkill pattern                  # 按模式终止进程

nice/renice - 调整进程优先级

nice -n 10 command             # 启动时设置优先级
renice 10 -p PID               # 修改运行中进程优先级

nohup - 忽略挂起信号运行命令

nohup command &                # 后台运行,忽略挂起

jobs/fg/bg - 作业控制

jobs                           # 列出后台作业
fg %1                          # 将作业1调到前台
bg %1                          # 将作业1调到后台

screen/tmux - 终端复用

screen                         # 启动新会话
screen -S name                 # 命名会话
screen -ls                     # 列出会话
screen -r ID                   # 恢复会话
# tmux类似但更强大

五、网络相关命令

1. 网络配置与诊断

ifconfig/ip - 网络接口配置

ifconfig                       # 显示接口信息
ifconfig eth0 up               # 启用接口
ifconfig eth0 192.168.1.100    # 设置IP
ip addr show                   # 现代替代命令
ip link set eth0 up
ip addr add 192.168.1.100/24 dev eth0

ping - 测试网络连通性

ping example.com
ping -c 4 example.com          # 指定次数
ping -i 5 example.com          # 指定间隔(秒)
ping -s 1000 example.com       # 指定包大小

traceroute/tracepath - 跟踪路由

traceroute example.com
tracepath example.com          # 不需要root权限

netstat/ss - 网络统计信息

netstat -tulnp                 # 监听端口
netstat -r                     # 路由表
netstat -s                     # 统计信息
ss -tulnp                      # 现代替代命令

dig/nslookup - DNS查询

dig example.com
dig example.com MX             # 查询MX记录
nslookup example.com

host - DNS查询工具

host example.com
host -t MX example.com         # 查询特定记录

whois - 域名信息查询

whois example.com

wget/curl - 下载工具

wget http://example.com/file
wget -c http://example.com/file # 断点续传
wget -r -l1 -p http://example.com # 递归下载
curl -O http://example.com/file
curl -o localname http://example.com/file
curl -L http://example.com     # 跟随重定向

scp - 安全复制

scp file user@remote:/path     # 上传
scp user@remote:/path/file .   # 下载
scp -r dir user@remote:/path   # 递归复制目录
scp -P 2222 file user@remote:/path # 指定端口

rsync - 远程同步工具

rsync -avz source/ user@remote:dest/ # 同步目录
rsync -avz -e "ssh -p 2222" source/ user@remote:dest/ # 指定端口
rsync -avz --delete source/ dest/ # 删除目标多余文件
rsync -avz --progress source/ dest/ # 显示进度

ssh - 安全外壳连接

ssh user@remote
ssh -p 2222 user@remote        # 指定端口
ssh -i key.pem user@remote     # 使用密钥认证
ssh -X user@remote             # 启用X11转发
ssh -L 8080:localhost:80 user@remote # 本地端口转发
ssh -R 8080:localhost:80 user@remote # 远程端口转发

2. 防火墙与路由

iptables - 包过滤工具

iptables -L                    # 列出规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
iptables -A INPUT -j DROP      # 默认拒绝
iptables-save > rules.v4       # 保存规则
iptables-restore < rules.v4    # 恢复规则

ufw - 简化防火墙配置 ```bash ufw enable # 启用 ufw allow 22/tcp # 允许