文档库 最新最全的文档下载
当前位置:文档库 › Shell应用作业

Shell应用作业

Shell应用作业
Shell应用作业

shell应用

一、实训目的

●掌握Linux各类命令的使用方法;

●熟悉Linux操作环境。

二、项目背景

现在有一台已经安装好Linux操作系统的主机,并且已经配置好基本的TCP/IP 参数,能够通过网络连接局域网中或远程的主机。一台Linux服务器,能够提供FTP、Telnet和SSH连接。

三、实训内容

练习使用Linux常用命令,达到熟练应用的目的。

四、实训步骤

子项目1.文件和目录类命令的使用

(1)启动计算机,利用root用户登录到系统,进入字符提示界面。

(2)用pwd命令查看当前所在的目录。

pwd

(3)用ls命令列出此目录下的文件和目录。

ls

(4)用-a选项列出此目录下包括隐藏文件在内的所有文件和目录。

ls -a

(5)用man命令查看ls命令的使用手册。

man ls

(6)在当前目录下,创建测试目录test。

Mkdir test

(7)利用ls命令列出文件和目录,确认test目录创建成功。

ls

(8)进入test目录,利用pwd查看当前工作目录。

Cd test

pwd

(9)利用touch命令,在当前目录创建一个新的空文件newfile。

Touch newfile

(10)利用cp命令复制系统文件/etc/profile到当前目录下。

Cp /etc/profile /root/桌面/text

(11)复制文件profile到一个新文件profile.bak,作为备份。

(12)用ll命令以长格形式列出当前目录下的所有文件,注意比较每个文件的长度和创建时间的不同。

(13)用less命令分屏查看文件profile的内容,注意练习less命令的各个子命令,如b、p、q等,并对then关键字查找。

(14)用grep命令在profile文件中对关键字then进行查询,并与上面的结果比较。

(15)给文件profile创建一个软链接lnsprofile和一个硬链接lnhprofile。

(16)长格形式显示文件profile、lnsprofile和lnhprofile的详细信息。注意比较3个文件链接数的不同。

(17)删除文件profile,用长格形式显示文件lnsprofile和lnhprofile的详细信息,比较文件lnhprofile 的链接数的变化。

(18)用less命令查看文件lnsprofile的内容,看看有什么结果。

(19)用less命令查看文件lnhprofile的内容,看看有什么结果。

(20)删除文件lnsprofile,显示当前目录下的文件列表,回到上层目录。

(21)用tar命令把目录test打包。

(22)用gzip命令把打好的包进行压缩。

(23)把文件test.tar.gz改名为backup.tar.gz。

(24)显示当前目录下的文件和目录列表,确认重命名成功。

(25)把文件backup.tar.gz移动到test目录下。

(26)显示当前目录下的文件和目录列表,确认移动成功。

(27)进入test目录,显示目录中的文件列表。

(28)把文件backup.tar.gz解包。

(29)显示当前目录下的文件和目录列表,复制test目录为testbak目录作为备份。

(30)查找root用户自己主目录下的所有名为newfile的文件。

(31)删除test子目录下的所有文件。

(32)利用rmdir命令删除空子目录test。

回到上层目录,利用rm命令删除目录test和其下所有文件。

子项目2.系统信息类命令的使用

(1)利用date命令显示系统当前时间,并修改系统的当前时间。

(2)显示当前登录到系统的用户状态。

(3)利用free命令显示内存的使用情况。

(4)利用df命令显示系统的硬盘分区及使用状况。

(5)显示当前目录下各级子目录的硬盘占用情况。

(6)find命令的使用。

①在/var/lib目录下查找所有文件其所有者是games用户的文件。

#find /var/lib –user games

②在/var目录下查找所有文件其所有者是root用户的文件。

#find /var –user root

③查找所有文件其所有者不是root、bin和student用户,并用长格式显示(如ls –l 的显示结果)。

#find / ! –user root -and ! –user bin –and ! –user student –exec ls –l {} \; 2> /dev/null

④查找/usr/bin目录下所有大小超过一百万byte的文件,并用长格式显示(如ls –l 的显示结果)。

#find /usr/bin –size +1000000c -exec ls -l 2> /dev/null

⑤对/etc/mail目录下的所有文件使用file命令。

#find /etc/mail –exec file {} \; 2 > /dev/null

⑥查找/tmp目录下属于student的所有普通文件,这些文件的修改时间为5天以前,查询结果用长格式显示(如ls –l 的显示结果)。

# find /tmp –user student –and –mmin +5 –and –type f –exec ls {} \; 2> /dev/null

⑦对于查到的上述文件,用-ok选项删除。

# find /tmp –user student –and –mmin +5 –and –type f –ok rm {} \;

五、实训思考题

1.ls *.?

2.more[A-Z]*

3.ls /etc/[!a-m]*

4.ls [a-z]*[0-9]

5.alias dir=’ls –d [a-z]*’

6.find ./tmp /usr/tmp –name core –exec rm{}\;

7.grep ‘^user[0-9]$’ /etc/passed

8.grep ‘^[A-Za-z]*[0-9]$’ datafile

9.mount –t vfat /dev/hda1 /mnt/winc

六、实训报告要求

●实训目的。

●实训内容。

●实训步骤。

●实训中的问题和解决方法。

●回答实训思考题。

●实训心得与体会。

●建议与意见。

linux+shell脚本语言基础知识

linux shell脚本语言基础知识 一.shell简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的界面,更确切的说,shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用Shell脚本编程,完成更加复杂的操作。 shell是一个命令解释器,它从输入设备读取命令,再将其转为计算机可以了解的指令,然后执行它。在linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell (/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。通常用Bash,也就是Bourne Again Shell进行编程。 二.shell使用 1.建立和运行shell程序 shell脚本程序:按照一定的语法结构把若干linux命令组织在一起,是这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且不需要编译就能执行。(只需修改其权限) 像编写高级语言的程序一样,编写shell程序需要一个文本编辑器,如VI和VIM,通常使用VIM文本编辑器,支持更便利的插入模式。 首先使用VIM编辑器编辑一个hello.sh文件: #!/bin/bash #hello world example

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

Shell命令

Shell Shell 就是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。 4.1.1 Shell 的基本概念 1. 什么是S hell Shell 就是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。Shell 在L inux 系统中具有极其重要的地位,如图4-1 所示

第 4 章 Shell 与 V i 编辑器 - 71 - diff grep vi multitasking sh gcc device hardware interface kernn e l TCP/IP stack bash utilii t es 图 4-1 Linux 系统结构组成 2. Shell 的功能 Shell 最重要的功能是命令解释,从这种意义上来说,Shell 是一个命令解释器。Linux 系统中的所有可执行文件都可以作为 Shell 命令来执行。将可执行文件作一个分类,如表 4-1 所示。 表 4-1 可执行文件的分类 部的解释器将其解释为系统功能调用并转交给内核执行;若是外部命令或实用程序就试图 在硬盘中查找该命令并将其调入内存,再将其解释为系统功能调用并转交给内核执行。在 查找该命令时分为两种情况: 用户给出了命令路径,Shell 就沿着用户给出的路径查找,若找到则调入内存,若没有 则输出提示信息; 用户没有给出命令的路径,Shell 就在环境变量 PATH 所制定的路径中依次进行查找, 若找到则调入内存,若没找到则输出提示信息。 图 4-2 描述了 S hell 是如何完成命令解释的。

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: "

ubuntu shell 使用命令大全

ubuntu shell 使用命令大全 前言 下面的命令大都需要在控制台/ 终端/ shell 下输入。 控制台, 终端, 和shell 意味着同样一件事- 一个命令行界面,他可以用来控制系统。 打开一个控制台: 应用程序--> 附件--> 终端 任何一个使用'sudo' 作为前缀的命令都需要拥有管理员(或root) 访问权限。所以你会被提示输入你自己的密码。 安装升级 查看软件xxx安装内容 dpkg -L xxx 查找软件库中的软件 apt-cache search 正则表达式 或 aptitude search 软件包 显示系统安装包的统计信息 apt-cache stats 显示系统全部可用包的名称 apt-cache pkgnames 显示包的信息 apt-cache show k3b 查找文件属于哪个包 apt-file search filename 查看已经安装了哪些包 dpkg -l 查询软件xxx依赖哪些包 apt-cache depends xxx 查询软件xxx被哪些包依赖 apt-cache rdepends xxx 增加一个光盘源 sudo apt-cdrom add 系统升级 sudo apt-get update (这一步更新包列表) sudo apt-get dist-upgrade (这一步安装所有可用更新) 或者 sudo apt-get upgrade (这一步安装应用程序更新,不安装新内核等) 清除所有已删除包的残馀配置文件 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。 dpkg: --purge needs at least one package name argument Type dpkg --help for help about installing and deinstalling packages [*]; Use `dselect' or `aptitude' for user-friendly package management; Type dpkg -Dhelp for a list of dpkg debug flag values; Type dpkg --force-help for a list of forcing options; Type dpkg-deb --help for help about manipulating *.deb files; Type dpkg --license for copyright license and lack of warranty (GNU GPL) [*]. Options marked [*] produce a lot of output - pipe it through `less' or `more' ! 编译时缺少h文件的自动处理 sudo auto-apt run ./configure 查看安装软件时下载包的临时存放目录

shell 脚本入门笔记

#!/bin/bash 放在第一行用于告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。文件保存为**.sh。 执行方式: 1.chmod777 test.sh ./test.sh 2./bin/sh test.sh echo 用于向窗口输出文本 定义变量时,变量名不加$符号。 例如:your_name="https://www.wendangku.net/doc/0d15507387.html," 还可以使用语句进行赋值: for file in `ls /etc` 或 for file in $(ls /etc) 以上语句将/etc 下目录的文件名循环出来。 使用变量 使用一个定义过的变量,只要在变量名前面加美元符号即可,如: your_name="qinjx"

echo $your_name echo ${your_name} 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,建议给所有变量加上花括号。 只读变量 readonly+变量名 删除变量 unset+变量名不能删除只读变量 Shell 字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP 类似。 单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。 双引号 your_name='qinjx'

str="Hello, I know you are \"$your_name\"! \n" 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符 拼接字符串 your_name="qinjx" greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 获取字符串长度 string="abcd" echo ${#string} 输出4 提取子字符串 以下实例从字符串第2 个字符开始截取4 个字符:string="runoob is a great site" echo ${string:1:4} 输出unoo 查找子字符串

经典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的相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是则循环刚才的过程,否则退出。

最常用的Shell命令

Shell命令行操作 Linux shell 简介 Linux shell指的是一种程序,有了它,用户就能通过键盘输入指令来操作计算机了。Shell会执行用户输入的命令,并且在显示器上显示执行结果。这种交互的全过程都是基于文本的,与其他各章介绍的图形化操作不同。这种面向命令行的用户界面被称为CLI(Command Line interface)。在图形化用户界面(GUI)出现之前,人们一直是通过命令行界面来操作计算机的。 现在,基于图形界面的工具越来越多,许多工作都不必使用Shell就可以完成了。然而,专业的Linux用户认为Shell是一个非常有用的工具,学习Linux时一定要学习Shell,至少要掌握一些基础知识和基本的命令 启动shell 在启动Linux桌面系统后,Shell已经在后台运行起来了,但并没有显示出来。如果想让它显示出来, 按如下的组合键就可以: + + 组合键中的F2可以替换为 F3、F 4、F 5、F6。 如果要回到图形界面,则按如下组合键: + + 另外,在图形桌面环境下运行“系统终端”也可以执行Shell命令,与用组合键切换出来的命令行界面

是等效的。“系统终端”启动后是一个命令行操作窗口,可以随时放大缩小,随时关闭,比较方便,推荐使用。启动“系统终端”的方法是: 【开始】→【应用程序】→【附件】→【系统终端】 该软件允许建立多个Shell客户端,它们相互独立,可以通过标签 在彼此之间进行切换。 Shell命令基本规则 一般格式 Shell命令的一般格式如下: 命令名【选项】【参数1】【参数2】... 【选项】是对命令的特别定义,以减号(-)开始,多个选项可以用一个减号(-)连起来,如ls -l -a与 ls -la 相同。 【参数】提供命令运行的信息,或者是命令执行过程中所使用的文件名。 使用分号(可以将两个命令隔开,这样可以实现一行中输入多个命令。命令的执行顺序和输入的顺序 相同。 命令补全 在送入命令的任何时刻,可以按键,当这样做时,系统将试图补全此时已输入的命令。如果已 经输入的字符串不足以唯一地确定它应该使用的命令,系统将发出警告声。再次按键,系统则会给出可用来补全的字符串清单。使用命令补全功能,可以提高使用长命令或操作较长名字的文件或文件夹的都是非常有意义的。

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 !

常用shell脚本

如何用脚本实现分割文件 #!/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 #TODO: test if $size is a valid integer filesize=`/bin/ls -l $file | awk '{print $5}'` echo filesize: $filesize let pieces=$filesize/$size let remain=$filesize-$pieces*$size if [ $remain -gt 0 ]; then let pieces=$pieces+1 fi echo pieces: $pieces i=0 while [ $i -lt $pieces ]; do echo split: $file.$i: dd if=$file of=$file.$i bs=$size count=1 skip=$i let i=$i+1 done echo "#!/bin/bash" >; merge echo "i=0" >;>; merge echo "while [ $i -lt $pieces ];" >;>; merge echo "do" >;>; merge echo " echo merge: $file.$i" >;>; merge echo " if [ ! -f $file.$i ]; then" >;>; merge echo " echo merge: $file.$i missed" >;>; merge

linux操作系统之Shell编程

shell1.sh 显示日期和时间。 #!/bin/bash echo “current time is `date`” //date要加反引号 shell2.sh 显示文件名,并显示位置参数(执行时带一个参数)。(①$0是一个特殊的变量,它的内容是当前这个shell程序的文件名;②$1是一个位置参数,位置参数之间用空格分隔,shell取第一个位置参数替换程序文件中的$1,第二个替换$2,依次类推。) #!/bin/bash echo “the program name is $0” //$0是一个特殊的变数 echo “the first para is $1” //$1是一个位置参数 echo “the program exit” //执行时带一个参数如./shell2.sh abcd shell3.sh 判断并显示位置参数 #!/bin/bash if [ -d “$1”];then echo “$1 is directory ,existed” else echo “$1 does not exist ,now create it” mkdir $1 echo “$1 is created” fi //执行时带一个参数 shell4.sh 问候用户 #!/bin/bash user=`whoami` case $user in teacher) echo “hello teacher”;; root) echo “hello root”;; *) echo “hello $user,welcome” esac 1、求1+2+3+...+100的和是? #!/bin/bash

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

shell程序设计

shell编程 教学要点 1.深入理解shell概念。 2.掌握linux下shell程序设计流程。 3.理解shell程序与C程序设计的区别。 4.掌握shell程序设计中用户变量和表达式的使用方法。一.Shell编程概述 问题1:请各位同学在home目录下创建5个目录,目录名称分别为student0,student1,student2,student3,student4.且修改它们的权限为所有用户都具有完全的操作权限。 问题2:请各位同学在home目录下创建100目录,目录名称为class1—class100. 解决办法:通过一个shell脚本程序来实现,程序如下,用vi编辑器建立一个firstshell文件,内容如下: #!/bin/bash //指明该程序被那个shell来执行! cd /home/shelldir //进入home/shelldir目录 mkdir newdir //在shelldir目录下新建newdir目录

i=0 //给变量i赋初值 while [ $i –lt 50 ]; do //循环,判断i是否小于50,成立继续循环 let i=i+1 //让i变量值增加1 mkdir /home/shelldir/newdir/student$i //在newdir目录下创建student1到student50 chmod 754 /home/shelldir/newdir/student$i done 保存文件,退出vi,通过执行#chmod a+x firstshell修改文件权限,赋予文件可执行权限,通过#./firstshell或者#/bin/bash firstshell来执行程序,查看程序运行结果。 程序说明: 1.程序必须以下面的行开始(必须方在文件的第一行): #!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/bash来执行程序。 2.当编辑好脚本时,如果要执行该脚本,还必须使其可执行。要使脚本可执行,必须为脚本添加可执行权限。

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"

个人整理shell脚本编程笔记

shell脚本编程学习笔记(一) 一、脚本格式 vim shell.sh #!/bin/bash//声明脚本解释器,这个‘#’号不是注释,其余是注释 #Program://程序内容说明 #History://时间和作者 二、shell变量的种类 用户自定义变量:由用户自己定义、修改和使用 与定义变量:Bash与定义的特殊变量,不能直接修改 位置变量:通过命令行给程序传递执行的参数 1、定义变量: 变量名要以英文字母或下划线开头,区分大小写。 格式:变量名=值 输出变量:echo $变量名 2、键盘输入为变量内容: 格式:read [-p "信息"] 变量名 如:read -p "pewase input your name:" name 3、不同引号对变量的作用 双引号"":可解析变量,$符号为变量前缀。 单引号'':不解析变量,$为普通字符。 反引号``:将命令执行的结果输出给变量。 三、shell条件测试 1、test命令: 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数字。 格式:test 条件表达式[ 条件表达式] (注意:[]与表达式之间存在空格) 2、常见的测试类型: 测试文件状态 格式:[ 操作符文件或目录] 如:if [ -d /etc ] then echo "exists" else echo "not exists" fi 常见的测试操作符: -d:测试是否为目录 -e:测试目录或文件是否存在 -f:测试是否为文件 -r:测试当前用户是否有读权限 -w:测试当前用户是否有写权限 -x:测试当前用户是否有执行权限

Linux常用的系统监控shell脚本

https://www.wendangku.net/doc/0d15507387.html,下面是我常用的几个Linux系统监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助。 1、查看主机网卡流量 1.#!/bin/bash 2. 3.#network 4. 5.#Mike.Xu 6. 7.while : ; do 8. 9.time=’date +%m”-”%d” “%k”:”%M’ 10. 11.day=’date +%m”-”%d’ 12. 13.rx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’ 14. 15.tx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’ 16. 17.sleep 2 18. 19.rx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’ 20. 21.tx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’ 22. 23.rx_result=$[(rx_after-rx_before)/256] 24. 25.tx_result=$[(tx_after-tx_before)/256] 26. 27.echo “$time Now_In_Speed: “$rx_result”kbps Now_OUt_Speed: “$tx_result”kbps” 28. 29.sleep 2 30. 31.done 2、系统状况监控 1.#!/bin/sh 2. 3.#systemstat.sh

实验一Shell程序设计已完成

Shell程序设计 一、实验目的 1、了解和熟悉创建并使用脚本的步骤。 2、熟悉bash的控制结构。 3、学会简单的shell编程。 二、实验内容 1、创建一个简单的列目录和日期的shell 脚本并运行之。 2、用Shell 语言编制Shell 程序,该程序在用户输入年、月之后,自动打印数出该年该月的日历。 3、编程提示用户输入两个单词,并将其读入,然后比较这两个单词,如果两个单词相同则显示“Match”,并显示“End of program”,如果不同则显示“End of program”。 4、编程使用case 结构创建一个简单的菜单,屏幕显示菜单: a. Current date and time b. User currently logged in c. Name of the working directory d. Contents of the working directory Enter a,b,c or d: 三、实验步骤 1、创建一个简单的列目录和日期的shell脚本并运行之。 步骤: 键入下列命令,创建一个新文件: (1)cat >new_script (2)输入下列行: echo Your files are ls echo today is date 按回车键将光标移到一个新行,按ctrl + D 键保存并退出。 (3)检查文件内容,确保它是正确的: #cat new_script (4)运行脚本,输入它的文件名: #new_script 该脚本不运行。 (5)输入下列命令,显示文件的权限: #ls -l new_script 权限表明该文件不是可执行。要通过简单调用文件名来运行脚本,必须有权限。 (6)输入下列命令,使new_script变成可执行文件。 chmod +x new_script (7)要查看新的权限,输入: ls-l 现在拥有文件的读、写和执行权限。 (8)输入新脚本的名字以执行它: new_script 所有输入到文件的命令都执行,并输出到屏幕上。

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.写一个脚本,测试位置参数

LinuShell程序设计实验

Linux shell程序设计实验指南 请在vi中逐一编辑并执行以下10个shell脚本程序,然后结合所学知识和程序的输出分析各程序中各语句的含义: 1.编写一个简单的回显用户名的shell程序。 #!/bin/bash #filename:date echo "Mr.$USER,Today is:" echo 'date' echo Whish you a lucky day! 2.使用if-then语句创建简单的shell程序。 #!/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 3.使用if-then-else语句创建一个根据输入的分数判断是否及格的shell程序。 #!/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 4.使用case语句创建一个菜单选择的shell程序。 #!/bin/bash #filename:za #Display a menu echo _ echo "1 Restore"

常用shell脚本指令

常用shell脚本命令 1、显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2、删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' filename 3、删除当前行与下两行的内容: sed -i '/aaa/{N;N;d;}' filename 依次类推,删除三行,则为{N;N;N;d;},分析知:N为next 4、得出以空格为分割的字符串中单词的个数,即统计个数: awk ' { print NF } ' 如显示字符串VALUE中的单词个数,其中VALUE为:aaa bbb ccc ddd ee f 则执行 echo $VALUE | awk ' { print NF } ' 后的结果为6 5、在linux中建立一个文件与另一文件的链接,即符号链接 ln -s /var/named/chroot/etc/named.conf named.conf 这要就建立了当前目录的文件named.conf对/var/named/chroot/etc/named.conf 的符号链接。即操作named.conf就意味着操作实际文件/var/named/chroot/etc/named.conf ,这时用ll命令查看的结果如: lrwxrwxrwx 1 root root 32 Mar 22 12:29 named.conf -> /var/named/chroot/etc/named.conf 注意:当用sed来通过named.conf来删除一部分信息时,会将符号链接的关系丢掉,即会将named.conf变成一个实际文件。所以需对实际文件进行删除操作。 6、显示指定字符范围内的内容: 如:显示文件test.txt中字符#test begin与#test end之间所有的字符 sed -n "/#test begin/,/#test end/p" test.txt 或 awk "/#test begin/,/#test end/" test.txt 在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则. 1. 单引号和双引号的区别 单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符,不会作变量的引用,直接输出字符窜。请看如下例子: [root@linux ~]# name=HaHa [root@linux ~]# echo $name HaHa [root@linux ~]# myname="$name is wow" [root@linux ~]# echo $myname HaHa is wow [root@linux ~]# myname='$name is wow'

题目1 shell 程序设计

题目1 shell 程序设计 1.1 实验目的 Linux操作系统中shell是用户与系统内核沟通的中介,它为用户使用操作系统的服务提供了一个命令界面。用户在shell提示符($或#)下输入的每一个命令都由shell先解释,然 后传给内核执行。本实验要求用C语言编写一个简单的shell程序,希望达到以下目的: ●用C语言编写清晰易读、设计优良的程序,并附有详细的文档。 ●熟悉使用Linux下的软件开发工具,例如gcc、gdb和make。 ●在编写系统应用程序时熟练使用man帮助手册。 ●学习使用POSIX/UNIX系统调用、对进程进行管理和完成进程之间的通 信,例如使用信号和管道进行进程间通信。 ●理解并发程序中的同步问题。 ●锻炼在团队成员之间的交流与合作能力。 1.2 实验要求 1.2.1 ysh解释程序的重要特征 本实验要实现一个简单的命令解释器,也就是Linux中的shell程序。实验程序起名为ysh,要求其设计类似于目前流行的shell解释程序,如bash、csh、tcsh,但不需要具备那么复杂的功能。ysh程序应当具有如下一些重要的特征: ●能够执行外部程序命令,命令可以带参数。.。 ●能够执行fg、bg、cd、history、exit等内部命令。 ●使用管道和输入输出重定向。 ●支持前后台作业,提供作业控制功能,包括打印作业的清单,改变当前 运行作业的前台/后台状态,以及控制作业的挂起、中止和继续运行。 除此之外,在这个实验中还须做到: ●使用make工具建立工程。 ●使用调试器gdb来调试程序。 ●提供清晰、详细的设计文档和解决方案。 1.2.2 ysh解释程序的具体要求 1. Shell程序形式 本实验的ysh程序设计不包括对配置文件和命令行参数的支持。如果实现为像bash那样支持配置文件,当然很好,但本实验并不要求。ysh应提供一个命令

相关文档