NOI Linux 基础知识与编程环境
Linux 系统终端中常用的文件与目录操作命令
在计算机早期历史中,终端专指用户与计算机系统进行交互的物理设备,包括命令行终端和图形化终端等。在流行的 UNIX、Linux 发行版中,可以使用快捷键调出命令行终端模式,也可以在图形界面中使用终端仿真器(terminal emulator)来模拟命令行终端。在桌面版 Ubuntu 中常见的终端仿真器有“终端”程序(Terminal)、Xterm、UXterm、Byobu Terminal 等。
以“终端”程序(Terminal)为例,操作系统使用命令解释器 Shell 处理用户与内核的交互,将从终端中读取用户的输入命令,并将执行结果提供给终端进行显示。
NOI Linux 2.0 默认终端中显示的命令提示符形如 user@ hostname:~$。user 为当前用户的用户名;hostname 为主机名;~ 代表当前用户主目录路径,一般为 /home/user;$ 为提示符,表示命令提示符结束,用户可以在此处输入命令。
常用的文件操作命令:
| 功能 | 命令 |
|---|---|
| 新建文件夹 | mkdir <folder_name> |
| 新建一个空白文档 | touch <file_name> |
| 复制一个文件 | cp <file1_name> <file2_name> |
| 复制一个文件夹及其包含的文件 | cp -a <folder1_name> <folder2_name> |
| 删除文件夹 | rm -r <folder_name> |
| 删除一个文件 | rm <file_name> |
| 修改文件名 | mv <file1_name> <file2_name> |
| 修改文件夹名 | mv <folder1_name> <folder2_name> |
常用的目录操作命令:
| 功能 | 命令 |
|---|---|
| 改变当前工作路径到某个子目录 | cd <folder_name> |
| 改变当前工作路径到上一级目录 | cd .. |
| 显示当前工作文件路径 | pwd |
| 显示文件及文件夹命令 | ls |
| 终端中显示普通文本类型文件 | cat <file_name> |
| 终端中分页显示普通文本类型文件 | more <file_name> |
| 终端比较两个文件的差异 | diff <file1_name> <file2_name> |
echo 命令在 Linux 中用于在终端(或标准输出)上显示一行文本或字符串。
它的主要作用包括:
- 显示简单文本:例如
echo "Hello, World!"会在屏幕上打印出Hello, World!。 - 显示变量的值:
echo常用来查看环境变量或自定义变量的值,变量名前需要加$符号,例如echo $HOME用来显示当前用户的主目录路径,echo $PATH用来显示系统的 PATH 环境变量。 - 将内容写入文件:通过输出重定向,
echo可以方便地创建文件或向文件追加内容。>(覆盖):如果文件不存在,则创建文件并写入内容;如果文件存在,则覆盖原有内容。例如echo "some text" > my_file.txt。>>(追加):如果文件不存在,则创建文件并写入内容;如果文件存在,则在文件末尾追加内容。例如echo "more text" >> my_file.txt。
选择题:在 Linux 系统中,如果你想显示当前工作目录的路径,应该使用哪个命令?
- A.
pwd - B.
cd - C.
ls - D.
echo
答案
A
选择题:在 Linux 系统终端中,以下哪个命令用于创建一个新的目录?
- A.
newdir - B.
mkdir - C.
create - D.
mkfold
答案
答案是 B。mkdir 是 make directory(创建目录)的缩写,是 Linux 系统中用于创建新目录的标准命令。
选择题:在 Linux 系统终端中,用于切换工作目录的命令为?
- A.
ls - B.
cd - C.
cp - D.
all
答案
正确答案是 B。
cd 是 change directory 的缩写,用于在文件系统中切换到不同的目录。
选择题:在 Linux 系统终端中,用于列出当前目录下所含的文件和子目录的命令为?
- A.
ls - B.
cd - C.
cp - D.
all
答案
A,ls 是 list 的缩写,用于列出目录内容,包括文件和子目录。
Linux 系统下常见文本编辑工具的使用
NOI Linux 2.0 中可以使用文本编辑器(Gedit)、nano、Emacs(GUI 模式或终端模式)、Vim 等文本编辑工具编写代码。
文本编辑器(Gedit)可从“程序”菜单中点选“文本编辑器”或在终端中输入 gedit 命令打开,为图形化界面形式,选择菜单中的命令即可使用对应功能。
nano 可从终端中输入 nano 命令打开,为命令行界面形式,常用编辑命令处于窗口下方,使用组合键即可使用对应功能。
Emacs 可从“程序”菜单中点选“Emacs(GUI)”或“Emacs(Terminal)”,也可在终端中输入 emacs 命令打开。对于命令行形式运行的 Emacs,常用功能对应的组合键:
| 功能 | 命令 |
|---|---|
| 创建或打开文件 | Ctrl+x,Ctrl+f,按提示输入文件名;如果已有文件则打开文件,如果没有文件则新建文件 |
| 保存文件 | Ctrl+x,Ctrl+s |
| 退出程序 | Ctrl+x,Ctrl+c |
Vim 可从“程序”菜单中点选“Vim”或在终端中输入 vim 命令打开,为命令行界面形式。Vim 有三种模式:
- 命令模式:使用快捷键对文件进行操作。
- 插入模式:可在文件中输入字符,从命令模式中输入
a、i、o进入(对应不同的插入模式),Esc键可返回命令模式。 - 末行模式:对文件进行保存或退出等操作,从命令模式输入
:进入,Esc键可返回命令模式。
g++、gcc 等常见编译器的使用
Linux 系统下使用最广泛的 C/C++ 编译器是 g++,它是 gcc(GNU compiler collection)下基于命令行的 C++ 编译器,由 GNU 组织开发。大多数的 Linux 发行版本都默认安装,不管是开发人员还是初学者,一般都将 g++ 作为 Linux 下首选的编译工具。
通过 g++ 命令可以将源文件编译成可执行文件,例如 g++ hello.cpp -o hello 这个命令将文件 hello.cpp 中的代码编译为机器码并存储在可执行文件 hello 中。机器码的文件名是通过 -o 选项指定的,如果被省略,输出文件默认为 a.out。如果当前目录中与可执行文件重名的文件已经存在,重名文件将被覆盖。
选择题:以下哪个命令,能将一个名为 main.cpp 的 C++ 源文件,编译并生成一个名为 main 的可执行文件?
- A.
g++ -o main main.cpp - B.
g++ -o main.cpp main - C.
g++ main -o main.cpp - D.
g++ main.cpp -o main.cpp
答案
A
在 Linux 系统终端中运行程序,使用 time 命令查看程序用时
time 命令是 Linux 的内置命令,用于对 Linux 程序的运行进行计时,计时结果往往在真实结果上下浮动。命令格式为:time [PathToProgram],其中 [PathToProgram] 为拟计时程序的绝对路径或相对路径。
计时结果分为三个部分:
- real:真实时间(real time)又称墙钟时间(wall clock time),指的是在普通时钟上,从程序的开始执行时刻到执行结束时刻之间的时间间隔。
- user:用户时间(user time),指的是程序在用户态执行所耗费的 CPU 时间。该时间仅指程序执行时实际占用 CPU 的时间,不包括其对应进程的阻塞时间和调度时间,也不包括在此期间其他程序耗费的 CPU 时间。
- sys:系统时间(sys time),指的是程序在内核态执行所耗费的 CPU 时间,即调用内核执行某项操作时实际占用 CPU 的时间(sys time)。
程序执行所耗费的 CPU 总时间为用户时间和系统时间之和。
选择题:你同时用 time 命令和秒表为某个程序在单核 CPU 的运行计时。假如 time 命令的输出如下:
real 0m30.721s
user 0m24.579s
sys 0m6.123s
以下最接近秒表计时的时长为?
- A. 30s
- B. 24s
- C. 18s
- D. 6s
答案
A

浙公网安备 33010602011771号