一开始学习计算机时我是拒绝使用linux和Git的,但习惯之后直呼真香。

以此来记录常用的命令,不然每次都要查或者问GPT老师。

Linux常用命令

系统信息

uname -a               # 显示系统信息
hostname               # 显示或设置主机名
whoami                 # 当前登录用户
uptime                 # 系统运行时间和负载
date                   # 当前日期和时间
cal                    # 显示日历
df -h                  # 查看磁盘使用情况
du -h                  # 查看目录或文件大小
free -m                # 查看内存使用情况
top                    # 动态显示进程信息
htop                   # 类似 top,需安装
ps -aux                # 列出所有运行进程

文件和目录操作

ls                     # 列出目录内容
ls -l                  # 显示详细信息
ls -a                  # 显示隐藏文件
cd /path/to/dir        # 切换目录
pwd                    # 显示当前路径
mkdir new_dir          # 创建目录
rmdir empty_dir        # 删除空目录
rm file                # 删除文件
rm -r dir              # 删除目录及内容
cp source dest         # 复制文件或目录
mv source dest         # 移动或重命名文件
find /path -name "*.txt" # 查找文件
locate filename        # 快速查找文件
tree                   # 树状结构显示目录,需安装
touch file.txt         # 创建空文件
stat file.txt          # 查看文件详细信息
file file.txt          # 检测文件类型

文件内容查看

cat file.txt           # 显示文件内容
tac file.txt           # 倒序显示文件内容
less file.txt          # 分页查看文件内容
more file.txt          # 类似 less
head -n 10 file.txt    # 查看文件前10行
tail -n 10 file.txt    # 查看文件后10行
tail -f log.txt        # 实时跟踪日志
nl file.txt            # 显示文件内容并添加行号

权限管理

chmod 755 file.txt     # 修改权限
chown user file.txt    # 修改文件所有者
chgrp group file.txt   # 修改文件所属组
umask 022              # 设置文件默认权限

数字权限表示法

数字权限用三个数字(0–7)来表示,分别对应:

  1. 第一个数字:文件所有者(User)的权限。
  2. 第二个数字:同组用户(Group)的权限。
  3. 第三个数字:其他用户(Others)的权限。

每个数字表示权限的组合,权限值如下:

  • 4:读权限 (Read, r)
  • 2:写权限 (Write, w)
  • 1:执行权限 (Execute, x)
  • 0:无权限 (No permission)

数字可以累加,例如:

  • 7 = 4 + 2 + 1 表示读、写、执行权限。
  • 5 = 4 + 1 表示读和执行权限。
  • 6 = 4 + 2 表示读和写权限。

755 的含义

数字权限范围权限组合符号表示法
7文件所有者读、写、执行rwx
5同组用户读、执行r-x
5其他用户读、执行r-x

所以:

  • 文件所有者读 (r)写 (w)执行 (x) 权限。
  • 同组用户其他用户 只有 读 (r)执行 (x) 权限,但 不能修改文件

网络相关

ping google.com            # 测试网络连通性
curl https://example.com   # 发送 HTTP 请求
wget https://example.com   # 下载文件
ifconfig                   # 查看网络配置
ip a                       # 显示网络接口信息
netstat -tuln              # 查看网络连接状态
ss -tuln                   # 替代 netstat
traceroute google.com      # 跟踪网络路径
scp file user@remote:/path # 通过 SSH 复制文件
rsync -av source dest      # 同步文件或目录
ssh user@remote            # 远程登录服务器

用户管理

who                     # 查看在线用户
w                       # 当前登录用户及活动
useradd new_user        # 添加用户
passwd new_user         # 修改用户密码
usermod -aG group user  # 添加用户到组
su - username           # 切换用户
sudo command            # 以管理员权限执行命令

磁盘管理

fdisk -l                # 显示分区信息
mkfs.ext4 /dev/sdX1     # 格式化分区
mount /dev/sdX1 /mnt    # 挂载设备
umount /mnt             # 卸载设备
blkid                   # 查看设备 UUID
lsblk                   # 查看块设备信息
df -h                   # 查看磁盘使用情况
du -sh dir              # 统计目录大小

软件管理

apt-get install pkg       # 安装软件
apt-get update            # 更新软件源
apt-get upgrade           # 升级系统
dpkg -i package.deb       # 安装 .deb 文件

进程管理

ps                        # 查看进程
ps aux                   # 查看所有进程
ps aux | grep python	  # 查看特定进程
kill PID                  # 杀死指定进程
killall process_name       # 按名称杀死进程
jobs                      # 查看后台任务
fg                        # 将任务切换到前台
bg                        # 将任务切换到后台运行

Shell 编程相关

echo "Hello, World!"       # 输出信息
read var                   # 读取用户输入
env                        # 显示环境变量
export VAR=value           # 设置环境变量
alias ll='ls -l'           # 创建命令别名
history                   # 显示历史命令
clear                     # 清空屏幕

其他工具

man command               # 查看命令帮助文档
help command              # 查看 shell 内置命令帮助
which command             # 显示命令路径
time command              # 统计命令执行时间
basename /path/file.txt   # 获取文件名
dirname /path/file.txt    # 获取路径

Git常用指令

Git 配置

git config --global user.name "Your Name"               # 设置全局用户名
git config --global user.email "your.email@example.com" # 设置全局邮箱
git config --list                                       # 查看当前配置
git config --global core.editor vim                    # 设置默认编辑器

Git 仓库操作

git init                          # 初始化一个新的 Git 仓库
git clone <repo_url>              # 克隆远程仓库到本地
git status                        # 查看当前分支的状态
git log                           # 查看提交历史
git log --oneline                 # 简化查看提交历史
git show <commit_hash>            # 查看某次提交的详细信息

Git 分支管理

git branch                        # 查看本地分支
git branch <branch_name>          # 创建新分支
git checkout <branch_name>        # 切换到指定分支
git checkout -b <branch_name>     # 创建并切换到新分支
git merge <branch_name>           # 合并分支到当前分支, 保留分支的历史记录,生成一个新的合并提交。
git rebase <base_branch>		  # 会将一个分支的提交重新应用到另一个分支的基础上,历史被“重写”,没有合并提交。
git branch -d <branch_name>       # 删除本地分支
git branch -D <branch_name>       # 强制删除本地分支

提交更改

git add <file>                    # 添加指定文件到暂存区
git add .                         # 添加当前目录下的所有文件到暂存区
git commit -m "commit message"    # 提交更改并添加描述
git commit --amend                # 修改上一次的提交信息

远程仓库操作

git remote -v                     # 查看远程仓库地址
git remote add origin <repo_url>  # 添加远程仓库
git push origin <branch_name>     # 推送分支到远程仓库
git push -u origin <branch_name>  # 推送分支并关联远程分支
git pull origin <branch_name>     # 从远程仓库拉取并合并到本地
git fetch origin                  # 拉取远程仓库更新但不合并

查看和管理更改

git diff                          # 查看工作区的更改
git diff --cached                 # 查看已暂存的更改
git diff <commit1> <commit2>      # 比较两个提交的差异
git blame <file>                  # 查看每行代码的修改记录
git show <commit_hash>            # 查看某次提交的具体更改

撤销更改

git restore <file>                # 撤销工作区中的更改
git restore --staged <file>       # 撤销暂存区的更改
git reset <commit_hash>           # 回退到指定提交,但保留更改
git reset --hard <commit_hash>    # 强制回退到指定提交,丢弃更改
git checkout <file>               # 恢复文件到最后一次提交的状态

标签管理

git tag                           # 查看所有标签
git tag <tag_name>                # 创建轻量标签
git tag -a <tag_name> -m "message" # 创建带注释标签
git show <tag_name>               # 查看标签信息
git push origin <tag_name>        # 推送标签到远程
git push origin --tags            # 推送所有标签到远程
git tag -d <tag_name>             # 删除本地标签
git push origin --delete <tag_name> # 删除远程标签

Stash(保存工作进度)

git stash                         # 保存当前工作进度
git stash list                    # 查看保存的工作进度
git stash apply                   # 恢复最近的存储
git stash apply stash@{index}     # 恢复指定的存储
git stash drop stash@{index}      # 删除指定存储
git stash clear                   # 清除所有存储

子模块管理

git submodule add <repo_url> <path> # 添加子模块
git submodule update --init --recursive # 初始化并更新子模块
git submodule foreach git pull origin main # 更新所有子模块

日志和历史

git log                           # 查看提交历史
git log --oneline                 # 简洁版提交历史
git reflog                        # 查看所有的操作记录
git bisect start                  # 开始二分查找 bug

实用命令

git clean -f                      # 清理未追踪的文件
git gc                            # 垃圾回收,优化仓库
git cherry-pick <commit_hash>     # 应用指定提交的更改