【Linux基础命令使用】pwd、cd、ls、cat、less、hostname、lscpu、free、ifconfig命令详解

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
  1. Mem 行:物理内存(RAM)使用情况
  2. 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命令查看文件具体内容,可以去查看各种感兴趣的文件,下一篇开始讲解创建目录和文件的方法,修改文件的方法,继续加油吧,博观而约取,厚积而薄发

相关推荐
平凡灵感码头24 分钟前
什么是 Bootloader?怎么把它移植到 STM32 上?
linux·soc
MarkGosling1 小时前
【开源项目】网络诊断告别命令行!NetSonar:开源多协议网络诊断利器
运维·后端·自动化运维
无敌的牛1 小时前
Linux基础开发工具
linux·运维·服务器
Edingbrugh.南空1 小时前
实战指南:用pmap+gdb排查Linux进程内存问题
linux·运维·服务器
朱颜辞镜花辞树‎1 小时前
GitHub 操作指南:项目协作与自动化工作流实践
运维·自动化·github
亚马逊云开发者2 小时前
将 Go 应用从 x86 平台迁移至 Amazon Graviton:场景剖析与最佳实践
linux·数据库·golang
大叔是90后大叔2 小时前
Linux/Ubuntu安装go
linux·ubuntu·golang
孙克旭_2 小时前
day051-ansible循环、判断与jinja2模板
linux·运维·服务器·网络·ansible
渡我白衣2 小时前
Linux操作系统之进程间通信:共享内存
linux
总有刁民想爱朕ha2 小时前
零基础搭建监控系统:Grafana+InfluxDB 保姆级教程,5分钟可视化服务器性能!
运维·服务器·grafana