📁 文件与目录操作
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 |