文章目录
- [1. 文件处理](#1. 文件处理)
-
- [1.1. 文件路径的表示](#1.1. 文件路径的表示)
- [1.2. 删除文件与目录](#1.2. 删除文件与目录)
- [1.3. 下载文件](#1.3. 下载文件)
- [1.3.1. wget命令](#1.3.1. wget命令)
- [1.3.2. curl命令](#1.3.2. curl命令)
- [1.4. 复制文件与目录](#1.4. 复制文件与目录)
- [1.5. 移动与重命名](#1.5. 移动与重命名)
- [1.6. 新建目录](#1.6. 新建目录)
- [1.7. 查看文件内容](#1.7. 查看文件内容)
- [1.8. 列出目录内容(ls命令)](#1.8. 列出目录内容(ls命令))
- [1.9. 文件扩展属性](#1.9. 文件扩展属性)
- [1.10. 查看文件与目录大小(du命令)](#1.10. 查看文件与目录大小(du命令))
- [1.11. 查看磁盘空间使用情况(df命令)](#1.11. 查看磁盘空间使用情况(df命令))
- [1.12. 清理各种缓存](#1.12. 清理各种缓存)
- [1.13. 查看文件创建时间](#1.13. 查看文件创建时间)
- [1.14. 创建文件或更新时间戳](#1.14. 创建文件或更新时间戳)
- [1.15. 服务器间传输文件(scp命令)](#1.15. 服务器间传输文件(scp命令))
- [1.16. 查找文件位置](#1.16. 查找文件位置)
- [2. 处理压缩文件](#2. 处理压缩文件)
-
- [2.1. tar文件(.tgz, .tar.gz, .tar.bz2)](#2.1. tar文件(.tgz, .tar.gz, .tar.bz2))
- [2.2. zip文件](#2.2. zip文件)
- [2.3. bz2文件](#2.3. bz2文件)
- [2.4. rar文件](#2.4. rar文件)
- [3. 进程、内存、CPU、GPU管理](#3. 进程、内存、CPU、GPU管理)
-
- [3.1. 查看系统进程](#3.1. 查看系统进程)
- [3.2. 查看GPU状态](#3.2. 查看GPU状态)
- [3.3. 根据进程名查找PID](#3.3. 根据进程名查找PID)
- [3.4. 查询进程详情(ps命令)](#3.4. 查询进程详情(ps命令))
- [3.5. 终止进程](#3.5. 终止进程)
- [3.6. 查看硬件信息](#3.6. 查看硬件信息)
- [4. Linux脚本与可执行文件](#4. Linux脚本与可执行文件)
-
- [4.1. Shell脚本权限与执行](#4.1. Shell脚本权限与执行)
- [4.2. source命令与点命令](#4.2. source命令与点命令)
- [4.3. 编写Shell循环示例](#4.3. 编写Shell循环示例)
- [4.4. 运行编程语言程序](#4.4. 运行编程语言程序)
- [4.5. 输出重定向与管道](#4.5. 输出重定向与管道)
- [4.6. 查找命令位置](#4.6. 查找命令位置)
- [4.7. 查看Java版本](#4.7. 查看Java版本)
- [4.8. 文本编辑器](#4.8. 文本编辑器)
- [5. 后台运行与会话管理](#5. 后台运行与会话管理)
-
- [5.1. nohup命令](#5.1. nohup命令)
- [5.2. tmux](#5.2. tmux)
- [5.3. screen命令](#5.3. screen命令)
- [5.4. 前台进程转后台](#5.4. 前台进程转后台)
- [6. 网络配置与访问](#6. 网络配置与访问)
-
- [6.1. 网络测试与诊断](#6.1. 网络测试与诊断)
- [6.2. 主机名管理](#6.2. 主机名管理)
- [6.3. 防火墙管理(ufw)](#6.3. 防火墙管理(ufw))
- [7. 系统与用户管理](#7. 系统与用户管理)
-
- [7.1. 基础操作](#7.1. 基础操作)
- [7.2. 计算文件校验和](#7.2. 计算文件校验和)
- [7.3. 环境变量](#7.3. 环境变量)
- [7.4. 查看系统信息](#7.4. 查看系统信息)
- [7.5. 终端操作习惯](#7.5. 终端操作习惯)
- [8. 常用纯命令行操作软件](#8. 常用纯命令行操作软件)
-
- [8.1. 版本控制(Git)](#8.1. 版本控制(Git))
- [9. 参考资料](#9. 参考资料)
本文介绍Linux中常用的命令行。
1. 文件处理
1.1. 文件路径的表示
-
相对路径与绝对路径:相对路径基于当前目录,绝对路径从根目录开始。
-
特殊符号:
-
.代表当前目录。 -
..代表当前目录的上一级目录。
-
1.2. 删除文件与目录
-
rm 文件名:删除文件。 -
rm -r 文件夹路径:删除文件夹及其下所有内容。 -
rm -r /path/to/your/directory/*:删除文件夹下所有内容,但保留文件夹本身。 -
注意 :使用
-r删除时会逐一确认。若使用-rf组合,则直接删除且无确认提示(操作需谨慎)。
1.3. 下载文件
1.3.1. wget命令
-
wget 文件地址:将文件下载到当前目录。 -
wget --spider 文件地址:检查文件是否存在,可以测试网络状况、知晓数据大小,不实际下载。 -
wget -P 文件夹 文件地址:将文件下载到指定文件夹。 -
-O参数用于重命名下载的文件。如果重命名路径中包含目录,则目录必须已存在。注意:
-O与-P参数冲突,若需指定路径和重命名,应使用-O。
下载提示:
-
对于类似Zenodo的链接,需删除URL末尾的
?download=1语句。 -
若下载链接参数复杂(如
https://url/dataset_files?arg1=value1&arg2=value2),建议先在桌面端通过网页下载,再从浏览器的下载记录中复制真实下载链接,以便在服务器上直接使用wget下载大文件,可节省上传时间。
1.3.2. curl命令
-
curl -O 文件地址:以远程文件的原始名称下载。 -
curl -o 名称 文件地址:下载并指定本地文件名。
1.4. 复制文件与目录
-
复制文件:
cp source target(target可以是文件路径或目录路径)。 -
复制目录:
cp -r source target。
1.5. 移动与重命名
-
mv 当前路径 目标路径:移动文件或目录。若目标为目录,则会将源移动至该目录下。 -
移动目录下所有文件:
mv 现文件夹/* 目标文件夹。
1.6. 新建目录
-
mkdir 目录名:创建目录。 -
mkdir -p 目录路径:递归创建所需的上层目录,若目录已存在则不报错。
1.7. 查看文件内容
-
cat 文件路径:在终端直接显示文件全部内容。 -
less 文件路径:分页查看文本文件,支持搜索和翻页。 -
查看文件首行:
head -n 1 文件名。 -
查看文件尾行:
tail -n 1 文件名。
1.8. 列出目录内容(ls命令)
ls 目录路径:列出指定目录下的文件和一级子目录。

-
ls -lh:以长格式、人类可读大小列出详细信息(包含隐藏文件需加-a参数)。-
输出字段说明(例如
-rw-r--r-- 1 username groupname 15K Jul 18 21:36 example.txt):-
文件类型与权限 :首字符表示类型(
-普通文件,d目录,l链接等),后9字符为三组权限(所有者、所属组、其他用户)。例如:
-rw-r--r--表示这是一个普通文件,拥有者有读和写权限,而组内成员和其他人只有读权限。 -
硬链接数。
-
所有者用户名。
-
所有者所在组。
-
文件大小 (由于使用了
-h参数,这个大小将以人类可读的格式(KB、MB、GB等)展示)。 -
最后修改时间。
-
文件/目录名。
-
-
-
ls -a:列出所有文件,包括隐藏文件。
1.9. 文件扩展属性
-
lsattr 文件名:显示文件的扩展属性(包括是否可以压缩(c)、是否可以进行安全删除(s)、是否可以备份(b)等)。主要用于底层文件系统管理。 -
chattr:更改文件或目录的扩展属性。
1.10. 查看文件与目录大小(du命令)
-
du -h 文件名:查看文件大小。 -
du -ah --max-depth=1 目录名:查看目录及其下一级子目录/文件的大小。 -
du -sh 目录名:仅显示目录总大小。 -
常用参数:
-
-h:以人类可读格式输出。 -
-a:显示目录及其中每个目录/文件的大小。 -
-s:仅显示目录总大小,不显示子项。
-
1.11. 查看磁盘空间使用情况(df命令)
-
df 目录路径:查看指定路径所在文件系统的总空间与已用空间。 -
df -h:以人类可读格式输出。
1.12. 清理各种缓存
-
Anaconda :
conda clean -a -
Hugging Face Datasets :缓存默认在
~/.cache/huggingface/datasets,可执行rm -rf ~/.cache/huggingface/datasets/清除。huggingface别的几个包也类似
-
Jedi :删除
~/.cache/jedi目录即可:rm -rf ~/.cache/jedi。 -
pip :
pip cache purge -
sentence-transformers :删除
~/.cache/torch/sentence_transformers目录下的文件。 -
Weights & Biases :
wandb sync --clean
1.13. 查看文件创建时间
Linux系统通常不直接记录文件创建时间。某些文件系统(如ext4、btrfs)支持"birth time"(crtime)属性,可通过以下方式尝试查看:
-
使用debugfs(需root权限) :
sudo debugfs -R 'stat <inode>' /dev/sdaX | grep crtime,其中<inode>通过ls -i 文件名获取,/dev/sdaX为磁盘设备。 -
使用stat命令 :
stat 文件名,若输出中包含 "Birth" 字段,则显示创建时间。若无此字段,则表明文件系统不支持。
1.14. 创建文件或更新时间戳
touch 文件名:若文件不存在则创建空文件;若存在则更新其访问和修改时间。
1.15. 服务器间传输文件(scp命令)

-
上传文件 :
scp -P 端口号 本地文件路径 用户名@IP地址:目标路径 -
下载文件 :
scp -P 端口号 用户名@IP地址:文件路径 本地目标路径 -
上传目录 :
scp -P 端口号 -r 本地目录路径 用户名@IP地址:目标路径 -
下载目录 :
scp -P 端口号 -r 用户名@IP地址:目录路径 本地目标路径
注意:首次连接需要手动输入yes确认是否继续连接;需确认主机密钥(可以设置保存到系统中);传输过程中会显示进度和预估剩余时间(ETA, Estimated Time of Arrival)。
1.16. 查找文件位置
-
whereis 文件名:搜索二进制文件、源码和手册页的位置。 -
locate 文件名:通过数据库快速查找文件(需提前更新数据库)。 -
find:功能强大的实时搜索工具。-
基本语法:
find 路径 条件 动作 -
常用示例:
-
find .或find . -print:列出当前目录及其子目录所有文件。 -
find ./test -name "abc.txt":按文件名搜索。 -
find ./test -name "*.php":使用通配符搜索。 -
find ./test -type f -name 'abc*':仅搜索文件。 -
find ./test -type d -name 'abc*':仅搜索目录。
-
-
2. 处理压缩文件
2.1. tar文件(.tgz, .tar.gz, .tar.bz2)
-
查看内容:
-
.tar:tar tf *.tar -
.tgz或.tar.gz:tar tzf *.tar.gz -
.tar.bz2:tar tjf *.tar.bz2
-
-
解压到指定目录 :
tar -zxvf 压缩文件 -C 目标目录
plain
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
1、*.tar 用 tar --xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar --xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar --xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar --xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
2.2. zip文件
-
查看内容 :
zipinfo 压缩文件路径 -
解压文件 :
unzip 压缩文件路径 -
解压到指定目录 :
unzip 压缩文件路径 -d 目标目录 -
解压特定文件 :
unzip 压缩文件路径 '内部文件路径' -d 目标目录
2.3. bz2文件
-
查看内容 :
bzcat *.bz2(不解压直接显示内容)。 -
解压文件 :
bunzip2 -v *.bz2(解压并显示详细信息)。
2.4. rar文件
- 解压到指定目录 :
unrar x 文件名.rar /目标/路径/
3. 进程、内存、CPU、GPU管理
3.1. 查看系统进程
-
top:动态查看进程信息。按 P 以CPU使用率排序,按 q 退出。-
top -p PID:监控指定进程。 -
top -u 用户名:监控指定用户的进程。
-
-
htop:增强的交互式进程查看器。
3.2. 查看GPU状态
nvidia-smi:显示NVIDIA GPU使用情况、温度、内存占用等信息。
(更多CUDA管理技巧可参考我写的另一篇博文:Python深度学习的cuda管理)
3.3. 根据进程名查找PID
pidof 进程名
3.4. 查询进程详情(ps命令)

-
ps -ef | grep 关键词:根据关键词(如用户名)过滤进程。 -
ps aux | grep PID:根据PID查找进程及其所有者。 -
ps -f -p PID:显示指定PID进程的完整信息。
3.5. 终止进程
-
kill PID:向指定PID进程发送终止信号。 -
前台运行中断 :按 Ctrl+C 可中断当前终端中运行的命令(如Python会引发
KeyboardInterrupt)。
3.6. 查看硬件信息
-
CPU :
lscpu -
内存 :
free -m(以MB为单位显示)
4. Linux脚本与可执行文件
4.1. Shell脚本权限与执行
-
赋予执行权限 :
chmod u+x 脚本名.sh- 若文件被锁定(出现
Operation not permitted),需先解锁:chattr -i 文件名。
- 若文件被锁定(出现
-
执行脚本的几种方式:
-
./脚本名.sh(需有执行权限) -
sh 脚本名.sh
bash 脚本名.sh
(
bash与sh的区别请见相关文档) -
4.2. source命令与点命令
source 脚本名或. 脚本名:在当前Shell环境中执行脚本,使脚本中的变量和函数生效,常用于加载配置文件。
4.3. 编写Shell循环示例
bash
for i in {1..5}; do
echo "Iteration $i"
done
4.4. 运行编程语言程序
-
Python:
-
python 程序路径(在对应虚拟环境中)。 -
python -m 模块名:直接运行模块代码(在环境中通常无需python -m前缀)。
-
-
C语言:
-
编译:
gcc -o 可执行文件路径 .c文件 -Wall -
运行:
./可执行文件路径
-
4.5. 输出重定向与管道
-
将命令输出同时显示在终端并保存到文件:
命令 2>&1 | tee 文件名- 使用
>会覆盖原文件,>>会追加内容。
- 使用
4.6. 查找命令位置
which 命令名:在PATH环境变量中搜索命令并返回第一个找到的路径。
4.7. 查看Java版本
java -version
4.8. 文本编辑器
-
vim/vi:
-
进入编辑:
vi 文件名-> 按 i 进入插入模式。 -
退出编辑:按 Esc。
-
命令模式:按 : ,然后输入命令(
w保存,q退出,q!强制退出,wq保存并退出)。 -
常用操作:
-
翻页:Ctrl+f (向前),Ctrl+b(向后)。
-
跳转:gg (文件头),G(文件尾)。
-
显示行号:
:set number;关闭行号::set nonumber。
-
-
配置(
~/.vimrc)示例,设置4空格缩进和显示行号:plainset number set ts=4 set expandtab
-
-
Visual Studio Code:
-
code:启动VS Code。 -
code .:在当前目录打开。 -
code 文件或目录路径:打开指定项目。 -
code --help:查看所有选项。
-
5. 后台运行与会话管理
5.1. nohup命令
-
用法:
nohup 命令 >> 日志文件 2>&1 &-
将进程置于后台运行,即使终端关闭也不终止。
-
>>表示追加日志,>表示覆盖。 -
结合Python:
CUDA_VISIBLE_DEVICES=0 nohup python -u 脚本.py >> log.txt 2>&1 &-u参数禁用输出缓冲,使日志实时写入。
-
-
注意事项:
-
挂起后可用
jobs查看,用kill %作业号终止。 -
nohup无法与进程交互,需交互请使用
screen或tmux。
-
5.2. tmux
tmux可以新建会话窗口,在后台独立运行,关闭SSH终端连接后不影响tmux窗口的运行情况。但是电脑关机也会把tmux全部关掉。
-
基本操作:
-
新建会话:
tmux或tmux new -s 会话名 -
分离会话(退出当前窗口,返回终端):按 Ctrl+b ,松开后按 d。
-
重新接入:
tmux attach -t 会话名 -
列出会话:
tmux ls -
终止会话:
tmux kill-session -t 会话名
-
-
窗格管理:
-
关闭当前窗格:Ctrl+b ,松开后按 x,然后确认。
-
若要跳过确认,可在
~/.tmux.conf中添加:setw -g window-kill without-confirmation
-
-
配置与问题:
-
启用鼠标滚动:在
~/.tmux.conf中添加set -g mouse on,然后执行tmux source-file ~/.tmux.conf。 -
复制文本:
-
按住 Shift 选择文本,右键复制;或
-
Ctrl+b -> [ -> 空格开始选择 -> Enter 结束复制。
-
-
若界面卡住,尝试按 Esc。
-
5.3. screen命令
- 功能类似tmux,为另一种终端会话管理工具。
5.4. 前台进程转后台
若希望关闭终端后进程继续运行:
-
Ctrl+Z 暂停进程。
-
bg %1将其转入后台运行(fg %1可转回前台)。
disown %1将其从Shell作业列表中移除,使其与当前会话脱离。
注意 :使用 disown 后,将无法再用 jobs 管理该进程。如需交互,请优先使用 tmux 或 screen。
6. 网络配置与访问
6.1. 网络测试与诊断
-
ping 主机:测试网络连通性(默认持续进行)。 -
traceroute 主机:显示数据包到达目标主机的路径。
6.2. 主机名管理
-
hostname:显示当前主机名。 -
sudo hostname 新主机名:设置主机名(需root权限)。 -
hostname -I:显示主机所有网络接口的IP地址。
6.3. 防火墙管理(ufw)
-
ufw status:查看防火墙状态及规则。 -
ufw status numbered:显示带编号的规则列表。 -
ufw disable:禁用防火墙。 -
ufw enable:启用防火墙。
7. 系统与用户管理
7.1. 基础操作
-
切换目录:
cd 目录路径 -
修改密码:
passwd 用户名(省略用户名则修改当前用户密码)。 -
创建用户:
useradd 用户名(通常需要root权限)。 -
清除屏幕:
clear -
退出终端:
exit -
关机:
sudo shutdown -h -t 秒数
7.2. 计算文件校验和
-
shasum 文件名:计算文件的SHA1校验和。 -
shasum --algorithm 256 文件名:计算文件的SHA256校验和。
7.3. 环境变量
-
export 变量名=值:设置环境变量(仅对当前终端有效)。 -
常见用途:配置深度学习框架的库路径,例如:
bashexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/
7.4. 查看系统信息
-
locale:查看终端编码格式。 -
lsb_release -a:显示Linux发行版信息。

cat /etc/os-release:查看系统版本详情。

hostnamectl:显示主机名及相关系统信息。

uname -a:打印内核版本、主机名、处理器架构等系统信息。

7.5. 终端操作习惯
- 在许多终端中,鼠标左键选择即复制,右键粘贴。
8. 常用纯命令行操作软件
8.1. 版本控制(Git)
-
安装(CentOS):
yum install git -
查看版本:
git version -
全局配置:
bashgit config --global user.name "用户名" git config --global user.email 邮箱 -
克隆仓库:
bashmkdir 项目目录 cd 项目目录 git clone 仓库地址
9. 参考资料
之前这个版本的Linux命令行教程不再更新:Linux常用命令行集锦(持续更新ing...)_huggingface 清缓存-CSDN博客
本文撰写过程中参考了以下资料:
-
【Linux】磁盘空间占用:查看某个文件或目录占用磁盘空间的大小_Lucky@Dong的博客-CSDN博客_linux查看文件夹占用空间
-
阿里云GPU服务器配置深度学习环境-远程访问-centos,cuda,cudnn,tensorflow,keras,jupyter notebook - 医疗兵皮特儿 - 博客园
-
在Linux下简单编写、编译并执行一个C语言程序_编写linux操作系统下可编译执行的一段c语言程序,包括二进制文件的创建、读写和关_知Hu·醉卧沙场的博客-CSDN博客:这篇博文在我第一次用Linux服务器的时候真的帮了我很多
-
Jedi cache 1.5G · Issue #957 · davidhalter/jedi:作者说jedi cache无所谓的,直接删就完了
-
为什么chmod: changing permissions of'/ etc/ sysctl. conf': Operation not permitted_百度知道
