文件和目录操作命令

# 递归创建文件夹,编写自动化脚本时,确保目录存在而不担心报错
mkdir -p a/b/c/d

# 创建符号链接(symbolic link,也称为软链接)
# ln -s 源文件或目录 目标链接名
ln -s /home/user/documents/report.pdf report-link.pdf
ln -s /mnt/external-drive/music ~/my-music

# cp -pr 主要用于需要完整复制目录结构及保留文件属性的场景
# 复制目录 dir1 到 dir2,保留所有属性并递归复制子内容
cp -pr dir1 dir2
# 复制多个文件和目录到目标目录 /backup,保留属性
cp -pr file1.txt dir3 /backup
          

系统管理命令

localectl

# 将系统默认语言环境设置为 简体中文,并使用 UTF-8 字符编码
sudo localectl set-locale LANG=zh_CN.UTF8 

hostnamectl

# 将系统的静态主机名设置为 test
hostnamectl set-hostname test

安装字体

系统级字体目录 /usr/share/fonts/

/usr/share/fonts/Chinese/  # 存放中文字体
/usr/share/fonts/TrueType/ # 存放 TrueType 格式字体

修改用户的登录 shell

# 将当前用户的默认 shell 更改为 zsh
chsh -s /bin/zsh

文件权限和属性命令

cp -pr dir1 dir2
# 复制多个文件和目录到目标目录 /backup,保留属性
cp -pr file1.txt dir3 /backup
# 递归修改目录及内容的权限
chmod -R 777 dirname 
# 给文件所有者添加执行权限(u=用户,g=组,o=其他)
chmod u+x filename 

文本处理命令

sed

# sed(Stream Editor) 适合处理配置文件批量修改、日志过滤、文本格式化等场景,配合管道(|)与其他命令(如 grep、awk)使用更强大。
# 替换(最常用):s/原字符串/新字符串/[选项]
# 替换文件中所有 "apple" 为 "banana"(打印结果,不修改原文件)
sed 's/apple/banana/g' test.txt
# 直接替换
sed -i 's/apple/banana/g' test.txt

# 原地修改文件(并备份原文件为 test.txt.bak)
sed -i.bak 's/apple/banana/g' test.txt

# 删除行
# 删除 3-10 行
sed '3,10d' test.txt

# 删除包含 "error" 的行
sed '/error/d' test.txt

# 搜索
# 打印第 3 行
sed -n '3p' test.txt
# 打印包含 "success" 的行
sed -n '/success/p' test.txt

# 插入
# 在第 2 行前插入 "Start here"
sed '2i Start here' test.txt
# 在包含 "end" 的行后追加 "Finish"
sed '/end/a Finish' test.txt

# 变量替换
name="Alice"
# 将 "user" 替换为变量 $name 的值
sed "s/user/$name/g" test.txt

# 正则表达式匹配,替换所有以 "http" 开头的行为 "URL: 原内容"
sed 's/^http.*/URL: &/' test.txt  # & 表示保留原匹配内容

grep

awk

网络操作命令

# 显示所有网络接口的IP地址、MAC地址等信息
ifconfig
# 查看指定网卡(如eth1)的信息
ifconfig eth1
# 显示当前主机名
hostname
# 显示所有监听的TCP/UDP端口(t:TCP, u:UDP, l:监听, n:数字显示)
netstat -tuln
ss -tuln 
# 测试网络连通性,发送4个包后停止(-c指定次数)
ping -c 4 google.com 
# 查看端口并显示进程信息,同时过滤 8080 端口
sudo ss -tulnp | grep -w 8080
# 查看进程信息
ps aux | grep nginx

压缩和解压缩命令

# 打包/压缩
tar [选项] 目标文件名.tar [源文件/目录...]

# 解包/解压
tar [选项] 源文件名.tar [目标目录]

# 用 gzip 压缩(最常用,生成 .tar.gz 文件)
tar -zcvf archive.tar.gz file1.txt dir1/

# 解压到指定目录(例如解压到 /tmp 目录)
tar -zxvf archive.tar.gz -C /tmp/

# 查看压缩包内容(如 .tar.gz)
tar -ztvf archive.tar.gz

压缩率对比:xz > bzip2 > gzip,但压缩速度相反(gzip 最快)

磁盘操作命令

# 显示当前目录的总大小(-s 汇总,-h 人类可读)
du -sh
# 显示当前目录下所有文件/目录的大小
du -sh *
# 查看单个文件的大小
du -h filename
# 显示所有分区的空间
df -h
# 显示分区的文件系统类型
df -T

系统信息查询命令

# 显示当前时间、时区、NTP 同步状态等
timedatectl
# 显示当前语言环境(如 LANG=en_US.UTF-8)
locale
 # 显示登录用户、终端、登录时间、IP 地址
who
# 查看进程信息
ps aux | grep 进程名
# 显示所有监听端口及对应进程(t:TCP, u:UDP, l:监听, n:数字显示, p:进程)
ss -tulnp
# 默认实时显示进程 CPU/内存占用(按 q 退出)
top
# 更友好的交互式界面(需安装:sudo yum install htop)
htop
# 查看 CPU 信息
lscpu
# 显示完整内核信息(内核版本、主机名、架构、编译时间等)
uname -a
# 输出包含名称(NAME)、版本(VERSION)、ID(如 centos)等信息
cat /etc/os-release

其他实用命令

git 配置

# 查看全局配置
git config --global --list

# 禁用 Git 对文件权限(可执行权限 x)变化的跟踪。
git config --global core.filemode false
# 设置全局的 Git 提交者邮箱(必须与你在代码托管平台,如 GitHub/GitLab 上的邮箱一致,否则提交记录可能无法正确关联到你的账号)。
git config --global user.email "你的邮箱"
# 设置全局的 Git 提交者名称(会显示在提交记录中,标识是谁提交了代码)。
git config --global user.name "你的用户名"