「Linux 系统编程」常用命令及系统目录结构

1 Linux 常用命令

1.1 文件目录操作

1.1.1 列出当前目录所有内容

1
ls

ls -l 可以列出目录详细列表;ls -a 可以显示隐藏文件;通过 ls [指定目录] 可以列出指定路径中的所有内容。

执行 ls -l 命令之后,每一条为每个目录的详细信息,从左到右依次为:

文件权限 硬链接计数 所有者 所属组 大小 时间 文件名/文件夹名

权限具体展开:

-rw-r--r-- 共 10 位,记为 1234567890。

1 代表文件类型;
234 代表所有者读写执行权限;
567 代表同组用户读写执行权限;
890 代表其他人读写执行权限。

Linux 系统文件类型有 7/8 种,分别为:

  • 普通文件:-
  • 目录文件:d
  • 字符设备文件:c
  • 块设备文件:b
  • 软连接:l
  • 管道文件:p
  • 套接字:s
  • 未知文件

1.1.2 切换目录

1
cd [切换的目录路径]

cd / 可以切换到 系统根目录
cd ~ 可以切换到系统 默认用户的家目录
cd .. 或者 cd ../ 可以跳到当前目录的 上一级目录
cd - 可以切换到 上次访问的目录

通过 绝对路径 切换示例:

1
cd /home/marisa

通过 相对路径 切换示例:

1
2
cd home
cd marisa

或者采用 cd ./homecd ./marisa,效果一样。


1.1.3 显示当前目录路径

1
pwd


1.1.4 空目录创建与删除

在当前目录下 创建一个空的新目录

1
mkdir [创建的目录名称]

也可以递归创建多级目录:

1
mkdir -p marisa/alice/aya

通过以下命令 删除一个空目录(一定要是空的):

1
rmdir [先前创建的空目录名称]

在下面的示例中,先通过 mkdir testDir 当前默认用户的家目录创建了一个空目录 testDir,然后执行 rmdir testDir 将其删除。

之后跳到上级 /home 目录,通过 mkdir marisa/testDir2 递归创建多级目录在 默认用户的家目录 下创建一个空目录 testDir2,然后执行 rmdir marisa/testDir2 将其删除。


1.1.5 创建空文件及删除文件 / 目录

通过以下命令 创建一个空文件

1
touch [创建空文件名称]

可以创建一个新的目录 testDir,在这个新目录下创建一个空文件例如 1.cpp

此时这个 testDir 目录不为空,通过 rmdir testDir 是无法删除该目录的。


可以通过以下命令 删除文件或目录

1
2
rm [删除的文件名称]
rm -r [删除的目录名称]

通过 rm -f 可以强制删除文件,且无任何提示信息;通过 rm -rf 可以强制删除目录,且无任何提示信息。

在下面的示例中,通过 rm testFile.cpprm -r testDir 删除了先前创建的文件和目录。


1.1.6 查看文件(适合短文件)

1
2
cat test.txt   
cat file1.txt file2.txt # (合并显示)

在下面的示例中,新创建了一个 a.cpp 文件并随便写入一些东西,cat a.cpp 查看其中的内容;另外,tac a.cpp 可以倒序查看文件内容。


1.1.7 复制文件 / 目录

通过以下命令进行文件 / 目录的复制:

1
2
cp file1.txt file2.txt   # 复制文件
cp -r dir1 dir2 # 复制目录,需加 `-r`

在下面的示例中,将 a.cpp 文件中的内容复制到一个新文件 b.txt 中(会自动先创建一个文件 b.txt),cat b.txt 查看其中的内容:


在下面的示例中,将 testDir 目录递归复制到一个新目录 testDir2 中,添加参数 -r 用于递归复制目录:


cp -a dir1 dir2 可以复制目录 1 及其下所有文件到目录 2,与 -r 参数不同的是,-a 是完全复制,复制后文件权限,改动时间什么的也完全相同。


1.1.8 其他常用文件目录操作

命令 功能描述 常用示例
mv 移动/重命名文件/目录 mv file.txt dir/(移动)、mv oldname.txt newname.txt(重命名)
more 分页查看长文件内容(空格键翻页) more longfile.txt
less 分页查看长文件(支持上下滚动) less longfile.txt(按 q 退出)
head 查看文件前 N 行(默认前10行) head -n 5 file.txt(前5行)
tail 查看文件后 N 行(默认后10行) tail -n 5 file.txt(后5行)、tail -f log.txt(实时跟踪文件更新)

1.2 文件权限和用户管理

1.2.1 以管理员权限执行命令

1
sudo [选项] [以管理员权限执行的命令]

例如:

1
2
sudo apt update         # 以 root 权限更新软件包列表
sudo vim /etc/hosts # 编辑需要 root 权限的文件

1.2.2 切换用户

1
su [选项] [用户名]

通过以下命令可以切换到 root 用户:

1
2
3
su              # 切换到root,保持当前环境
su - # 切换到root,加载root的完整环境
su root # 明确指定切换到root用户

通过以下命令切换到其他用户:

1
2
3
su username
su - username
su -l username

选项参数:

  • --l--login: 提供类似直接登录的环境
  • -c command: 执行指定命令后退出
  • -s shell: 指定要使用的shell
  • -p--preserve-environment: 保留当前环境变量

1.2.3 其他常用文件权限和用户管理操作

命令 功能描述 常用示例
chmod 修改文件/目录权限 chmod 755 file.sh(权限数字表示)、chmod +x file.sh(添加执行权限)
chown 修改文件/目录所有者 chown user:group file.txt(修改用户和组)
chgrp 修改文件/目录所属组 chgrp group file.txt
useradd 创建新用户 useradd newuseruseradd -m newuser(自动创建家目录)
userdel 删除用户 userdel newuseruserdel -r newuser(同时删除家目录)
passwd 修改用户密码 passwd(修改当前用户密码)、passwd newuser(管理员修改其他用户密码)

1.3 系统信息与进程管理

命令 功能描述 常用示例
uname 查看系统内核信息 uname -a(显示所有信息)
hostname 查看/设置主机名 hostname(查看)、hostname newname(临时设置)
df 查看磁盘空间使用情况 df -h(以人类可读单位显示,如 GB)
du 查看文件/目录大小 du -sh dir/(显示目录总大小,-s 汇总,-h 人性化)
top 实时查看系统进程资源占用(动态) top(按 q 退出,P 按 CPU 排序)
ps 查看当前进程(静态) ps aux(显示所有进程)、`ps -ef
kill 终止进程 kill 1234(通过进程 ID 终止)、kill -9 1234(强制终止)
free 查看内存使用情况 free -h(人性化显示内存和 swap 信息)
uptime 查看系统运行时间和负载 uptime(显示当前时间、运行时长、用户数、负载均值)

1.4 网络操作

命令 功能描述 常用示例
ping 测试网络连通性 ping baidu.comping -c 4 192.168.1.1(发送4个包后停止)
ifconfig 查看/配置网络接口(旧版) ifconfig(查看所有网卡信息)
ip 查看/配置网络接口(新版,替代 ifconfig ip addr(查看IP地址)、ip link set eth0 up(启用网卡)
netstat 查看网络连接和端口状态 netstat -tuln(显示监听的 TCP/UDP 端口)
ss 查看网络连接(替代 netstat,更高效) ss -tuln
curl 发送 HTTP 请求或下载文件 curl http://example.comcurl -O https://example.com/file.zip(下载文件)
wget 下载文件 wget https://example.com/file.zipwget -c <URL>(断点续传)

1.5 压缩与解压

命令 功能描述 常用示例
tar 打包/解压文件(常用格式:.tar、.tar.gz、.tar.bz2) tar -cvf archive.tar dir/(打包)、tar -zxvf archive.tar.gz(解压 .tar.gz)、tar -jxvf archive.tar.bz2(解压 .tar.bz2)
zip 创建 ZIP 压缩包 zip -r archive.zip dir/(递归压缩目录)
unzip 解压 ZIP 压缩包 unzip archive.zipunzip archive.zip -d targetdir(指定解压目录)

2 Linux 系统目录

2.1 系统目录结构

2.2 系统目录主要文件

  • bin

    存放二进制 可执行文件

    包含系统启动和日常操作必需的基础命令,如 ls、cd、cp、mv 等,所有用户都可执行。

  • boot

    存放 系统启动 相关的程序和文件。

    包括内核文件(如 vmlinuz-<版本号>)、初始化内存磁盘(initrd 或 initramfs,用于启动时加载驱动)。

  • dev

    存放 设备文件

    例如字符设备:键盘(/dev/keyboard)、鼠标(/dev/mouse)、串口(/dev/ttyS0)等;块设备:硬盘(/dev/sda)、U 盘(/dev/sdb)、分区(/dev/sda1)等。

  • home

    存放 普通用户的家目录

    每个用户在 /home 下有一个以用户名命名的子目录(如 /home/user1),用于存放用户的个人文件、配置(如 .bashrc)、文档等。

  • etc

    存放 系统和应用程序的配置文件,以及用户信息文件

    包括 passwd(用户账号列表)、group(用户组列表)、hostname(主机名配置)、network/interfaces(网络接口配置)、ssh/sshd_config(SSH 服务配置)等。

  • lib

    存放 共享库文件(动态链接库)和 内核模块

    包括 系统核心库:如 libc.so.6(C 标准库);应用程序依赖的库:如 libssl.so(加密相关库);内核模块:/lib/modules/ 目录下存放内核驱动模块,用于扩展硬件支持。

  • root

    系统管理员(root 用户)的家目录。

    root 作为超级用户,家目录直接放在根目录,用于存放管理员的个人文件和配置。

  • usr

    用户共享资源(Unix Software Resource),集中存放系统软件和用户安装的应用。

    主要子目录及功能:

    • /usr/bin:非必需的用户命令(如 git、python),补充 /bin 的功能;
    • /usr/sbin:非必需的系统管理命令(如 httpd、vsftpd);
    • /usr/lib:与 /lib 类似,但存放非核心的共享库;
    • /usr/share:共享数据(如文档、图标、locale 语言文件);
    • /usr/local:用户自行编译安装的软件(如源码安装的程序默认放在这里,避免与系统自带软件冲突)。

「Linux 系统编程」常用命令及系统目录结构
https://marisamagic.github.io/2025/08/01/20250801_2/
作者
MarisaMagic
发布于
2025年8月1日
许可协议