文档视界 最新最全的文档下载
当前位置:文档视界 › linux实验五、Shell脚本程序编制实验

linux实验五、Shell脚本程序编制实验

linux实验五、Shell脚本程序编制实验
linux实验五、Shell脚本程序编制实验

实验五Shell脚本程序编制实验

●编写一个Shell命令脚本程序的基本步骤如下:

●(1)编辑包含用户命令脚本程序的文本文件

●(2)添加Shell定义语句,使Linux操作系统可以知道用户使用哪一种Shell

●(3)编写Shell命令脚本程序内容

●(4)保存脚本程序并退出。用“chmod +x ”命令改变该脚本程序的存取权限和执行

权限,使其可以被适当的用户使用。

●(5)运用该命令脚本程序以进行测试

●(6)如有必要,可进行程序纠错。

●(7)如有必要,可把完整的命令脚本程序移动到相应位置

●(8)如有必要,可在path语句中加上此脚本的路径

练习:编写书本P107welcome Shell脚本程序

运行脚本程序的三种方法:

a.bash 脚本文件名

b.bash < 脚本文件名

c.chmod u(或g,o,a)+x 脚本文件名#为脚本添加执行权限

Shell定义的环境变量shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义,常用的shell环境变量有:

●HOME:用于保存注册目录的完全路径名。

●PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜

索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。

●TERM:终端的类型。

●UID:当前用户的标识符,取值是由数字构成的字符串。

●PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。

●PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的

主提示符是“$”。

●PS2:在shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后

回车,或者当用户按回车键时shell判断出用户输入的命令没有结束时,显示这

个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“>”。练习:使用echo显示上述环境变量内容

注意:PS1 提示符设定标记:

●\d 日期

●\H 完整主机名\h 主机名第一段

●\t 24小时时间\T 12小时时间

●\u 用户名

●\V Bash版本信息

●\w 完整的工作路径\W 最后一层目录名

●\# 下达的第几个命令

●\\$ 提示符(root $,普通用户#)

练习:输入以下命令,思考设置PS1环境变量的作用

PS1=?\u-\w(\#)\\$?

PS1=[\u@\h \W]\\$

定义变量格式:变量名=变量值

引用变量$变量名

只读变量readonly 变量名

export命令对已定义的变量进行输出,使变量可被子shell使用

位置参数位置参数是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔。

所有预定义变量都是由$符和另一个符号组成的,常用的shell预定义变量有:

●$#:位置参数的数量

●$*:所有位置参数的内容

●$?:命令执行后返回的状态

●$$:当前进程的进程号

●$!:后台运行的最后一个进程号

●$0:当前执行的进程名

练习

编写一个Shell脚本testenvv.sh如下,思考各位置参数的含义:

#!/bin/bash

echo …$#:? $#

echo …$*:? $*

echo …$?:? $?

echo …$$:? $$

echo …$!:? $!

echo …$0:? $0

echo …$1:? $1

保存后,执行该脚本,例如: bash testenvv.sh a b c

参数置换的变量

shell提供了参数置换能力以便用户可以根据不同的条件来给变量赋不同的值。参数置换的变量有四种,这些变量通常与某一个位置参数相联系,根据指定的位置参数是否已经设置类决定变量的取值,它们的语法和功能分别如下。

● a. 变量=${参数-word}:如果设置了参数,则用参数的值置换变量的值,否则用word

置换。即这种变量的值等于某一个参数的值,如果该参数没有设置,则变量就等于word的值。

● b. 变量=${参数=word}:如果设置了参数,则用参数的值置换变量的值,否则把变

量设置成word然后再用word替换参数的值。

●注意,位置参数不能用于这种方式,因为在shell程序中不能为位置参数赋值。

● c. 变量=${参数?word}:如果设置了参数,则用参数的值置换变量的值,否则就

显示word并从shell中退出,如果省略了word,则显示标准信息。

●这种变量要求一定等于某一个参数的值,如果该参数没有设置,就显示一个信

息,然后退出,因此这种方式常用于出错指示。

● d. 变量=${参数+word}:如果设置了参数,则用word置换变量,否则不进行置换。

所有这四种形式中的“参数”既可以是位置参数,也可以是另一个变量,只是用位置参数的情况比较多。

练习:编写一个Shell脚本testpr.sh如下,思考各种参数置换的功能:

#! /bin/bash

v3=”3”#1

v4=”4”

echo ”v1:$v1 v2:$v2 v3:$v3 v4:$v4”

p1=${v1-“1”}

p2=${v2=”v2”}

p3=${v3?”no value in v3”}

p4=${v4+”r4”}

echo ”p1:$p1 p2:$p2 p3:$p3 p4:$p4”

试着删除标注"#1"的行,保存后运行,结果会有何不同?

expr命令求值(一般用于整数或字符串)

–参数应用规则:

*用空格隔开每个项;(每个项都是命令行参数)

*用\ (反斜杠) 放在shell 特定的字符前面;

*对包含空格和其他特殊字符的字符串要用引号括起来

练习:

(1)、计算字串长度

expr length “this is a test”

(2)、抓取字串

expr substr “this is a test” 3 5

(3)、获取第一个字符出现的位置

expr index “sarasara” a

(4)、整数运算

expr 14 % 9

expr 10 + 10

expr 1000 + 900

expr 30 / 3 / 2

expr 30 \* 3 (使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义)

shell数值计算

算术扩展语法:$((算术表达式)),注意:表达式中若有变量,该变量名称之前最好不要加上$这个符号

练习:

j=10

echo $((j*4))

echo $((j*4/3))

echo $((++j))

echo $((--j))

echo $((4+j--))

echo $j

echo $((2**5)) #2的5次方

使用$[]做算术运算和$(())类似

练习:

echo $[4+5]

echo $[4-5]

echo $[4*5]

echo $[22/5]

r=$[100%43]

echo $[r**2]

Shell程序设计的流程控制

命令的结束状态,bash shell脚本程序可由许多命令组成,每一个命令执行后,都会传回一个结束状态值,若执行成功,传回0,如果执行失败,则传回非0值。

bash的内置变量$?,用来存储每个命令执行后传回的状态值。

bash流程控制需要进行条件测试,就是以结束状态作为真假值的判断依据,如果结束状态为0,则判断为真,其它值判断为假。

test是Shell程序中的一个表达式(注意:test内置命令/usr/bin/[ ),test命令用于检查某个条件是否成立,它可以进行字符、数值和文件三个方面的测试。

字符串测试

常用的字符串比较符号如下。

=:比较两个字符串是否相同,相同则为“是”。

!=:比较两个字符串是否不相同,不同则为“是”。

-n:比较字符串的长度是否大于0,如果大于0则为“是”。

-z:比较字符串的长度是否等于0,如果等于0则为“是”。

练习:

str1=”” #字符串为空串

test $str1

echo $?

str1=”“ #字符串含一个空格

test $str1

echo $?

test “$str1”

echo $? #仔细思考上述命令结果的不同

str1=abcd

test $str1 = abcd

echo $?

test $str1 = abcde

test –n $str1

echo $?

test –z $str1

echo $?

常用的数字比较符号如下。

-eq:相等。

-ge:大于等于。

-le:小于等于。

-ne:不等于。

-gt:大于。

-lt:小于。

练习:

i1=1234

i2=3456

[ $i1 –eq $i2 ] #注意各参数之间的空格

echo $?

[ $i1 –ne $i2 ]

echo $?

[ $i1 –lt $i2 ]

echo $?

文件测试表达式通常是为了测试文件的文件操作逻辑,测试符号如下。

-d:对象存在且为目录,则返回值为“是”。

-f:对象存在且为文件,则返回值为“是”。

-L:对象存在且为符号连接,则返回值为“是”。

-r:对象存在且可读,则返回值为“是”。

-w:对象存在且可写,则返回值为“是”。

-x:对象存在且可执行,则返回值为“是”。

-s:对象存在且长度非0,则返回值为“是”。

!:测试条件的否定。

练习:

mkdir ex7

cd ex7

touch a

ln –s a b

[ -d a ]

echo $?

[ ! –d a ]

[ -f a ]

echo $?

[ -r a ]

echo $?

[ -L a ]

echo $?

[ -L b]

echo $?

常用的逻辑测试符号如下。

!:与一个逻辑值相反的逻辑值。

-a与(and):两个逻辑值都为“是”返回值才为“是”,反之为“否”。

-o或(or):两个逻辑值有一个为“是”,返回值就为“是”。

bash的一些内部命令

常用的内部命令有:echo、eval、exec、export、readonly、read、shift、wait和点(.)。下面简单介绍其命令格式和功能。

1.echo

命令格式:echo arg

功能:在屏幕上打印出由arg指定的字符串。

2.eval

命令格式:eval args

功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行。

例: cmd=“ps –a”

eval $cmd

cmd=ls

para=-h

eval $cmd $para

3.exec

命令格式:exec 命令命令参数

功能:当shell执行到exec语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程,也就是最初的shell就终止了,所以shell程序中exec后面的语句将不再被执行。

4.export

命令格式:export 变量名或:export 变量名=变量值

功能:shell可以用export把它的变量向下带入子shell从而让子进程继承父进程中的环境变量。但子shell不能用export把它的变量向上带入父shell。

注意:不带任何变量名的export语句将显示出当前所有的export变量。

5.readonly

命令格式:readonly 变量名

功能:将一个用户定义的shell变量标识为不可变的。不带任何参数的readonly命令将显示出所有只读的shell变量。

6.read

命令格式: read 变量表

功能:从标准输入设备读入一行,分解成若干字,赋值给shell程序内部定义的变量。

例: read a b c

1 2

2 333

7.shift语句

功能:shift语句按如下方式重新命名所有的位置参数变量:$2成为$1,$3成为$2……在程序中每使用一次shift语句,都使所有的位置参数依次向左移动一个位置,并使位置参数“$#”减一,直到减到0($#为0)。

练习:编写Shell程序test.sh,内容如下

#!/bin/bash

while [ $# -gt 0 ]

do

echo $1

shift

done

执行bash test.sh 1 2 3 4 5 6 7

思考shift语句的作用

8.exit

功能:退出shell程序。在exit之后可有选择地指定一个数字作为返回状态。

9.“.”(点)

命令格式:. Shell程序文件名

功能:使shell读入指定的shell程序文件并依次执行文件中的所有语句。( 等价source命令)

Shell流程控制语句

Shell程序中的条件分支是通过if条件语句来实现的,其一般格式有if-then语句和if-then-else 语句两种

(1)if-then 语句

if-then语句的语法如下:

if命令行1

then

命令行2

fi

练习:书例7.9

#!/bin/bash

#filename:bbbb

echo –n “Do you want to continue: Y or N”

read ANSWER

if [ $ANSWER=N –o $ANSWER=n ]

then

exit

fi

if-then-else语句

if-then-else语句的语法如下:

if

命令行1

then

命令行2

else

命令行3

fi

练习:书例7.10

#! /bin/bash

#filename:ak

echo –n “please input a score:”

read SCORE

echo “You input Score is $SCORE”

if [ $SCORE –ge 60 ]

then

echo –n “Congratulation!You pass the examination.”

else

echo –n “Sorry!You fail the examination!”

fi

echo –n “press any key to continue!”

read GOOUT

case条件选择为用户提供了根据字符串或变量的值从多个选项中选择一项的方法,其语法格式如下所示:

case string in

exp-1)

若干个命令行1

;;

exp-2)

若干个命令行2

;;

……

*)

其他命令行

esac

练习:书例7.11

#! /bin/bash

#filename:za

#Display a menu

echo

echo “1 Restore”

echo “2 Backup”

echo “3 unload”

echo

#Read and excute the user?s selection

echo –n “Enter Choice:”

read CHOICE

case “$CHOICE” in

1) echo “Restore”;;

2) echo “Backup”;;

3) echo “Unload”;;

*) echo “Sorry $CHOICE is not a valid choice”

exit 1

esac

for循环语句

a.for对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序中以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。

一般语法格式为:

for 变量名[in数值列表]

do

若干个命令行

done

练习:书例7.12

# ! /bin/bash

#filename:mn

for ab in 1 2 3 4

do

echo $ab

done

书例7.13

#! /bin/bash

#filename:qqq

sum=0

for INT in $*

do

sum=`expr $sum + $INT` #注意命令代换用反撇号”`”

done

b.for的另一种用法,和传统程序语言中的for 很像,语法为:

for((初始条件;终止条件;异动项))

do

命令区域

done

例:for ((i=1;i<=10;i=i+1))

do

……

done

*无穷循环

for ((;1;))……

练习:使用for语句创建一个Shell程序,其功能为1+2+3+4+5+……+n

参考:

#! /bin/bash

#filename:ex75.sh

echo –n “Please input n:”

read NUM

expr $NUM + 0 &>/dev/null #执行expr命令判断NUM中是否是数值,将标准输出与错误输出全部重定向至/dev/null

if [ $? –ne 0 ]; then

echo “ERROR:$NUM is not a number!”

exit 1

elif [ $NUM –lt 1 ]; then #注意此处elif的用法

echo “ERROR:$NUM is not greater than 1!”

exit

else

SUM=0

for ((i=1;i

do

SUM=$((SUM+i))

done

echo “The sum of 1+…+$NUM is $SUM”

fi

while语句是用命令的返回状态值来控制循环的。while循环的一般语法格式为:while

若干个命令行1

do

若干个命令行2

done

只要while的“若干个命令行1”中最后一个命令的返回状态为真,while循环就继续执行“do...done”之间的“若干个命令行2”。

练习:书例7.14

#!/bin/bash

int=1

while [ $int –le 5 ]

do

sq=`expr $int \* $int`

echo $sq

int=`expr $int +1`

done

echo “Job Completed”

书例7.15

#!/bin/bash

#filename:sum

echo –n “Please Input Number:”

read NUM

number=0

sum=0

while [ $number –le $NUM ]

echo number

echo “$number”

number=` expr $number+1`

echo sum

echo “$sum”

sum=` expr $sum + $number `

done

echo

until语句是另一种循环结构,它和while语句相似,其语句格式如下:

until

若干个命令行1

do

若干个命令行2

done

*until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。

练习:书例7.17

#!/bin/bash

#filename:hk

echo “This example is for test until….do”

echo “If you input [exit] then quit the system”

echo –n “please input:”

read EXIT

until [ $EXIT = ”exit” ]

do

read EXIT

done

echo “OK!”

使用until语句创建一个Shell程序,其功能为计算1~10的平方。参考:

#! /bin/bash

NUM=1

until [ $NUM –gt 10 ]

do

echo –n “The square of $NUM is:”

echo $[NUM**2]

NUM=$[NUM+1]

done

Shell 经典实例

Thizlinux 系统教程 Shell 经典实例 ----------------Milo 经典小shell 1 列目录树的shell 脚本如下: #!/bin/sh # dtree: Usage: dtree [any directory] dir=${1:-.} (cd $dir; pwd) find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g" 2 while中使用read (file是一个文件) cat file | while read line do echo $line echo " :: Please input any key(s):c" str4read="" while true do chr4read=`dd if=/dev/tty bs=1 count=1 2>/dev/null` str4read=$str4read$chr4read if [ "$chr4read" = "" ] ;then break; fi

done echo " :: |$str4read|" done 3 将多个空格替换为字符 sed 's/[ ][ ]*/ /g' 如果空格与tab共存时用 sed -e 's/[[:space:]][[:space:]]*/ /g' filename 4用脚本实现分割文件 #!/bin/bash if [ $# -ne 2 ]; then echo 'Usage: split file size(in bytes)' exit fi file=$1 size=$2 if [ ! -f $file ]; then echo "$file doesn't exist" exit fi

linux脚本实例

1.写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。 #!/bin/sh unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done 2.写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。 #!/bin/sh case ${1##*.tar.} in bz2) tar jxvf $1 ;; gz) tar zxvf $1 ;; *) echo "wrong file type" esac 3.写一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是则循环刚才的过程,否则退出。 #!/bin/sh RPM=/bin/rpm option="-q" while true do echo "what to query?" select var in "All" "file" "package name" do case $var in All) option=$option"a" break ;; file) echo -n "please input file name: "

LINUX实验报告

实验报告 ( 2014/ 2015 学年第一学期) 课程名称操作系统A 实验名称文件系统 实验时间2014 年12 月8 日指导单位计算机学院计算机科学与技术系 指导教师徐鹤 学生姓名王生荣班级学号B12040809 学院(系) 计算机学院专业软件工程

实验名称文件系统指导教师徐鹤 实验类型设计实验学时 2 实验时间2014.12.08 一、实验目的和要求 1. 学习LINUX系统下对文件进行操作的各种命令和图形化界面的使用方法。 2. 深入学习和掌握文件管理系统的基本原理和LINUX等操作系统下常用的系统调用,编写一个使用系统调用的例程。 3.实现一个文本文件的某信息的插入和删除 4.实现一个记录文件的某记录的插入和删除 二、实验环境(实验设备) Windows XP + VMWare + RedHat Linux 8

三、实验过程描述与结果分析 1. 目录/proc下与系统相关的文件和目录 (1) /proc/$pid/fd:这是一个目录,该进程($PID号码进程)每个打开的文件在该目录下有一个对应的文件。 例如:#ls /proc/851/fd 0 1 2 255 这表示,851号进程目前正在使用(已经打开的)文件有4个,它们的描述符分别是0、1、2、255。其中,0、1、2 依次分别是进程的标准输入、标准输出和标准错误输出设备。 (2)/proc/filesystems:该文件记录了可用的文件系统类型。 (3)/proc/mounts:该记录了当前被安装的文件系统信息 例如:#cat /proc/mount (4)/proc/$pid/maps:该文件记录了进程的映射内存区信息。 例如:#cat /proc/851/maps 2.常用命令讲解 ls 命令 用来查看用户有执行权限的任意目录中的文件列表,该命令有许多有趣的选项。例如: $ ls -liah * 22684 -rw-r--r-- 1 bluher users 952 Dec 28 18:43 .profile

经典shell 脚本实例

Linux shell 脚本实例 1. 写一个脚本,利用循环计算10的阶乘#!/bin/sh factorial=1 for a in `seq 1 10` do factorial=`expr $factorial \* $a` done echo "10! = $factorial" 2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。#!/bin/sh unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done ////////////////////////////////////////// #!/bin/sh unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done 3. 写一个脚本,利用循环和continue关键字,计算100以内能被3整除的数之和 4.一个函数,利用shift计算所有参数乘积,假设参数均为整数 #! /bin/sh result=1 while [ $# -gt 0 ] do result=`expr $result * $1` shift done echo $result 5.写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。#!/bin/shcase ${1##*.tar.} in bz2) tar jxvf $1 ;; gz) tar zxvf $1 ;; *) echo "wrong file type"esac6.写一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是则循环刚才的过程,否则退出。

2《Linux基础》实验报告 基本配置Linux

实验序号: 2 《Linux基础》 实验报告 实验名称:基本配置Linux操作系统 姓名: 学院:计算机学院 专业: 班级: 学号: 指导教师: 实验地址:N6-113 实验日期:2017.3.7

说明 一.排版要求 1.实验报告“文件名”按模板要求填写。 2.一级标题:顶格排版。汉字用宋体,阿拉伯数字用Times New Roman字 体,四号字体,加粗。 3.二级标题:顶格排版。汉字用宋体,阿拉伯数字用Times New Roman字 体,小四号字体,加粗。 4.三级标题:顶格排版。汉字用宋体,阿拉伯数字用Times New Roman字 体,五号字体。 5.正文:每段缩进量:2个汉字。两端对齐;汉字用宋体,阿拉伯数字用 Times New Roman字体,五号字体。 6.图形要求 (1)在正文中要有引用。 (2)要有图名,图名位于图的下方,汉字用宋体,阿拉伯数字用Times New Roman字体,五号字体。 (3)图和图名“居中”。 7.表格要求 (1)在正文中要有引用。 (2)要有表名,表名位于表的上方,汉字用宋体,阿拉伯数字用Times New Roman字体,五号字体。 (3)表和表名“居中”。 二.注意事项 1.复制、拷贝、抄袭者取消成绩。 2.没有安实验报告排版要求者不及格。

实验2基本配置Linux操作系统实验 【实验目的】 1.。。。。 2.。。。。 3.。。。。 4.思考: (1)Linux默认的系统超级管理员帐户是什么? (2)Linux的操作系统引导器是什么?它有哪几种的操作界面? (3)RHEL的支持哪几种X-Window图形管理器?默认是使用哪一种?(4)RHEL支持哪几种Shell?默认是使用哪一种? 【实验原理】 1.。。。 。。。 2.。。。 。。。 (1)。。。 。。。 (2)。。。 。。。 3.。。 【实验环境】 1.实验配置 本实验所需的软硬件配置如表1所示。 表1 实验配置 本实验的环境如图1所示。

linux操作系统实验报告要点

LINUX操作系统实验报告 姓名 班级学号 指导教师 2011 年05月16 日 实验一在LINUX下获取帮助、Shell实用功能 实验目的: 1、掌握字符界面下关机及重启的命令。 2、掌握LINUX下获取帮助信息的命令:man、help。 3、掌握LINUX中Shell的实用功能,命令行自动补全,命令历史记录,命令的排列、替

换与别名,管道及输入输出重定向。 实验内容: 1、使用shutdown命令设定在30分钟之后关闭计算机。 2、使用命令“cat /etc/cron.daliy”设置为别名named,然后再取消别名。 3、使用echo命令和输出重定向创建文本文件/root/nn,内容是hello,然后再使用追加重定向输入内容为word。 4、使用管道方式分页显示/var目录下的内容。 5、使用cat显示文件/etc/passwd和/etc/shadow,只有正确显示第一个文件时才显示第二个文件。 实验步骤及结果: 1.用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入 命令Shutdown -h 30 2、使用命令alias将/etc/cron.daliy文件设置为别名named,左边是要设置的名称右边是要更改的文件。查看目录下的内容,只要在终端输入命令即可。取消更改的名称用命令unalias 命令:在命令后输入要取消的名称,再输入名称。 3.输入命令将文件内容HELLO重定向创建文本文件/root/nn,然后用然后再使用追加重定向输入内容为word。步骤与输入内容HELLO一样,然后用命令显示文件的全部内容。 4.使用命令ls /etc显示/etc目录下的内容,命令是分页显示。“|”是管道符号,它可以将多个命令输出信息当作某个命令的输入。

linux实验报告

实验一 实验名称:Linux 基本命令的使用 实验时间:2学时 实验目的:熟练使用Linux字符界面、窗口系统的常用命令。 实验内容 (一)Linux操作基础 1.重新启动linux或关机(poweroff,shutdown,reboot,init 0,init 6) 2.显示系统信息(uname),显示系统日期与时间,查看2014年日历(date,cal) ①uname:查看系统与内核相关信息 uname -asrmpi 参数: -a :所有系统相关的信息; -s: 系统内核名称; -r: 内核的版本; -m:本系统的硬件名称,如i686或x86_64; -p: CPU的类型,与-m类似,只是显示的是CPU的类型; -i :硬件的平台(ix86). ②date:显示日期的命令 ③cal:显示日历 单独cal:列出当前月份的日历 cal 2014:列出2014年的日历 cal 5 2014:列出2014年五月的目录 3.使用帮助命令(man,help) ①man:是manual(操作说明)的简写,是在线帮助系统 man后跟某个命令就会详细说明此命令,例如:man man就会详细说明man 这个命令的用法; ②help:也是帮助命令,一般会在命令后,例如:cd --help 就会列出cd命令的使用说明。 4.查看当前登陆用户列表(who),显示当前用户(whoami) ①who:显示目前已登录在系统上面的用户信息; ②whoami:查询当前系统账户 5.建立一个新用户mytest,设定密码(useradd,passwd) ①useradd mytest(建立新用户mytest);

Linux常用命令实验报告

实验二 姓名:陈辉龙学号:201407010201 班级:14计科(1)一.实验目的: 掌握Linux常见命令,为今后的实验打下良好的基础。 二.实验内容 1.新建用户为chenhuilong,配置密码为passwd: 2.切换到chenhuilong用户,并在/home/chenhuilong目录下新建文件夹dir: 3.在文件夹dir下新建文件hello(内容为"printf hello world!"),并将其拷贝至/home/user目录: 4.统计/home/user目录下文件的个数,包括子目录里的首字符为-的普通文件:

5.统计/home下目录的个数,包括子目录里的目录: 6.显示/home/user目录下名为hello的文件的行数、字数以及字符数(使用输入重定向): 7.将上步的结果输出重定向到名为cnt_hello的文件: 8.删除/home/user目录下的hello文件: 9.进入/home/user/dir文件夹,将hello文件属性变为-rwxrw-r--(使用符号标记方式),并为hello文件在/home/user目录下建立软链接,链接文件名为link_hello:

10.查看/home/user/dir/hello文件的详细信息: 11.切换至根目录下查找hello文件: 12.打包home/user/dir/hello文件,并进行压缩,然后再进行解压缩解包: 13.退出user用户,删除/home/user文件夹:

14.将文件夹/home的所有者改为user用户,并删除user用户: 三.实验总结: 本实验旨在熟悉Unix的常用命令,实验较简单,操作起来还算顺利,做了一遍感觉还不是很熟悉,因此做了两遍,第二遍就很得心顺手。通过这次实验,熟悉了一些常用的命令操作,为以后的学习打下坚实的基础,提高自己的动手能力。

Shell脚本编程详解-吐血共享

第12章 Shell 脚本编程 ● Shell 命令行的运行 ● 编写、修改权限和执行Shell 程序的步骤 ● 在Shell 程序中使用参数和变量 ● 表达式比较、循环结构语句和条件结构语句 ● 在Shell 程序中使用函数和调用其他Shell 程序 12-1 Shell 命令行书写规则 ◆ Shell 命令行的书写规则 对Shell 命令行基本功能的理解有助于编写更好的Shell 程序,在执行Shell 命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如: [root@localhost root]# ls a* -l;free;df 长Shell 命令行可以使用反斜线字符(\)在命令行上扩充,例如: [root@localhost root]# echo “ this is \ >long command ” This is long command 注意: “>”符号是自动产生的,而不是输入的。 12-2 编写/修改权限及执行Shell 程序的步骤 ◆ 编写Shell 程序 ◆ 执行Shell 程序 Shell 程序有很多类似C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。Shell 程序是指放在一个文件中的一系列Linux 命令和实用程序。在执行的时候,通过Linux 操作系统一个接一个地解释和执行每条命令。首先,来编写第一个Shell 程序,从中学习Shell 程序的编写、修改权限、执行过程。

12-2-1 编辑Shell程序 编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。 [root@localhost bin]#vi date #! /bin/sh echo “Mr.$USER,Today is:” echo &date “+%B%d%A” echo “Wish you a lucky day !” 注意: #! /bin/sh通知采用Bash解释。如果在echo语句中执行Shell命令date,则需要在date 命令前加符号“&”,其中%B%d%A为输入格式控制符。 12-2-2 建立可执行程序 编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使用如下命令。[root@localhost bin]#chmod +x date 12-2-3 执行Shell程序 执行Shell程序有下面三种方法: 方法一: [root@localhost bin]#./ date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法二: 另一种执行date的方法就是把它作为一个参数传递给Shell命令: [root@localhost bin]# Bash date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法三: 为了在任何目录都可以编译和执行Shell所编写的程序,即把/bin的这个目录添加到整个环境变量中。 具体操作如下: [root@localhost root]#export PATH=/bin:$PATH [root@localhost bin]# date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day !

实验一 Linux基本操作实验报告

实验一Linux基本操作 一.实验目的: 1. 二.实验环境: 虚拟机+Red Hat Enterprise Server 5.0 三.实验内容: 根据以下的文字提示,调用相应的命令来完成,记录相应的运行结果。一)用户和组基本操作 1.添加一个user01用户,家目录为/home/sub2,并设置密码 2.添加一个group1 组 3.将user01用户添加到group1组中 4.修改group1组名称为group2 5.修改user01的家目录为/home/user01 6.判断/etc/password这个目录是否包含user01这个用户 7.修改user01的shell为/bin/tcsh 8.添加一个group3组,把user01和root用户都添加到该组

https://www.docsj.com/doc/b613667731.html,er01用户从group2组切换到group3组 10.设置user01的密码在2012-5-20过期 11.把/home/user01目录所属的组修改为group3 12.删除user01帐号 13.查看内核版本号 二)进程管理 1.运行cat命令:vi test,输入若干字符如this is a example,挂起vi进程 2.显示当前所有作业 3.将vi进程调度到前台运行

4.将vi进程调度到后台并分别用kill/pkill/killall命令结束该该进程。 三)磁盘管理 1.通过fdisk 将为硬盘增加一个分区(主分区或者逻辑分区)。 2.并格式化ext3系统,

3.检测分区是否有坏道 4.检测分区的完整性 5.加载分区到/mnt目录(或者其他分区)下,并拷贝一些文件到该目录下 6.(选做)为test用户设置磁盘配额(软限制和硬限制参数自行设定) 7.退出/mnt目录后卸载该分区 8.用du查看/usr目录的大小

Shell脚本-Demo-29例

【例子:001】判断输入为数字,字符或其他 1.#!/bin/bash 2.read -p "Enter a number or string here:" input 3.case $input in 4. [0-9]) echo -e "Good job, Your input is a numberic! \n" ;; 5.[a-zA-Z]) echo -e "Good job, Your input is a character! \n" ;; 6. *) echo -e "Your input is wrong, input again! \n" ;; 7.esac 【例子:002】求平均数 1.#!/bin/bash 2.# Calculate the average of a series of numbers. 3.SCORE="0" 4.AVERAGE="0" 5.SUM="0" 6.NUM="0" 7.while true; do 8. echo -n "Enter your score [0-100%] ('q' for quit): "; read SCORE; 9. if (("$SCORE" < "0")) || (("$SCORE" > "100")); then 10. echo "Be serious. Common, try again: " 11. elif [ "$SCORE" == "q" ]; then 12. echo "Average rating: $AVERAGE%." 13. break 14. else 15. SUM=$[$SUM + $SCORE] 16. NUM=$[$NUM + 1] 17. AVERAGE=$[$SUM / $NUM] 18. fi 19.done 20.echo "Exiting." 【例子:003】自减输出 1.[scriptname: doit.sh] 2.while (( $# > 0 )) 3.do 4. echo $* 5. shift 6.done 7./> ./doit.sh a b c d e 8. a b c d e 9. b c d e 10.c d e

Linux实验报告

Linux实验 一、实验目的 1. 了解Linux基本使用方法; 2. 掌握Linux基本设置方式; 3. 掌握Linux基本操作命令使用。 二、内容要求 1. 了解进程管理、文件管理与内存管理 2.掌握系统设置文件与命令 3. 熟练使用系统操作与维护命令 4. 熟练使用系统操作与维护命令 三、实验原理 Linux 系统常用命令格式: command [option] [argument1] [argument2] ... 其中option以“-”开始,多个option可用一个“-”连起来,如 “ls-l -a”与“ls-la”的效果是一样的。根据命令的不同,参数 分为可选的或必须的;所有的命令从标准输入接受输入,输出结果显示在 标准输出,而错误信息则显示在标准错误输出设备。可使用重定向功能对这 些设备进行重定向。如: ls –lh > a.txt 命令在正常执行结果后返回一个0值,如果命令出错可未完全完成,则返回 一个非零值(在shell中可用变量$?查看)。在shell script中可用此返 回值作为控制逻辑的一部分。 DSL命令操作: 帮助命令: man 获取相关命令的帮助信息 例如:man dir 可以获取关于dir的使用信息。 info 获取相关命令的详细使用方法 例如:info info 可以获取如何使用info的详细信息。 基本操作: echo 显示字符串 pwd 显示当前工作目录 ls 查看当前文件夹内容 ls -a 查看当前文件夹内容(包括隐藏项) ls -l 查看当前文件夹内容(详细) ls / 查看根目录内容 cd / 移动到根目录

pwd 显示当前工作目录 ls -al 查看根目录文件夹内容(详细情况并包括隐藏项) cd /home/dsl 回到“家”目录 pwd 显示当前工作目录 df -h 显示剩余磁盘空间,参数“-h”表示适合人读取(human readable) du -h 显示文件夹(及子文件夹)所占空间 mkdir fd0 在当前目录下创建目录fd0 touch a.txt 创建一个空文件a.txt ls / -lh > a.txt 利用重定向功能将根目录中的内容写入a.txt。 cat a.txt 显示a.txt内容 wc a.txt 显示a.txt的行数,字数与字节数 find / -name *conf 在根目录下(包括子目录)查找以conf结尾的文件 sudo mount /dev/fd0 fd0 将软盘镜像挂载到目录fd0上 cd fd0 进入软盘镜像所挂载的目录 ls -lh 查看软盘镜像中的文件 cd .. “..”表示进入上一层目录 gzip a.txt 使用gzip压缩a.txt ls -lh 查看当前文件夹 sudo cp a.txt.gz fd0/ 将a.txt复制到fd0目录下,即将其复制到软盘镜像中 sudo mv fd0/a.txt.gz ./ 将a.txt移动到当前目录下,“.”表示当前目录 sudo umount /dev/fd0 将软盘镜像卸载 ls fd0 显示fd0 目录内容 gzip -d a.txt.gz 解压缩a.txt.gz ls -lh 查看当前文件夹 权限管理: 假设当前处于/home/dsl 目录下,且有a.txt(文件)与fd0(目录),当前用户名为dsl。 sudo cat /etc/passwd 用户 sudo cat /etc/shadow 密码 sudo cat /etc/group 组 users 查看当前登录用户 sudo chmod -x fd0 更改文件夹权限 ls fd0 fd0不能被执行,则意味着无法打开! sudo chmod +x fd0 更改文件夹权限 ls fd0 fd0能被打开 sudo chown root fd0 更改目录fd0的所有者 ls -lh 注意看fd0目录的属性 sudo chown dsl:root fd0 更改目录fd0的所有者为dsl,所属组为root ls -lh 注意看fd0目录的属性 chmod a-r a.txt 现在a.txt不具有“读”权限,不能被读取

LinuxShell脚本编程实例

#! /bin/sh echo "Current command is $0" echo "The first parameter is $1" echo "The second parameter is $2" echo "The third parameter is $3" echo "Total of parameters if $#" echo "Current PID is $$" #!/bin/bash times=0 until [ "$times" = 3 ]; do echo "I love linux." sleep 2 times=`expr $times + 1` done #!/bin/bash # menu shell script. samli 2004.4.19 until echo "List Directory..........1" echo "Change Directory........2" echo "Edit File...............3" echo "Remove File.............4" echo "Exit Menu...............5" read choice test $choice = 5 do case $choice in 1) ls;; 2) echo "enter target directory:" read dir cd $dir ;; 3) echo "enter file name:" read file vi $file ;; 4) echo "enter file name:" read file rm $file ;; 5) echo "Goodbye"

linux基础实验报告含代码

Linux基础实验

目录 实验一 (3) 实验二 (4) 实验三 (6) 实验四 (9) 实验五 (11) 实验六 (14) 实验七 (16)

实验一螺旋矩阵 一、实验目的 1.熟悉linux下c程序编写。 2.掌握Makefile编写方法。 二、实验环境和工具 Red Hat Linux 三、实验流程 1.编写螺旋矩阵程序 2.编写Makefile文件 四、实验结果 五、实验心得 通过这次实验,我熟悉了linux下c语言程序的编写,掌握了vi的一些常用操作,学会了使用gcc命令和makefile文件两种方法编译程序。同时也使我熟悉了linux里常用命令的使 用,还有,学会了挂载U盘的方法,可以很方便的往linux里传送文件。 六、关键代码 Makefile 文件 CC=gcc EXEC=juzhen OBJS=juzhen.o all:$(EXEC) $(EXEC):$(OBJS) $(CC) -o $@ $(OBJS) clean: -rm -f $(EXEC) $(OBJS)

实验二添加、删除用户 一、实验目的 1.设计一个shell程序,分组批量添加用户。 2.再设计一个批量删除用户的shell程序。 二、实验环境和工具 Red Hat Linux 三、实验流程 1.编写shell程序 2.修改文件权限 chmod +x addusers 3.运行脚本 四、实验结果 添加用户: 删除用户:

五、实验心得 通过本次实验,我了解了shell脚本编程的方法和其语法规则。掌握了使用shell脚本程序添加、删除用户的方法。需要注意的是:shell脚本直接用vi编写,要特别注意空格。 六、关键代码 添加用户: 删除用户:

Shell脚本例子集合

# vi xx.sh 退出并保存 # chmod +x xx.sh # ./xx.sh -2.调试脚本的方法 # bash -x xx.sh就可以调试了. -1.配置secureCRT的设置(我用的是6.2.3 build313版本,汉化版) 选项->会话选项(S)...->终端->仿真->终端(T)->把VT100改成Xterm->点中ANSI 颜色(A)和使用颜色方案(U)复选框. 这样就有颜色显示了. 选项->会话选项(S)...->终端->外观->字符编码(H)->从Default变到UTF-8. 这样就有中文显示了. 1.写一个脚本,执行后,打印一行提示"Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值.直到用户输入"end"停止. # vi show_var.sh 脚本内容: #!/bin/bash unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done 命令保存后退出,并执行: # chmod +x show_var.sh # ./show_var.sh please input a number: 1 var is 1 please input a number: s var is s please input a number: end # 2.写一个脚本,测试位置参数

Linux实验报告(2)

Linux 实验报告姓名 黄芳恺 班级软件工程114 学号119074258 指导教师阮越

目录 实验一 Linux基本命令的使用 实验二简单Shell程序设计 实验三 Linux下简单C程序设计与文件操作实验四 Linux下进程操作与进程间通信 实验五 Linux线程的使用 实验六 Linux进程间的IPC 实验七 Linux下访问Mysql数据库 实验八 Linux下网络编程 练习题: grep、 bash、生产者消费者

实验一 Linux基本命令的使用 1、实验目的 学习和掌握 Linux 的基本命令。 2、实验内容和步骤 步骤 1:以user_login用户身份并使用telnet登录Linux服务器,按照提示创建自己的账户和口令。 步骤 2 :使用新创建的用户账户和口令登录Linux系统,察看登录后的界面。 步骤 3:使用 pwd 命令察看当前的工作目录,然后用ls命令查看当前目录下的内容,尝试使用 -a,-l,-F,-A,-lF等不同选项并比较不同之处。 -a do not ignore entries starting with -I, --ignore=PATTERN do not list implied entries matching shell PATTERN -l use a long listing format -F, --classify append indicator (one of */=>@|) to entries -A, --almost-all do not list implied . and .. -lF ignore file

LinuxShell脚本编程实例

1、打印位置变量的个数和位置变量的内容 #! /bin/sh echo "Current command is $0" echo "The first parameter is $1" echo "The second parameter is $2" echo "The third parameter is $3" echo "Total of parameters if $#" echo "Current PID is $$" 2、循环打印“I love linux”3次 #!/bin/bash times=0 until [ "$times" = 3 ]; do echo "I love linux." sleep 2 times=`expr $times + 1` done 3、完成菜单程序的功能: 1)列出当前的文件 2)更改路径 3)编辑文件 4)删除文件 #!/bin/bash # menu shell script. until echo "List Directory..........1" echo "Change Directory........2" echo "Edit File...............3" echo "Remove File.............4" echo "Exit Menu...............5" read choice test $choice = 5 do case $choice in 1) ls;; 2) echo "enter target directory:" read dir cd $dir ;; 3) echo "enter file name:" read file vi $file

linux下简单shell脚本例子

一些自己练习时所写的简单shell脚本 (centos 6.3)【复制粘贴时请注意空格、引号、分号等格式】1、使用for循环、while循环、until循环计算100以内所有偶数的和 for循环: #!/bin/sh Sum=0 for i in `seq 0 2 100` #也可用for i in $(seq 0 2 100) #或者for (( i=0;i<=100;i+=2 )) do let “Sum+=i” done echo “SUM=$Sum” exit 0 while循环: #!/bin/sh Sum=0 i=0 while [ “$i”–le 100 ] do let “Sum+=i” let “i+=2” done echo “SUM=$Sum” exit 0 until循环: #!/bin/sh Sum=0 i=0 until [ “$i”–gt 100 ] do let “Sum+=i” let “i+=2” done echo “SUM=$Sum” exit 0 2、通过循环实现从1开始叠加,直到和的结果大于2000为止(使用break循环控制符) #!/bin/sh Sum=0 for (( i=1;;i++) do let “Sum+=i” if [ “$Sum”–gt 2000 ] then echo “i=$i” echo “SUM=$Sum” break

done exit 0 3、找出100以内所有能被3整除的数,每行显示8个数,然后换行显示#!/bin/sh times=0 #循环次数 for i in $(seq 1 100) do let “temp=i%3” let “times++” if [ “$temp”–eq 0 ] then printf “$i” let “a=times%8” if [ “$a”–eq 0 ] then printf “\n” fi fi done printf “\n” exit 0 4、打印九九乘法表 #!/bin/sh for (( i=1;i<=9;i++) do for (( j=1;j<=i;j++ )) do let “temp=i*j” echo –n “$j*$i=$temp “ done echo “” done exit 0 5、显示颜色类型,并让用户选择(使用select结构) #!/bin/sh echo “What is your favorite color?” select color in “red”“blue”“green”“white”“black” do break done echo “You have selected $color.” exit 0 6、显示当前工作目录下的文件数和目录数 #!/bin/sh Number() { let “dir_number=0” let “file_number=0”

Shell脚本抽取实例

Shell脚本抽取实例 #!/usr/bin/ksh 1. 应用地址变量引用 myself="backup_chncm_file.sh" logfile="${MCB_HOME}/${MCB_APPID}/var/log/${procname}.log" 2. case实例 case ${MCB_APPID} in chs) ic_dir="/opt/mcb/chs/data/*/inroam/incoming" arch_dir="/opt/mcb/chs/back" file_pattern="[AC][CD]?????CHNCM*" db_user="chsdba" ;; ops) ic_dir="/opt/mcb/ops/data/incoming/ics" arch_dir="/opt/mcb/ops/arch/incoming/ics" file_pattern="[AC][CD]?????CHNCM*" db_user="iogsmdba" ;; *) MCB_APPID=dps1 echo "MCB_APPID is not in chs/ops, please check!" exit 1 ;; esac 3. 判断参数个数实例 if [ $# -lt 1 ];then echo "SERIOUS:DBMSG() need 1 argument: DEBUGMSG" return 1 fi 4. 判断结果实例 if [ $? -ne 0 ];then message="query carriers table failed! db_user=${db_user} db_passwd=${db_passwd} db_sid=int1"

Linux实验报告6

江西理工大学江西理工大学实验报告纸 一、实验目的 掌握如何执行shell脚本,灵活使用shell变量、shell控制结构、shell函数等。学会在Linux下 进行shell编程。 二、实验内容 1.新建脚本文件并执行shell脚本。 2.尝试编写shell脚本实现某种功能。 三、实验过程 1.shell脚本的输入命令 2. shell脚本的输出命令 3.export命令 编写脚本export2 编写脚本export1 运行脚本export1 4.编写一个简单的回显用户名的shell程序 5.if语句 单分支if语句: 格式: if 条件; then 语句1 语句2 ... fi 如果/etc/rc.d/rc.sysinit中有空白行,就显示其空白行数:Linux系统及编程基础实验报告

双分支if语句: 格式: if 条件; then 语句1 语句2 ... else 语句1 语句2 ... fi 创建一个根据输入的分数判断是否及格的shell程序 多分支if语句: 格式: if 条件1; then 语句1 语句2 ... elif 条件2; then 语句1 语句2 ... elif 条件3; then 语句1 语句2 ... else 语句1 语句2 ... fi 判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。 如果其生产商为GenuineIntel,就显示其为Intel公司; 如果其生产商为AuthenticAMD,就显示其为AMD公司; 否则,就显示无法识别; 6. for语句 格式: for 变量in 列表;do 语句1; 语句2; ...

相关文档