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 |
参考地址:Linux 常用命令 – 云生信
查看环境变量
1. 查看所有环境变量
你可以使用
env
或 printenv
命令查看当前的所有环境变量:bash
env
或者
bash
printenv
这两个命令会列出当前环境中的所有变量及其值。
2. 查看特定环境变量
如果你只想查看某个特定的环境变量,可以使用
echo
命令或 printenv
命令:bash
echo $VARIABLE_NAME
或者
bash
printenv VARIABLE_NAME
例如,查看
PATH
环境变量:bash
echo $PATH
或者
bash
printenv PATH
修改环境变量
1. 临时修改环境变量
在当前终端会话中临时修改环境变量,可以使用
export
命令:bash
export VARIABLE_NAME=value
例如,临时修改
PATH
环境变量:bash
export PATH=/usr/local/bin:$PATH
这种修改只对当前终端会话有效,关闭终端后修改会失效。
2. 永久修改环境变量
要永久修改环境变量,需要将修改添加到用户的配置文件中,如
~/.bashrc
、~/.bash_profile
或 ~/.profile
。以下是一些常见的配置文件及其用途:-
~/.bashrc
:适用于大多数用户,特别是使用 Bash shell 的用户。 -
~/.bash_profile
:适用于登录时的初始化脚本。 -
~/.profile
:适用于所有 shell 的初始化脚本。
你可以使用文本编辑器(如
nano
或 vim
)编辑这些文件,添加或修改环境变量。例如,编辑 ~/.bashrc
文件:bash
nano ~/.bashrc
在文件末尾添加以下内容:
bash
export VARIABLE_NAME=value
保存并关闭文件后,运行以下命令使修改生效:
bash
source ~/.bashrc
示例:永久修改 PATH
环境变量
假设你想要永久修改
PATH
环境变量,添加 /usr/local/bin
到 PATH
中,可以按照以下步骤操作:-
编辑
~/.bashrc
文件:bash
nano ~/.bashrc
-
在文件末尾添加以下内容:
bash
export PATH=/usr/local/bin:$PATH
-
保存并关闭文件后,运行以下命令使修改生效:
bash
source ~/.bashrc
-
验证修改是否成功:
bash
echo $PATH
查看系统级环境变量
系统级环境变量通常存储在
/etc/environment
文件中。你可以使用以下命令查看系统级环境变量:bash
cat /etc/environment
如果你需要修改系统级环境变量,可以编辑
/etc/environment
文件。但请注意,修改系统级环境变量可能会影响所有用户,因此需要谨慎操作。注意事项
-
生效范围:临时修改只对当前终端会话有效,而永久修改对所有新的终端会话有效。
-
配置文件选择:根据你的 shell 类型和使用习惯选择合适的配置文件。例如,如果你使用的是 Zsh,可能需要编辑
~/.zshrc
文件。 -
备份配置文件:在修改配置文件之前,建议备份原始文件,以便在出现问题时可以恢复到原始状态。
本文最后更新于
2025-06-18
如有失效,请留言
THE END