操作系统原理实验 实验1 linux基础操作

操作系统原理实验

实验1 linux基础操作

!本文为个人的实验总结,仅包含在校时上机实验所涉及的操作,并不包含所有的linux命令!

一、Linux基本命令

    任务1:使用pwd命令查看当前目录。

    任务2:使用ls命令以详细列表的形式查看有关当前目录的信息。

    执行命令:

        $ pwd

        $ ls -l -h 

(-l 中 l 代表long 意为详细展示,-h 中 h 意味以人类易理解的方式展示 比如内存显示以k为单位)。

    命令执行结果截图:

任务1、2 命令执行结果截图


    任务3:使用man命令获取less命令的帮助信息,并将其保存到文件less.txt。

    执行命令:

        $ man less

        $ man less > less.txt

" > (文件名)" 意为将前者的运行重定向到指定文件中,在这里指的是创建less.txt并将前者的运行结果保存在less.txt中

    命令执行结果截图:

执行man less后终端显示的内容
输出的less.txt文件


    任务4:在当前目录中创建D1子目录。

    执行命令:

        $ mkdir D1

默认是在当前终端所在目录下创建文件夹。

    命令执行结果截图:

右侧主文件夹中第一个即为创建的D1文件夹


    任务5:使用cp命令将/etc/profile文件复制到D1目录,文件名为profile.bak。

    执行命令:

        $ cp ../../etc/profile profile.bak

" ../../etc/profile" 指的是所在文件的地址。

" profile.bak" 为粘贴后的文件名,此文件默认是在终端所在文件夹中创建。

    命令执行结果截图:

第六行的ls结果即为文件粘贴成功


    任务6:使用less命令查看profile.bak文件的内容

    执行命令:

        $ less profile.bak

    命令执行结果截图:

less profile.bak 执行后在终端显示的文件内容


    任务7:在现有系统上查找后缀为.cfg的所有文件,并将结果保存在/root/cfginfo.txt中。

    执行命令:

        $ find ../ -name ‘*.cfg’ > cfginfo.txt

" find "为寻找指定类型的文件

" ../ " 表示定义到根目录(当前为/root,上一层为根目录)

" -name ‘*.cfg’ "意思为以指定后缀为.cfg的文件

" > cfginfo.txt " 意思为将前面代码的运行结果输出到当前终端所在目录下的cfginfo.txt中

    命令执行结果截图:

存储在cfginfo.txt中的所有后缀为.cfg的文件的地址


    任务8:编辑上述cfginfo.txt,在vim编辑器的txt文件中,在文件的第一行插入“This is CFG file information”(这是CFG文件信息)并保存。

    执行命令:

        $ vi cfginfo.txt

" vi cfginfo.txt " 意思是用vim编辑器打开cfginfo.txt这个文件 , 利用vim编辑器对该文件进行编辑 。

在vim编辑器中,按i、o、a均可进入编辑模式;Esc键为退出编辑模式;" :wq " 实现文件的保存+退出功能。

    命令执行结果截图:

第一行为通过vim添加的文字


    任务9:使用cat命令查看编辑后的cfginfo.txt文件。

    执行命令:

        $ cat cfginfo.txt

    命令执行结果截图:

cat cfginfo.txt执行结果


二、基础的Shell脚本与编程


注:1. Shell脚本的创建可以通过vi来创建和编写的,要创建脚本文件需要将文件的后缀名改为.sh

2. 运行脚本文件需要先赋予可执行权限,在运行前需要运行 "chmod +x ./(文件名).sh "  chmod为赋予权限 +x为赋予执行权限。

3. 运行脚本:$ ./(文件名).sh

4. 每个脚本文件都需要在第一行表明运行的Shell 一般都选用/bin/bash 代码为:#!/bin/bash



    任务1:

        编写一个脚本,用于打印当前工作目录中所有与文件相关的信息

    要求:

        运行脚本时,显示当前工作目录中的所有文件信息

展现当前正在工作目录中的文件,运用ls./ -l -h即可。

    脚本代码:

任务1 脚本文件

    运行结果:

ls 运行结果


    任务2:

        编写两个数字相加的脚本

    要求:

        请用户输入两个数字

        用户还可以输入实数

        使用bc命令和管道来完成

    两数相加 我们首先要读入用户输入的两个变量并存储起来,再通过piping和bc实现数字相加,此处利用${num}来读取用户输入变量的具体的数值

    脚本代码:

两数相加(包括小数点)

    运行结果:

任务2 两数相加脚本运行结果


    任务3:

        编写脚本以逆序打印给定的数字

    要求:

        从用户处读取一个多位数的数字,并将其反转。

        不仅仅是按相反的顺序打印

        您必须提取每个数字并转换为反向。

        当“0”作为最后一位时,请在倒车时丢弃。

通过if来判断最后一位是否为0,并根据判断结果调整读取的首个数的位置(最后一项为0直接不读), 之后利用for循环逆序打印即可.

    脚本代码:

逆序打印数字脚本代码

    脚本运行结果:

成功实现逆序打印要求

   

    任务4:

        对于$PATH中的每个目录,显示该目录中的可执行文件数

    要求:

        从PATH变量获取每个目录。

        使用-x选项if-if条件检查可执行权限。

        逐个打印目录和可执行文件的数量。

        最后打印可执行文件总数。

        仅计数具有可执行权限的文件。

通过IFS改变系统的分词符,使其能够分割path中路径与路径之间的冒号

通过for循环将每个path打印出来,同时对每一个path下的所有文件进行是否可执行的筛选计数,关键代码为:ls $path -F | grep “*” | wc -l ,并将每个path中的可执行文件数打印出来。

通过设置全局变量对总可执行文件数进行计数,最后将总的可执行文件数打印出来

最后别忘了重置IFS

    脚本代码:

打印每个path 统计可执行文件

    脚本运行结果:

脚本运行结果


三、个人总结与心得

    实验过程中,我个人认为对于初学者来说最难的还是四个shell脚本编程中的后三个。


    先说说第二个shell脚本,有三个注意点:

        1、read 可以读入用户输入

        2、echo 想要识别转义字符"\c"(不换行),需要先写上"-e"来表示开启转义字符的识别

        3、想要调用参数(注意,是参数的值,比如系统输入的num1为10,需要用到10),在shell编程中是用美元符$加参数名来实现的。花括号可加可不加,不过为了方便看代码还是加上为好。


    第三个shell脚本有两个注意点:

        1、本题对shell编程语法熟练度要求高于前两题的之前所有的linux操作,需要熟悉对参数的调用结构体的书写,以及对字符串、数组的操作熟练度。

        2、在我自己写的过程中经常忘了给计算操作加上美元符$和双引号,同时我自己对shell中字符串的操作也很不熟悉,光是提取字符串的每一位这个操作我都想了很久,最后还是想到了用字符串的提取来进行操作.  

eg. ${str:${pos}:1}

意为str字符串中第${pos}位(第一位为0)开始的第一个数(包括这一位)

    

    第四个脚本困扰我的问题有两个。

        一个是如何对 $PATH 那一大串连起来的进行划分。通过echo可以发现这些地址都通过 " :" 冒号连接,通过上网查找资料才知道shell自带分隔符IFS (默认为空格等),但这是可以进行修改的,所以经过对IFS再赋值,我还是成功的把每个地址都分别打印了出来。

        第二是如何统计可执行文件的数量,通过上网我还是找到了答案,利用管道将ls grep wc这三个操作连在一起,也就是先将每一个path中的文件通过 " ls -l " 让文件一行一行列出来,再通过grep筛选并显示可执行文件的每一行( "*" 为可执行文件)" wc -l " 用于统计上个操作的行数,最后通过$()读取行数,并赋给参数输出即可

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容