zoukankan      html  css  js  c++  java
  • 系统编程第一次实验

    如有错误,欢迎批评指正,站内联系或邮箱zhuo2333@qq.com

    一、 实验目的

    1、 创建CentOS虚拟机,也可安装CentOS双系统。

    2、 熟悉Linux常见命令。

    3、 了解超强的vi编辑器。

    4、 熟悉gcc编译器。

    5、 本实验设计意在提供解决问题的基本工具以及方式,因此详细以及进阶内容请自行查询书、网络或者询问助教。

    6、 通过本实验学会如何在linux上进行开发。

    二、 实验环境

    CentOS

    三、 实验指导

    1、 创建CentOS

    ① 使用虚拟机创建CentOS在实验指导书(《Linux编程基础》黑马程序员)中有详细步骤。

    我用的是CentOS6.8 安装包百度云链接:

    链接: https://pan.baidu.com/s/1cF1llXJU1pYGqQy_PrFIzw  
    提取码:pnix

    下载第一个压缩包即可

    ② 双系统安装方式,建议熟练或者有兴趣的同学尝试,提供几条博客链接:

    https://blog.csdn.net/mengxiangjia_linxi/article/details/78965103

    https://blog.csdn.net/flyer1011/article/details/78185509

    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使用方式见百度或者:

    https://www.cnblogs.com/Jason-Ch/articles/2772973.html

    (6) yum命令

    centos安装包管理通常是使用yum完成,yum list可显示当前安装的程序包。

    1、使用时首先配置源,即程序包来源。http://mirrors.163.com/.help/centos.html

    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.cb.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.coutput.c,要求使用vi完成对2个文件的编辑。output.c中存在一个方法,原型是 void MyPrint(char* str),用于打印字符串,hello.c中使用代码调用MyPrint输出”helloXXX”。(XXX代表你本人名字的拼音全称)。然后使用gcc2个文件编译成为一个可执行文件,然后在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

    本来运行命令行该有截图的,但是我做完作业关了虚拟机,才想起来没有截图。。。下次注意

  • 相关阅读:
    Erlang 杂记 IV
    ASP.NET MVC的View是如何被呈现出来的?[设计篇]
    面向对象—在线文件管理模块
    软件开发中个人在团队里的效绩评定
    用go语言遍历文件夹
    磁盘缓存的算法:写算法
    一种Lua到C的封装
    从信息系统界面设计引发的思考
    基于Backbone.js的JavaScript MVC示例程序
    C和C++
  • 原文地址:https://www.cnblogs.com/PineZhuo/p/10460339.html
Copyright © 2011-2022 走看看