1783 字
9 分钟
【Linux】Linux常用命令

Linux常用命令#

日常开发#

下载#

curl 命令:

Terminal window
# -o 参数后指定要保存的文件名
curl -o filename.tar.gz http://example.com/file.tar.gz
# -O 从 URL 中提取文件名并使用该文件名保存到本地
curl -O http://example.com/file.tar.gz

wget 命令:

Terminal window
# -P 将文件下载到指定的路径
# -O 下载并自定义文件名保存
# -c 启用断点续传
# -b 启用后台下载
# -i 下载文件中的连接的文件
# 下载单个文件到当前目录
wget http://example.com/filename
# 下载大文件启用后台下载
wget -b http://releases.ubuntu.com/18.04/ubuntu-18.04.5-desktop-amd64.iso
# 查看进度
tail -f wget-log
# 下载多个文件
wget -i url_list.txt

包管理#

pacman#

  • 使用Reflector 自动选择最快镜像
Terminal window
# 选择中国地区最快的 10 个镜像
sudo reflector --country China --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
# 或选择全球最快的镜像
sudo reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

git 基础配置#

ssh 连接Github#

要以个人身份访问github并管理私人仓库,就需要使用ssh连接到github进行鉴权。

  • 确保存在openssh

    ssh是包openssh的基础功能,首先需要先安装openssh工具包

  • 检查本地主机key

    Terminal window
    ls ~/.ssh
  • 生成ssh key

    Terminal window
    ssh-keygen -t rsa -C "xxx@xxx.com"
  • 获取ssh key 公钥

    Terminal window
    cat ~/.ssh/id_rsa.pub
  • github上添加公钥

  • 验证是否添加成功

    Terminal window
    ssh -T git@github.com
  • 配置全局信息

    Terminal window
    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
  • 配置git默认编辑器为vim

    Terminal window
    git config --global core.editor vim

git 使用凭证管理进行登陆#

在 HTTPS 协议下实现免密推送,关键在于让 git “记住”你的登录凭证。核心就是用个人访问令牌(Personal Access Token, PAT)代替密码,然后让 Git 记住它。

git凭证管理器(Git Credential Manager, GCM) 是 GitHub 官方推荐的一种登陆方式,它在后台安全地处理 OAuth 登录,完全不需要用户手动生成和管理令牌。相比于Cache临时缓存,自己管理访问Token来说,这种方式更加智能无感,也更加安全

凭证管理器一般依赖于系统的 “密码环” 服务。 在Linux系统中,这是一个实现并接入 Secret Service API 的、完整的凭证存储和管理方案。它会随桌面环境自动启动,并默认与用户密码关联。

TIP

主流的桌面环境,如Gnome,KDE都将该服务内置在了系统中(Gnome Keyring, 以及KDE Wallet),如果使用这之外的DE,可能得选择一些开源方案进行替代,如KeePassXCpass + pass-secret-service,这里只以Ubuntu + Gnome / KDE系统为例进行说明,KeePassXC相关的可能之后单独写一篇文章进行补充。

凭证管理器可以选择:git-credential-manager(仅Debian/Ubuntu)或者git-credential-oauth

  • 安装Git使用凭证管理器:
Terminal window
# git-credential-manager (Debian/Ubuntu)
sudo apt update && sudo apt install git-credential-manager
# Fedora
sudo dnf install git-credential-oauth

git-credential-manager 配置#

Terminal window
# 配置 Git 使用凭证管理助手
git config --global credential.helper manager
# 配置凭证存储后端
git credential-manager configure
git config --global credential.credentialStore secretservice

测试:

Terminal window
git-credential-manager diagnose

git-credential-oauth 配置#

Terminal window
# 配置 Git 使用缓存助手 (默认 900 秒/15分钟) 和 OAuth 助手
git config --global credential.helper 'cache'
git config --global credential.helper 'oauth'

当触发git push/pull命令的时候,会自动开始认证。

TIP

如果认证过程中断,需要先清楚当前认证缓存:

Terminal window
# 1. 清理凭据缓存
git credential-cache exit
# 2. 终止任何可能卡住的 git 进程 (按 Ctrl + C 强制结束)

接下来重新开始进行认证就好

git常用命令#

分支管理#

  • 将当前修改commit到新的分支

    Terminal window
    git stash
    git checkout -b <新的分支名>
    git stash pop
    git commit -a
  • 更改提交消息内容

    Terminal window
    git commit --amend -m "这是新的、正确的提交信息"

其他配置#

Ubuntu 与 Windows 双系统时间同步#

Windows 使用的是LocalTime机制,也就是会直接读取BIOS中的时间当作本地时间。而 Ubuntu 使用的时间机制是UTC机制,也就是格林尼治时间,会在BIOS时间的基础上加上时区(若Ubuntu设置的地区是Shanghai,则会在BIOS的基础上+8)。因此需要在Ubuntu中将时间机制更改为LocalTime模式。

Terminal window
# 安装ntpdate工具实现时间同步
sudo apt install ntpdate
# 设置ntp服务器
sudo ntpdate time.windows.com
# 更改系统时间机制,更改为LocalTime
sudo hwclock --localtime --systohc
TIP

除了windows的ntp时间服务器之外,还有如下ntp服务器可以选择:

# 阿里云授时服务器
ntp.aliyun.com
# 腾讯云授时服务器
time1.cloud.tencent.com
time2.cloud.tencent.com
time3.cloud.tencent.com
time4.cloud.tencent.com
time5.cloud.tencent.com
# 清华大学授时服务器
ntp.tuna.tsinghua.edu.cn
# 苹果授时服务器
time1.apple.com
time2.apple.com
time3.apple.com
time4.apple.com
time5.apple.com
time6.apple.com
time7.apple.com
# Google授时服务器
time1.google.com
time2.google.com
time3.google.com
time4.google.com

Linux 服务器#

NOTE

此处的服务器搭载Ubuntu 22.04系统

服务器用户组#

组别用户标识号备注
root0拥有系统的最高权限
sudo27允许其成员通过 sudo 命令临时获取 root 权限来执行命令
adm4组成员通常可以读取 /var/log 目录下的许多日志文件,方便追踪系统问题,但不能修改它们
daemon1用于一些不需要特殊权限的后台服务
bin2用于存放系统可执行文件的目录相关联,一些核心命令可能属于这个组
sys3和系统核心、驱动程序等底层资源相关
www-data33Web服务器(如 Nginx 或 Apache)默认使用的用户和组。网站文件(如HTML, PHP)的所有者通常需要设置为 www-data,以便Web服务器有权限读取和执行它们
mail8用于邮件服务(如 Postfix)
ssh114用于 SSH (Secure Shell) 守护进程,管理远程登录的权限
docker998允许其成员执行 Docker 命令,而无需使用 sudo。将一个用户添加到此组,意味着你给予了他管理Docker容器的权限,这几乎等同于 root 权限,因为可以轻易地通过 Docker 容器挂载宿主机目录来获得 root 访问权限
system-*如 systemd-journal, systemd-network,都是由 systemd 初始化系统创建和使用的,用于管理各自的子服务,例如日志、网络、时间同步等

用户管理#

检查用户组命令:

Terminal window
cat /etc/group # 查看所有用户组信息
groups # 列出当前登录用户所属的所有用户组
id # 显示用户的 UID 和所属组的信息,包括所有附加组
groups <username> # 查看用户的所属组
id <username> # 显示该用户的组信息

文件同步#

rsync同步

Terminal window
# -a 归档模式,保留权限、时间戳等属性
# -v 显示详细输出
# -z 传输时压缩数据
# --delete 删除目标中源目录没有的文件
# 将本地文件传到远程服务器(push)
rsync -avz --delete ./dist/ 服务器的用户名@服务器的IP:/server_path/
# 将远程文件传输到本地(pull)
rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine
# 指定 ssh 端口
rsync -avz -e "ssh -p $port" /local/path/ user@remoteip:/path/to/files/
# 设置备份带宽
rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ root@remoteip:/root/tmprpm/

nginx 代理#

  • 测试nginx配置
Terminal window
nginx -t
  • 启动nginx服务
Terminal window
sudo systemctl start nginx # 启动nginx服务
sudo systemctl enable --now nginx # 开机自启
  • 关闭nginx服务
Terminal window
sudo systemctl stop nginx
sudo nginx -s stop # 直接停止
sudo nginx -s quit # 平滑关闭
【Linux】Linux常用命令
http://onemom.top/posts/linux常用命令/
作者
onemotre
发布于
2025-10-24
许可协议
CC BY-NC-SA 4.0