shell基础Unix系统

| 收藏本文 下载本文 作者:Ling枫

以下是小编整理的shell基础Unix系统(共含6篇),欢迎阅读分享。同时,但愿您也能像本文投稿人“Ling枫”一样,积极向本站投稿分享好文章。

shell基础Unix系统

篇1:shell基础Unix系统

}} Shell变量名使用的特殊字符 $# 传送给命令Shell的参数序号 $- 在Shell启动或使用set命令时提供选项 $? 上一条命令执行后返回的值 $$ 当前shell的进程号 $! 上一个子进程的进程号 $@ 所有的参数,每个都用双括号括起 $* 所有参数,用双括号括起 $n 位置参

}}

Shell变量名使用的特殊字符

$# 传送给命令Shell的参数序号

$- 在Shell启动或使用set命令时提供选项

$? 上一条命令执行后返回的值

$$ 当前shell的进程号

$! 上一个子进程的进程号

$@ 所有的参数,每个都用双括号括起

$* 所有参数,用双括号括起

$n 位置参数值,n表示位置

当前shell名

echo “$HOME $PATH”

结果显示$/u/ice_walk/bin:/etc:/usr/bin

echo '$HOME $PATH' 结果显示$HOME $PATH

shell的逃逸符是一个“”,表示其后的字符不具有特殊的含义或不是shell的函数

echo $HOME $PATH

结果显$$HOME /bin:/etc:/usr/bin:

可以用变量和其他字符组成新的字,例如:

SUN=sun

echo $day

sunday

用户也可以在命令行上同时对多个变量赋值,赋值语句之间用空格分开:

X=x Y=y

注意变量赋值是从右到左进行的

}}}

expr命令将把一个算术表达式作为参数,通常形式如下:

expr [数字] [操作符] [数字]

由于Shell是按字符形式存储变量的,所以用户必须保证参加算术运算的操作数必须为数值,下面是有效的算术操作符:

+ 两个整数相加

- 第一个数减去第二个数

* 两整数相乘

/ 第一个整数除以第二个整数

% 两整数相除,取余数

用户不能单纯使用“*”做乘法,若输入:

$expr 4*5

系统将会报错,因为Shell看到“*”将会首先进行文件名替换。正确形式为:

$expr 4 * 5

结果显示:20

{{{{shell样例 注意:}}}}

#!/bin/bash

flag=1

top=10000

date >>/backup1/time.txt

while [ $flag -lt $top ] -lt是小于 注意 需要用[ ],且注意 [后 和]后,都有空格

do

cd /backup1/check

dd if=/dev/zero f=test_$flag.txt bs=1024 count=000

rm -f test_$flag.txt

flag=`expr $flag + 1`  注意 左边 需要用flag而不是$flag表示 给变量值,特别注意是=号,前后 不能有空格,而且 expr $flag + 1 需要用执行符``包括

done

}}}}}

echo命令可以使用一些特殊的逃逸字符进行格式化输出,下面是这些字符及其含义:

b Backspace

c 显示后不换行

f 在终端上屏幕的开始处显示

n 换行

r 回车

t 制表符

v 垂直制表符

反斜框

nnn 用1,2或3位8进制整数表示一个ASCII码字符

echo -en $“ttPress 'I' to enter interactive startup.”

-e表示 允许有新的意义

-n表示 不换行 如果 和 “”内的参数 有冲突,以“”内为准

}}

测试字符串间的关系

有关串的操作符如下:

str1 = str2当两个串有相同内容、长度时为真

str1 != str2当串str1和str2不等时为真

-n str1 当串的长度大于0时为真(串非空)

-z str1 当串的长度为0时为真(空串)

str1  当串str1为非空时为真

if [ -z “$IN_INITLOG” ]; 字符使用时 用“”

有关文件的测试

使用test进行的第三类测试是测试文件的状态,用户可以测试文件是否存在,是否可写以及其他文件属性,

下面是文件测试时使用的选项。注意只有文件存在时,才有可能为真。

-r file 用户可读为真

-w file 用户可写为真

-x file 用户可执行为真

-f file 文件为正规文件为真

-d file 文件为目录为真

-c file 文件为字符特殊文件为真

-b file 文件为块特殊文件为真

-s file 文件大小非0时为真

-t file 当文件描述符(默认为1)指定的设备为终端时为真

复杂的条件测试(and 、or 、not)

-a 与

-o 或

! 非

就是组合条件了,任何高级语言中都有的(NOT 、AND 、OR),例如:

$test -r em.null -a -s em.null

$echo $?

结果显示:1

说明了em.null并不是可读并且非空的文件

测试两个整数之间关系

test命令与expr命令一样,也可以把字符转变成整数,然后对其操作。test命令对两个数进行比较,使用的操作符如下:

int1 -eq int2 两数相等为真 equal   (eq)

int1 -ne int2 两数不等为真 not equal  (ne)

int1 -gt int2 int1大于int2为真  great  (gt)

int1 -ge int2 int1大于等于int2为真 great equal (ge)

int1 -lt int2 int1小于int2为真  less than (lt)

int1 -le int2 int1小于等于int2为真 less than equal (le)

本阶段 小程序:

使用while循环使程序执行一次可以备份多个用户指定的目录。代码如下:

echo “欢迎使用备份小程序”

ANS=Y

while [ $ANS = Y -o $ANS = y ]

do

echo _

#读目录名

echo “输入要备份的目录名:c”

read DIR

if [ ! -d $DIR ]

then

echo “$DIR不是一个目录!”

exit 1

fi

cd $DIR

echo “请选择:”

echo _

echo “1 恢复数据到 $DIR”

echo “2 备份$DIR的数据”

echo

echo “请选择:c”

read CHOICE

case “$CHOICE” in

1) echo “恢复中… …”

cpio -i 2) echo “备份中… …”

cpio -o >/dev/rmt0;;

*) echo “选择无效”

esac

if [ $? -ne 0 ]

then

echo “cpio执行过程中出现问题”

exit 2

fi

echo “继续别的目录吗?(Y/y)c”

read ANS

done

2。

if [ $# -eq 0 ]

then

echo “Usage:x_shift2.sh 参数”

exit 1

fi

3。

I=1

while [ $I -lt 10 ]

do

{

echo “$Ic”

I=`expr $I + 1`

if [ $I -eq 3 ]

then

continue

fi

if [ $I -eq 7 ]

then

break

fi

}

done

原文转自:www.ltesting.net

篇2:Shell技巧Unix系统

1.test 测试 命令 test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下: (1)数值测试: -eq:等于则为真 -ne:不等于则为真 -gt:大于则为真 -ge:大于等于则为真 -lt:小于则为真 -le:小于等于则

1.test测试命令

test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下:

(1)数值测试:

-eq:等于则为真

-ne:不等于则为真

-gt:大于则为真

-ge:大于等于则为真

-lt:小于则为真

-le:小于等于则为真

(2)字符串测试:

=:等于则为真

!=:不相等则为真

-z 字符串:字符串长度伪则为真

-n 字符串:字符串长度不伪则为真

(3)文件测试:

-e 文件名:如果文件存在则为真

-r 文件名:如果文件存在且可读则为真

-w 文件名:如果文件存在且可写则为真

-x 文件名:如果文件存在且可执行则为真

-s 文件名:如果文件存在且至少有一个字符则为真

-d 文件名:如果文件存在且为目录则为真

-f 文件名:如果文件存在且为普通文件则为真

-c 文件名:如果文件存在且为字符型特殊文件则为真

-b 文件名:如果文件存在且为块特殊文件则为真

另外,Linux还提供了与(“!”)、或(“-o)、非(“-a”)三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低,同时,bash也能完成简单的算术运算,格式如下:

$[expression]

例如:var1=2

var2=$[var1*10+1]

则:var2的值为21。

2.if条件语句

if [ -x /sbin/quotaon ]; then

echo “Turning on Quota for root filesystem”

/sbin/quotaon /

elif [ -x /sbin/quotaon ]; then

/usr/bin/bash

else

echo “ok”

fi

3.for 循环

#!/bin/sh

WORD=“a b c d e f g h i j l m n o p q r s t u v w x y z”

for i in $WORD ; do

echo $i

done

#!/bin/sh

FILES=`ls /txt/*.txt`

for txt in $FILES ; do

doc=`echo $txt | sed “s/.txt/.doc/”`

mv $txt $doc

done

4.while和until 循环

#!/bin/sh

while [ -f /var/run/ppp0.pid ] ; do

killall pppd

done

#!/bin/sh

until [ -f /var/run/ppp0.pid ] ; do

sleep 1

done

Shell还提供了true和false两条命令用于建立无限循环结构的需要,它们的返回状态分别是总为0或总为非0

5.case 条件选择

#!/bin/sh

case $1 in

start | begin)

echo “start something”

;;

stop | end)

echo “stop something”

;;

*)

echo “Ignorant”

;;

esac

case表达式中也可以使用shell的通配符(“*”、“?”、“[ ]”),

6.无条件控制语句break和continue

break 用于立即终止当前循环的执行,而contiune用于不执行循环中后面的语句而立即开始下一个循环的执行。这两个语句只有放在do和done之间才有效。

7.函数定义

在shell中还可以定义函数。函数实际上也是由若干条shell命令组成的,因此它与shell程序形式上是相似的,不同的是它不是一个单独的进程,而是shell程序的一部分。函数定义的基本格式为:

functionname

{

若干命令行

}

调用函数的格式为:

functionname param1 param2 ……

shell函数可以完成某些例行的工作,而且还可以有自己的退出状态,因此函数也可以作为if、while等控制结构的条件。在函数定义时不用带参数说明,但在调用函数时可以带有参数,此时shell将把这些参数分别赋予相应的位置参数$1、$2、...及$*。

共2页: 1 [2] 下一页

原文转自:www.ltesting.net

篇3:Shell编程概述Unix系统

1.1 Shell编程概述 shell程序是一个包含 UNIX 命令的普通文件,这个文件的许可权限至少应该为可读和可执行,在shell提示符下键入文件名就可执行shell程序,数据可以通过三种方式传送到shell程序 ??-环境变量 ??-命令行参数 ??-用户的输入 shell是一

1.1 Shell编程概述

shell程序是一个包含UNIX命令的普通文件,这个文件的许可权限至少应该为可读和可执行。在shell提示符下键入文件名就可执行shell程序,数据可以通过三种方式传送到shell程序

??-环境变量

??-命令行参数

??-用户的输入

shell是一个命令解释器,它会解释你在命令提示符下输入的命令。但是,你可能有一组想要多次执行的命令。shell提供了一种功能,让你将这组命令存放在一个文件中,然后你可以象unix系统提供的其他程序一样执行这个文件。这个命令文件就叫做shell程序或者shell脚本。当你运行这个文件,它会象你在命令行输入这些命令一样地执行这些命令。

为了让shell读取你的shell程序并且执行,shell必须能够读取并能够执行每一行命令。因此,shell脚本的许可权限必须被设置为可读和可执行。为了让shell可以找到你的程序,你可以选择输入完全路径名,或者将这个脚本的路径放在于你的PATH环境变量指定的路径列表中。许多的用户会在他们的HOME目录下创建一个bin目录来存放他们自己开发的script,然后将$HOME/bin加入到他们的PATH环境变量中。

你可以写出非常复杂的shell脚本,因为shell支持变量,命令行参数,交互式输入,tests(判断)),branches(分支),和loops(循环)。

1.2 shell程序举例

$ cat myprog

#this is the program myprog

date

ls CF

$ myprog

要创建一个shell程序,考虑进行以下步骤:

$ vi myprog ?????一个包含shell命令的程序,

#this is the program myprog

date

ls CF

$ chmod +x myprog 增加文件的执行模式

$ myprog

Thu Jul 11 11:10 EDT 1994

F1 f2 memo/ myprog*

首先使用一个文本编辑器来创建一个shell程序myprog。在程序执行之前,这个文件必须被赋予可执行的权限。然后在命令提示符下输入这个程序名。如上例所示,当myprog执行的时候,一个子shell会被创建。这个子shell会从shell程序文件myprog读取输入而不是从命令行。这个shell中的每个命令的执行都会创建一个子shell。一旦所有的命令都被执行,所有的子shell会中止,然后会返回到原始的父shell。

Shell程序中的注释:

推荐在shell程序中提供注释语句来注明程序的内容。注释由一个#符号开始。Shell不会去执行任何在#之后的语句。#能够出现在命令行的任何位置。

注意:你不可以给shell程序取名为test因为test是一个内部的shell命令。

共4页: 1 [2] [3] [4] 下一页

原文转自:www.ltesting.net

篇4:浅谈Windows系统远程管理的超级Shell

WinRS是Windows远程Shell, 使用WinRS你可以查询远程运行WinRM的Windows主机。不过请记住,你的主机也需要运行WinRM来使用WinRS。

如你从下面的图解中看到的一样,WinRS是一个非常有特色、能够提供丰富帮助信息的全命令行工具。

WinRS最常见的功能就是在远程计算机上执行命令。 当然,这个通讯使用HTTP协议/端口80(默认)。

下面是我在本地运行WinRM机器上执行WinRS的一个实例。 我运行两条命令-“ver”和“dir C:”。 每条命令都有适当的信息被返回,

总结

WinRM和WinRS是Windows系统管理员应该了解的非常强有力的新工具。我想使用WinRM/WinRS进行远程管理非常有潜力! 你可以安装程序、更改设置或者Troubleshooting(只要它连在网络上)。 你甚至能更进一步去扩展它并且把WinRS与脚本组合起来在计算机列表中执行那些任务。 并且请记住,无论你是否使用这些个工具,你的系统管理软件在不久的将来全用到它们。

篇5:不是SHELL的SHELL―TCSH SHELL 编程Unix系统

TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式.例如TCSH 的test条件的控制结构是表达式,而不是 linux 命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同. 一 TCSH shell变量,脚本, 参数用户可以在shell中定义变

TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式.例如TCSH 的test条件的控制结构是表达式,而不是linux命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同.

一 TCSH shell变量,脚本,

参数用户可以在shell中定义变量,为变量赋值以及引用脚本参数.TCSH使用set,@,setenv定义一变量,也可以用相同的方法定义数值变量和数组,用户通过@命令定义的数值变量来进行算术运算,用户使用圆括号和方括号[]定义和引用数组.脚本也可以用相同的方法操作,但是有个例外,尽管可以用echo命令输出提示符,但没有read命令处理输入,相反,必须重定向到一个变量里.

二 脚本输入和脚本输出

$ <用户能够在脚本范围中定义和使用变量.在下例中使用文本编辑器把赋值操作和echo之类的linux命令放在一个文件中.然后 p=“p” read命令的比较版本.记住tcsh全部的脚本文件的第一行的第一个字符必须是=“read命令的比较版本.记住TCSH全部的脚本文件的第一行的第一个字符必须是” 可以产生可执行文件并像其他命令一样在命令行中执行它要记住添加可执行权限必须使用带ux参数的chmod命令或者带绝对参数700的chmod命令.在脚本中可以使用echo命令去输出数据但是必须通过重定向标准输入把输入读入变量.在tcsh中没有linux=“可以产生可执行文件并像其他命令一样在命令行中执行它,要记住添加可执行权限,必须使用带u+x参数的chmod命令或者带绝对参数700的chmod命令.在脚本中,可以使用echo命令去输出数据,但是,必须通过重定向标准输入把输入读入变量.在TCSH中没有linux” 字符.如:=“字符.如:<”>

#

#display “hello”

set string=“hello”

echo The value of string is $string

set命令和重定向符号结合$<将用户输入的任何数据读入标准的输入中.下例中把用户输入读入string变量中.>

%set string=$<

abc

%echo $string

abc

能够把提示符放置到相同的行用作echo的输入.TCSH使用一个特殊的选项-n,将消除输出字符串中的回车符.光标将保留在输出字符串的结尾处.

%echo -n please enter a string

%cat hello

#

echo -n “please enter a string:”

set string=$<

echo “the value of string is $string”

%chmod u+x hello

%hello

please enter a string:hello

the value of string is hello

%

三 操作符TCSH

它有一系列标准的赋值,算术和关系运算以及重定向和后台操作等函数赋值运算符

功能说明

= 赋值操作

+= 先加再赋值

-= 先减再赋值

*= 先乘再赋值

/= 先除再赋值

%= 取余再赋值

++ 自增量1

-- 自减量1

算术运算符 说明

- 负号

+ 加法

- 减法

* 乘法

/ 除法

% 取余

关系运算符 说明

> 大于

< 小于

>= 大于等于

<= 小于等于

!= 不等于

== 等于

重定向和管道符TCSH支持标准输入和标准输出的重定向和管道操作.如果设置了noclobber特征,要用重定向操作重写当前文件,需要用符号>!代替>

四 控制结构

同其他shell一样,TCSH也有一系列的控制结构控制脚本的命令的执行.while和if控制结构是最常用的控制结构.switch和foreach是更专用的控制结构.switch是if条件的限定形式,检查数值是否等于一系列可能的数值中的一个数值.foreach是循环结构的限定形式.浏览数值列表,给变量赋新的数值.TCSH不同的控制结构列表:

条件控制结构; 功能

if (expression) then 如果expression为真,则执行commands commands

endif

if (expression) then 如果expression为真,则执行command1,否则执行command1 command2.

else

command2

endif

switch (string) 允许在几条替换命令中选择,string为不同的模式case pattern:

commands

breadsw

default:

commands

endsw

循环控制结构: 功能while (expression) 只要expression为真,则重复执行commands,commands 直到expression为假时跳出循环end

foreach variable (argument-list)迭代循环获得和argument-list中一样多的参数commands (每次循环variable被设置为列表的下一个参数;end 操作方式同BSH)

TCSH中的控制结构有别于其他的shell,因为它更接近编程语言(C).TCSH的条件表达式的值为true/false.BASH和TCSH主要区别在于TCSH的结构不可重定向或进行管道输出.

五 测试表达式

()if和while控制结构把表达式用作测试.表达式测试的结果为非零(1)表示真,而零(0)表示假(跟BASH相反).测试表达式可由算术/字符串比较,但是字符串只能作相等和不相等的比较.而且表达式必须要在()括号内.如:

if (expression) then

command

endif

TCSH有一系列的运算符来分别对字符串进行测试比较.正则表达式可以包含shell脚本的指令的字符串.如:

if ( $var =~[Hh]* ) then #如果变量$var以字母是大写/小写Hh开头,的字符串

echo information #执行命令

endif #结束

有很多测试文件的操作与BASH完全相同.如:

if ( -r myfile ) then #测试myfile是否可读

echo info

endif

测试表达式的基本操作:

字符串比较: 功能

== 是否相等,若相等返回真

!= 是否不等,若不等返回真

=~ 字符串和模式进行测试是否相等(模式为任意正则表达式)

!~ 字符串和模式测试是否不等(模式为任意正则表达式)文件测试: 功能

-e 测试文件是否存在

-r 测试文件是否可读

-w 测试文件是否可写

-x 测试文件是否可执行

-d 测试文件名是否为目录

-f 测试文件是否为普通文件

-o 测试文件是否被用户所拥有

-z 测试文件是否为空

逻辑运算符: 功能

&& 与运算,两个条件同时蛮族

|| 或运算,有一个条件满足

! 取反

共5页: 1 [2] [3] [4] [5] 下一页

原文转自:www.ltesting.net

篇6:shell 学习笔记Unix系统

bbs.chinaunix.net/forum/viewtopic.php?t=218853show_type=new(+三问) 假如我需要在 command line 中⑦@些保留字元的功能P]的,就需要 quoting 理了, 在 bash 中,常用的 quoting 有如下三N方法: * hard quote:' ' (我),凡在 har

bbs.chinaunix.net/forum/viewtopic.php?t=218853&show_type=new(+三问)

假如我需要在 command line 中⑦@些保留字元的功能P]的,就需要 quoting 理了,

在 bash 中,常用的 quoting 有如下三N方法:

* hard quote:' ' (我),凡在 hard quote 中的所有 meta. 均被P]。

* soft quote: “ ” (p引),在 soft quoe 中大部份 meta. 都被P],但某些t保留(如 $ )。(]二)

* escape : (反斜),只有o接在 escape (跳字符)之後的我 meta. 才被P]。

( ]二:在 soft quote 中被豁免的具w meta. 清危我不完全知道,

有待大家a充,或透^作戆lF及理解。 )

原文转自:www.ltesting.net

《UNIX系统基础》读后感

如何用 Shell 脚本编写递归程序Unix系统

基础

Shell company英语笔试题

linux shell字母转换写法

iShowMusic V1.2 写入shell漏洞

WORDPRESS后台拿SHELL的方法

Linux Shell脚本查看NUMA信息

IT系统承包合同

Tru64FAQMiscWindows系统

shell基础Unix系统(推荐6篇)

欢迎下载DOC格式的shell基础Unix系统,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式

猜你喜欢

NEW
点击下载本文文档