超常用 Linux 命令合辑
Last Update:
Word Count:
Read Time:
Page View: loading...
Linux Ubuntu 高频命令精简手册
目录
核心目录概念
在 Linux 命令行中,路径的表达依赖于几个特殊符号,理解它们的含义至关重要。
.
(点) 代表当前目录- 意思: 它代表你光标当前所在的文件夹。
- 示例:
cp /etc/hosts .
这条命令的意思是,将/etc/
目录下的hosts
文件,复制到这里(即当前目录)。
..
(点点) 代表父级目录- 意思: 它代表当前目录的上一层目录。
- 示例:
cd ..
这条命令会让你从当前位置切换到它的上一级目录。例如,从/home/user/downloads
切换到/home/user
。
/
(斜杠) 代表根目录或分隔符- 意思:
- 当它出现在路径的开头时(如
/home/user
),它代表整个文件系统的根目录,一切都始于此。 - 当它出现在路径的中间时(如
home/user
),它作为不同目录之间的分隔符。
- 当它出现在路径的开头时(如
- 意思:
~
(波浪号) 代表用户主目录- 意思: 这是一个快捷方式,特指当前登录用户的主目录。对用户
user
来说,~
就等同于/home/user
。 - 示例:
cd ~/Documents
命令会直接将你带到你个人主目录下的Documents
文件夹,无论你当前在哪个位置。
- 意思: 这是一个快捷方式,特指当前登录用户的主目录。对用户
文件与目录管理
这类命令用于日常的文件和文件夹的创建、列出、复制、移动和删除操作。
列出 (List):
ls
- 常用组合:
ls -alh
(显示所有、长格式、人类可读)。
- 常用组合:
创建与编辑 (Create & Edit):
mkdir
,touch
,nano
mkdir -p <目录名>
: 创建新目录 (-p
能一次性创建多层不存在的目录)。touch <文件名>
: 创建一个空文件,或更新一个已有文件的时间戳。nano <文件名>
: 一个对新手友好的终端文本编辑器。- 安装: 如果提示命令未找到,请先执行
sudo apt update && sudo apt install nano
。 - 使用方法:
- 打开或创建:
nano my_script.sh
- 编辑: 直接输入文字。
- 保存: 按
Ctrl
+O
,然后按Enter
确认文件名。 - 退出: 按
Ctrl
+X
。如果文件未保存,会提示你是否保存,(点击Y
保存)。然后按Enter
退出。
- 打开或创建:
- 安装: 如果提示命令未找到,请先执行
复制 (Copy):
cp
cp <源> <目标>
: 复制文件。cp -r <源目录> <目标目录>
: 复制目录时必须使用-r
(recursive) 选项。
移动与重命名 (Move & Rename):
mv
- 移动:
mv <源> <目标目录>
- 重命名:
mv <旧名称> <新名称>
- 移动:
删除 (Remove):
rm
rm <文件名>
: 删除文件 (-f
强制删除)。rm -r <目录名>
: 递归删除目录及其所有内容,操作极度危险,请三思!
文件压缩与解压
tar (最常见的打包工具)
- 压缩:
tar -cvzf <压缩包名.tar.gz> <要压缩的文件或目录>
- 解压到当前目录:
tar -xvzf <文件名.tar.gz>
解压到指定文件夹:
使用-C
(大写) 选项来指定目标路径。示例:将 archive.tar.gz 解压到 /mnt/data/backups 目录下
1
tar -xvzf archive.tar.gz -C /mnt/data/backups
- 压缩:
unzip (用于 .zip 文件)
- 解压到当前目录:
unzip <文件名.zip>
解压到指定文件夹:
使用-d
选项来指定目标路径。示例:将 photos.zip 解压到 /home/user/Pictures 目录下
1
unzip photos.zip -d /home/user/Pictures
- 解压到当前目录:
注意事项:避免“双重根目录”
- 问题: 有时解压
archive.zip
后,得到的不是文件,而是一个名为archive
的文件夹,里面才是真正的文件,形成了archive/archive/...
的嵌套结构。 - 解决方案: 在解压前,先用
unzip -l <文件名.zip>
命令预览压缩包的内容结构。如果发现所有文件都包裹在一个顶层文件夹内,你就可以做到心中有数,或者选择一个更合适的目录来解压。
- 问题: 有时解压
查看文件内容
cat <文件名>
: 一次性显示整个文件内容。less <文件名>
: 分页显示大文件 (按q
退出)。head -n 20 <文件名>
: 查看文件的前20行。tail -f <日志文件名>
: 实时监控文件末尾的新增内容,常用于看日志。
系统与进程信息
pwd
: 显示当前工作目录。df -h
: 查看磁盘空间使用情况。du -sh <路径>
: 查看指定目录或文件的总大小。- 高级用法:列出当前目录内容大小并排序
- 这个功能需要组合多个命令,通过管道
|
连接。 - 列出最大的10个文件/目录:
1
du -h --max-depth=1 . | sort -rh | head -n 10
du -h --max-depth=1 .
: 计算当前目录下(.
)第一层(--max-depth=1
)所有文件和目录的大小。sort -rh
:r
表示逆序(从大到小),h
表示按人类可读数值(K,M,G)排序。head -n 10
: 取排序后的前10行。
- 列出最小的10个文件/目录 (不含当前目录
.
):1
du -h --max-depth=1 . | sort -h | tail -n 11 | head -n 10
- 这个功能需要组合多个命令,通过管道
- 高级用法:列出当前目录内容大小并排序
top
/htop
: 动态显示系统进程和资源占用。htop
更直观,推荐。kill <进程ID>
: 终止一个进程 (-9
为强制终止)。
网络操作
ping <主机名或IP>
: 测试网络连通性。wget <URL>
: 从指定 URL 下载文件。curl ifconfig.me
: 查看你的公网IP地址。
用户与SSH管理
这是系统管理的核心部分,所有操作几乎都需要 sudo
。
添加新用户
- 使用交互式命令添加用户,会引导你设置密码和其他信息。
1
sudo adduser new_username
- 使用交互式命令添加用户,会引导你设置密码和其他信息。
用户分组
- 将用户添加到某个组(例如
sudo
组,使其能执行sudo
命令)。1
sudo usermod -aG sudo new_username
-a
(append) 表示追加,-G
表示指定次要组。
- 查看用户所属的组:
1
groups new_username
- 将用户添加到某个组(例如
设置和确认SSH登录 (推荐使用密钥登录)
- 第1步 (服务器): 安装SSH服务
1
2
3
4sudo apt update
sudo apt install openssh-server
# 检查服务状态,确保 active (running)
sudo systemctl status ssh - 第2步 (你的本地电脑): 生成SSH密钥
- 如果你的本地电脑上还没有密钥 (
~/.ssh/id_rsa
不存在),执行此命令。一路回车即可。1
ssh-keygen -t rsa -b 4096
- 如果你的本地电脑上还没有密钥 (
- 第3步 (你的本地电脑): 将公钥复制到服务器
- 这是最关键的一步,它会自动将你的公钥追加到服务器上对应用户的
~/.ssh/authorized_keys
文件中。1
ssh-copy-id new_username@服务器IP地址
- 这是最关键的一步,它会自动将你的公钥追加到服务器上对应用户的
- 第4步 (服务器): 提升安全性 (可选但强烈推荐)
- 禁止密码登录,只允许密钥登录。
- 编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
- 找到
PasswordAuthentication yes
这一行,把它改成PasswordAuthentication no
。 - 保存 (
Ctrl+O
) 并退出 (Ctrl+X
)。 - 重启SSH服务使配置生效:
1
sudo systemctl restart ssh
- 第5步: 确认登录
- 现在你可以无需密码,直接通过密钥登录服务器了。
1
ssh new_username@服务器IP地址
- 现在你可以无需密码,直接通过密钥登录服务器了。
- 第1步 (服务器): 安装SSH服务
权限与管理
sudo <命令>
: 以超级用户 (root) 权限执行命令。chmod <权限模式> <文件名>
: 更改文件或目录的权限。- 常用示例:
chmod 755 script.sh
(赋予所有者读/写/执行权限,其他用户读/执行权限)。
- 常用示例:
好的,这是一个专门介绍“搜索与匹配”的独立部分。这部分命令是 Linux 系统管理和日常使用中最高频、最强大的工具之一。
搜索与匹配
在复杂的系统中,快速定位文件、查找特定内容或检查进程状态至关重要。find
、grep
等命令的组合使用,能极大地提升工作效率。
=w= 请搭配 正则表达式快速入门到进阶Blog 食用
1. 按名称和属性查找文件: find
find
命令用于在目录结构中搜索文件,并执行指定的操作。它的强大之处在于可以根据文件的各种属性(名称、类型、大小、修改时间等)进行精细化查找。
基本语法: find [搜索路径] [表达式选项]
应用场景举例:
场景一:查找特定的配置文件
- 需求:服务器上部署了很多服务,你想找到所有名为
nginx.conf
的配置文件。 - 应用:
1
2# 从根目录 / 开始搜索
sudo find / -name "nginx.conf"/
:指定搜索的起始路径为整个系统。-name
:按文件名进行精确匹配。
- 需求:服务器上部署了很多服务,你想找到所有名为
场景二:清理临时的备份文件
- 需求:查找并删除所有由开发者或编辑器自动生成的以
.bak
结尾的备份文件。 - 应用:
1
2
3
4
5# 在当前项目目录 . 中查找所有 .bak 文件
find . -name "*.bak"
# 找到后直接删除(请谨慎操作!)
find . -name "*.bak" -exec rm {} \;*
:是通配符,"*.bak"
匹配所有以.bak
结尾的名称。-exec rm {} \;
:是对找到的每个结果{}
执行rm
命令。
- 需求:查找并删除所有由开发者或编辑器自动生成的以
场景三:按文件类型查找
- 需求:你只想查找所有名为
project
的目录,而不是同名的文件。 - 应用:
1
find . -type d -name "project"
-type d
:指定查找类型为目录 (directory)。相应地,-type f
表示只查找普通文件 (file)。
- 需求:你只想查找所有名为
场景四:查找近期修改过的文件
- 需求:排查问题时,需要查看
/etc
目录下最近24小时内被修改过的所有文件。 - 应用:
1
find /etc -mtime -1
-mtime -1
:表示修改时间 (Modification Time) 在1天(24小时)之内。+1
则表示超过1天。
- 需求:排查问题时,需要查看
场景五:查找占用空间的大文件
- 需求:磁盘空间告急,需要找出系统中所有超过 500MB 的大文件。
- 应用:
1
find / -type f -size +500M
-size +500M
:表示文件大小 (size) 超过 (+) 500兆字节 (M)。
2. 在文件内容中搜索文本: grep
grep
(Global Regular Expression Print) 是最强大的文本搜索工具,用于在文件内容中查找包含指定模式(字符串或正则表达式)的行。
基本语法: grep [选项] "要搜索的模式" [文件名]
应用场景举例:
场景一:检查配置项
- 需求:确认 SSH 服务的监听端口号。
- 应用:
1
grep "Port" /etc/ssh/sshd_config
- 这会从指定文件中找出所有包含 “Port” 字符串的行。
场景二:在代码库中全局搜索
- 需求:作为一名开发者,你想在整个项目代码中查找某个函数名或变量
getUserProfile
的所有引用。 - 应用:
1
grep -r "getUserProfile" .
-r
(recursive):递归地搜索当前目录 (.
) 及其所有子目录下的文件。-i
:如果需要忽略大小写(同时匹配getuserprofile
),可以使用grep -ri ...
。
- 需求:作为一名开发者,你想在整个项目代码中查找某个函数名或变量
场景三:分析日志文件
- 需求:你需要从巨大的系统日志中,筛选出所有关于 “error” 的记录来进行故障分析。
- 应用:
1
grep -i "error" /var/log/syslog
场景四:过滤命令的输出(管道
|
的威力)- 需求:
ls -l
命令列出的文件太多,你只想看其中和python
相关的文件。 - 应用:
1
ls -l | grep "python"
- 管道符
|
将前一个命令 (ls -l
) 的输出,作为后一个命令 (grep
) 的输入。这是 Linux 中最核心、最强大的特性之一。
- 管道符
- 需求:
场景五:反向匹配
- 需求:查看一个配置文件,但想隐藏所有以
#
开头的注释行,只看有效的配置。 - 应用:
1
grep -v "^#" /etc/nginx/nginx.conf
-v
(invert-match):反向匹配,即输出所有不包含指定模式的行。^#
是一个简单的正则表达式,^
表示一行的开始。
- 需求:查看一个配置文件,但想隐藏所有以
3. 查找正在运行的进程
场景一:快速检查服务是否在运行
- 需求:确认
nginx
服务是否已经成功启动。 - 传统方式:
ps aux | grep "nginx"
ps aux
:列出系统中所有正在运行的进程。grep "nginx"
:从进程列表中筛选出含 “nginx” 的行。- (缺点:通常会把
grep
命令本身也搜出来)。
- 现代方式:
pgrep
pgrep
是专门用于按名称查找进程ID (PID) 的命令,更简洁、准确。- 应用:如果返回一个或多个数字(进程ID),说明服务正在运行。如果无任何返回,则表示服务未运行。
1
pgrep nginx
- 需求:确认
场景二:找到进程并获取其详细信息
- 需求:你用
pgrep
找到了nginx
的进程ID,现在想看这个进程的完整信息(如启动用户、CPU占用等)。 - 应用:
1
2# pgrep 的输出可以被其他命令直接使用
ps -f -p $(pgrep nginx)$(...)
:命令替换,它会先执行括号里的pgrep nginx
命令,然后将其输出(即进程ID)作为ps -p
命令的参数。
- 需求:你用