Linux命令基础操作
上期回顾
在上一章学习了如何使用MobaXterm工具远程连接Linux操作系统,并且可以正常登录到字符界面,现在就遇到一个重要的问题,我在Windows都是点点点的操作,现在Linux操作系统上都是字符,我没办法通过点点点的方式来使用系统了,应该怎么办呢?接下来我们就来学习Linux的命令行操作,通过命令来实现我们想要做的事情,是不是很神奇?赶快开始吧!
本章学习目标
1.了解Linux系统的预备知识
2.学习Linux系统的基础操作
预备知识
1.Linux系统中一切皆文件
- 统一操作接口 :所有资源都可通过文件操作(
open()
、read()
、write()
、close()
等)进行访问。 - 统一命名空间 :所有资源都存在于文件系统树中(从根目录
/
开始)。 - 权限一致性:通过标准的文件权限(rwx)控制资源访问。
2.Linux系统目录结构
在Linux系统中没有Windows的C盘D盘等概念,而是以目录形式存在,下图讲解每个目录定义的功能。

根据图片内容,我将Linux目录结构整理为以下表格:
目录路径 | 类型 | 主要功能说明 | 典型内容/注意事项 |
---|---|---|---|
/ |
根目录 | 整个文件系统的起点,所有目录的父节点 | 包含所有核心目录 |
/bin |
系统目录 | 存放最常用的二进制可执行命令(所有用户可用) | ls , cp , cat , mv 等基础命令 |
/boot |
系统目录 | 存放启动Linux时使用的核心文件 | 内核文件(vmlinuz )、引导加载程序(GRUB)、初始化内存镜像(initramfs ) |
/dev |
设备目录 | 存放设备文件(Linux中访问设备的方式与访问文件相同) | /dev/sda (硬盘), /dev/tty (终端), /dev/null (空设备) |
/etc |
配置目录 | 存放系统管理所需的配置文件和子目录 | /etc/passwd (用户账户), /etc/hosts (主机名映射), /etc/fstab (文件系统表)修改可能导致系统无法启动 |
/home |
用户目录 | 用户主目录(每个用户有独立的子目录) | /home/username/Documents , /home/username/Downloads |
/lib |
库目录 | 存放系统最基本的动态链接共享库 | 类似Windows的DLL文件,几乎所有应用程序都需要 |
/lost+found |
恢复目录 | 系统非法关机后存放恢复的文件碎片 | 仅ext系列文件系统有此目录 |
/media |
挂载目录 | 自动挂载可移动设备 | U盘、光盘等插入后自动挂载在此 |
/mnt |
挂载目录 | 临时手动挂载其他文件系统 | 网络共享、外部硬盘等临时挂载点 |
/opt |
软件目录 | 额外安装的第三方软件 | Oracle数据库、大型商业软件等 |
/proc |
虚拟目录 | 虚拟文件系统,映射内核运行状态和进程信息(内存中) | /proc/cpuinfo (CPU信息), /proc/meminfo (内存信息) 可直接修改某些文件(如echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 屏蔽ping) |
/root |
用户目录 | 系统管理员(root)的主目录 | 独立于/home 目录 |
/sbin |
系统目录 | 存放系统管理员使用的系统管理程序 | ifconfig , reboot , fdisk 等需要root权限执行 |
/selinux |
安全目录 | Redhat/CentOS特有,存放SELinux安全机制相关文件 | 类似Windows防火墙的安全机制 |
/srv |
服务目录 | 存放服务启动后需要提取的数据 | Web服务文件(/srv/www ), FTP数据等 |
/sys |
虚拟目录 | Linux 2.6+内核的文件系统,集成设备、进程和伪终端信息 | /sys/class/net (网络设备信息) |
/tmp |
临时目录 | 存放临时文件(重启后自动清除) | 应用程序生成的临时文件 |
/usr |
资源目录 | 存放用户级应用程序和资源 | 包含多个子目录: |
├── /usr/bin |
系统用户使用的应用程序 | 普通用户命令 | |
├── /usr/sbin |
超级用户使用的管理程序和系统守护程序 | 需要root权限的管理命令 | |
├── /usr/local |
用户手动安装的软件 | 源码编译安装的软件 | |
└── /usr/src |
内核源代码默认放置目录 | Linux内核源代码 | |
/var |
动态目录 | 存放经常变化的数据 | 包含多个子目录: |
├── /var/log |
系统日志文件 | syslog , auth.log 等重要的故障排查位置 |
|
├── /var/mail |
邮件目录 | 用户邮件存储 | |
└── /var/run |
运行时数据(现已被/run 替代) |
进程PID文件、锁文件等 | |
/run |
运行时 | 临时文件系统,存储系统启动以来的信息(重启后清除) | 进程PID文件、设备锁文件等 |
3.命令提示符
bash
#格式 [当前登录的用户@主机名 当前所在的目录]
[root@localhost ~]#
root表示当前登录用户
localhost表示主机名
~ 代表用户的家目录,当前代表的就是root用户的家目录
以#结尾表示当前登录的身份为root
以$结尾表示当前登录的身份为普通用户
基础操作
pwd 查看当前工作目录
bash
[root@localhost ~]# pwd
/root
表示当前在/root目录下
cd 切换目录
- cd命令可以实现所在目录的功能
常用场景
命令示例 | 功能说明 | 适用场景 |
---|---|---|
cd / |
进入系统根目录 | 全局配置管理(如 /etc ) |
cd ~ 或 cd |
返回 root 家目录 (/root ) |
安全操作环境或快速复位 |
cd - |
返回上一次目录 | 目录间交替操作(如日志检查) |
cd .. |
返回上级目录 | 层级退出或路径修正 |
cd ../.. |
返回上两级目录 | 多级目录快速回溯 |
cd /path/to/dir |
通过绝对路径跳转 | 精准定位目标目录 |
cd "dir name" |
进入含空格目录 | 处理特殊命名目录 |
cd -P /symlink_dir |
穿透符号链接到物理路径 | 避免软链接误导的调试场景 |
切换至根目录
bash
[root@localhost ~]# cd /
[root@localhost /]# pwd
/
返回家目录(/root
)
bash
[root@localhost /]# cd ~ # 或直接输入 `cd`
[root@localhost ~]# pwd
/root
进入系统配置目录
bash
[root@localhost ~]# cd /etc/sysconfig
[root@localhost sysconfig]# pwd
/etc/sysconfig
返回上级目录
bash
[root@localhost sysconfig]# cd ..
[root@localhost etc]# pwd
/etc
cd -
返回上一次目录
bash
[root@localhost etc]# cd /var/log
[root@localhost log]# cd -
/etc
[root@localhost etc]#
多级跳转(相对路径)
bash
[root@localhost etc]# cd /usr/local/bin
[root@localhost bin]# cd ../../
[root@localhost usr]# pwd
/usr
访问含空格的目录
bash
[root@localhost ~]# mkdir "My Documents"
[root@localhost ~]# cd "My Documents" # 双引号包裹
[root@localhost My Documents]# pwd
/root/My Documents
ls 查看文件及目录
- ls命令可以列出指定目录中的目录,以及文件
常用场景
命令组合 | 功能 | 适用场景 |
---|---|---|
ls -l |
显示详细文件信息 | 查看权限、所有者、修改时间 |
ls -lh |
人性化显示文件大小 | 快速识别大文件(如日志) |
ls -lt |
按修改时间排序(最新在前) | 定位最新日志或配置文件 |
ls -lS |
按文件大小排序(大文件在前) | 清理磁盘空间时识别大文件 |
ls -d */ |
仅列出子目录名 | 快速导航目录结构 |
ls -la |
显示所有文件(含隐藏文件) | 排查配置文件(如 .bashrc ) |
ls -i |
显示文件索引号 | 文件系统调试或硬链接管理 |
列出当前目录内容
bash
[root@localhost ~]# ls
file1.txt dir1 script.sh
显示指定目录内容
bash
[root@localhost ~]# ls /var/log
boot.log messages secure
显示隐藏文件(包含 .
开头的文件)
bash
[root@localhost ~]# ls -a
. .. .bashrc file1.txt dir1 .cache
# -a 显示所有文件(含隐藏文件)
长格式显示详细信息(权限/所有者/大小/时间)
bash
[root@localhost ~]# ls -l
-rw-r--r-- 1 root root 512 Jan 1 10:00 file1.txt
drwxr-xr-x 2 root root 4096 Jan 1 09:30 dir1
# -l 显示权限、所有者、大小、修改时间等
人性化显示文件大小(自动转换 KB/MB/GB)
bash
[root@localhost ~]# ls -lh
-rw-r--r-- 1 root root 1.2K Jan 1 10:00 file1.txt
# -h 与 -l 组合,文件大小易读
按时间排序(最新文件在前)
bash
[root@localhost ~]# ls -lt
-rw-r--r-- 1 root root 1.2K Jan 3 14:20 new_log.log
-rw-r--r-- 1 root root 512 Jan 1 10:00 file1.txt
# -t 按修改时间降序,-r 可反转(旧文件在前)
按文件大小排序(大文件在前)
bash
[root@localhost ~]# ls -lS
-rw-r--r-- 1 root root 2.5M Jan 2 11:00 bigfile.iso
-rw-r--r-- 1 root root 1.2K Jan 3 14:20 new_log.log
# -S 按文件大小降序
递归列出子目录内容
bash
[root@localhost ~]# ls -R dir1
dir1:
subdir1 file2.txt
dir1/subdir1:
config.ini
# -R 递归显示所有子目录内容
仅显示目录本身(不显示内容)
bash
[root@localhost ~]# ls -ld /var/log
drwxr-xr-x 10 root root 4096 Jan 3 12:00 /var/log
# -d 显示目录自身属性,而非其内容
显示文件索引号(inode)
bash
[root@localhost ~]# ls -i
12345 file1.txt 67890 dir1
# -i 显示文件或目录的 inode 编号
cat 查看文件内容
- cat命令可以查看系统内的文件
演示命令 | 功能说明 | 关键选项作用 |
---|---|---|
cat /etc/hostname |
查看单个文件内容 | 无 |
cat file1.txt file2.txt |
同时显示多个文件内容 | 无 |
cat -n file.txt |
显示所有行号(含空行) | -n :全局行号 |
cat -b file.txt |
仅非空行编号 | -b :忽略空行 |
cat -s file.txt |
压缩连续空行 | -s :多空行合并为一行 |
cat -ET file.txt |
显示行尾符($)和制表符(^I) | -E :行尾标识;-T :制表符可视化 |
cat -A file.txt |
暴露所有非打印字符(调试用) | -A :等价于-vET |
cat > newfile.txt |
创建文件并输入内容(Ctrl+D保存) | > :重定向覆盖 |
cat file1.txt file2.txt > merged.txt |
合并文件到新文件 | > :覆盖目标文件 |
cat notes.txt >> log.txt |
追加内容到文件末尾 | >> :重定向追加 |
cat /dev/null > temp.log |
清空文件(慎用!) | /dev/null :空设备输入源 |
查看单个文件内容
bash
[root@localhost ~]# cat /etc/hostname
localhost
# 输出 /etc/hostname 文件内容(显示主机名)
同时查看多个文件
bash
[root@localhost ~]# cat /etc/hostname /etc/os-release
localhost
NAME="CentOS Linux"
VERSION="7"
# 按顺序输出多个文件内容
显示所有行号(含空行)
bash
[root@localhost ~]# cat -n /etc/fstab
1 /dev/sda1 /boot xfs defaults 0 0
2
3 /dev/sda2 / xfs defaults 0 0
# -n:为所有行编号(包括空行)
仅非空行编号
bash
[root@localhost ~]# cat -b /etc/fstab
1 /dev/sda1 /boot xfs defaults 0 0
2 /dev/sda2 / xfs defaults 0 0
# -b:跳过空行编号
压缩连续空行
bash
[root@localhost ~]# cat -s /etc/motd
Welcome to CentOS!
System is up.
# -s:将连续空行合并为一行
显示行尾符和制表符
bash
[root@localhost ~]# cat -ET test.txt
Hello World!$
^ILine with tab$
# -E:行尾显示$;-T:制表符显示为^I
显示所有非打印字符
bash
[root@localhost ~]# cat -A binary.log
M-oM-;M-?^AM-^D^I$
# -A(等价于-vET):暴露隐藏字符
创建新文件(Ctrl+D结束)
bash
[root@localhost ~]# cat > newfile.txt
This is line 1
Line 2
^D # 按Ctrl+D保存
# 创建文件并写入内容
合并多个文件
bash
[root@localhost ~]# cat file1.txt file2.txt > combined.txt
# 将file1和file2内容合并到新文件combined.txt
追加内容到文件
bash
[root@localhost ~]# cat notes.txt >> log.txt
# 将notes.txt内容追加到log.txt末尾
清空文件内容
bash
[root@localhost ~]# cat /dev/null > temp.log
# 清空temp.log(/dev/null是空设备)
less 查看长文件
- 查看内容比较多的文档时使用
bash
[root@localhost /]# less /etc/passwd
按上、下键进行滚动
支持全文搜索,例如 /bin 按n跳转匹配项
按q键进行退出
hostname 设置主机名
- 主机名相关设置
命令示例 | 功能说明 | 关键选项作用 |
---|---|---|
hostname |
显示当前主机名 | 无参数直接输出主机名 |
hostname server01 |
临时修改主机名 | 立即生效,重启后失效 |
hostname -i |
显示主机 IP 地址 | -i :依赖 /etc/hosts 解析 |
hostnamectl set-hostname 名称 |
永久修改主机名 | 直接写入 /etc/hostname,无需重启 |
显示当前主机名
bash
[root@localhost ~]# hostname
localhost
# 无参数直接显示主机名
临时修改主机名
bash
[root@localhost ~]# hostname server01
[root@localhost ~]# hostname
server01
# 临时修改主机名(重启后失效)
显示主机 IP 地址
bash
[root@localhost ~]# hostname -i
192.168.1.100
# -i:显示主机 IP(依赖 /etc/hosts 配置)
使用 hostnamectl
永久修改
bash
[root@localhost ~]# hostnamectl set-hostname permanent-server
[root@localhost ~]# hostname
permanent-server
# 永久生效(写入 /etc/hostname)
手动配置永久主机名
bash
[root@localhost ~]# echo "permanent-server" > /etc/hostname
[root@localhost ~]# vi /etc/hosts
# 添加:192.168.1.100 permanent-server.example.com permanent-server
[root@localhost ~]# reboot
# 需修改 /etc/hostname 和 /etc/hosts 后重启生效
lscpu 查看CPU
- 查看CPU信息
bash
[root@localhost ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4 #代表4个CPU
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 1
座: 4
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 151
型号名称: 12th Gen Intel(R) Core(TM) i5-12400
步进: 5
CPU MHz: 2495.998
BogoMIPS: 4991.99
超管理器厂商: VMware
虚拟化类型: 完全
L1d 缓存: 48K
L1i 缓存: 32K
L2 缓存: 1280K
L3 缓存: 18432K
NUMA 节点0 CPU: 0-3
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
free 查看内存输出分为两大部分:
bash
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 3.7G 552M 2.7G 16M 442M 2.9G
Swap: 8.0G 0B 8.0G
- Mem 行:物理内存(RAM)使用情况
- Swap 行:交换空间(虚拟内存)使用情况
参数字段说明
字段 | 含义 | 重要性 |
---|---|---|
total | 系统总物理内存大小(如 15Gi ) |
硬件实际安装的内存容量 |
used | 已分配的内存(含应用程序占用 + 部分缓存) | 并非"已消耗",包含可回收的缓存(buff/cache ) |
free | 完全空闲的内存(未被任何进程或缓存使用) | 值较低不一定表示内存不足(因系统主动利用内存缓存) |
shared | 多个进程共享的内存(如共享库、tmpfs 文件系统) | 通常较小(示例中 1.2Gi ) |
buff/cache | 内核缓冲区(Buffer) + 文件缓存(Cache) | 可回收内存(系统需时自动释放) |
available | 真正可用内存 ≈ free + 可回收的 buff/cache |
关键指标 :反映新进程可用内存量(示例 9.5Gi ) |
ifconfig 网卡ip设置
查看网卡信息,与ip a s命令类似
bash
[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.134 netmask 255.255.255.0 broadcast 192.168.2.255
ether 00:0c:29:15:71:b1 txqueuelen 1000 (Ethernet)
RX packets 556 bytes 73934 (72.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 256 bytes 44977 (43.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:47:29:1c txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
查看指定网卡信息
bash
[root@localhost ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.134 netmask 255.255.255.0 broadcast 192.168.2.255
ether 00:0c:29:15:71:b1 txqueuelen 1000 (Ethernet)
RX packets 186 bytes 20684 (20.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 127 bytes 24448 (23.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
总结
本文介绍了Linux系统的基础目录结构,并演示了pwd、cd、ls、cat、less、hostname、lscpu、free、ifconfig命令相关使用方法,通过本章学习我们现在可以自由切换目录,也就是说可以在Linux中自由行走了,也可以通过cat、less命令查看文件具体内容,可以去查看各种感兴趣的文件,下一篇开始讲解创建目录和文件的方法,修改文件的方法,继续加油吧,博观而约取,厚积而薄发!