一、文件系统基础
-
目录结构 (
/)- Linux 文件系统采用树形结构,以根目录
/为起点。 - 重要目录:
/bin:存放系统基本命令(如ls,cp)。/etc:存放系统配置文件。/home:普通用户的家目录(主目录)。/root:管理员(root)用户的家目录。/usr:存放用户安装的程序和文件。/var:存放经常变化的文件(如日志、邮件)。/tmp:临时文件存放处。/dev:设备文件(如硬盘、U盘)。/proc:虚拟文件系统,反映内核和进程信息。/opt:可选应用程序安装位置。/mnt:临时挂载点(如挂载U盘、光盘)。/boot:存放系统启动相关文件。/lib,/lib64:存放系统库文件。
- Linux 文件系统采用树形结构,以根目录
-
路径
- 绝对路径 :从根目录
/开始的完整路径。例如:/home/user/Documents/report.txt - 相对路径 :相对于当前工作目录的路径。
.:当前目录。..:上一级目录。~:当前用户的家目录(等价于/home/用户名)。- 例如:当前在
/home/user,Documents/report.txt就是相对路径。
- 绝对路径 :从根目录
-
文件类型
-:普通文件(文本、图片、程序等)。d:目录。l:符号链接(类似 Windows 快捷方式)。c:字符设备文件。b:块设备文件。p:命名管道。s:套接字文件。
二、常用命令
1. 导航与查看
-
pwd:P rint W orking D irectory - 显示当前所在目录的绝对路径。bash$ pwd /home/user -
ls:L is t - 列出目录内容。- 常用选项:
-l:长格式显示(详细信息)。-a:显示所有文件(包括隐藏文件,以.开头)。-h:以人类可读方式显示文件大小(如 K, M, G)。-t:按修改时间排序(最新在前)。-r:反向排序。
bash$ ls -lha total 4.0K drwxr-xr-x. 2 user user 4.0K May 10 14:30 . drwx------. 3 user user 4.0K May 9 10:15 .. -rw-r--r--. 1 user user 0 May 10 14:30 .hiddenfile -rw-r--r--. 1 user user 12 May 10 14:30 file.txt - 常用选项:
-
cd:C hange D irectory - 切换目录。cd ~或cd:回到家目录。cd ..:进入上一级目录。cd -:回到上一次所在的目录。
bash$ cd Documents $ pwd /home/user/Documents $ cd .. $ pwd /home/user
2. 文件操作
-
touch:创建新的空文件或更新文件的时间戳。bash$ touch newfile.txt # 创建空文件 $ touch existingfile.txt # 更新文件时间戳 -
mkdir:M ak e Dir ectory - 创建目录。-p:创建多级目录(如果父目录不存在)。
bash$ mkdir newdir $ mkdir -p parent/child/grandchild -
cp:C op y - 复制文件或目录。-r:递归复制目录及其内容。-i:覆盖前提示确认。
bash$ cp file.txt file_copy.txt # 复制文件 $ cp -r dir1 dir2 # 复制目录 -
mv:M ov e - 移动或重命名文件/目录。bash$ mv oldname.txt newname.txt # 重命名 $ mv file.txt /tmp/ # 移动到 /tmp 目录 -
rm:R em ove - 删除文件或目录。-r:递归删除目录及其内容。-f:强制删除,不提示确认。- 极其小心 :
rm -rf /会删除整个系统!永远不要尝试!通常只在自己的目录下使用rm。
bash$ rm unwanted_file.txt # 删除文件 $ rm -r old_directory # 删除目录 -
cat:Cat enate - 查看文件内容(适合小文件)。bash$ cat file.txt This is the content of file.txt. -
less/more:分页查看文件内容(适合大文件)。less功能更强大(支持上下翻页、搜索)。bash$ less largefile.log -
head:查看文件开头部分(默认前 10 行)。-n:查看前 N 行。
bash$ head -n 5 file.txt # 查看前5行 -
tail:查看文件结尾部分(默认后 10 行)。-n:查看后 N 行。-f:实时追踪文件末尾(常用于查看日志)。
bash$ tail -f /var/log/syslog # 实时查看系统日志 -
grep:G lobal R egular E xpression P rint - 在文件中搜索文本模式。-i:忽略大小写。-r:递归搜索目录。-n:显示匹配行号。-v:显示不匹配的行。
bash$ grep "error" logfile.txt # 在 logfile.txt 中搜索 "error" $ grep -r "function" /home/user/code/ # 在 /home/user/code/ 目录下递归搜索 "function" -
find:在目录树中查找文件。-name:按文件名查找。-type:按文件类型查找(f普通文件,d目录)。-size:按文件大小查找(+大于,-小于)。
bash$ find /home/user -name "*.txt" # 在 /home/user 下查找所有 .txt 文件 $ find / -type f -size +100M # 在根目录下查找大于 100MB 的文件
3. 权限管理
-
权限概念 :
- 每个文件/目录有 3 组权限:所有者 (
u)、所属组 (g)、其他用户 (o)。 - 每组权限有:读 (
r)、写 (w)、执行 (x)。
- 每个文件/目录有 3 组权限:所有者 (
-
ls -l查看权限:bash-rw-r--r--. 1 user group 0 May 10 15:00 file.txt- 第一位:文件类型 (
-普通文件)。 - 接下来 9 位:三组权限(
rw-所有者可读写不可执行,r--组用户可读,r--其他用户可读)。 user:所有者。group:所属组。
- 第一位:文件类型 (
-
chmod:Ch ange Mod e - 修改文件/目录权限。- 数字模式 :用数字表示权限(
r=4,w=2,x=1)。每组权限是数字之和。- 例如:
chmod 755 file.txt->rwxr-xr-x(7=4+2+1, 5=4+1, 5=4+1)
- 例如:
- 符号模式 :
u/g/o/a:用户/组/其他/所有。+/-:添加/移除。r/w/x:读/写/执行。- 例如:
chmod u+x script.sh(给所有者添加执行权限)。
- 数字模式 :用数字表示权限(
-
chown:Ch ange Own er - 修改文件/目录的所有者。-R:递归修改。
bash$ chown newuser:newgroup file.txt # 修改所有者和所属组 $ chown -R user:group directory/ # 递归修改目录下所有文件
4. 进程管理
-
ps:P rocess S tatus - 查看当前进程快照。aux:常用组合,显示详细信息。
bash$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 225708 9632 ? Ss May09 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 31 ... (其他进程) -
top/htop:实时动态查看系统进程状态和资源占用。htop是增强版。 -
kill:向进程发送信号(默认SIGTERM,请求终止)。-9:发送SIGKILL,强制终止。
bash$ kill 1234 # 请求终止 PID 为 1234 的进程 $ kill -9 1234 # 强制终止 PID 为 1234 的进程 -
bg:将挂起的作业放到后台运行。 -
fg:将后台作业调到前台运行。 -
jobs:查看当前 shell 的后台作业。 -
&:在命令后添加&,让命令在后台运行。bash$ long_running_command & # 在后台启动命令 $ jobs # 查看后台作业 $ fg %1 # 将作业号 1 的作业调到前台
5. 系统信息
-
uname:查看系统信息。-a:显示所有信息(内核名称、主机名、内核版本、硬件架构等)。
bash$ uname -a Linux myserver 5.4.0-150-generic #167-Ubuntu SMP Wed Jan 11 16:38:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux -
df:D isk F ree - 查看磁盘空间使用情况。-h:人类可读格式。
bash$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 20G 15G 4.5G 77% / tmpfs 1.9G 0 1.9G 0% /dev/shm -
du:D isk U sage - 查看目录/文件磁盘使用情况。-h:人类可读格式。-s:仅显示总计。
bash$ du -sh /home/user/Documents 1.5G /home/user/Documents -
free:查看内存使用情况。-h:人类可读格式。
bash$ free -h total used free shared buff/cache available Mem: 1.9G 1.1G 123M 15M 700M 640M Swap: 2.0G 256M 1.7G -
uptime:查看系统运行时间、用户数和负载平均值。bash$ uptime 15:30:01 up 2 days, 3:45, 1 user, load average: 0.00, 0.01, 0.05
6. 网络工具
-
ping:测试网络连通性(向目标主机发送 ICMP 回显请求)。bash$ ping google.com PING google.com (142.250.191.110) 56(84) bytes of data. 64 bytes from fra24s06-in-f14.1e100.net (142.250.191.110): icmp_seq=1 ttl=117 time=12.6 ms ... (按 Ctrl+C 停止) -
ifconfig/ip addr:查看和配置网络接口(ip命令更现代)。bash$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:aa:bb:cc brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0 valid_lft 86389sec preferred_lft 86389sec -
netstat/ss:查看网络连接、路由表、接口统计等(ss命令更现代)。bash$ ss -tuln # 查看监听中的 TCP/UDP 端口 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:68 *:* tcp LISTEN 0 128 *:22 *:* tcp LISTEN 0 128 :::80 :::* -
wget:从网络下载文件。bash$ wget https://example.com/file.zip -
curl:强大的 URL 数据传输工具(用于下载、上传、测试 API 等)。bash$ curl -O https://example.com/file.zip # 下载文件 (类似 wget) $ curl https://api.example.com/data # 获取 API 数据
7. 压缩与解压
-
tar:T ape Ar chive - 打包文件(不压缩),常与压缩工具结合。-c:创建归档文件。-x:解压归档文件。-v:显示过程。-f:指定归档文件名。-z:使用gzip压缩/解压。-j:使用bzip2压缩/解压。-J:使用xz压缩/解压。
bash$ tar -czvf archive.tar.gz dir1/ file1.txt # 打包并用 gzip 压缩 $ tar -xzvf archive.tar.gz # 解压 .tar.gz 文件 -
gzip/gunzip:压缩/解压.gz文件。 -
bzip2/bunzip2:压缩/解压.bz2文件(压缩率更高)。 -
zip/unzip:压缩/解压.zip文件(跨平台兼容性好)。bash$ zip archive.zip file1.txt dir1/ $ unzip archive.zip
8. 文本编辑
-
命令行编辑器 :
nano:简单易用的文本编辑器。vim/vi:功能强大的模态编辑器(学习曲线陡峭,但效率极高)。是大多数 Linux 发行版默认安装的编辑器。- 基本模式:
普通模式(导航、操作)、插入模式(输入文本)、命令行模式(保存、退出等)。 - 常用命令(普通模式下):
i:进入插入模式。Esc:返回普通模式。:w:保存。:q:退出(如果未修改)。:q!:强制退出(不保存修改)。:wq:保存并退出。dd:删除当前行。/pattern:向下搜索pattern。?pattern:向上搜索pattern。n:查找下一个匹配项。
- 基本模式:
bash$ nano file.txt # 使用 nano 编辑 $ vim file.txt # 使用 vim 编辑
三、帮助信息
man:查看命令的手册页(man ual pages),是最权威、最详细的帮助文档。例如man ls。--help:查看命令的快速帮助信息(通常比man简短)。例如ls --help。info:查看 GNU 风格的帮助文档(比man更结构化,但不如man普及)。例如info coreutils。
四、用户管理 (通常需要 root 权限 sudo)
-
sudo:S uper U ser DO - 以超级用户(root)权限执行命令(需要当前用户在sudoers列表中)。bash$ sudo apt update # 以 root 权限更新软件包列表 -
su:S witch U ser - 切换用户(默认切换到 root)。bash$ su - # 切换到 root 用户(需要 root 密码) $ su - username # 切换到指定用户(需要该用户密码或 root 权限) -
useradd/adduser:添加用户(adduser是交互式脚本)。 -
usermod:修改用户属性(如所属组)。 -
passwd:修改用户密码。bash$ sudo passwd username # root 修改其他用户密码 $ passwd # 修改当前用户自己的密码 -
userdel:删除用户。-r:同时删除用户的家目录和邮件池。
bash$ sudo userdel -r olduser # 删除用户及其家目录 -
groupadd:添加组。 -
groupmod:修改组属性。 -
groupdel:删除组。 -
groups:查看用户所属的组。bash$ groups username username : username adm cdrom sudo dip plugdev lpadmin sambashare
五、软件包管理
不同的 Linux 发行版有不同的包管理工具:
- Debian/Ubuntu (
.deb) :apt:高级包管理工具(apt-get,apt-cache的现代替代)。sudo apt update:更新软件包列表。sudo apt upgrade:升级所有可升级的软件包。sudo apt install:安装软件包。sudo apt remove:卸载软件包(保留配置文件)。sudo apt purge:卸载软件包并删除配置文件。apt search:搜索软件包。apt show:显示软件包详细信息。
- Red Hat/CentOS/Fedora (
.rpm) :dnf(Fedora/CentOS 8+/RHEL 8+):Dandified YUM,新一代包管理工具。yum(CentOS 7/RHEL 7):Yellowdog Updater, Modified。sudo dnf/yum update:更新软件包。sudo dnf/yum install:安装软件包。sudo dnf/yum remove:卸载软件包。dnf/yum search:搜索软件包。dnf/yum info:显示软件包详细信息。
- Arch Linux (
.pkg.tar.zst) :pacman:包管理工具。sudo pacman -Syu:同步软件库并升级系统。sudo pacman -S:安装软件包。sudo pacman -R:卸载软件包(保留依赖)。sudo pacman -Rs:卸载软件包及其不再需要的依赖。pacman -Ss:搜索软件包。pacman -Si:显示软件包详细信息。
六、其他实用技巧
-
Tab 键补全 :输入命令、路径、文件名时,按
Tab键可以自动补全,提高效率。 -
命令历史 :按
↑/↓箭头键可以浏览之前执行过的命令。history命令列出历史记录。!n执行历史记录中编号为n的命令。 -
重定向 :
>:将标准输出重定向到文件(覆盖)。>>:将标准输出重定向到文件(追加)。<:将文件内容作为标准输入。2>:将标准错误重定向到文件(覆盖)。2>>:将标准错误重定向到文件(追加)。&>:将标准输出和标准错误都重定向到文件。
bash$ ls > filelist.txt # 将 ls 结果覆盖写入 filelist.txt $ ls >> filelist.txt # 将 ls 结果追加到 filelist.txt $ grep "pattern" < input.txt # 在 input.txt 中搜索 "pattern" $ command 2> error.log # 将错误信息写入 error.log -
管道
|:将一个命令的标准输出作为另一个命令的标准输入。bash$ ps aux | grep nginx # 查找包含 "nginx" 的进程 $ cat access.log | grep "404" | sort | uniq -c # 统计 access.log 中 404 错误的出现次数(去重排序后) -
通配符 :
*:匹配任意多个字符(包括零个)。?:匹配一个字符。[]:匹配括号内的任意一个字符(如[abc]匹配 a、b、c)。[!]或[^]:匹配不在括号内的任意一个字符。
bash$ ls *.txt # 列出所有 .txt 文件 $ rm file?.log # 删除 file1.log, file2.log 等 $ cp [abc]* /backup/ # 复制以 a, b 或 c 开头的文件到 /backup/
总结
这份指南涵盖了 Linux 命令行操作的核心基础。熟练掌握这些命令和概念是高效使用 Linux 系统的关键。学习 Linux 是一个持续的过程,最好的方法是多动手实践,结合 man 手册查阅命令的详细用法。遇到问题时,善用搜索引擎(如加上 "linux" 或命令名)通常能找到解决方案。