linux命令

目录

第1关:Linux 文件目录

任务描述

相关知识

查看目录

文件操作

创建文件

删除文件

文件夹操作

创建文件夹

删除文件夹

文件和文件夹拷贝

文件和文件夹移动/重命名

作答要求

答案及具体操作: 

 第2关:Linux 文件操作命令

任务描述

相关知识

文件查看命令

cat 命令

head 命令

tail 命令

nl 命令

文件编辑基本命令

编程要求

测试说明

答案及具体操作: 

 第3关:Linux 权限管理

任务描述

相关知识

用户管理

创建用户

用户密码管理

用户登录

删除用户

文件管理

修改文件权限

编程要求

答案及具体操作: 

第4关:实验环境练习

任务描述

相关知识

1.了解实验环境

2.测试内核是否正常

3.查看内核源程序

4.修改内核源码

5.重新编译内核

6.测试新内核是否正常

编程要求

答案及具体操作:


第1关:Linux 文件目录

任务描述

欢迎进行Linux世界,当你下载、安装了某个Linux发行版,体验了Linux桌面并安装了一些你喜爱和需要的软件之后,应该去了解下Linux真正的魅力所在:命令行。 每一个Linux命令其实就是一个程序,借助这些命令,我们可以办到非常多的事情。 第一个任务就是了解Linux的目录结构,与基本使用命令

相关知识

为了完成本关任务,你需要掌握:

1.切换目录;

2.查看文件;

3.创建文件。

查看目录

进入目录之后使用ls命令查看当前目录下的内容。 ls命令的可用参数:

-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-a:显示所有文件和文件夹(包括隐藏文件/文件夹)。
文件操作

Linux系统中最常用的文件操作有创建、删除文件等。

创建文件

Linux 中创建文件的常用命令是touch,命令格式如下:

touch filename

有时可能需要创建一个空的文件的情况。在这种情况下,可以使用touch命令来轻松创建一个空文件。

例如:创建一个新的文件testfile可以使用如下命令。

touch testfile

如果想同时创建多个文件也可以使用touch命令完成,具体格式如下:

touch file1 file2 ...

只需将不同的文件名用空格分隔即可完成创建多个文件。

删除文件

Linux中常用的删除文件的命令是rm,使用格式如下:

rm [命令选项] filename

常用命令选项:

 -f:强制删除文件或目录;
 -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
 -i:删除已有文件或目录之前先询问用户。

例如,删除我们刚刚创建的文件testfile可以使用如下命令。

rm -f testfile

文件夹操作

Linux中关于文件夹的操作主要包括创建和删除等。

创建文件夹

Linux中创建文件夹命令是mkdir,命令格式如下:

mkdir [命令选项] dirname

常用命令选项: -p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;

例如:我们新创建一个文件夹testdir可以使用如下命令。

mkdir testdir

因为新创建的文件夹是一个空的文件夹,所以使用ls -l显示的结果是空。
 

删除文件夹

Linux中删除文件夹的命令是rmdir或者rm -r,命令格式如下:

rmdir [命令选项] dirname

常用命令选项:-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;

例如:将刚刚新创建的文件夹testdir删除可以使用如下命令。

rmdir testdir


 

文件和文件夹拷贝

Linux使用cp命令用来将一个或多个源文件或者目录复制到指定的目录中,命令格式如下:

cp [命令选项] 源文件 目的文件

常用命令选项:

-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理。
例如:新建一个文件 newfile和一个文件夹 newdir,将 newfile复制到 newdir目录下。具体命令如下。
touch newfile
mkdir newdir
cp newfile newdir
 

 
文件和文件夹移动/重命名

Linux 使用mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中,命令格式如下:

mv [命令选项] 源文件 目标文件

常用命令选项:

-f:强行复制文件或目录,不论目标文件或目录是否已存在; 
-i:覆盖既有文件之前先询问用户;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理'。
例如:新建一个文件 newfile和一个文件夹 newdir,将 newfile剪切到 newdir目录下,并重新命名为 newfileCpy。具体命令如下。
 
touch newfile
mkdir newdir
mv newfile newdir/newfileCpy
 

 

作答要求

根据相关知识,完成下列任务:

1.在根目录下创建一个文件夹命名为linux

2.在根目录下创建一个文件命名为hello.txt

3.将文件复制到linux文件夹下,并且改名为1.txt

4.删除根目录下的hello.txt

答案及具体操作: 

打开终端

按顺序如下输入

cd..    //返回上一级
cd..    //返回上一级
mkdir linux    //创建linux文件夹
touch hello.txt    //创建hello.txt文件
cp hello.txt linux/1.txt    //赋值hello.txt文件到linux文件夹内,并改名为1.txt
rm hello.txt    //删除hello.txt文件

 第2关:Linux 文件操作命令

任务描述

第二个任务就是了解Linxu的文件查看命令,文件编辑基本命令。

相关知识

为了完成本关任务,你需要掌握: 1.文件查看命令。 2.文件编辑基本命令。

文件查看命令

我们要查看一些文本文件的内容时,要使用文本编辑器来查看。在Linxu下,可以使用一些命令预览文本文件中的内容,而不必使用文本编辑器打开查看。就好比查看图片一般点击图片就可以查看,不需要下载专门的图片软件。本关卡主要介绍的是常用查看命令,例如:cat、head、tail 与 nl 。
 

cat 命令

cat命令用于连接文件并打印到标准输出设备上,有很多叫它“猫咪”命令,但cat命令其实是 concatenate(连续)的缩写,即连续显示文本内容。cat命令常常用于查看内容较少的文件,因为文件太大时,前面的内容就滚出屏幕,看不到了。

head 命令

head命令可用于查看文件的开头部分的内容,有一个常用的参数-n用于显示行数,默认为 10,即显示 10 行的内容。

如果查看文件前 5 行,可以使用命令head -5 山谷的起点.txt

tail 命令

tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。 查看最后文件 5 行命令tail -5 山谷的起点.txt

nl 命令

nl命令将指定的文件添加行号标注后写到标准输出。空行不显示行号。

文件编辑基本命令

对于文件的编辑操作可以使用vi/vim编辑器,vimvi的升级版,二者操作基本上相同。 对于编辑器的基本命令如下: vi filename:打开文件。 键盘输入i或者a进行编辑:最底下出现insert就进入编辑模式可以进行编辑了。 键盘按Esc键:退出编辑模式。 键盘输入:q!:强制退出编辑并不保存。 键盘输入:wq或者:x:保存文件并退出。

编程要求

根据提示,在右侧图形化页面打开终端在/home/headless文件夹中创建文件test.txt,在文件中输入Hello,Linux!

测试说明

平台会对你创建的 test.txt 进行测试: 是否成功创建文件test.txt,文件内容是否为Hello,Linux!。 预期输出: test.txt创建成功! 文件内容正确!

答案及具体操作: 

打开终端

按顺序如下输入

pwd    //用来查看是否位要求目录
/home/headless    //如果显示这一串则代表是所要求目录
touch test.txt    //创建一个test.txt文件
ls    //查看是否创建成功
vi test.txt    进入test.txt文件中编辑

在出现的页面中按i键进入编辑模式

输入Hello,Linux!

如下:

完成后按Esc键退出编辑模式

按Shift+:键

之后输入wq,按下回车键Enter,保存当前文件并退出

q!不保存当前文件并退出

 第3关:Linux 权限管理

任务描述

本关任务:根据所学知识,完成文件权限的修改。

相关知识

为了完成本关任务,你需要掌握:

  1. 如何创建和删除用户以及用户的权限管理;
  2. 如何设置文件的访问权限。

Linux的权限管理主要分为两类:用户和文件。接下来我们会对这两类进行详细介绍。

用户管理

从广义上讲,Linux系统账户包括用户账号和组账号两类。

用户账号又分为普通用户账号和超级用户账号(root)。root 用户在系统内是属于独一无二的超级管理员,(相当于 Windows 中的 System 最高权限)。

而普通用户在相关的操作中需要 ROOT 的许可。而 root 用户可以拥有所有系统权限。用户可以被允许使用 sudo 命令,临时赋予 root 权限。

创建用户

Linux中使用 useradd 命令来创建一个新用户。

命令格式格式:useradd [命令参数] 参数

常见命令参数:

-d<登入目录>:指定用户登入时的启始目录;
-D:查看或变更预设值;
-g<群组>:指定用户所属的群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-s:指定用户登入后所使用的shell。

useradd必须以 root 权限才能执行,如果是普通用户想创建一个新用户时,需要在命令前加sudo命令来提升权限为 root 权限。

我们通过下面的几个案例来掌握如何创建用户。

创建一个名为 edu 的用户:

Linux用户信息是保存在/etc/passwd文件中,我们可以使用命令tail /etc/passwd查看/etc/passwd文件最后几行中是否存在刚刚新创建的edu用户信息。

用户密码管理

我们创建完一个新用户后,往往还需要为该用户设置一个登录密码,我们使用 passwd 命令修改用户密码

命令格式:passwd 参数 用户名

常见命令参数:

-d 删除密码;
-l 停止账号使用;
-S 显示密码信息。

passwd必须以 root 权限才能执行,如果是普通用户想执行passwd时,需要在命令前加sudo命令来提升权限为 root 权限。

为 edu 用户设置密码:123123

使用passwd命令为 edu 用户设置密码时,可以看到需要输入两次密码,目的是为了确保两次输入的密码一致。

Linux中用户的登录密码是存放在/etc/shadow文件中,/etc/shadow文件中存放的是加密过后的密码,所以在/etc/shadow文件中看到的密码是加密过后的密文。

我们同样可以使用passwd命令来清除用户的密码。

使用passwd命令清除用户 test 的登录密码,使用tail -n 1 /etc/shadow命令查看/etc/shadow文件的最后一行可以看出 test 用户密码部分为空,此时 test 用户是没有密码的。

用户登录

当我们在Linux中添加用户后,我们可以使用该用户登录系统。

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号的密码。 当使用su命令切换用户后,使用exit命令退出当前身份,返回原有登录用户身份。 注:如果当前用户身份是 root,则使用 su 命令切换到其他用户的时候不需要相应用户的密码。 命令格式:su 参数 用户名

参数为登录的用户名,如果没有参数,则默认切换为 root 用户。 常见命令参数

-c\<指令\> 或 --command=\<指令\>:执行完指定的指令后,即恢复原来的身份;
-l 或 --login:改变身份时,也同时变更工作目录,以及 HOME,SHELL,USER,logname。此外,也会变更 PATH 变量;
 -m,-p 或 --preserve-environment:变更身份时,不要变更环境变量;
-s\<shell\> 或 --shell=\<shell\>:指定要执行的 shell。

su命令所有使用者都可以执行。

使用exit命令退出当前用户:

删除用户

Linux中使用userdel命令来删除一个已经存在的用户。

命令格式:userdel 参数 用户名

常见命令参数:

-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。

userdel必须以 root 权限才能执行,如果是普通用户想使用该命令时,需要在命令前加sudo命令来提升权限为 root 权限。

使用userdel命令删除一个已经存在的用户 edu,并且自动删除其家目录文件。

文件管理

Linux系统中的每个文件都有访问许可权限,文件的访问权限分为只读,只写和可执行三种。

只读权限表示只允许读其内容,而禁止对其做任何的更改操作。

只写权限表示允许修改文件的内容。

可执行权限表示允许将该文件作为一个程序执行。

每一文件的访问权限都有三组,每组用三位表示,分别为文件所属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。 linux文件有不同的颜色,不同的颜色可以用于区分文件的类型,但是需要为文件配置相应的权限,否则可执行文件会出现无法执行的情况。 蓝色代表目录,绿色代表可执行文件,红色表示压缩文件,浅蓝色表示链接文件,灰色表示其他文件,红色闪烁表示链接的文件有问题了,黄色表示设备文件。

当用ls -lll命令显示文件的详细信息时,最左边的一列为文件的访问权限。例如显示 test 文件详细信息:

修改文件权限

Linux中使用chmod命令来修改文件权限。

文字设定法具体命令如下:

chmod [who] [ + 或 - 或 = ] [mode] 文件名

who 参数如下:

u 表示“用户(user)”,即文件或目录的所有者;
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户;
o 表示“其他(others)用户”;
a 表示“所有(all)用户”,它是系统默认值。

操作符如下:

+:添加某个权限;
-:取消某个权限;
=:赋予给定权限并取消其他所有权限。


mode 参数如下:
 

r 可读;
w 可写;
x 可执行。

数字设定法具体命令如下:

chmod [mode] 文件名

mode 为具体的数字。

首先了解用数字表示的属性的含义:0 表示没有权限,1 表示可执行权限,2 表示可写权限,4 表示可读权限,然后将其相加。所以数字属性的格式应为 3 个从 0 到 7 的八进制数,其顺序是 u、g 和 o。

我们通过几个案例来为大家详细展示该命令的使用:

  1. 创建一个名为 testFile 的文件,将该文件的所有用户权限设置为仅读权限,可以使用如下命令:

  1. 将文件 testFile 的所有用户权限设置为可读可写,同组用户权限设置为只读,可以使用如下命令:

  1. 将文件 testFile 的权限设置为所有用户可读可写可执行,同组用户设置为可读可执行,其他用户设置为可读,可以使用如下命令:

以上的权限我们是针对所有用户的,我们也可以针对用户、同组用户、其他用户,只用将上面命令的 a 替换成相应的参数即可。

到了这里,针对文件的权限就讲解完成了,Linux奉行一切皆文件,所以目录的权限修改也是如此。

编程要求

打开右侧图形化界面的命令行,在命令行中完成如下功能:

在 /root 目录下创建 oldFile1、oldFile2、oldFile3、oldFile4 四个文件;

给 oldFile1 增加所有者可执行权限;

将 oldFile2 的同组用户权限删除可读权限;

为系统已存在文件 oldFile3 的其他组用户权限添加可执行权限;

将系统已存在文件 oldFile4 的权限设置所有者权限为可读,同组用户权限为可写,其他用户权限为可执行。

答案及具体操作: 

按顺序如下输入

cd /root    //进入/root目录
//创建oldFile1、oldFile2、oldFile3、oldFile4 四个文件
touch oldFile1   
touch oldFile2
touch oldFile3
touch oldFile4
chmod u+x oldFile1    //给 oldFile1 增加所有者可执行权限
chmod g-r oldFile2    //将 oldFile2 的同组用户权限删除可读权限;
chmod o+x oldFile3    //为系统已存在文件 oldFile3 的其他组用户权限添加可执行权限
//将系统已存在文件 oldFile4 的权限设置所有者权限为可读,同组用户权限为可写,其他用户权限为可执行
chmod u=r oldFile4    
chmod g=w oldFile4
chmod o=x oldFile4

第4关:实验环境练习

任务描述

本关任务:修改 Linux 0.11 内核程序,将系统启动时显示的字符串由原来的Partition table ok.变为Hello, world!。 通过本关任务,可以熟悉 Linux 0.11 内核实验环境,掌握内核程序的编辑、编译和测试方法。

相关知识

为了完成本关任务,你需要: 1.了解实验环境; 2.测试内核是否正常; 3.查看内核源码; 4.修改内核源码; 5.重新编译内核; 6.测试新内核是否正常。

1.了解实验环境

本课程将会在 Ubuntu 16.04 下进行学习,Ubuntu 属于Linux衍生出来的以桌面应用为主的Linux操作系统,Linux操作系统的使用与Windows基本上不同,所以最初会觉得无法理解,但是本质上还是差不多的。

本实验将使用 Bochs 模拟硬件环境,在完成对代码的修改或编译之后将使用run去启动新的虚拟机,环境都是准备好,可以直接使用的,只需要使用脚本去启动就行了。 本实验中已经给出了完整的linux 0.11内核文件放在/root/os/linux-0.11-lab/0/linux中,可以直接使用。

本课程的实验在目录~/os/linux-0.11-lab下进行,此目录下的内容如下:

其中各目录和文件的含义是:

  • 脚本文件run*:以不同模式运行虚拟机,脚本 run 采用正常模式,脚本 rundbg 采用 bochs 调试模式(汇编级),脚本 rungdb 采用 gdb 调试模式( C 语句级),这三个模式都用于内核测试。 用于启动虚拟机的内核映像文件是cur/linux/目录下的Image; 虚拟机的根文件系统是images文件夹下的rootimage-0.11

  • 目录0:存放有 Linux 0.11 内核的源代码及其 Source-Insight 工程文件,本实训中使用 VSCode 代替 Source-Insight ,不需要使用到 Source-Insight ,只需要使用到linux文件夹中的源码;

  • 目录conf:存放有虚拟机的配置文件,这些配置文件描述了虚拟机的硬盘、软盘、内存大小等参数;

  • 目录images:包含虚拟机的硬盘(根文件系统)和软盘的映像文件;

其中映像文件hdimage-devel用作应用开发模式的硬盘,里面包含应用程序编译所需的 gcc 等软件。脚本runrundbgrungdb用软盘作为启动盘,对应的软盘映像文件是cur/linux/Image

  • cur是一个符号链接,指向当前分析的内核目录,现在指向目录0,可以当作是一个快捷方式。

2.测试内核是否正常

运行run脚本就会使用在~/os/linux-0.11-lab目录下的内核映像cur/linux/Image启动 Linux 0.11 。

虽然这个虚拟机的硬盘容量只有 1 MB ,但它目前可以满足内核分析的需要。

3.查看内核源程序

关闭虚拟机,然后使用 VSCode 打开源码所在文件夹,选择 File ,然后选择 Open Folder ;

找到linux文件夹,然后确认打开;

可以看到文件夹下所有的源码都已经被导入了,可以在这里开始对源码进行修改了。

4.修改内核源码

在源码中可以修改很多东西,例如修改开机画面中的字符串Loading system ...,将其修改为Loading linux 0.11,这里需要注意一点,不能太长而影响生成的目标文件的大小。

使用搜索功能,搜索关键词Loading,在结果中找到Loading system ...,将其修改为Loading linux 0.11。 如果知道文件的具体位置,也可以在命令行中使用vim对配置文件进行修改,只需要找到文件中对应的地方进行修改,和在 VSCod 里面修改结果都是一样的。

修改完毕之后点击 File 然后选择 Save All ,保存所有修改即可。

5.重新编译内核

在内核源码目录~/os/linux-0.11-lab/0/linux中使用make命令重新编译内核;

下图是编译输出的结果,可以看到被修改的文件bootsect.s已经重新编译成功,这是只编译修改过的文件,有时为了可靠也可以完全编译;

完全编译需要将旧的编译文件清除,使用make clean命令清除编译文件,然后重新使用make命令编译,只不过完全编译的时间相对较长;

上图是编译之后的结果,Image 即为生成的完整内核映像,包含引导代码;tools 目录下有内核的主体可执行文件 system ,其符号文件是 System.map ,包含变量和函数的地址,其链接时的详细布局信息在文件 System.map.2 中。

6.测试新内核是否正常

切换到linux-0.11-lab目录下使用./run启动脚本使用新的内核运行虚拟机;

可以看到虚拟机的加载的字符串已经从原来的Loading system ...,变为Loading linux 0.11了。

编程要求

根据相关知识,将系统启动时显示的字符串由原来的Partition table ok.变为Hello, world!

注:

1.字母区分大小写,符号使用英文输入法输入,请注意作答的时候注意不要写错了。

2.评测之前请关闭已经启动的虚拟机之后才可以点击评测!!!

答案及具体操作:

按如下操作顺序

cd ~/os/linux-0.11-lab    //进入此目录
./run    //运行虚拟机查看当前显示结果

显示结果如下


打开桌面VSCode

左上角File中选择Open Folder

如下进入文件夹

先进入os文件夹

再进入linux-0.11-lab文件夹

再进入0文件夹

最后单击linux文件夹后点击右下角ok


在搜索里输入ok.,按下回车进行搜索

并更改内容为Hello, world!

注意必须要一模一样




保存


终端中继续按顺序输入

cd 0    //进入0文件夹
cd linux    //进入linux文件夹
make    //重新编译
cd ..    //返回上一级
cd ..    //返回上一级
./run    //运行


结果如下显示

更改成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星与星熙.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值