Linux 常用命令


📁 文件与目录操作

ls — 列出目录内容

 ls                      # 列出当前目录所有文件和文件夹名称(不含隐藏文件)
 ls -l                   # 显示详细信息:权限、硬链接数、拥有者、文件大小、修改时间、名称
 ls -a                   # 显示所有文件,包括隐藏文件(以 . 开头)
 ls -lh                  # 大小以“人类可读”形式显示(例如 1K, 234M)
 ls -lhS                 # 详细列表并按文件大小排序,最大文件显示在前面
 ls -lt                  # 按文件修改时间排序,最近修改的排前面
 ls -R                   # 递归列出当前目录及所有子目录内容
 ls --color=auto         # 彩色显示,区分文件类型(文件夹、可执行文件等)
 ls *.txt                # 使用通配符,只列出以 .txt 结尾的文件
 ls -d */                # 只列出当前目录的子目录(不显示文件)

示例 显示当前目录下所有文件(含隐藏)和详细信息: ls -la 递归列出当前目录下所有文件并按时间排序: ls -ltR


cd — 切换目录

 cd /home/user            # 进入指定绝对路径目录
 cd ..                    # 返回上一级目录
 cd -                     # 返回上一次所在目录
 cd                      # 进入当前用户主目录(即 ~)
 cd ~/Documents           # 进入当前用户家目录下的 Documents 目录

示例 快速切换回之前目录:

 pwd
 /home/user/Documents
 cd /etc
 cd -

输出将回到 /home/user/Documents


pwd — 显示当前目录路径

 pwd                      # 输出当前工作目录的绝对路径

mkdir / rmdir — 创建或删除目录

 mkdir mydir              # 创建单个目录
 mkdir -p a/b/c           # 递归创建多层目录(不存在的都会创建)
 rmdir emptydir           # 删除空目录
 rm -r mydir              # 递归删除目录及其内容(慎用)

注意 rmdir 只能删除空目录,非空目录需要 rm -r,且 rm -r 删除后不可恢复!


cp / mv / rm — 复制 / 移动 / 删除文件或目录

 cp file1.txt file2.txt          # 复制文件
 cp -r dir1 dir2                 # 递归复制目录(包括内容)
 mv file.txt /tmp/               # 移动文件到指定目录
 mv oldname.txt newname.txt      # 重命名文件或目录
 rm file.txt                    # 删除文件
 rm -r directory/                # 删除目录及其中所有文件(谨慎)
 rm -f file.txt                 # 强制删除文件,不提示

示例 复制多个文件到目录: cp file1.txt file2.txt ~/backup/


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

 touch newfile.txt              # 创建空文件或更新已有文件的修改时间

示例 生成10个空文件: touch file{1..10}.txt


查看文件内容

 cat file.txt                   # 直接显示整个文件内容(适合小文件)
 less file.txt                  # 分页查看大文件,支持上下翻页和搜索
 head -n 20 file.txt            # 查看文件前20行
 tail -n 50 file.txt            # 查看文件最后50行
 tail -f /var/log/syslog        # 实时动态查看文件追加内容(日志监控)

find — 查找文件(强大且灵活)

find . -name "*.txt"                          # 当前目录及子目录查找所有 .txt 文件
find /var/log -type f -mtime -7 # 查找7天内修改过的文件
find ~ -size +100M # 查找大于100MB的文件
find . -type d -name "backup*" # 查找目录名以 backup 开头的目录
find . -name "*.log" -exec rm -i {} \; # 查找并交互删除 .log 文件
find . -path "./venv" -prune -o -name "*.py" -print # 忽略 venv 目录,查找 .py 文件

示例 删除当前目录下超过30天未修改的 .tmp 文件: find . -name "*.tmp" -mtime +30 -delete


查看磁盘空间

du -sh ~/                    # 查看目录大小(人类可读)
du -sh * # 查看当前目录下各文件/目录大小
df -h # 查看所有挂载分区磁盘空间使用情况(人类可读)

示例 查看磁盘中最大的10个文件/目录: du -ah . | sort -rh | head -n 10


📝 文本处理与编辑

编辑器

nano file.txt                # 简单易用的终端文本编辑器,适合初学者
vim file.txt # 功能强大但学习曲线陡峭的编辑器

vim 基础操作

  • 启动vim file.txt
  • 模式切换
    • 普通模式(默认,能执行命令)
    • 插入模式(编辑文本):按 i 插入,a 在光标后插入,o 在下一行插入
    • 命令模式(输入命令):按 : 进入
  • 常用命令(普通模式下)
:w            # 保存文件
:q # 退出 vim
:wq # 保存并退出
:q! # 不保存强制退出
:set nu # 显示行号
dd # 删除当前行
yy # 复制当前行
p # 粘贴
/关键词 # 查找关键词,按 n 查找下一个,N 查找上一个
u # 撤销上一步操作
Ctrl + r # 重做撤销操作
gg # 跳到文件开头
G # 跳到文件末尾

grep — 文本搜索

grep "hello" file.txt           # 搜索包含 "hello" 的行,区分大小写
grep -i "error" logfile.log # 忽略大小写搜索
grep -r "TODO" ./src # 递归搜索目录中的内容
grep -n "pattern" file.txt # 显示行号
grep --color=auto "func" code.py # 高亮匹配文本

排序与去重

sort names.txt                     # 将文件内容按字典顺序排序
sort -r numbers.txt # 逆序排序
sort names.txt | uniq # 排序后去重(相邻重复才去重)
sort -u names.txt # 排序并去重(等同于 uniq)

统计文本信息

wc file.txt                       # 统计行数、词数、字节数
wc -l file.txt # 只统计行数
wc -w file.txt # 只统计词数

文件差异比较

diff file1.txt file2.txt          # 比较两个文件差异
diff -u file1.txt file2.txt # 以统一格式显示,适合补丁
colordiff file1.txt file2.txt # 彩色显示差异(需安装colordiff)

文件哈希校验

md5sum file1.txt                  # 计算文件 MD5 校验和
sha256sum file1.txt # 计算 SHA256 校验和,更安全

用途 确认文件传输完整性或下载文件是否被篡改。


📦 压缩与解压

tar — 打包与解包

tar -czf archive.tar.gz mydir/     # 打包并压缩目录
tar -xzf archive.tar.gz # 解压 tar.gz 文件
tar -cf archive.tar mydir/ # 只打包,不压缩
tar -xf archive.tar # 解包 tar 文件
tar -tvf archive.tar.gz # 查看压缩包内容列表

zip / unzip

zip files.zip file1 file2           # 压缩多个文件成 zip 格式
unzip files.zip # 解压 zip 文件

gzip / gunzip

gzip file.txt                      # 压缩成 file.txt.gz,删除原文件
gunzip file.txt.gz # 解压

🌐 网络操作

curl / wget — 下载文件

curl -O http://example.com/file.txt           # 下载文件,保留服务器文件名
wget http://example.com/file.txt # 同上,wget 使用更简单直观
curl -LO https://example.com/file.zip # 跟随重定向,保存文件
curl --retry 5 -O https://example.com/f # 自动重试5次,适合不稳定网络
wget -t 5 --waitretry=2 http://example.com/f # wget 自动重试5次,间隔2秒

scp — 远程文件拷贝

scp file.txt user@remote:/path/        # 上传文件到远程服务器
scp user@remote:/path/file.txt ./ # 从远程服务器下载文件
scp -P 2222 file.txt user@remote:/path/ # 指定端口为2222上传

rsync — 推荐替代 scp(支持增量同步与断点续传)

rsync -avz file.txt user@host:/path/         # 上传文件(带压缩)
rsync -avz user@host:/path/file.txt ./ # 下载文件
rsync -av --exclude="*.tmp" ./ user@host:/backup/ # 同步并排除 tmp 文件
rsync -av --progress largefile user@host:/path/ # 显示传输进度

优势 rsync 支持断点续传,只同步改动部分,效率更高。


ssh — 远程登录与命令执行

ssh user@remote_host                         # 登录远程服务器
ssh -p 2222 user@host # 指定端口登录
ssh -i ~/.ssh/id_rsa user@host # 使用指定私钥登录
ssh -o StrictHostKeyChecking=no user@host # 跳过首次连接确认(谨慎)
ssh user@host "uptime" # 远程执行命令后退出
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@host # 持久连接,防断线

📊 系统监控与进程管理

top / htop

 top                     # 动态显示 CPU、内存、进程状态,按 P 排序 CPU,M 排序内存
 # top 交互操作:
 # P - 按 CPU 占用排序
 # M - 按内存占用排序
 # k - 结束进程(输入 PID)
 # q - 退出
 htop                    # 美观交互式进程管理器(需安装)
 # 支持上下键选择进程,F9 杀死进程,F3 搜索,F6 排序

查看内存使用

 free -h                  # 查看内存和交换区使用情况(人类可读)
 vmstat 1 5               # 每秒显示系统资源信息5次

🔐 用户相关操作

修改密码

 passwd                  # 修改当前用户密码(需要输入旧密码)
 passwd username         # 管理员修改指定用户密码

🔐 文件权限与所有权(普通用户权限范围)

chmod — 修改权限

 chmod u+x script.sh      # 给文件所有者增加执行权限
 chmod 644 file.txt       # 设置权限 rw-r--r--
 chmod 755 mydir/         # 目录常用权限,所有者可写,组和其他可读执行
 chmod -R 755 mydir/      # 递归修改目录权限

权限数字含义(r=4,w=2,x=1),三位数字分别代表所有者、用户组、其他用户权限。

chown — 修改所有权

chown :mygroup file.txt      # 修改属组(你必须是该组成员)

查看文件权限和归属:

ls -l file.txt

🔄 后台运行程序

1) 使用 & 放后台

python script.py &          # 启动后台进程
jobs # 查看当前终端的后台任务
fg %1 # 将后台任务编号1恢复到前台
kill %1 # 终止后台任务编号1

2) 使用 nohup 防止进程挂断

nohup python train.py > out.log 2>&1 &     # 防挂断后台运行,日志输出到 out.log
tail -f out.log # 实时查看日志

📦 用户级软件安装(无管理员权限)

pip 安装 Python 包(用户目录)

pip install --user numpy pandas

配置环境变量,确保能找到用户目录安装的包(编辑 ~/.bashrc):

export PATH="$HOME/.local/bin:$PATH"

virtualenv / venv — 创建独立 Python 环境

python3 -m venv myenv              # 创建虚拟环境
source myenv/bin/activate # 激活环境
pip install flask # 安装包
deactivate # 退出环境

conda — 管理环境和包

conda create -n myenv numpy pandas -y    # 创建环境并安装包
conda activate myenv # 激活环境
conda install matplotlib scikit-learn # 安装包
conda list # 查看已安装包
conda env list # 查看所有环境
conda remove -n myenv --all # 删除环境

🔁 小结推荐

功能推荐命令或工具
查看目录ls
文件查找find
查看文件内容cat, less
编辑文本nano, vim
下载文件wget, curl
远程传输文件rsync(优于 scp)
远程登录ssh
后台运行&, nohup
系统监控top, htop
文件权限管理chmod, chown
Python包管理pip --user, venv, conda