1、文件、网络、压缩、链接的指令
1.1 ls
| 命令名 | 英文单词 | 功能 | 常见格式 | 常用选项 | 加选项后的功能 |
|---|---|---|---|---|---|
ls |
list | 显示目录中文件及其属性信息 | ls [选项] [文件或目录...] |
无 | 列出当前工作目录中的文件信息 |
-l |
以长格式显示文件详细信息(权限、所有者、大小、修改时间等)(默认单位是字节) | ||||
-h |
与 -l 结合使用(-lh),以人类可读格式显示文件大小(如 234M、2G) |
||||
-a |
显示所有文件和目录,包括隐藏文件(以 . 开头的文件) |
||||
-t |
与-lh结合使用(-tlh)按修改时间排序,最新的排在前面 | ||||
-R |
递归列出所有子目录及其内容 |
2.3.1 目录操作类命令
| 命令名 | 英文单词 | 功能 | 常见格式 | 常用操作 | 常用操作功能 |
|---|---|---|---|---|---|
cd |
change directory | 切换目录 | cd [选项] [目录路径],(一般不用选项) |
~/无 | 切换到当前使用者的家目录 |
.. |
切换至当前位置的上一级目录 | ||||
- |
切换至上次所在目录 | ||||
pwd |
print working directory | 显示当前工作目录的路径 | pwd |
无 | 显示所在目录的绝对路径 |
clear |
clear | 清除终端界面已有内容 | clear |
无 | 清除终端界面已有内容 |
exit |
exit | 关闭当前终端 | exit |
无 | 关闭当前终端 |
cd的路径可以是相对路径也可以是绝对路径
相对路径不以根目录(/)开头的路径,绝对路径相反
2.3.2 文件操作类命令
| 命令名 | 英文单词 | 功能 | 常见格式 | 常用操作 | 常用操作功能 |
|---|---|---|---|---|---|
touch |
touch | 创建空文件与修改时间戳 | touch [选项] [文件名] |
无 | 创建一个空内容的文本文件 ;如果文件已存在 ,则对文件的时间进行修改 |
-d |
设置日期,格式:touch -d "YYYY-MM-DD" 文件名 |
||||
mkdir |
make directories | 创建目录 | mkdir [选项] [目录名] |
无 | 创建一个新的目录文件,若目标目录已存在,则提示已存在而不继续创建 (单级) |
-p |
递归创建多级目录 | ||||
rm |
remove | 删除文件或目录(不会放在回收站) | rm [选项] [文件或目录] |
无 | rm 可删除文件 ;对于空目录,使用 rmdir 命令删除 |
| rm 文件名/ -rf | -rf |
-f 强制删除文件而不询问; -r 通常与 -f 结合使用,强制递归删除目录及其内容 |
|||
cp |
copy | 复制文件或目录 | cp [选项] 源文件或目录 目标文件或目录 |
无 | 复制文件,若目标文件存在则会覆盖 |
-rf |
复制目录 | ||||
mv |
move | 对文件和目录进行剪切和重命名操作 | mv [选项] [源文件或目录] [目标文件或目录] |
无 | 同一目录下 对文件和目录进行重命名操作 ;不同目录下 对文件和目录进行剪切操作 |
对于cp:
| 选项 | 功能 | 说明 |
|---|---|---|
-r |
recursive(递归) | 复制目录时必须使用,会递归复制目录及其所有子目录和文件 |
-f |
force(强制) | 强制覆盖,不询问(不解决递归复制目录的问题) |
-v |
verbose(详细) | 显示详细过程(不解决递归复制目录的问题) |
2.3.3 系统管理类命令
| 命令名 | 英文单词 | 功能 | 常见格式 | 常用操作 | 常用操作功能 |
|---|---|---|---|---|---|
shutdown |
shutdown | 关闭服务器的系统 | shutdown [选项] [时间] |
-r |
将系统立即重启,可设定定时重启,格式:shutdown -r +分钟 或 shutdown -r 时间 |
-h |
将系统立即关机,可设定定时关机,格式:shutdown -h +分钟 或 shutdown -h 时间 |
||||
reboot |
reboot | 重新启动计算机 | reboot |
无 | 用于重启系统,简单快捷 |
文件:ls、cp、mv、rm、touch、cat、chmod
网络:ifconfig、ping、netstat、ss、curl、wget
压缩:tar、gzip、gunzip、zip、unzip
链接:ln(硬链接)、ln -s(符号链接)
2、GDB调试流程
编译时加 -g:gcc -g program.c -o program
启动GDB:gdb program
设置断点:break main 或 break 行号
运行程序:run
单步执行:step(进入函数)或 next(不进入)
查看变量:print 变量名
继续执行:continue
退出GDB:quit
3、环境变量相关概念与配置方法
概念:环境变量是操作系统中存储系统或用户配置信息的命名值对,影响进程行为。
常用环境变量:PATH、HOME、LD_LIBRARY_PATH、SHELL
配置方法:
临时:export 变量名=值
永久:写入 ~/.bashrc 或 /etc/profile,然后执行 source ~/.bashrc
4、常见Makefile的符号功能与语法
目标:依赖文件
按下Tab键后写命令
常用符号与函数:
$@:表示当前目标名
$<:表示第一个依赖文件
$^:表示所有依赖文件
=:递归展开赋值
:=:简单展开赋值
?=:条件赋值
+=:追加赋值
wildcard:通配符匹配文件
patsubst:模式字符串替换
@:放在命令前面,表示执行时不回显该命令(即不打印命令本身)。
%:模式匹配符,用于定义通用规则,例如 %.o: %.c 表示所有.o文件依赖对应的.c文件。
5、标准库和系统调用区别
标准库函数(如 printf、fopen)是用户态封装,可移植、带缓冲,调用系统调用实现具体功能;系统调用(如 write、open)是内核提供的接口,无缓冲、直接操作硬件,可移植性差但开销更大。标准库在用户层,系统调用是进入内核的唯一入口。
6、文件操作API有哪些
标准库:fopen、fclose、fread、fwrite、fprintf、fscanf、fgets、fputs
系统调用:open、close、read、write、lseek、stat、dup、fcntl
7、静态库和动态库区别及应用
静态库在编译时合并到可执行文件,运行时无依赖、体积大、更新需重编译;动态库在运行时加载,多程序共享、体积小、更新方便但依赖库存在。静态库适合独立部署、库不常变的场景;动态库适合多程序共享、频繁更新的场景。
8、什么是标准IO与文件I/O
标准IO是C标准库提供的文件操作接口(如fopen、fprintf、fgets),在用户层维护缓冲区,减少系统调用次数,具有可移植性,通常操作FILE结构体。
文件I/O也叫系统调用IO,是操作系统直接提供的接口(如open、read、write),无用户层缓冲,操作文件描述符,属于内核态调用,可移植性差但效率可控。
9、创建文件的函数
创建文件常用open系统调用:int open(const char *pathname, int flags, mode_t mode);
flags常用O_CREAT | O_RDWR,mode指定权限如0666。
标准IO的fopen也可创建文件:FILE *fopen(const char *path, "w");
标准I/O创建文件的权限用文件I/O创建如何编写
标准I/O:fopen("file.txt", "w"),权限由umask决定。
文件I/O(系统调用)创建文件需指定权限:
int fd = open("file.txt", O_CREAT | O_WRONLY | O_TRUNC, 0644);
其中0644表示所有者读写、组和其他只读。
10、缓冲区
缓冲区是一块内存区域,用于暂存数据,目的是减少实际IO操作次数(如读写磁盘或调用系统调用),从而提高效率。标准IO提供行缓冲、全缓冲、无缓冲三种策略,文件IO通常在内核也有页缓存。
标准I/O的缓存机制和刷新条件有哪些
缓存机制:全缓冲(填满缓冲区才刷新,默认普通文件)、行缓冲(遇到换行符或填满刷新,默认终端)、无缓冲(立即刷新,如stderr)。
刷新条件:缓冲区满、遇到换行符(仅行缓冲)、调用fflush、程序正常退出(return或exit)、文件关闭(fclose)。
11、Linux下/etc路径保存什么内容
/etc目录保存系统的配置文件和管理工具所需的配置文件,基本都是文本文件。常见内容有:passwd(用户账户信息)、shadow(用户密码)、group(用户组)、fstab(文件系统挂载)、hostname(主机名)、hosts(域名解析)、network/(网络配置)、apt/或yum.repos.d/(软件源)、profile与bashrc(环境变量配置)等。
12、硬链接与软连接的区别
硬链接:与源文件共享同一个inode,删除源文件不影响硬链接,不能跨文件系统,不能链接目录。
软连接(符号链接):是一个独立文件,存储指向源文件的路径,删除源文件则软连接失效,可以跨文件系统,可以链接目录
13、选择任意一种I/O实现文件的拷贝
使用标准I/O:
cs
#include <stdio.h>
int main() {
FILE *src = fopen("source.txt", "rb");
FILE *dst = fopen("dest.txt", "wb");
if (!src || !dst) return 1;
char buffer[4096];
size_t n;
while ((n = fread(buffer, 1, sizeof(buffer), src)) > 0) {
fwrite(buffer, 1, n, dst);
}
fclose(src);
fclose(dst);
return 0;
}
使用文件I/O(系统调用):
cs
#include <fcntl.h>
#include <unistd.h>
int main() {
int src = open("source.txt", O_RDONLY);
int dst = open("dest.txt", O_CREAT | O_WRONLY | O_TRUNC, 0644);
if (src == -1 || dst == -1) return 1;
char buffer[4096];
ssize_t n;
while ((n = read(src, buffer, sizeof(buffer))) > 0) {
write(dst, buffer, n);
}
close(src);
close(dst);
return 0;
}