CSP-S Linux相关知识
UltimaRatio · · 个人记录
一、Linux 基本概念
-
文件系统结构:
- 根目录:整个文件系统的起点,表示为
/。 - 家目录(Home Directory):用户登录后所在的初始目录。普通用户的家目录通常在
/home/用户名/下,root超级用户的家目录是/root。 - 当前目录:用户当前所在的工作目录,用
.表示。 - 上级目录:当前目录的上一级目录,用
..表示。
- 根目录:整个文件系统的起点,表示为
-
路径:
- 绝对路径:从根目录
/开始的完整路径,如/usr/bin/g++。 - 相对路径:从当前目录开始的路径,如
./test或../doc/1.txt。
- 绝对路径:从根目录
-
文件权限: Linux系统中,每个文件和目录都有三组权限,分别对应三种身份:
- 用户(User, u):文件的所有者。
- 组(Group, g):文件所属用户组的成员。
- 其他(Other, o):既不是所有者,也不是组成员的其他人。
每组权限都由三个字符表示,顺序永远是 读(r)、写(w)、执行(x)。如果没有某个权限,则用
-表示。 示例:-rwxr-xr-- - 第一个字符
-表示这是一个普通文件(如果是d则表示目录)。 rwx:用户(u)有读、写、执行权限。r-x:组(g)有读、执行权限,无写权限。r--:其他(o)只有读权限。
二、必考命令详解
1. 文件和目录操作(最核心)
-
ls- 列出目录内容ls:列出当前目录下的文件和目录(不包含隐藏文件)。ls -l:以长格式显示,可以看到详细信息(权限、所有者、大小、修改时间等)。必考!ls -a:显示所有文件,包括隐藏文件(以.开头的文件)。
-
cd- 切换当前工作目录cd /home:切换到绝对路径/home。cd ..:切换到上级目录。cd ~或cd:切换回当前用户的家目录。cd -:切换回上一次所在的目录。
-
pwd- 打印当前工作目录的绝对路径。 -
mkdir- 创建目录mkdir dirname:创建名为dirname的目录。mkdir -p parent/child:一次性创建多级目录(如果parent不存在也会被创建)。
-
rm- 删除文件或目录rm file.txt:删除文件file.txt。删除后极难恢复!rm -r dirname:递归删除目录dirname及其内部所有内容。非常危险!rm -f file:强制删除,不提示确认。
-
cp- 复制文件或目录cp source.txt dest.txt:将source.txt复制为dest.txt。cp -r sourcedir destdir:递归复制整个目录。
-
mv- 移动文件或目录(也可用于重命名)mv old.txt new.txt:将old.txt重命名为new.txt。mv file.txt /tmp/:将file.txt移动到/tmp/目录下。
-
cat- 连接文件并打印到标准输出设备上(用于查看文件内容)cat hello.cpp:在屏幕上显示hello.cpp的全部内容。
-
find- 查找文件find . -name "*.cpp":在当前目录(.)及其子目录中查找所有后缀为.cpp的文件。
2. 权限管理命令(重中之重!)
-
chmod- 修改文件或目录的权限模式。这是考得最多的命令,必须掌握两种用法。-
数字表示法(绝对模式):最常考! 权限用三位八进制数表示,分别对应 用户(u)、组(g)、其他(o)。
r(读) = 4w(写) = 2x(执行) = 1-(无权限) = 0 将一组权限的数字相加即可。7 = 4+2+1:读、写、执行(rwx)6 = 4+2:读、写(rw-)5 = 4+1:读、执行(r-x)4 = 4:只读(r--)
常见考题:
chmod 755 file:- 用户(u):
7->rwx - 组(g):
5->r-x - 其他(o):
5->r-x - 这是给可执行程序的典型权限。
- 用户(u):
chmod 644 file:u=rw- (6), g=r-- (4), o=r-- (4)- 这是给普通文本文件的典型权限。
-
符号表示法:
chmod [谁][操作符][权限] 文件名- 谁:
u(用户),g(组),o(其他),a(所有人) - 操作符:
+(添加),-(移除),=(设置) - 权限:
r,w,x - 示例:
chmod o+x file:给其他人增加执行权限。chmod g-w file:移除组的写权限。chmod a=rw file:给所有人设置为读写权限。
- 谁:
-
3. 文本和输出处理命令
-
grep- 在文件中搜索指定的字符串模式。grep "hello" file.txt:在file.txt中查找包含 "hello" 的行。grep -n "hello" file.txt:显示匹配行的行号。ps -aux | grep "python":(常考管道|)将ps命令的输出传递给grep,过滤出包含 "python" 的行。
-
wc- 字数统计wc -l file.txt:统计文件行数。wc -w file.txt:统计单词数。wc -c file.txt:统计字节数。
-
|- 管道:将一个命令的输出作为另一个命令的输入。- 示例:
cat file.txt | grep "main" | wc -l:这个命令组合的意思是:先显示file.txt的内容,然后从内容中搜索包含"main"的行,最后统计这些行的行数。
- 示例:
-
>和>>- 输出重定向command > file:将命令的输出重定向到file中(覆盖原有内容)。command >> file:将命令的输出追加到file的末尾。
三、编译和运行C++程序
这是参加CSP-S必须掌握的实践技能,笔试中会考察基本命令和参数。
-
g++- GNU C++ 编译器g++ hello.cpp:编译hello.cpp,默认生成一个名为a.out的可执行文件(在Linux上无后缀)。g++ -o hello hello.cpp:编译hello.cpp,并指定输出的可执行文件名为hello。-o参数非常重要且常考!g++ -c hello.cpp:只编译不链接,生成目标文件hello.o。g++ -O2 -std=c++11 hello.cpp:使用O2优化,遵循C++11标准进行编译。
-
运行程序
./a.out:运行当前目录下的a.out程序。注意:前面的./是必须的,它告诉系统从当前目录查找程序。
四、备考建议与总结
- 记忆命令全称:理解命令英文全称有助于记忆(如
ls=list,cd=change directory,cp=copy)。 - 重点攻克
chmod:务必熟练掌握数字表示法(755,644等),10次考试9次都会考到。 - 理解管道和重定向:明白
|,>,>>的作用和区别。 - 动手实践:如果条件允许,可以在自己的电脑上安装一个Linux虚拟机(如VirtualBox + Ubuntu)或者使用WSL(Windows Subsystem for Linux),亲手敲一遍这些命令,印象会非常深刻。光靠死记硬背容易混淆。
- 刷真题:找近几年的CSP-J/S第一轮真题来做,看看Linux题是怎么出的,考点分布在哪里。