Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : 常见的Linux命令有哪些?熟悉哪些Linux命令?
【简要回答】
一、文件与目录管理
ls: 列出目录内容。cd: 改变当前工作目录。pwd: 显示当前工作目录的完整路径。mkdir: 创建新目录。rm: 删除文件或目录。cp: 复制文件或目录。mv: 移动或重命名文件/目录。chmod: 修改文件或目录的权限。
二、文本处理与编辑
cat: 查看文件内容。less: 分页显示文件内容。vim: 功能强大的文本编辑器。grep: 在文件中搜索指定模式。
三、进程与系统监控
ps: 显示当前运行的进程。top: 实时显示系统中各个进程的资源占用状况。kill: 终止指定的进程。free: 显示内存使用情况。df: 报告文件系统磁盘空间使用情况。
四、用户与权限管理
useradd: 创建新用户(Ubuntu 常用adduser)。passwd: 修改用户密码。sudo: 以其他用户身份执行命令。
五、网络管理与远程连接
ip a: 显示网络接口信息(替代ifconfig)。ping: 测试网络连接。ssh: 安全地登录到远程系统。scp: 在网络上的主机之间安全地复制文件。- 防火墙管理:
- Ubuntu:
ufw(例如sudo ufw allow ssh) - CentOS:
firewall-cmd(例如sudo firewall-cmd --add-service=ssh --permanent)
- Ubuntu:
六、软件包与服务管理
- 软件包管理:
- Ubuntu:
apt(例如sudo apt install package_name) - CentOS:
dnf或yum(例如sudo dnf install package_name)
- Ubuntu:
- 服务控制:
systemctl: 控制系统服务(例如sudo systemctl status service_name)。
七、压缩、归档与调度
tar: 归档工具,常用于打包和解压文件。cron: 定时执行命令。
【详细回答】
一、文件与目录管理 (File & Directory Management)
ls: 列出目录内容-
eg1:
ls: 列出当前目录下的非隐藏文件和目录。 -
eg2:
ls -lah: 以长格式(详细信息)、显示隐藏文件、并以人类可读的格式(如 K, M, G)显示文件大小。ls -lah # 示例输出: # total 12K # drwxr-xr-x 3 user group 4.0K Sep 25 10:15 . # -rw-r--r-- 1 user group 0 Sep 25 10:00 file.txt # -rw------- 1 user group 50 Sep 25 10:12 .hidden_config
-
cd: 改变当前工作目录- eg1:
cd /var/log: 进入/var/log目录。 - eg2:
cd ..: 返回上一级目录。
- eg1:
pwd: 显示当前工作目录的完整路径(print work directory)-
eg1:
pwd# 示例输出: # /home/user/my_project
-
mkdir: 创建新目录- eg1:
mkdir my_data: 在当前目录下创建my_data目录。 - eg2:
mkdir -p project/src/main: 递归创建多级目录,如果父目录不存在也会一并创建。
- eg1:
rm: 删除文件或目录- eg1:
rm old_file.txt: 删除old_file.txt文件。 - eg2:
rm -rf my_empty_dir: 强制递归删除my_empty_dir目录及其所有内容(危险操作,谨慎使用!)。
- eg1:
cp: 复制文件或目录- eg1:
cp source.txt destination.txt: 复制source.txt到destination.txt。 - eg2:
cp -r my_dir /backup/: 递归复制my_dir目录及其所有内容到/backup/。
- eg1:
mv: 移动文件或目录,也可用于重命名- eg1:
mv old_name.txt new_name.txt: 将old_name.txt重命名为new_name.txt。 - eg2:
mv file.txt /tmp/: 将file.txt移动到/tmp/目录下。
- eg1:
head: 显示文件开头内容- eg1:
head -n 5 logfile.log: 显示logfile.log文件的前 5 行。
- eg1:
tail: 显示文件结尾内容- eg1:
tail -n 10 logfile.log: 显示logfile.log文件的最后 10 行。 - eg2:
tail -f /var/log/syslog: 实时跟踪syslog文件的新增内容(常用于监控日志)。
- eg1:
find: 在指定目录下搜索文件- eg1:
find . -name "*.py": 在当前目录及其子目录中查找所有.py文件。 - eg2:
find /var/log -type f -mtime +7 -delete: 删除/var/log下 7 天前修改过的所有普通文件。
- eg1:
chmod: 修改文件或目录的权限- eg1:
chmod 755 script.sh: 将script.sh设置为所有者可读写执行,组用户和其他用户只读执行。 - eg2:
chmod +x my_program: 给my_program文件添加执行权限。
- eg1:
chown: 改变文件或目录的所有者- eg1:
sudo chown user:group file.txt: 将file.txt的所有者改为user,所属组改为group。
- eg1:
二、文本处理与编辑 (Text Processing & Editing)
cat: 查看文件内容(连接文件并打印到标准输出)- eg1:
cat my_config.txt: 显示my_config.txt的所有内容。 - eg2:
cat file1.txt file2.txt > combined.txt: 将两个文件内容合并到combined.txt。
- eg1:
less: 分页显示文件内容- eg1:
less large_log_file.log: 逐页查看大文件,支持搜索和前后翻页。
- eg1:
vim: 功能强大且经常使用的文本编辑器- eg1:
vim my_script.py: 使用 Vim 编辑my_script.py文件。 - eg2:
vim /etc/nginx/nginx.conf: 编辑 Nginx 配置文件。
- eg1:
grep: 在文件中搜索指定模式- eg1:
grep "error" /var/log/syslog: 在syslog中搜索所有包含“error”的行。 - eg2:
ps aux | grep python: 查找所有包含“python”的进程(常用于配合管道)。
- eg1:
sed: 流编辑器,用于文本替换、删除等- eg1:
sed 's/old_text/new_text/g' file.txt: 将file.txt中所有old_text替换为new_text并输出到屏幕。 - eg2:
sed -i '1d' file.txt: 删除file.txt的第一行(-i表示直接修改文件)。
- eg1:
awk: 功能强大的文本处理工具- eg1:
awk '{print $1, $3}' data.txt: 打印data.txt中每行的第一列和第三列。 - eg2:
df -h | awk 'NR>1 {print $1, $5}': 打印df -h输出中除标题行外的文件系统和使用百分比。
- eg1:
三、进程与系统监控 (Process & System Monitoring)
ps: 显示当前运行的进程- eg1:
ps aux: 显示所有用户的进程,包括没有控制终端的进程。 - eg2:
ps -ef | grep my_app: 查找名为my_app的进程。
- eg1:
top: 实时显示系统中各个进程的资源占用状况- eg1:
top: 启动top界面,实时查看 CPU、内存、进程等信息。
- eg1:
htop: 交互式的进程查看器,top的增强版 (通常需要安装)- eg1:
htop: 启动htop界面,提供更友好的交互式操作和彩色显示。
- eg1:
kill: 向进程发送信号,通常用于终止进程- eg1:
kill PID: 终止指定 PID 的进程(发送 SIGTERM 信号)。 - eg2:
kill -9 PID: 强制终止指定 PID 的进程(发送 SIGKILL 信号,慎用!)。
- eg1:
free: 用于显示内存使用情况- eg1:
free -h: 以人类可读的格式显示内存和交换空间使用情况。
- eg1:
df: 报告文件系统磁盘空间使用情况- eg1:
df -h: 以人类可读的格式显示所有挂载的文件系统的磁盘空间使用情况。
- eg1:
du: 估计文件空间使用率- eg1:
du -sh /var/log: 估算/var/log目录的总大小。 - eg2:
du -h --max-depth=1 .: 显示当前目录下每个一级子目录的大小。
- eg1:
uname: 显示系统信息- eg1:
uname -a: 显示所有系统信息(内核版本、操作系统、架构等)。
- eg1:
uptime: 显示系统运行时间和平均负载- eg1:
uptime: 查看服务器已经运行了多久,以及过去 1、5、15 分钟的平均负载。
- eg1:
四、用户与权限管理 (User & Permission Management)
useradd: 创建新用户- eg1: Ubuntu/Debian 推荐
adduser:sudo adduser newuser(更友好,会创建主目录、设置密码等)。 - eg2: CentOS/RHEL 推荐
useradd:sudo useradd -m newuser(创建用户并创建主目录)。
- eg1: Ubuntu/Debian 推荐
passwd: 修改用户密码- eg1:
passwd: 修改当前用户密码。 - eg2:
sudo passwd newuser: 修改newuser的密码(需要管理员权限)。
- eg1:
usermod: 修改用户账户属性- eg1:
sudo usermod -aG sudo newuser: 将newuser添加到sudo组,赋予管理员权限(a追加,G指定组)。
- eg1:
sudo: 以其他用户身份执行命令- eg1:
sudo apt update: 以root身份更新软件包列表。 - eg2:
sudo -u anotheruser ls /home/anotheruser: 以anotheruser的身份执行ls命令。
- eg1:
su: 切换用户- eg1:
su -: 切换到root用户(需要root密码)。 - eg2:
su - newuser: 切换到newuser用户(需要newuser密码)。
- eg1:
五、网络管理与远程连接 (Network Management & Remote Connection)
ip: 显示或操纵路由、网络设备、接口和隧道(现代 Linux 推荐)- eg1:
ip a: 显示所有网络接口的 IP 地址信息(替代ifconfig)。 - eg2:
ip route show: 显示路由表。
- eg1:
ping: 测试网络连接- eg1:
ping google.com: 测试与google.com的连通性。 - eg2:
ping -c 4 192.168.1.1: 发送 4 个数据包测试与192.168.1.1的连通性。
- eg1:
ssh: 安全地登录到远程系统- eg1:
ssh user@remote_host_ip: 使用user登录到remote_host_ip。 - eg2:
ssh -p 2222 user@remote_host_ip: 使用user登录到remote_host_ip的 2222 端口。
- eg1:
scp: 在网络上的主机之间安全地复制文件- eg1:
scp local_file.txt user@remote_host_ip:/path/to/remote/: 将本地文件复制到远程服务器。 - eg2:
scp user@remote_host_ip:/path/to/remote/file.txt .: 将远程文件复制到当前本地目录。
- eg1:
- 防火墙管理 (Ubuntu/CentOS 差异显著) :
- Ubuntu (使用
ufw):sudo ufw status: 查看防火墙状态。sudo ufw enable: 启用防火墙。sudo ufw allow ssh: 允许 SSH 服务(默认端口 22)。sudo ufw allow 80/tcp: 允许 TCP 80 端口。
- CentOS (使用
firewalld):sudo systemctl status firewalld: 查看firewalld服务状态。sudo firewall-cmd --list-all: 列出所有防火墙规则。sudo firewall-cmd --add-service=ssh --permanent: 永久允许 SSH 服务。sudo firewall-cmd --add-port=80/tcp --permanent: 永久允许 TCP 80 端口。sudo firewall-cmd --reload: 重新加载防火墙规则以使永久更改生效。
- Ubuntu (使用
六、软件包与服务管理 (Package & Service Management)
- 软件包管理 (Ubuntu/CentOS 差异显著):
- Ubuntu/Debian (使用
apt或apt-get):sudo apt update: 更新软件包列表(必做!)。sudo apt upgrade: 升级所有已安装的软件包。sudo apt install python3-pip: 安装python3-pip软件包。sudo apt remove python3-pip: 卸载python3-pip软件包。dpkg -l | grep python3: 列出所有与python3相关的已安装软件包(低级工具)。
- CentOS/RHEL (使用
dnf或yum):sudo dnf update: 更新软件包(CentOS 8+ 推荐)。sudo yum update: 更新软件包(CentOS 7 及更早版本)。sudo dnf install python3-pip: 安装python3-pip软件包(CentOS 8+ )。sudo yum install python3-pip: 安装python3-pip软件包(CentOS 7 及更早版本)。sudo dnf remove python3-pip: 卸载python3-pip软件包。rpm -qa | grep python3: 列出所有与python3相关的已安装 RPM 软件包(低级工具)。
- Ubuntu/Debian (使用
- 服务控制 (
systemctl- 现代 Linux 通用):- eg1:
sudo systemctl status sshd: 查看 SSH 服务的状态。 - eg2:
sudo systemctl start nginx: 启动 Nginx 服务。 - eg3:
sudo systemctl stop apache2: 停止 Apache 服务。 - eg4:
sudo systemctl enable docker: 设置 Docker 服务开机自启动。 - eg5:
sudo systemctl disable firewalld: 禁用firewalld服务开机自启动。
- eg1:
七、压缩、归档与调度 (Compression, Archiving & Scheduling)
tar: 最广泛使用的归档工具(可以与压缩结合使用)- eg1:
tar -cvf archive.tar my_dir/: 将my_dir目录打包成archive.tar。 - eg2:
tar -xvf archive.tar: 解包archive.tar。 - eg3:
tar -czvf archive.tar.gz my_dir/: 将my_dir打包并用 gzip 压缩成archive.tar.gz。 - eg4:
tar -xzvf archive.tar.gz: 解压并解包archive.tar.gz。
- eg1:
gzip/gunzip: GNU压缩/解压缩程序- eg1:
gzip file.txt: 压缩file.txt为file.txt.gz。 - eg2:
gunzip file.txt.gz: 解压缩file.txt.gz为file.txt。
- eg1:
zip/unzip: 压缩和解压缩zip文件- eg1:
zip -r archive.zip my_dir/: 将my_dir及其内容压缩为archive.zip。 - eg2:
unzip archive.zip: 解压缩archive.zip。
- eg1:
cron: 用于定时执行命令- eg1:
crontab -e: 编辑当前用户的crontab文件,设置定时任务。 - eg2:
crontab -l: 列出当前用户的所有定时任务。
- eg1:
【知识图解】
- Linux常用命令及分类,示意图如下:
【知识拓展】
- 命令组合与管道 (
|) :- 使用管道符
|将一个命令的输出作为另一个命令的输入。ls -l | grep "txt" # 列出详细信息,然后过滤出包含"txt"的行
- 使用管道符
- 输入/输出重定向 (
>,>>,<) :>: 将命令输出重定向到文件,会覆盖原有内容。echo "Hello World" > output.txt>>: 将命令输出追加到文件末尾。echo "Another line" >> output.txt<: 从文件读取输入。sort < names.txt # 从 names.txt 读取内容并排序
- 命令替换 (
\command`或$(command)`) :- 将命令的输出作为另一个命令的参数。
echo "Today is $(date +%Y-%m-%d)" # 输出当前日期
- 将命令的输出作为另一个命令的参数。
- 通配符和正则表达式:
*: 匹配零个或多个字符。ls *.log # 列出所有以 .log 结尾的文件?: 匹配单个字符。ls file?.txt # 匹配 file1.txt, fileA.txt 等[]: 匹配方括号内的任意一个字符。ls [abc]file.txt # 匹配 afile.txt, bfile.txt, cfile.txt
- Shell 脚本编程:
- 将一系列命令写入一个文本文件(以
.sh结尾),赋予执行权限后即可运行,实现自动化任务。#!/bin/bash echo "Starting deployment..." cd /path/to/project git pull origin main source venv/bin/activate pip install -r requirements.txt python app.py & echo "Deployment finished."
- 将一系列命令写入一个文本文件(以