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
查看文件内容 catless
编辑文本 nanovim
下载文件 wgetcurl
远程传输文件 rsync(优于 scp)
远程登录 ssh
后台运行 &nohup
系统监控 tophtop
文件权限管理 chmodchown
Python包管理 pip --uservenvconda

 

参考地址:Linux 常用命令 – 云生信

 

 

查看环境变量

1. 查看所有环境变量

你可以使用 envprintenv 命令查看当前的所有环境变量:

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 的初始化脚本。
你可以使用文本编辑器(如 nanovim)编辑这些文件,添加或修改环境变量。例如,编辑 ~/.bashrc 文件:

bash

复制
nano ~/.bashrc
在文件末尾添加以下内容:

bash

复制
export VARIABLE_NAME=value
保存并关闭文件后,运行以下命令使修改生效:

bash

复制
source ~/.bashrc

示例:永久修改 PATH 环境变量

假设你想要永久修改 PATH 环境变量,添加 /usr/local/binPATH 中,可以按照以下步骤操作:
  1. 编辑 ~/.bashrc 文件:

    bash

    复制
    nano ~/.bashrc
  2. 在文件末尾添加以下内容:

    bash

    复制
    export PATH=/usr/local/bin:$PATH
  3. 保存并关闭文件后,运行以下命令使修改生效:

    bash

    复制
    source ~/.bashrc
  4. 验证修改是否成功:

    bash

    复制
    echo $PATH

查看系统级环境变量

系统级环境变量通常存储在 /etc/environment 文件中。你可以使用以下命令查看系统级环境变量:

bash

复制
cat /etc/environment
如果你需要修改系统级环境变量,可以编辑 /etc/environment 文件。但请注意,修改系统级环境变量可能会影响所有用户,因此需要谨慎操作。

注意事项

  • 生效范围:临时修改只对当前终端会话有效,而永久修改对所有新的终端会话有效。
  • 配置文件选择:根据你的 shell 类型和使用习惯选择合适的配置文件。例如,如果你使用的是 Zsh,可能需要编辑 ~/.zshrc 文件。
  • 备份配置文件:在修改配置文件之前,建议备份原始文件,以便在出现问题时可以恢复到原始状态。
本文最后更新于2025-06-18如有失效,请留言
THE END