Logo wfirstzhang 的博客

博客

CSP-S Linux相关知识(From WF_wxl,注意可能不全)

avatar wfirstzhang 2026-09-05 10:21:26

一、Linux 基本概念

  1. 文件系统结构:

    • 根目录:整个文件系统的起点,表示为 /。
    • 家目录(Home Directory):用户登录后所在的初始目录。普通用户的家目录通常在 /home/用户名/ 下,root超级用户的家目录是 /root。
    • 当前目录:用户当前所在的工作目录,用 . 表示。
    • 上级目录:当前目录的上一级目录,用 .. 表示。
  2. 路径:

    • 绝对路径:从根目录 / 开始的完整路径,如 /usr/bin/g++。
    • 相对路径:从当前目录开始的路径,如 ./test 或 ../doc/1.txt。
  3. 文件权限: 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 - 修改文件或目录的权限模式。这是考得最多的命令,必须掌握两种用法。

    1. 数字表示法(绝对模式):最常考! 权限用三位八进制数表示,分别对应 用户(u)、组(g)、其他(o)。

      • r (读) = 4
      • w (写) = 2
      • x (执行) = 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
        • 这是给可执行程序的典型权限。
      • chmod 644 file:
        • u=rw- (6), g=r-- (4), o=r-- (4)
        • 这是给普通文本文件的典型权限。
    2. 符号表示法: 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 程序。注意:前面的 ./ 是必须的,它告诉系统从当前目录查找程序。

四、备考建议与总结

  1. 记忆命令全称:理解命令英文全称有助于记忆(如 ls=list, cd=change directory, cp=copy)。
  2. 重点攻克 chmod:务必熟练掌握数字表示法(755,644等),10次考试9次都会考到。
  3. 理解管道和重定向:明白 |, >, >> 的作用和区别。
  4. 动手实践:如果条件允许,可以在自己的电脑上安装一个Linux虚拟机(如VirtualBox + Ubuntu)或者使用WSL(Windows Subsystem for Linux),亲手敲一遍这些命令,印象会非常深刻。光靠死记硬背容易混淆。
  5. 刷真题:找近几年的CSP-J/S第一轮真题来做,看看Linux题是怎么出的,考点分布在哪里。

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。

wfirstzhang Avatar
密码是111111
活跃度 近 53 周
查看全年