「Linux 系统编程」常用命令及系统目录结构
1 Linux 常用命令
1.1 文件目录操作
1.1.1 列出当前目录所有内容
1 |
|
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 -
可以切换到 上次访问的目录。
通过 绝对路径 切换示例:
1 |
|
通过 相对路径 切换示例:
1 |
|
或者采用 cd ./home
,cd ./marisa
,效果一样。
1.1.3 显示当前目录路径
1 |
|
1.1.4 空目录创建与删除
在当前目录下 创建一个空的新目录:
1 |
|
也可以递归创建多级目录:
1 |
|
通过以下命令 删除一个空目录(一定要是空的):
1 |
|
在下面的示例中,先通过 mkdir testDir
当前默认用户的家目录创建了一个空目录 testDir
,然后执行 rmdir testDir
将其删除。
之后跳到上级 /home
目录,通过 mkdir marisa/testDir2
递归创建多级目录在 默认用户的家目录 下创建一个空目录 testDir2
,然后执行 rmdir marisa/testDir2
将其删除。
1.1.5 创建空文件及删除文件 / 目录
通过以下命令 创建一个空文件:
1 |
|
可以创建一个新的目录 testDir
,在这个新目录下创建一个空文件例如 1.cpp
:
此时这个 testDir
目录不为空,通过 rmdir testDir
是无法删除该目录的。
可以通过以下命令 删除文件或目录:
1 |
|
通过 rm -f
可以强制删除文件,且无任何提示信息;通过 rm -rf
可以强制删除目录,且无任何提示信息。
在下面的示例中,通过 rm testFile.cpp
和 rm -r testDir
删除了先前创建的文件和目录。
1.1.6 查看文件(适合短文件)
1 |
|
在下面的示例中,新创建了一个 a.cpp 文件并随便写入一些东西,cat a.cpp
查看其中的内容;另外,tac a.cpp
可以倒序查看文件内容。
1.1.7 复制文件 / 目录
通过以下命令进行文件 / 目录的复制:
1 |
|
在下面的示例中,将 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 |
|
例如:
1 |
|
1.2.2 切换用户
1 |
|
通过以下命令可以切换到 root 用户:
1 |
|
通过以下命令切换到其他用户:
1 |
|
选项参数:
-
或-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 newuser 、useradd -m newuser (自动创建家目录) |
userdel |
删除用户 | userdel newuser 、userdel -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.com 、ping -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.com 、curl -O https://example.com/file.zip (下载文件) |
wget |
下载文件 | wget https://example.com/file.zip 、wget -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.zip 、unzip 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
:用户自行编译安装的软件(如源码安装的程序默认放在这里,避免与系统自带软件冲突)。