如有错误,欢迎批评指正,站内联系或邮箱zhuo2333@qq.com
一、 实验目的
1、 创建CentOS虚拟机,也可安装CentOS双系统。
2、 熟悉Linux常见命令。
3、 了解超强的vi编辑器。
4、 熟悉gcc编译器。
5、 本实验设计意在提供解决问题的基本工具以及方式,因此详细以及进阶内容请自行查询书、网络或者询问助教。
6、 通过本实验学会如何在linux上进行开发。
二、 实验环境
CentOS
三、 实验指导
1、 创建CentOS
① 使用虚拟机创建CentOS在实验指导书(《Linux编程基础》黑马程序员)中有详细步骤。
我用的是CentOS6.8 安装包百度云链接:
链接:
提取码:pnix下载第一个压缩包即可
② 双系统安装方式,建议熟练或者有兴趣的同学尝试,提供几条博客链接:
2、 Linux常见命令(请学会使用终端Terminal)
(1) 绝对路径和相对路径:
Linux操作系统中存在着两种路径:绝对路径和相对路径。我们在访问文件或文件夹的时候,其实都是通过路径来操作的。两种路径在实际操作中能起到同等的作用。
绝对路径永远都是相对于根文件夹的。它们的标志就是第一个字符永远都是“/”。
相对路径永远都是相对于我们所处的文件夹位置。它们的第一个字符没有“/”。
比如/home/usr/test/h.c,这就是绝对路径。如果当前处于usr文件夹下,那么相对路径就是test/h.c。
‘.’表示当前路径,./test/h.c和以上相对路径等价,’..’表示上一级目录,故也可写作 ../usr/test/h.c
(2) 文件操作命令
ls 查看目录和文件 如 “ls /home/usr/test”,就会列出该目录下文件。
pwd 查看当前路径。
mkdir 创建目录, mkdir /home/usr 在/home下创建usr目录
cd 切换目录,cd /home/usr/test 。cd 可以使用 .和.. ,即cd . 和 cd ..
cp 复制文件,命令格式 cp [源路径] [目的路径]
mv 移动文件,命令格式 mv[源路径] [目的路径]
rm 删除文件或目录,命令格式 rm [目标路径],参数-r递归删除,即删除子文件夹,-f强制删除。“rm –rf /*“ 毁灭世界。
rmdir 删除目录 rmdir [路径]
cat 查看文件内容, cat /home/usr/test/h.c , 输出文件中内容
more 分页查看。比如当cat输出大量文本内容时,很难看清,则可以通过cat [文件] | more来分页查看。f/空格显示下一页,回车显示下一行,Q/q退出。此处涉及到管道,有兴趣的可自行搜索。
(3) 权限操作命令
su 切换到root,root账户具有最高权限。返回当前用户则使用exit。
sudo 在指令前加上sudo,使得本条指令以最高权限运行。
chmod使用chmod命令更改文件权限。
chow 使用chown命令更改文件所有者。
chgrp 使用chgrp命令更改文件的所属组。
(4) 网络管理命令
Ifconfig 查看当前网络配置,如ip等。
Netstat 查看当前网络状态。
Ping 检查网络是否连通。Ping www.baidu.com
(5) 查询命令帮助手册 man命令
比如man ls, 就会打印ls的使用方法。更详细的man使用方式见百度或者:
(6) yum命令
centos安装包管理通常是使用yum完成,yum list可显示当前安装的程序包。
1、使用时首先配置源,即程序包来源。
2、配置好源后,则可以通过 sudo yum install xxxx命令来安装包。卸载包则是通过sudo yum remove xxx。
3、更详细内容请参考man yum或者百度搜索。
3、 vi编辑器
在命令行中编辑文件可以通过执行 vi xxx进行,下面简要介绍常用(不全)命令。
进入vi后是命令模式,通过按键控制光标移动以及文本内容的复制粘贴删除。
1、光标上下左右移动对应kjhl,部分vi支持上下左右键。
2、Home移动到行首,End移动到行尾。
3、x删除光标所在字符, dd删除光标所在行。
4、yy复制当前行,nyy复制自当前行起,包含当前行在内的n行,如3yy。
5、p将内容粘贴到光标处。
6、u 撤掉上一次操作。
只有在插入模式下才能修改文本, i或者Insert从命令模式进入插入模式。
底行模式则是在输入模式下按Esc进入,常用输入 :q 退出vi,:w 保存修改内容, :wq退出并保存。:q! 强制退出等。
Vi更多使用参见书或者man或者网络。
4、 GCC编译器
(1) 检查gcc版本
使用gcc –v输出信息,如果不存在gcc,请使用yum安装gcc。
(2) gcc编译单文件
编译方式是 gcc [文件路径],默认文件名是a.out,执行方式是 ./a.out 。
通过-o指定文件名, gcc hello.c –o hello,编译生成hello执行文件。
(3) gcc编译多文件
当程序源码分散在多个文件中时,举例为 gcc a.c b.c –o test,将a.c和b.c联合编译生成test可执行文件。
(4) 其他
如使用-o1 –o2 –o3来进行程序优化,更多请百度或者参考书。
四、 实验题目
1、 写出满足下列题目要求的命令,并解释每条命令中你使用的选项、参数的含义。
注意:每个小题只能使用一条命令完成,命令的格式参考:command [options] [arguments]。
(1) 假设在当前路径下不存在任何目录,现在当前路径下创建名为“a1”的目录,并在“a1”目录中创建名为“b1”的目录。
mkdir /a1 在当前路径下创建a1目录
mkdir /a1/b1 在a1目录中创建b1目录
(2) 在当前路径下删除一个非空子目录/tmp。
rm -rf /tmp
删除目录下所有文件包括子目录方法:rm -rf 目录名
由于/tmp是系统文件,尽量不要删除,这里可以选择删除第一小题创建的a1目录(由于内含b1目录,因此a1也是非空子目录)
本题不能使用rmdir命令,rmdir只能用于删除空目录
现已在用户coding个人目录下创建了目录software,完成以下(3)、(4)两个小题。
(3) 搜索etc目录下所有以“pa”开头的文件,并拷贝到software中。
cp /etc/pa* /home/coding/software
cp 复制文件,命令格式 cp [源路径] [目的路径]
其中,源路径/etc/pa*表示etc中所有以pa开头的文件,/home/coding/software是目的路径
(4) 将目录software下所有内容建立成一个tar包,并命名为software.tar.gz。
tar -cvf software.tar.gz /home/coding/software
tar是打包器 -cvf是打包,software.tar.gz是压缩文件名,/home/coding/software是要被打包的目录路径
2、 对一个文件file.txt执行命令:#chmod 746 file.txt。请解释该命令的含义并写出执行该命令后该文件的权限信息。(用r、w、x和-表示)
chmod使用chmod命令更改文件权限
r(4)表示可写
w(2)表示可读 x(1)表示可执行 7=4+2+1 4=4+0+0 6=4+2+0所以746就是rwx r-- rw-
3、 在根目录下创建一个Lab1文件夹,并创建hello.c和output.c,要求使用vi完成对2个文件的编辑。output.c中存在一个方法,原型是 void MyPrint(char* str),用于打印字符串,hello.c中使用代码调用MyPrint输出”helloXXX”。(XXX代表你本人名字的拼音全称)。然后使用gcc将2个文件编译成为一个可执行文件,然后在shell中执行该文件,最后输出。请提交在终端输入命令和输出结果的完整截图,可添加一些必要的文字说明。
使用 / 命令进入根目录
当程序源码分散在多个文件中时,举例为 gcc a.c b.c –o test,将a.c和b.c联合编译生成test可执行文件
截图中的警告是个人问题(在output.c中忘记写头文件)
使用chomd命令,使得test文件拥有x权限,也即可执行
./xxx表示运行可执行文件xxx
4、用vi编辑器,执行下述操作,并详细说明操作过程及方法。
删除第5,15和25行指令:——
命令:nd表示删除第n行
在删除一行过后,下面的行数会发生变化,所以应该从下面开始删除
esc进入命令模式
:25d
:15d
:5d
将文本中所有的”etc”替换为”config”:——
:%s/etc/config/g
使用%才能在全文搜索,使用s命令进行替换,最后加/g以替换每一行中的每一个etc
复制第11~20行的内容,并且贴到文件最后一行之后:——
11,20y p
a,by是复制命令,表示从第a行到第b行的复制,然后将光标移至最后一行,使用p命令进行粘贴
然后将光标移动至文件最后:——
一直按↓
将每行开头第一个字符”#”删除:——
:%s/^#/
%表示全文,s是替换命令,把每一行的第一个#替换成空白,完成删除操作
删除包含有字符串”conf”的那几行: ——
:g/conf/d
使用g/表示全局查询,查询到conf之后,使用/d命令完成删除整行
在第一行新增一行,输入你的姓名,学号:——
光标移动至第一行,点击i进入插入模式,回车然后输入姓名学号 xxx 17373xxx
文件另存为new-inittab.conf: ——
:w new-inittab.conf
使用w命令完成另存为操作
思考题(建议思考,不要求必须完成)
系统中引入了文件和目录的概念方便了用户的使用。设想如果有一个不使用文件或目录的系统,我们可以用什么其他方式来代替它们的功能?在生活中有没有这样的例子?请简要回答并说明原因。(思考方向:建议了解文件的组织结构,文件的作用)
胡思乱想了一通,就不贴上来了23333
本来运行命令行该有截图的,但是我做完作业关了虚拟机,才想起来没有截图。。。下次注意