🖥️ 本文是Linux学习系列的第三篇,我们将介绍Linux的基本操作,包括终端使用、文件系统结构、用户权限和常用命令。掌握这些基础知识,是成为Linux高手的第一步。
1. Linux终端基础
1.1 什么是终端
终端(Terminal)是与Linux系统进行交互的文本界面,通过终端我们可以输入命令来控制系统。在图形界面中,终端通常被称为"终端模拟器"或"控制台"。
终端的核心是Shell,它是一个命令解释器,负责解析用户输入的命令并执行。Linux中常见的Shell有:
- Bash (Bourne Again SHell):大多数Linux发行版的默认Shell
- Zsh (Z Shell):功能强大,可定制性高
- Fish:用户友好,具有智能自动补全功能
- Dash:轻量级Shell,常用于系统脚本
1.2 打开终端
在不同的Linux桌面环境中,打开终端的方法略有不同:
- GNOME:按下
Ctrl+Alt+T
或在活动概览中搜索"Terminal" - KDE:按下
Ctrl+Alt+T
或从应用程序菜单中找到"Konsole" - Xfce:从应用程序菜单中找到"Terminal"
- 无图形界面:Linux服务器通常只有命令行界面,直接登录即可使用
1.3 终端基本操作
命令提示符
打开终端后,你会看到类似这样的提示符:
username@hostname:~$
这个提示符包含以下信息:
username
:当前登录的用户名hostname
:计算机的主机名~
:当前工作目录(~
表示用户的主目录)$
:普通用户提示符(root用户为#
)
基本快捷键
在终端中,以下快捷键可以提高操作效率:
快捷键 | 功能 |
---|---|
Ctrl+C | 中断当前命令 |
Ctrl+Z | 暂停当前命令 |
Ctrl+D | 退出当前Shell |
Ctrl+L | 清屏(相当于clear 命令) |
Ctrl+A | 光标移到行首 |
Ctrl+E | 光标移到行尾 |
Ctrl+U | 删除光标前的所有字符 |
Ctrl+K | 删除光标后的所有字符 |
Tab | 自动补全命令或文件名 |
↑/↓ | 浏览命令历史 |
命令语法
Linux命令的一般语法结构为:
command [options] [arguments]
- command:要执行的命令
- options:修改命令行为的选项,通常以
-
(短选项)或--
(长选项)开头 - arguments:命令作用的对象,如文件名、目录名等
例如:
ls -la /home
ls
是命令-la
是选项(-l
表示详细列表,-a
表示显示隐藏文件)/home
是参数(要列出内容的目录)
1.4 获取帮助
当你不确定命令的用法时,可以通过以下方式获取帮助:
-
命令内置帮助:大多数命令都支持
--help
选项ls --help
-
man手册:提供详细的命令说明
man ls
在man页面中,按
q
退出,按/
搜索,按n
查找下一个匹配项。 -
info文档:比man更详细的GNU文档
info ls
-
tldr:简化版命令说明(需要安装)
tldr ls
2. Linux文件系统结构
2.1 文件系统层次结构标准
Linux遵循文件系统层次结构标准(FHS),定义了主要目录的用途和内容。
主要目录及其功能
目录 | 功能 |
---|---|
/ | 根目录,所有其他目录的起点 |
/bin | 基本命令二进制文件 |
/boot | 启动文件,如内核、引导加载程序 |
/dev | 设备文件 |
/etc | 系统配置文件 |
/home | 用户主目录 |
/lib | 共享库文件 |
/media | 可移动媒体挂载点 |
/mnt | 临时挂载点 |
/opt | 可选应用软件包 |
/proc | 进程和内核信息的虚拟文件系统 |
/root | root用户的主目录 |
/run | 运行时变量数据 |
/sbin | 系统二进制文件 |
/srv | 服务数据 |
/sys | 系统和设备信息的虚拟文件系统 |
/tmp | 临时文件 |
/usr | 用户程序和数据(只读) |
/var | 可变数据(如日志、缓存) |
2.2 路径表示
绝对路径与相对路径
-
绝对路径:从根目录开始的完整路径,以
/
开头/home/user/documents/file.txt
-
相对路径:相对于当前工作目录的路径,不以
/
开头documents/file.txt
特殊路径符号
.
:表示当前目录..
:表示上一级目录~
:表示当前用户的主目录-
:表示上一个工作目录(用于cd
命令)
2.3 文件类型
在Linux中,“一切皆文件”,但文件有不同的类型:
符号 | 文件类型 |
---|---|
- | 普通文件 |
d | 目录 |
l | 符号链接 |
c | 字符设备文件 |
b | 块设备文件 |
p | 命名管道 |
s | 套接字 |
可以通过ls -l
命令查看文件类型,输出的第一个字符表示文件类型:
$ ls -l
drwxr-xr-x 2 user group 4096 Jan 1 12:34 directory
-rw-r--r-- 1 user group 123 Jan 1 12:34 file.txt
lrwxrwxrwx 1 user group 8 Jan 1 12:34 link -> file.txt
3. 基本文件操作命令
3.1 导航和查看
pwd - 显示当前工作目录
pwd
# 输出:/home/username
ls - 列出目录内容
# 基本用法
ls
# 详细列表
ls -l
# 显示隐藏文件
ls -a
# 按大小排序
ls -S
# 按时间排序
ls -t
# 递归显示子目录
ls -R
# 人性化显示文件大小
ls -lh
cd - 切换目录
# 进入指定目录
cd /path/to/directory
# 进入用户主目录
cd 或 cd ~
# 进入上级目录
cd ..
# 进入上一个工作目录
cd -
find - 查找文件
# 按名称查找
find /path/to/search -name "filename"
# 按类型查找(f:文件,d:目录)
find /path/to/search -type f
# 按大小查找(大于100MB的文件)
find /path/to/search -size +100M
# 按修改时间查找(7天内修改的文件)
find /path/to/search -mtime -7
3.2 文件内容查看
cat - 显示文件内容
# 显示文件内容
cat file.txt
# 显示行号
cat -n file.txt
# 合并多个文件
cat file1.txt file2.txt > combined.txt
less - 分页查看文件
less file.txt
在less
中,可以使用以下快捷键:
空格
:向下翻页b
:向上翻页/pattern
:搜索文本n
:跳到下一个搜索结果q
:退出
head/tail - 查看文件头/尾部
# 查看文件前10行
head file.txt
# 查看文件前20行
head -n 20 file.txt
# 查看文件后10行
tail file.txt
# 查看文件后20行
tail -n 20 file.txt
# 实时查看文件更新
tail -f /var/log/syslog
grep - 搜索文件内容
# 搜索文件中的关键词
grep "pattern" file.txt
# 忽略大小写
grep -i "pattern" file.txt
# 显示行号
grep -n "pattern" file.txt
# 递归搜索目录
grep -r "pattern" /path/to/directory
# 使用正则表达式
grep -E "pattern1|pattern2" file.txt
3.3 文件和目录操作
mkdir - 创建目录
# 创建单个目录
mkdir directory
# 创建多个目录
mkdir dir1 dir2 dir3
# 创建嵌套目录
mkdir -p parent/child/grandchild
touch - 创建空文件或更新时间戳
# 创建新文件
touch newfile.txt
# 更新已存在文件的时间戳
touch existingfile.txt
cp - 复制文件和目录
# 复制文件
cp source.txt destination.txt
# 复制目录(递归)
cp -r sourcedir/ destdir/
# 保留权限和时间戳
cp -p source.txt destination.txt
# 交互式复制(覆盖前提示)
cp -i source.txt destination.txt
mv - 移动/重命名文件和目录
# 移动文件
mv file.txt /path/to/directory/
# 重命名文件
mv oldname.txt newname.txt
# 交互式移动(覆盖前提示)
mv -i source.txt destination.txt
rm - 删除文件和目录
# 删除文件
rm file.txt
# 删除目录及其内容
rm -r directory/
# 强制删除(不提示)
rm -f file.txt
# 交互式删除(删除前提示)
rm -i file.txt
⚠️ 警告:
rm
命令删除的文件无法恢复。使用rm -rf
时要特别小心,尤其是在root权限下。
ln - 创建链接
# 创建硬链接
ln source.txt hardlink
# 创建符号链接
ln -s source.txt symlink
3.4 文件压缩和归档
tar - 打包和解包文件
# 创建tar归档
tar -cf archive.tar file1 file2 directory/
# 列出归档内容
tar -tf archive.tar
# 解压归档
tar -xf archive.tar
# 创建gzip压缩的tar归档
tar -czf archive.tar.gz directory/
# 解压gzip压缩的tar归档
tar -xzf archive.tar.gz
# 创建bzip2压缩的tar归档
tar -cjf archive.tar.bz2 directory/
# 解压bzip2压缩的tar归档
tar -xjf archive.tar.bz2
zip/unzip - ZIP格式压缩/解压
# 创建zip压缩文件
zip -r archive.zip directory/
# 解压zip文件
unzip archive.zip
# 查看zip文件内容
unzip -l archive.zip
4. 用户权限管理
4.1 用户和组
Linux是一个多用户系统,每个用户都有唯一的用户ID(UID)和一个或多个组ID(GID)。
用户类型
- root用户:超级用户,UID为0,拥有系统的完全控制权
- 系统用户:为系统服务和进程创建的用户,通常不用于登录
- 普通用户:常规用户账户,用于日常使用
用户信息文件
/etc/passwd
:存储用户账户信息/etc/shadow
:存储加密的用户密码/etc/group
:存储组信息
4.2 文件权限
在Linux中,每个文件和目录都有关联的权限,决定了谁可以访问它们以及如何访问。
权限表示
使用ls -l
命令可以查看文件权限:
-rwxr-xr-- 1 user group 123 Jan 1 12:34 file.txt
权限字段rwxr-xr--
的含义:
- 第1位:文件类型(
-
表示普通文件) - 第2-4位:所有者权限(
rwx
表示读、写、执行) - 第5-7位:所属组权限(
r-x
表示读、执行) - 第8-10位:其他用户权限(
r--
表示只读)
权限类型
r
(读):- 对文件:查看文件内容
- 对目录:列出目录内容
w
(写):- 对文件:修改文件内容
- 对目录:创建、删除、重命名目录中的文件
x
(执行):- 对文件:作为程序执行
- 对目录:进入目录
4.3 修改文件权限
chmod - 更改文件权限
# 使用符号模式
# u:所有者,g:组,o:其他,a:所有
# +:添加权限,-:移除权限,=:设置权限
# 给所有者添加执行权限
chmod u+x file.txt
# 移除组和其他用户的写权限
chmod go-w file.txt
# 给所有用户设置读权限
chmod a=r file.txt
# 使用数字模式(八进制)
# 4:读,2:写,1:执行
# 设置权限为rwxr-xr--(764)
chmod 764 file.txt
# 递归更改目录及其内容的权限
chmod -R 755 directory/
chown - 更改文件所有者和组
# 更改文件所有者
chown newuser file.txt
# 更改文件所有者和组
chown newuser:newgroup file.txt
# 只更改组
chown :newgroup file.txt
# 递归更改目录及其内容的所有者
chown -R newuser directory/
4.4 特殊权限
除了基本的读、写、执行权限外,Linux还有三种特殊权限:
SUID (Set User ID)
当设置了SUID位的程序执行时,它将以文件所有者的权限运行,而不是执行用户的权限。
# 设置SUID权限
chmod u+s file
# 或
chmod 4755 file
SGID (Set Group ID)
- 对文件:程序将以文件所属组的权限运行
- 对目录:在该目录中创建的新文件将继承目录的组
# 设置SGID权限
chmod g+s file_or_directory
# 或
chmod 2755 file_or_directory
Sticky Bit
主要用于共享目录,防止用户删除其他用户的文件。
# 设置Sticky Bit
chmod +t directory
# 或
chmod 1777 directory
一个典型的例子是/tmp
目录,它通常设置了Sticky Bit。
4.5 sudo - 临时提升权限
sudo
命令允许授权用户以root或其他用户的身份执行命令。
# 以root身份执行命令
sudo command
# 以特定用户身份执行命令
sudo -u username command
# 切换到root shell
sudo -i
使用sudo
需要用户在/etc/sudoers
文件中有相应的权限配置。
5. 进程管理基础
5.1 查看进程
ps - 显示当前进程
# 显示当前终端的进程
ps
# 显示所有进程(BSD风格)
ps aux
# 显示所有进程(Unix风格)
ps -ef
# 显示进程树
ps -ejH
top - 动态显示进程信息
top
在top
中,可以使用以下快捷键:
q
:退出k
:杀死进程r
:重新调整进程优先级M
:按内存使用排序P
:按CPU使用排序
htop - 增强版top(需要安装)
htop
5.2 控制进程
前台和后台运行
# 在前台运行命令
command
# 在后台运行命令
command &
# 将正在运行的命令放到后台
Ctrl+Z
bg
# 将后台命令调到前台
fg
# 查看后台任务
jobs
kill - 终止进程
# 通过PID终止进程
kill PID
# 强制终止进程
kill -9 PID
# 通过名称终止进程
pkill process_name
# 终止所有用户的特定进程
sudo killall process_name
6. 网络基础命令
6.1 网络配置查看
ifconfig/ip - 查看和配置网络接口
# 显示所有网络接口(传统命令)
ifconfig
# 显示所有网络接口(新命令)
ip addr show
# 启用/禁用网络接口
ifconfig eth0 up
ifconfig eth0 down
# 或
ip link set eth0 up
ip link set eth0 down
ping - 测试网络连接
# 测试与主机的连接
ping google.com
# 指定ping次数
ping -c 4 google.com
6.2 网络诊断
traceroute - 显示数据包路由
traceroute google.com
netstat/ss - 显示网络连接
# 显示所有监听端口
netstat -tuln
# 或
ss -tuln
# 显示所有活动连接
netstat -tua
# 或
ss -tua
dig/nslookup - DNS查询
# 查询域名的IP地址
dig google.com
# 或
nslookup google.com
7. 系统信息命令
7.1 系统和硬件信息
uname - 显示系统信息
# 显示所有系统信息
uname -a
# 显示内核版本
uname -r
lscpu - 显示CPU信息
lscpu
free - 显示内存使用情况
# 显示内存使用情况
free
# 以人性化格式显示
free -h
df - 显示磁盘空间使用情况
# 显示所有文件系统
df
# 以人性化格式显示
df -h
du - 显示目录空间使用情况
# 显示目录大小
du -sh directory/
# 显示目录及其子目录大小
du -h --max-depth=1 directory/
7.2 系统监控
uptime - 显示系统运行时间和负载
uptime
w/who - 显示当前登录用户
# 显示登录用户及其活动
w
# 显示登录用户
who
小结
本章介绍了Linux的基本操作,包括终端使用、文件系统结构、文件操作命令、用户权限管理、进程管理和网络命令等。这些是Linux日常使用和管理的基础,掌握这些命令和概念将使你能够有效地使用Linux系统。
随着实践的增加,你会逐渐熟悉这些命令,并能够更高效地完成各种任务。记住,在Linux中,命令行是最强大的工具,熟练掌握它将大大提高你的工作效率。
📣 预告:下一篇文章《文本编辑器使用》将介绍Linux中常用的文本编辑器,如Vim、Nano等,帮助你高效地编辑和处理文本文件。