当前位置:文档之家› Linux第7次课:Shell 中的函数

Linux第7次课:Shell 中的函数

Linux第7次课:Shell 中的函数
Linux第7次课:Shell 中的函数

1.UE 的简单使用

2.While 变形使用方式2.1. 第一种

命令1 | while read 变量名

do

done

2.2. 第二种

while read 变量名

do

done < 文件名

3.Shell 中的函数

C语言

返回值函数名称(参数列表)

{

}

3.1. 函数的定义

[function] 函数名()

{

}

如果同一个shell 中定义多个同名的函数,后定义的函数会覆盖之前定义的函数。

3.2. 函数的调用

函数名[参数1…]

函数必须先定义后调用。

函数的定义过程中可以被递归调用。

3.3. 函数的参数

函数的传参方式依然使用位置变量

3.4. 函数的返回值

return

return 数值

注意:函数中的返回值交给了操作系统内核,最终可以使用$? 获得到这个返回值。

3.5. 函数中的变量作用域

TestFunction()

{

Num=$1

echo $Num

}

TestFunction 10

echo $Num

在Shell 中,函数不能框定用户变量作用域。

内部命令local 的作用是,避免了函数中变量与用户变量的冲突。使得函数块中用local 修饰的变量具有局部变量特征。

练习1

编写一个shell函数完成等腰三角形的*号打印,打印的行数通过传给这个函数的参数控制。

请选择一下几种实现方案:1)双层循环方式;2)递归方式。

练习2

4.sed 命令

两个基本使用方式

使用方式一:sed [options] sed脚本语句被处理的文件

使用方式二:sed [options] –f sed脚本文件被处理的文件

Sed脚本命令

p ‘1, 10’p ‘1p’‘$p’

s s/被替换模式/替换模式/p

多个sed脚本命令连用,需要–e 选项(option)

使用方式一的时候,需要用单引号将模式扩起来

使用方式二的时候,编写的命令不需要单引号

#!/bin/sed

/wangxh/p

Test.sed

Test.sed 被处理的文件名

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

Red_Hat_Linux常用命令大全

Red Hat Linux常用命令汇总 Linux 常用命令汇总 ls命令: 1. ls //列出当前目录的文件和文件夹 2. ls –a //列出当前目录的文件和文件夹,包含隐藏文件 3. ls –l //列出详细信息 4. ls 目录 //列出某目录下的文件 pwd命令 //查看当前所在位置 du 命令 1. du 目录 //查看目录的总容量以及子目录的容量 2. du –s 目录 //查看目录总容量 cd 命令 1.cd .. //回上一级目录 2.cd / //回根目录 3. cd //回用户主目录 4.cd 目录路径 //去某目录 mkdir 目录名 //创建目录 rmdir 空目录名 //删除空目录 rm 文件名 //删除文件 rm –rf 目录名 //删除目录以及目录下所有文件 mount 命令 1.mount /dev/cdrom /mnt/cdrom //挂载光驱到 /mnt/cdrom目录下2.mount -t vfat /dev/sda1 /mnt/u //挂载U盘到 /mnt/u目录下

3. umount /mnt/cdrom //卸载光驱 fdisk –l //查看本机存储设备 file 文件名 //查看文件类型 find 目录名–name “*.c” //在某目录下查找文件为*.c的文件 whereis 文件名 //查找文件在哪些目录下 cat 文件名 //显示文件内容 cat 文件名 | grep 文字 //只显示包含文字相关的内容 cat 文件名 | more //分页显示文件内容 tail 文件名 //查看文件末尾 head 文件名 //从头查看文件 cp 命令: cp 文件1 文件2 //复制文件1 到文件2 cp 文件1 目录1 //复制文件1到目录1下 cp 目录1/文件1 目录2 //复制目录1下的文件1到目录2下 cp –r 目录1 目录2 //复制目录1下所有内容到目录2 mv 命令: mv 文件1 文件2 //重命名文件1为文件2 mv 文件1 目录1 //移动文件1到目录1下 mv 目录1/文件1 目录2 //移动目录1下的文件1到目录2下 mv –r 目录1 目录2 //移动目录1下所有内容到目录2 chmod 命令: chmod u+x g+r o-w 文件名 //为文件设置权限(用户,组,其他人)chmod 744 文件名 //为文件设置权限(1-执行,2-写,4-读) chown 命令: chown 用户文件名 //把文件改为用户所有

Linux系统的常用命令和服务器配置

Linux系统的常用命令和服务器配置 一、添加用户useradd命令 例子: -m 自动创建用户的主目录,并把框架目录(/etc/skel)文件复制到用户目录上。 -g 设置基本组,用户将在该组中。 -G 把用户加到所有逗号间隔的分组中。 -s 制定使用的shell。 -c 描述信息。 -d 为账号设置主目录。 -r 系统帐号,无需再/home下创建主目录。 最后的是用户名。 二、指定口令(密码)passwd 例子: #passwd 用户名 回车就会提示输入密码了。 三、删除用户userdel 例子: #userdel 用户名 #userdel –r 用户名 -r 删除其主目录(/home/…..) 四、文件系统命令

4.1 fdisk命令 (1)fdisk –l :显示硬盘上的所有分区。既分区类型(FAT32、Ext3)。 (2)df –h :显示文件系统是如何挂载的。 (3)fdisk /dev/hdb1 :格式化第二个IDE磁盘 4.2 mount命令挂载文件系统 (1)mount (不使用参数)查看系统挂载情况。 (2)mount /mnt/cdrom :挂载光驱,可用cd /mnt/cdrom 后ls查看光盘上的内容。 (3)mount /mnt/floppy :挂载软盘,可用cd /mnt/floppy 后ls查看软盘上的内容。 2、3中可以使用/dev/cdrom和/dev/fd0代替挂载点,得到同样的效果! (4)mount –t msdos /dev/fd0 /mnt/floppy :挂载DOS软盘到/mnt/floppy下。 (5)挂载Windows分区 #fdisk -l :列出硬盘分区。 #mkdir /mnt/win :创建一个目录,用于挂载。 #mount -t vfat /dev/hda1 /mnt/win :假设Windows在第一个IDE硬盘的第一个分区上。 注:可以使用–t auto 参数令系统自动监测文件类型! -r 以只读方式挂载。 -w 读写方式挂载。 4.3 umount命令卸载文件系统 (1) umount /mnt/floppy 将设备(如/dev/fd0)从挂载点/mnt/floppy卸载。也可以使用下列方式完成这一工作: umount /dev/fd0为了使该分区对于Linux永久可用,需在/etc/fstab文件中添加如下一行: /dev/hda1 /mnt/win vfat defaults 0 0 五、文件相关命令 5.1 文件权限chmod 例子:

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常用命令

(1)基于虚拟机的Linux操作系统的使用 1.启动VMware Workstation应用程序,启动Windows以后,选择开始—程序——VMware—VMware Workstation,出现如图7—1所示窗口。 2.选择File—Open选择安装好的Linux虚拟机文件,或者直接单击Start this virtual machine 启动Linux操作系统。 3.启动系统后需要输入用户名和密码,如图7—2所示,用户名为“root”,密码为“jsjxy308”。 4.启动终端,成功进入系统后,选择“应用程序”—“系统工具”—“终端”。 5.在终端中执行Linux 命令,终端运行以后,就可以在这里输入Linux命令,并按回车键执行。 (2)文件与目录相关命令的使用 1.查询/bin目录,看一看有哪些常用的命令文件在该目录下: ll /bin 2.进入/tmp目录下,新建目录myshare: cd /tmp mkdir myshare ls –ld myshare/ 3.用pwd命令查看当前所在的目录: pwd 4.新建testfile文件: touch testfile ls -l 5.设置该文件的权限模式: chomd 755 testfile ls -l testfile 6.把该文件备份到/tmp/myshare目录下,并改名为testfile.bak: cp testfile myshare/testfile.bak ls -l myshare/ 7.在/root目录下为该文件创建1个符号连接: ln -s /tmp/testfile /root/testfile.ln ls -l /root/testfile.ln 8.搜索inittab 文件中含有initdefault字符串的行: cat /etc/inittab | grep initdefault (3)磁盘管理与维护命令的使用 1)Linux 下使用光盘步骤 1.确认光驱对应的设备文件: ll /dev/cdrom 2.挂载光盘: mout -t iso9600/dev/cdrom test/dir 1.查询挂载后的目录: ll /media/cdrom 2.卸载光盘: umount /dev/cdrom 2)Linux下USB设备的使用

Linux服务器常用命令(简化版)

Linux服务器常用命令(简化版) 信息来源:网络整理:HY 日期:2011-5-27 Intel Fortran编译 Linux shell管道命令(pipe)使用及与shell重定向 Linux命令替换 Linux 任务控制(bg jobs fg nohup &) Linux进程查看 Linux账户管理 Linux系统与硬盘信息查询 Linux VIM语法高亮与程序段错误 Linux十大常用命令

Intel Fortran编译 完整编译顺序 $ ifort -c Hello.f90 -o Hello.o编译源文件(.f90)生成目标文件(.o) $ ifort Hello.o -o Hello链接目标文件生成可执行程序Hello $./Hello 执行可执行程序 默认(常用编译方法) $ ifort Hello.f90编译&链接 $./a.out 执行a.out(默认可执行程序名) 后台运行 $ ./a.out & 后台运行,退出shell会使程序停止,输出信息会显示在屏幕,不建议这样使用$nohup ./a.out & 输出到屏幕的信息输出到nohup.out文件 $nohup ./a.out > screen.txt & 输出到屏幕的信息输出到screen.txt文件(推荐) Linux shell管道命令(pipe)使用及与shell重定向 Ref:https://www.doczj.com/doc/be4866394.html,/chengmo/archive/2010/10/21/1856577.html 重定向 详细解释参考:https://www.doczj.com/doc/be4866394.html,/view/2173319.htm 在Linux命令行模式中,如果命令所需的输入不是来自键盘,而是来自指定的文件,这就是输入重定向。同理,命令的输出也可以不显示在屏幕上,而是写入到指定文件中,这就是输出重定向。 重定向分为: 重定向分为 输出重定向、输入重定向和错误重定向。 < 实现输入重定向。 >或>> 实现输出重定向,用户可以使用输出重定向把一个命令的输出重定向到一个文件 1)ls –l /etc>dir 将ls命令生成的/etc目录下的一个清单存到当前目录 中的dir文件,而不在屏幕输出。 2)ls –l /usr>>dir 将ls命令生成的/usr目录的一个清单以追加的方式存 到当前目录中的dir文件中。 重定向连接两个或多个文件? 使用cat命令并重定向输出到一个文件可以连接两个或多个文件。 重定向追加到一个文件:可以使用双重定向输出符号“>>”,保留文件以前的内容。 这种情况下,命令输出追加到另一个文件中。 重定向重定向标准输出到一个设备? 除了重定向一个命令的输出到一个文件,也可以把它重定向到一个设备,因为UNIX系统将设备当做文件。 $echo “Hello! I am petter!” > /dev/tty01 重定向标准输入? 使用“<”重定向输入。例如:用户已经创建好了一个文件letter。如果希望通过电子邮件发送给用户petter。可以使用下面方式:$mail petter < letter 重定向标准错误重定向? 没有专门的符号用于重定向stderr。我们可以同样使用“< ”或“>”符号,但需在它前面补一个数字2。 PS:重定向的优先级大于管道的优先级!^_^ 管道右边的命令只能对管道左边的命令的标准输出(输出到屏幕)起作用,不对错误输出(也输出到屏幕)起作用。 一个命令的执行首先决定0,1,2设备的定向,然后才执行命令,可以将定向理解为命令执行

LinuxShell脚本教程(一):Shell入门

LinuxShell脚本教程(一):Shell入门 LinuxShell脚本教程(一):Shell入门 在这里我们介绍的是Bashshell(BourneAgainShell),它是目前大多数GUN/Linux系统默认的shell环境。书中所有的实验都是在Ubuntu14.04LTS环境下完成的。 在ubuntu14.04LTS系统中,已经默认安装了一个Terminal,我们可以通过多种方法打开终端。这里介绍两种: 方法一:通过系统自带的检索系统,我们可以轻松找到终端(Terminal),单击即可打开。检索系统可以通过快速启动栏右上角的按钮启动。 方法二:为了之后可以方便的打开终端,建议将终端固定在快速启动栏。操作方法为:通过方法一打开终端后,快速启动栏会出现一个终端的图表,在图表上单击鼠标右键,选择“固定在启动栏”即可将终端固定在快速启动栏。 默认情况下,终端提示符为:username@hostname或者 root@hostname#。代表普通用户,#代表root用户。 例如:我在打开终端后,提示符为:wxb@ubuntu:~$。 root是linux系统中权限最高的用户,能力大风险也大,因此不介意使用root用户作为登陆系统的.默认用户。 通常情况下,对于个人版linux操作系统,系统上会存在两个用户,即用户自己以及root用户。对于使用者来说,时有需要切换用户,以执行一些普通用户不能执行的操作,此处提供两种方法切换用户。 方法一:临时切换。顾名思义,这种切换方法仅仅是临时的,当指令执行完成后,就会切换到原来的用户。切换指令为:sudocommand,sudo是superuserdo的简写。

SuSE Linux常用命令

Novell的Suse Linux常用命令举例讲解 2008-03-28点击: 1128 Novell的Suse Linux常用命令举例讲解 1.修改vftpd配置文件 vi /etc/vsftpd.conf #listen=YES vi /etc/xinetd.d/vsftpd 将“disable=yes” 改为“disable=no”使xinetd服务启动后接收到ftp连接请求时,能够自动启动vsftpd服务进程 2. mkdir -p /srv/ftp/linux-10 创建文件夹-p 如果文件夹不存在自动创建 3. chown -R ftp:ftp /srv/ftp/linux-10 指定linux-10目录及其子目录的拥有者为ftp用户和ftp组 4. chmod -R 755 /srv/ftp/linux-10 指定linux-10目录及其子目录的访问权限 5. mount /dev/hdc /srv/ftp/linux-10/disk1 将设备中的内容挂载到disk1中 umount /srv/ftp/linux-10/disk1 卸载掉disk1中挂载的文件 6. /etc/init.d/xinetd start 启动FTP服务 7. df命令 功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 语法:df [选项] 说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。 该命令各个选项的含义如下: -a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。 -k 以k字节为单位显示。

linux Shell(脚本)编程入门 实例讲解详解

linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在bash 的大姐,bourne shell中运行)。 如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi等来编写我们的shell程序。程序必须以下面的行开始(必须方在文件的第一行): 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行: 然后,您可以通过输入: ./filename 来执行您的脚本。 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 变量 在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:

Linux常用命令详解(配合示例说明,清晰易懂)

Linux常用命令详解 (常用、详细) BISTU 自动化学院 刷碗小工(frisen.imtm) 2010年11月 开源社区,造福大家,版权所有,翻录不究(初次接触Linux命令可能对以下说明有不少疑问,可待看完一遍后再回头细看) (配合Ctrl + F可快速查找你想了解的命令)

索引:(待完善) 文件说明:Linux命令很多,但最常用的80个左右 文档内容充实,用示例说明命令如何使用笔者力求语言简洁,清晰易懂 由于忙于其他事情,改进排版的工作只能搁置了 最后,望此文档能为大家Linux学习之路献微薄之力 一、路径: 执行命令前必须要考虑的一步是命令的路径,若是路径错误或是没有正确的指定,可能导致错误的执行或是找不到该命令。要知道设置的路径,可执行以下命令: 一般而言,本书的命令位于/bin、usr/bin、/sbin、/usr/sbin之中。若读者执行了命令却出现“command not find”或是“命令不存在”的字样,就必须要确定该命令的位置是否在命令的路径中,或是系统上根本没有安装该套件。 二、命令顺序: 若在shell内置的命令/bin以及/usr/bin之下都出现了命令pwd,那当我们执行该命令时,会执行哪一个?答案是第一优先执行shell内置的命令,再执行路径中的设置;因此若有相同名称的命令时,必须要注意顺序设置,或是直接输入完整路径。 三、参数(或称选项)顺序: 一般除了特殊情况,参数是没有顺序的。举例而言,输入“–a –v”与输入“–v –a”以及“–av”的执行效果是相同的。但若该参数后指定了要接的文件或特殊对象,如“–a cmd1 –v cmd2”,则不能任意改变选项顺序。 四、常用参数: 下面所列的是常见的参数(选项)意义: --help,-h 显示帮助信息 --version,-V 显示版本信息 -v 繁琐模式(显示命令完整的执行过程) -i 交谈模式(指定界面) -l 长列表输出格式 -q,-s 安静模式(不显示任何输出或错误信息) -R 递归模式(连同目录下所有文件和子目录一起处理) -z 压缩 五、命令的结合与定向: 命令中除了一般命令外,还有管道(或称途径)(|)与定向(>或>>)。 管道(途径)的用法: “命令一[选项]”| “命令二[选项]”,也就是将“命令一[选项]”的输出结果传到“命令二[选项]”,通过命令二的处理之后才输出到标准输出(屏幕)上。比如“ls /etc”会列出etc下的所有文件,若加上“| less”,也就是“ls /etc | less”,则会将“ls /etc”的结果通过less分页输出。 定向的用法: 将结果定向到命令的输出设备,一般不加文件名意为将结果输出到屏幕,若是在定向后加上文件名,则会将命令的执行结果输出到定向的文件,例如“ls > temp.txt”,就会将ls 的结果输出到文件temp.txt中。“>”与“>>”的差异在于前者是覆盖,而后者是附加。 六、命令中的命令: 许多命令在执行后,会进入该命令的操作模式,如fdisk、pine、top等,进入后我们必须要使用该命令中的命令,才能正确执行;而一般要退出该命令,可以输入exit、q、quit或是按【Ctrl+C】组合

Shell编程基础教程

1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须放在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。要使脚本可执行: chmod +x filename 这样才能用./filename 来运行 1.1.2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 1.1.3 变量 在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写: #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 有时候变量名很容易与其他文字混淆,比如: num=2 echo "this is the $numnd" 这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量: num=2 echo "this is the ${num}nd"

这将打印: this is the 2nd 1.1.4 环境变量 由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。 1.1.5 Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: s虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。 常用命令语法及功能: echo "some text": 将文字内容打印在屏幕上 ls: 文件列表 wc –l filewc -w filewc -c file: 计算文件行数计算文件中的单词数计算文件中的字符数 cp sourcefile destfile: 文件拷贝 mv oldname newname : 重命名文件或移动文件 rm file: 删除文件 grep 'pattern' file: 在文件内搜索字符串比如:grep 'searchstring' file.txt cut -b colnum file: 指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut -b5-9 file.txt千万不要和cat命令混淆,这是两个完全不同的命令 cat file.txt: 输出文件内容到标准输出设备(屏幕)上 file somefile: 得到文件类型 read var: 提示用户输入,并将输入赋值给变量 sort file.txt: 对file.txt文件中的行进行排序 uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq expr: 进行数学运算Example: add 2 and 3expr 2 "+" 3 find: 搜索文件比如:根据文件名搜索find . -name filename -print tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux

Linux常用命令小结

Linux常用命令小结 scp 远程文件复制 主机A:192.168.1.240, 主机B:192.168.1.102,其ssh都允许root登录,要把A上的/root/abc.zip复制到B的/persistent目录, 可在A机上使用命令: scp /root/abc.zip root@192.168.102:/persistent/ 若端口非22,比如8022,则加-P参数: scp -P 8022 /root/abc.zip root@192.168.1.102:/persistent/ 也可在B机上使用命令: scp root@192.168.1.240:/root/abc.zip /persistent/

vi 文件编辑 vi file 编辑或创建文件file vi分为编辑状态和命令状态。输入i进入编辑状态,按ESC键退出编辑状态。 命令状态下,常用命令有: :q(退出) :q!(不保存退出,强制退出) :w(保存文件) :w!(不询问方式写入文件) :1,20w ! tmp (第1行到第20行保存到文件tmp) :r file(读文件file) :%s/oldchars/newchars/g(将所有字串oldchars换成newchars) :0,$s/string1/string2/g(0,$:替换范围从第0行到最后一行) :%s/^[ ]\+/^I/ (将一行开头的若干空格替换成Tab) /string(查找string字符串) ?string(向上查找string字符串) :1,8d (删除第1行到第8行) :%s/^.\{5}//gic (删除每行的前5个字符) :%s/^M/ /g (删除^M) :g/^$/d (删除空行(只含有回车)) :g/^[^I| ]*$/d (删除所有空行(^I表示Tab,(空行中含有空格或Tab或者只有回车或者既有空格又有Tab)))

部署常用Linux命令

部署常用Linux命令 一、常用命令 1、cd切换目录,如:cd /:切换到根目录,cd /usr/VI3.0:切换到/usr/VI3.0目录下,cd ..返回上一级 目录,如当前目录是/usr/VI3.0,cd ..后就到了/usr目录下,suse linux下可以直接使用..来返回 上一级目录,…返回前两级目录。 2、ls,ll都可以查看当前目录下的文件,ll详细列出了目录下文件的信息。 3、mkdir file创建文件夹 4、unzip 文件名:解压ZIP包,对zip文件进行解压,如:unzip data.zip; 5、cp –r /usr/data /usr/VI3.0/:拷贝目录下的所有文件到另一个目录下; 6、rm:删除rm –R log/ 删除log文件夹下所有信息,rm –rf log/ tmp/ work/ 同时删除多个文件 夹下的信息; 7、find –name ‘f.processed’ | xargs rm –rf {} 8、chown:改变文件的拥有者,如:chown ftpuser:ftp file.txt 将file.txt文件的所有者改为ftpuser 用户; 9、chmod:给文件加权限(r:读取权限,数字代号为“4”,w:写入权限,数字代号“2”,x:执行或 切换权限,数字代号为“1”,-:不具有任何权限,数字代号为“0”),chmod abc file(其中a、 b、c各为数字,分别表示User、Group、及Other的权限),如:chmod 777 file 就是给file 文件添加了所有用户的权限,任何用户都能操作file文件,其实这样是不安全的,chmod 775 file 就行了; 10、vi、cat、tail都有查看文件的功能,如果需要查看并修改文件使用vi file,为避免误操作查看文 件使用cat file,动态查看文件,文件内容有更新时使用tail –f file; 11、ps –ef|grep java :查看Java进程; 12、top :查看服务器运行状态; 13、df –h :查看服务器硬盘使用情况; 14、rabbitmqctl list_queues –p / :查看安装的信息队列信息。 15、rsync –delete-before –d /home/tmep /data/VoiceFiles/G/1/0/20130221用/home/tmep 下文件替换/data/VoiceFiles/G/1/0/20130221下文件,/home/tmep下是空目录,即删除

shell脚本实例

shell脚本实例 1. 写一个脚本,利用循环计算10的阶乘 #!/bin/sh factorial=1 for a in `seq 1 10` do factorial=`expr $factorial \* $a` done echo "10! = $factorial" 注:上面有一行,for a in `seq 1 10`,其中seq 1 10 , 即列出现1到10之间所有的数字,这一行也可改为:for a in "1 2 3 4 5 6 7 8 9 10" 2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然 后打印出该数值,然后再次要求用户输入数值。直到用户输入 "end"停止。 #!/bin/sh

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整除的数之和#!/bin/sh sum=0 for a in `seq 1 100` do if [ `expr $a % 3` -ne 0 ] then continue

echo $a sum=`expr $sum + $a` done echo "sum = $sum" 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/sh

PowerShell基础教程

PowerShell基础教程一:Windows PowerShell简介 XP/Server 2003/Vista/Server 2008操作系统的脚本语言。包括 Cmd.exe 、SH、KSH、CSH以及BASH Unix在内的大多数外壳程序的操作方式都是在新的进程中执行命令或实用工具程序,并以文本格式向用户显示结果。多年以来,许多文本处理实用工具程序,如sed、AWK 和 PERL,都已逐渐发展为支持这种交互模式。 这些外壳程序也会提供内置于外壳程序中并在外壳程序处理器中执行的 命令,例如KSH 中的typeset命令和以及 Cmd.exe 中的 dir 命令。在大多数外壳程序中,由于内置命令数量少,从而导致许多实用工具程序应运而生。 针对这一点,Windows PowerShell 有不同的做法。 ◆ Windows PowerShell 并不处理文本,而是处理以.NET平台为基础的对象; ◆Windows PowerShell 附带了数量庞大的内置命令集和一致的接口; ◆对于各个工具,全部的外壳程序命令都使用相同的命令剖析器,而非使用不同的剖析器,这项特点会使你更容易学会每种命令的使用方式。 其中最棒的就是你完全不需要舍弃已使用习惯的工具,你可以继续在Windows PowerShell 中使用诸如Net、SC 和 Reg.exe 等传统的 Windows 工具。 Windows PowerShell Cmdlet Cmdlet (发音如“command-let”) 是指在 Windows PowerShell 中用来操作对象的单一功能命令。你可以依据其名称格式来加以辨识 Cmdlet -- 以破折号 (-) 分隔的动词和名词,例如Get-Help、Get-Process 和 Start-Service。 在传统的外壳程序中,命令是极为简单 (例如 attrib.exe) 到极为复杂 (例如 netsh.exe) 范围内的可执行程序。 在 Windows PowerShell 中,大多数Cmdlet 都相当简单,而且设计成与其他Cmdlet 结合使用。例如,"get" Cmdlet 只提取数据,"set" Cmdlet 只创建或修改数据,"format" Cmdlet 只格式化数据,而 "out" Cmdlet 只将输出导向到指定的目的地。每种 Cmdlet 都具备可在输入下列命令时加以显示的说明文件:

Suse_Linux常用命令小结

Suse Linux常用命令 目录 1、Suse9下配置默认网关 (1) 2、Suse9下开启telnet服务 (1) 3、Suse9下开启FTP服务 (2) 4、Suse9下配置rlogin (2) 5、查看版本、内核 (2) 6、查看CPU、MEM (3) 7、查看操作系统位数 (3) 8、查看VCS双机软件版本 (3) 9、主机名修改 (3) 10、检查系统分区 (4) 11、检查内存空间 (4) 12、检查时区设置 (4) 13、修改时区设置 (4) 14、系统时间设置 (4) 15、重新设置光纤驱动 (4) 16、检查磁盘分区信息 (4) 17、创建物理卷 (4) 18、查看已经创建的PV (5) 19、创建卷组 (5) 20、创建逻辑卷 (5) 21、查看创建的卷组和逻辑卷 (5) 22、创建文件系统 (5) 23、激活/去激活卷组 (5) 24、查找卷组信息 (5) 25、IP地址配置(临时生效,系统重启后会丢失) (5) 26、IP地址配置(永久生效) (6) 27、配置IP地址与节点名映射关系 (7) 28、激活/去激活网卡 (7) 29、配置双机ssh信任关系(两个节点上都要执行该操作) (7) 30、配置用户的.rhosts文件 (8) 31、配置心跳网卡信息 (8) 32、修改主机名 (9) 33、VCS涉及主机名的修改 (10) 34、XDM配置 (10) 35、Suse10sp1下开启FTP服务 (11) 36、查看操作系统补丁 (12) 37、查看操作版本 (12)

1、Suse9下配置默认网关 a、在/etc/sysconfig/network/routes文件下添加如下行: default 网关IP地址 - - b、重启网络服务 # /etc/init.d/xinetd restart # rcnetwork restart c、查看路由 # netstat -r 2、Suse9下开启telnet服务 a、修改/etc/xinetd.d/telnet文件:disnable=no 如果/etc/xinetd.d下不存在telnet文件,可能是telnet服务包没有安装,需要通过光盘安装好。 b、修改/etc/pam.d/login文件,注释如下行,允许root用户telnet "auth required pam_securetty.so" c、编辑/etc/securetty文件 # vi /etc/securetty 在文件中增加下面的内容: pts/0 pts/1 pts/2 pts/3 pts/4 pts/5 pts/6 pts/7 pts/8 pts/9 d、重启网络服务

Linux(centos)的常用基本命令

Linux的常用基本命令。 首先启动Linux。启动完毕后需要进行用户的登录,选择登陆的用户不同自然权限也不一样,其中“系统管理员”拥有最高权限。 在启动Linux后屏幕出现如下界面显示: …… Red Hat Linux release 9 (Shrike) Kernel2.4.20.8 on an i686 login: 输入:root(管理员名)后,计算机显示输口令(password:),输入你的口令即可。当计算机出现一个“#”提示符时,表明你登录成功! 屏幕显示Linux提示符:[root@localhost root]#_ 这里需要说明的是“Red Hat Linux release 9 (Shrike)”表示当前使用的操作系统的名称及版本。“2.4.20.8”表示Linux操作系统的核 心版本编号。“i686”表示该台电脑使用的CPU的等级。 下面我们来介绍常用基本命令 一,注销,关机,重启 注销系统的logout命令 1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可: [root@localhost root]#logout Red Hat Linuxrelease 9(Shike) Kernel2.4.20.8 on an i686 Login: ←回到登陆的画面 2,关机或重新启动的shutdown命令 Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。 参数说明如下:  立即关机:-h 参数让系统立即关机。范例如下: [root@localhost root]#shutdown –h now ←要求系统立即关机  指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown命令,范例如下: [root@localhost root]#shutdown now ←立刻关机

相关主题
文本预览
相关文档 最新文档