快速业务通道

Linux Shell 基本概念及编程

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-28

Shell是操作系统的一个概念,在Windows上也有命令行,现在Win7有更强大的PowerShell,Linux虽然操作系统上很多底层代码重新编写了,与UNIX完全不同,但毕竟它是继承UNIX下来的,对UNIX的最早的Bourne Shell(AT&T刚开始开发就有)及C Shell(在Berkeley 大学开发)以及Korn Shell等都支持.但常见默认的是Bourne agani Shell. 与Bourne Shell相同,但有所增加.Shell作为系统内核之上用户空间与内核空间的桥梁,其作用非常重要.没有Shell,你开发的应用无法运行,没有SHELL你也无法管理系统内核.如下图是SHELL的基本历史.

查看一个LINUX支持哪些SHELL,可以用 cat /etc/shells

那么一个SHELL是如何读取一个命令,并将这个命令解析并执行的呢?如下图所示:

Shell会解析输入的命令字符串,并分解开来取第一个字符串,进行判断,如果第一个字符串是内部命令,直接执行.如果是外部应用,创建一个新进程进行执行.否则退出.

我们前面知道目前LINUX存在不同的SHELL,那么每种SHELL在日常使用中,特别是语法中有哪些不同呢.这里有一个列表,用来列出一些关键的不同.

不同SHELL的语法和结构区别

C和TC Shell sh Korn Shell Bash Shell
shbang line(第一行申明) #!/bin/csh 或者!#/bin/tcsh #/bin/sh #!/bin/ksh #!/bin/bash
Comments(注释行) #This is a comments #this text is not
#interpreted by the shell
#This program will test some files #This is a comment
Wildcards (通配符) rm *; ls ??; cat file[1-3];!! echo “How are you?” rm *; ls ??;cat file[1-3];echo “How are you?” rm *;ls ??; cat file[1-3]; echo “How are you?”
Displaying Output(标准输出) echo “Hello to you\!” echo “What is your name?” echo “Who are you?”
print “How are you?”
echo “How are you?”
Local Variables (局部变量)(只在当前SHELL环境中可用) set variable_name = value
set name = “Tom Jones”
variable_name=value
name=”John Doe”
x=5
variable_name = value
typeset variable_name = value
name = “John Doe”
variable_name =value
declare variable_name =value
Global Variables(全局变量)(在当前SHELL及其子SHELL环境中可用) setenv VARIBLE_NAME value
setenv PRINTER Shakespere
VARIABLE_NAME=value
export VARIABLE_NAME
export VARIABLE_NAME=value
export PATH=/bin:/usr/bin:.
export VARIABLE_NAM=value
Extracting values from variables(变量取值) echo $variable_name
echo $name
echo $PRINTER
echo $variable_name
echo $name
echo $variable_name
echo $name
echo $variable_name
echo $name
Reading user input (读取用户输入) echo “What’s your name?”
set name =contentlt;
echo “what’s your name?”
read name
read name1 name2
print –n “What’s your name?”
read name
echo “What’s your name?”
read name read name 1 name 2…
Arguments (用户输入参数) scriptnme arg1 arg2 arg3…..
echo $1 $2 $3
echo $*
$scriptname arg1 arg2 arg3 ….
echo $1 $2 $3
$scriptname arg1 arg2 arg3
echo $1 $2 $3
$scriptname arg1 arg2 arg3
echo $1 $2 $3
echo $*
echo $#
Arrays(数组) set word_list =(word1 word2 word3)
echo $word_list[2]
echo $word_list[1]
echo $word_list or $word_list[*]
set word1 word2 word 3
echo $1 $2 $3
set apples pears peaches
print $1 $2 $3
set apples pears peaches
echo $1 $2 $3
Shell command substitution (命令替换) set variable_name =`command`
echo $variable_name
variable_name=`command`
echo $variable_name
variable_name =`command`
variable_name = $(command)
echo $variable_name
variable_name=`command`
variable_name=$(command)
echo $variable_name
Arithmetic(计算) @n=5 5
echo $n
n=`expr 5 5`
echo $n
typeset –i
variable_name
declare –i variable_name
typeset –i variable_name
((n=5 5))
echo $n
operations (运算符) ==,!= ,>,&gt;=,<,&lt;= =,!= ,-e –a,-gt -ge =,!=,==,!=,&&,||,!,>,&gt;=,<,&lt;= ==,!=,&&,||,!,>,&gt;=,&lt;,&lt;=
File testing(文件测试) -r, 文件可读
–w, 文件可写
-x, 文件可执行
-e, 文件存在
-o, 当前用户Own
-z,文件0长度
-d 文件是目录
-f 是文件,非目录
-r, 文件可读
–w, 文件可写
-x, 文件可执行
-o, 当前用户Own
-s,文件非0长度
-d 文件是目录
-f 是文件,非目录
-r, 文件可读
–w, 文件可写
-x, 文件可执行
-s,文件非0长度
-d 文件是目录
-a 文件存在,且非目录
Functions function a

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号