计算机基础知识与编程环境
2024-08-28 10:13:11
发布于:广东
本内容按照CSP-S大纲要求攥写
(如果你不考提高组,其实可以不看的awa)
(1)在Linux系统终端中使用mkdir,cp、rm、mv等命令新建、复制、删除、移动文件或目录
mkdir命令:
mkdir命令的功能为创建一个目录
命令格式
mkdir [选项] DirName
命令功能
通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限(了解Linux文件-文件夹权限请点击这里)。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。
命令参数
-m 用于对新建目录设置存取权限,也可以用 chmod 命令进行设置。
–p 需要时创建上层文件夹(或目录),如果文件夹(或目录)已经存在,则不视为错误。
cp命令:
cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不同。
命令格式
cp [选项]... [-T] 源 目的
或者
cp [选项]... 源... 目录
或者
cp [选项]... -t 目录 源...
命令功能
将源文件复制至目标文件,或将多个源文件复制至目标目录。
命令参数
-a --archive 等于-dR --preserve=all
--backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f --force 如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
-i --interactive 覆盖前询问(使前面的 -n 选项失效)
-H 跟随源文件中的命令行符号链接
-l --link 链接文件而不复制
-L --dereference 总是跟随符号链接
-n --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等
-R, -r --recursive 复制目录及目录内的所有项目
rm命令:
rm命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
命令格式
rm [选项] 文件…
命令功能
删除一个目录中的一个或多个文件或目录,如果没有使用-r选项,则rm不会删除目录。如果使用rm来删除文件,通常仍可以将该文件恢复原状。
命令参数
-f --force 忽略不存在的文件,从不给出提示。
-i --interactive 进行交互式删除
-r, -R --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 输出版本信息并退出
mv命令:
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
命令格式
mv [选项] 源文件或目录 目标文件或目录
命令功能
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。
命令参数
-b 若需覆盖文件,则覆盖前先行备份。
-f --force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i 若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u --update 若目标文件已经存在,且 source 比较新,才会更新
-t --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY
即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,
此时目标目录在前,源文件在后
(2)在Linux系统终端中使用cd,pwd,ls等命令更改、显示目录路径和查看目录中的文件
cd命令:
cd命令用于更改当前工作目录。
命令格式
cd [目录路径]
命令功能
通过 cd 命令可以切换到指定目录,改变当前工作目录。路径可以是绝对路径(从根目录开始)或相对路径(相对于当前目录)。
命令参数
无特定选项,通常直接输入目标目录的路径即可。
pwd命令:
pwd命令显示当前工作目录的完整路径。
命令格式
pwd
命令功能
输出当前所在目录的绝对路径,帮助用户了解自己在文件系统中的位置。
命令参数
无特定选项,直接使用即可。
ls命令:
ls命令用于列出目录中的文件和子目录。
命令格式
ls [选项] [目录]
命令功能
显示指定目录中的文件和目录列表。如果没有指定目录,则显示当前目录的内容。
命令参数
-a --all 显示所有文件,包括以点(.)开头的隐藏文件
-l --long 以长格式显示,包括文件的权限、所有者、大小等信息
-h --human-readable 以易读的格式显示文件大小(如K、M、G)
-R --recursive 递归显示目录及其子目录中的所有文件
-t --time 按时间排序,最近修改的文件排在前面
(3)在Linux系统下使用Gedit,Vim或 Emacs等文本编辑工具编写代码
下面是这些工具的基本使用方法:
Gedit
Gedit 是 GNOME 桌面环境下的默认文本编辑器,提供图形化界面,非常适合初学者使用。
启动 Gedit
gedit 文件名
例如,gedit example.txt
会打开一个名为 example.txt
的文件。如果文件不存在,将会创建一个新文件。
基本功能
- 保存: 使用图形界面的菜单或按
Ctrl+S
。 - 关闭: 使用图形界面的菜单或按
Ctrl+Q
。 - 查找与替换: 通过菜单
查找 > 查找
或按Ctrl+F
。
Vim
Vim 是一个功能强大的文本编辑器,常用于编写代码和编辑配置文件。它是 vi
的改进版本,具有更多功能和更高的灵活性。
启动 Vim
vim 文件名
例如,vim example.txt
会打开一个名为 example.txt
的文件。
基本操作
- 进入插入模式: 按
i
键。 - 返回命令模式: 按
Esc
键。 - 保存文件: 在命令模式下输入
:w
然后按Enter
。 - 保存并退出: 在命令模式下输入
:wq
或:x
,然后按Enter
。 - 退出不保存: 在命令模式下输入
:q!
,然后按Enter
。 - 查找文本: 在命令模式下输入
/要查找的文本
然后按Enter
。
Emacs
Emacs 是一个高度可扩展的文本编辑器,广泛用于编程和文档编辑,具有丰富的插件和扩展功能。
启动 Emacs
emacs 文件名
例如,emacs example.txt
会打开一个名为 example.txt
的文件。如果未指定文件名,则会打开一个空的编辑窗口。
基本操作
- 保存文件: 按
Ctrl+X
然后按Ctrl+S
。 - 退出 Emacs: 按
Ctrl+X
然后按Ctrl+C
。 - 查找文本: 按
Ctrl+S
,然后输入要查找的文本。 - 替换文本: 按
Alt+Shift+5
,然后输入要替换的文本。
每个编辑器都有自己独特的操作方式和快捷键,选择适合自己工作流的工具可以提高效率。
(4)熟悉g++、gcc等编译器以及优化、数学库等常见编译选项
编译器基础
g++ / gcc 是 GNU 编译器集合的一部分,用于编译 C/C++ 程序。
编译 C++ 程序
g++ -o outputfile sourcefile.cpp
优化选项
-O0
: 禁用优化,适用于调试。-O1
: 基本优化,减少编译时间和运行时性能的平衡。-O2
: 常用的优化选项,进行更多优化,适用于大多数情况。-O3
: 更高级的优化,适合对性能有更高要求的程序。-Ofast
: 包含-O3
的所有优化,同时开启不完全符合标准的优化选项。-Os
: 优化代码大小,适合内存受限的环境。
数学库
-lm
: 链接数学库,通常用于 C/C++ 程序中调用数学函数,如sin()
,cos()
,sqrt()
等。
调试选项
-g
: 生成调试信息,用于调试程序。
警告选项
-Wall
: 启用大多数警告信息。-Wextra
: 启用额外的警告信息。
其他常用选项
-std=c++17
: 指定 C++ 标准,替换c++17
为其他标准如c++14
,c++20
。-I<dir>
: 添加头文件搜索路径。-L<dir>
: 添加库文件搜索路径。-l<lib>
: 链接指定的库文件。
(5)在Linux系统终端中运行程序,并使用time令查看程序用时(区分real time,sys time和user time)
在 Linux 系统中,您可以使用 time
命令来测量程序的执行时间。运行程序并查看时间信息的基本方法如下:
运行程序并查看时间
time ./your_program
输出解释
time
命令会输出三种主要时间信息:
- real: 实际经过的墙钟时间(从开始到结束的总时间),包括程序运行期间的所有等待时间。
- user: 用户 CPU 时间,表示程序在用户态执行的总时间。
- sys: 系统 CPU 时间,表示程序在内核态(系统调用)执行的总时间。
示例
假设您有一个名为 example
的程序:
time ./example
输出可能如下:
real 0m2.345s
user 0m1.234s
sys 0m0.456s
real
表示从程序开始到结束的总时间是 2.345 秒。user
表示程序在用户模式下消耗了 1.234 秒的 CPU 时间。sys
表示程序在系统模式下消耗了 0.456 秒的 CPU 时间。
(6)了解调试工具 gdb及其break, display, continue,step等命令
gdb
(GNU 调试器)是一个强大的调试工具,用于调试程序中的错误。以下是一些基本的 gdb
命令及其用法:
启动 gdb
要启动 gdb
,在终端中输入以下命令:
gdb ./your_program
这将启动 gdb
并加载名为 your_program
的可执行文件。
基本命令
1. break
设置断点,程序执行到断点时会暂停。使用 break
可以在指定的行、函数或地址处设置断点。
-
在特定行设置断点:
(gdb) break 42
在源文件的第 42 行设置断点。
-
在特定函数设置断点:
(gdb) break main
在
main
函数的开始处设置断点。
2. display
在每次程序暂停时自动显示一个表达式的值。设置后,display
会在每次暂停时显示指定的变量或表达式的值。
-
显示变量
x
的值:(gdb) display x
每次程序暂停时都会显示
x
的当前值。
3. continue
继续执行程序,直到遇到下一个断点或程序结束。
-
继续程序执行:
(gdb) continue
程序将从当前暂停的地方继续执行,直到遇到下一个断点或程序结束。
4. step
逐行执行程序,进入函数调用中。
-
单步执行:
(gdb) step
执行当前行,并进入该行调用的任何函数。
5. next
类似于 step
,但在执行函数调用时不会进入函数内部。
-
单步执行,但不进入函数:
(gdb) next
执行当前行,但不会进入函数内部。
太多东西了,如果对你有帮助,还请点个赞❤️~~
全部评论 2
可以的,可以的。
2024-08-28 来自 美国
1虽然一般这些东西只考一道选择题,但我还是写了这么多,如果对你有帮助的话,还请点个赞!
2024-08-27 来自 广东
12024-08-27 来自 广东
1
有帮助,赞一个