Linux大作业

写一个自己的shell,并且能运行自己定义的命令或者系统本身的命令,如:cd , ls ,pwd等。

                               

一、大作业题目

写一个自己的shell,并且能运行自己定义的命令或者系统本身的命令,如:cd , ls ,pwd等。

二、解题过程

(一)

拟编写一个shell脚本,该脚本可以实现的功能:用户从键盘中输入数字,屏幕会显现出用户输入数字行数的平行四边形

[root@server home]# vim  px.sh

脚本源代码如下:

#!/bin/bash

read -p "输入数" p

for ((i=1;i<=$p;i++))

do

  for ((o=$i;o>0;o--))

  do

  echo -n " "

  done

   for ((j=1;j<=$p;j++))

   do

   echo -n "*"

 done

echo ""

done

给予写好的shell脚本文件可执行的权力:

[root@server home]# chmod u+x px.sh

Linux大作业_第1张图片

要想将此shell脚本当作系统命令一样使用,需要将其放入环境变量下

先查看系统环境变量都有哪些路径:

[root@server home]# echo $PATH

可以将可执行文件  px.sh 放入以上任何一个路径下面,例如/usr/local/bin/

[root@server home]# mv  px.sh  /usr/local/bin/

此时在用户界面中输入  px.sh

Linux大作业_第2张图片

命令使用成功

(二)

利用C语言编写脚本编一个脚本,若参数y为闰年,则返回1;否则返回0

[root@server home]# vim run.c

源代码如下:

#include

int run(int x)

{

        if((x%4==0&&x%100!=0)||x%400==0)

        {

        printf("1");

        }

        else printf("0");



}

int main(void)

{

        int x;

        scanf("%d",&x);

        run(x);

        return 0;

}

[root@server home]# gcc -o run run.c

[root@server home]# ./run

Linux大作业_第3张图片

若在其他路径下执行此文件,需要加上绝对路径  ./home/run

同样系统环境变量都有哪些路径:

[root@server home]# echo $PATH

此时我们可以将run 可执行文件放入到 ./usr/local/bin  当中作为一条系统命令

[root@server home]# mv run /usr/local/bin/

查看是否移动成功

[root@server home]# ll /usr/local/bin/

Linux大作业_第4张图片

此时在用户界面中输入 run

Linux大作业_第5张图片

命令执行成功

三、shell脚本解题分析

首先shell 是一种脚本语言

脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)

shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)

shell命令解析器:

系统提供 shell命令解析器: sh ash bash

查看自己linux系统的默认解析:echo $SHELL

shell语法与我们所学的c语言有何不同

1、开头:#!/bin/bash

#!用来声明脚本由什么shell解释,否则使用默认shell

2、单个"#"号代表注释当前行

第一步:编写脚本文件

第二步:加上可执行权限

chmod +x xxxx.sh

(如果为C语言则需要利用gcc编译命令进行编译执行,编译后的文件具备可执行权限)

第三步:运行

运行shell脚本的方法有两种:

作为可执行程序运行

作为解释器参数运行

shell脚本编写如下,并将其保存为test.sh,进入存放此文件目录

#!/bin/bash

echo "Hello World"

当作为可执行程序运行时候

chmod +x test.sh # 赋予可执行权限

./test.sh     # 执行程序

当作为解释器参数运行时

/bin/sh test.sh # 执行命令

/bin/php test.php # 执行命令

、心得体会

(易错点,总结)

  1. 通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。  2、在实验过程中,使用vim编辑器虽然不能像window操作系统那样对文本进行熟练度编辑,但是,vim编辑器使用命令来操作,将可以锻炼我的记忆力、对键盘的熟练读,还能帮助我们尽快适应linux操作系统的操作。  
  2. 原本对liunx下的编译和调试环境不是很熟悉,但通过这次的实验,让我熟悉了linux下的编译器和调试器的使用。
  3. shell编程相较于其他编程语言而言较为简单,只要多敲多练,很快就能入手,但是不可忽视shell编程在嵌入式开发和网络开发中的强大作用

Shell脚本总结

第一行的 #!叫做 Shebang, 然后后面的 /bin/bash 则是指定解释器,既然shell是门解释性语言,自然需要解释器,类似的,如果是 python脚本,则是 #! /bin/python 可能还需要一些编码格式的规定(utf - 8),如果没有指定解释器,默认选择 sh ; 同时还需要给文件可执行权限,否则会报错,虽然我们一般把shell 脚本文件命名为 .sh 的文件(在Linux中文件后缀只能起到标识的作用,没有实际意义);

三种执行方式 (./xxx.sh bash xxx.sh . xxx.sh)

三种执行方式的不同点(./xxx.sh bash xxx.sh . xxx.sh)

./xxx.sh :先按照 文件中#!指定的解析器解析

如果#!指定指定的解析器不存在 才会使用系统默认的解析器

bash xxx.sh:指明先用bash解析器解析

如果bash不存在 才会使用默认解析器

. xxx.sh 直接使用默认解析器解析(不会执行第一行的#!指定的解析器)但是第一行还是要写的

三种执行情况:

打开终端就会有以后个解释器,我们称为当前解释器

我们指定解析器的时候(使用 ./xxx.sh 或 bash xxx.sh)时会创建一个子shell解析 脚本

你可能感兴趣的:(Linux,linux,运维)