Linux基本操作

🖥️ 本文是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 获取帮助

当你不确定命令的用法时,可以通过以下方式获取帮助:

  1. 命令内置帮助:大多数命令都支持--help选项

    ls --help
    
  2. man手册:提供详细的命令说明

    man ls
    

    在man页面中,按q退出,按/搜索,按n查找下一个匹配项。

  3. info文档:比man更详细的GNU文档

    info ls
    
  4. tldr:简化版命令说明(需要安装)

    tldr ls
    

2. Linux文件系统结构

2.1 文件系统层次结构标准

Linux遵循文件系统层次结构标准(FHS),定义了主要目录的用途和内容。

主要目录及其功能
目录功能
/根目录,所有其他目录的起点
/bin基本命令二进制文件
/boot启动文件,如内核、引导加载程序
/dev设备文件
/etc系统配置文件
/home用户主目录
/lib共享库文件
/media可移动媒体挂载点
/mnt临时挂载点
/opt可选应用软件包
/proc进程和内核信息的虚拟文件系统
/rootroot用户的主目录
/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

# 进入用户主目录
cdcd ~

# 进入上级目录
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等,帮助你高效地编辑和处理文本文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值