Shell编写

来源:互联网 发布:windows 创建子窗口 编辑:程序博客网 时间:2024/05/24 04:30


Shell脚本初步认识与编写

 

综述篇---怎样写Shell

第一行#!/bin/sh它通知系统以下的Shell程序使用系统上的Bourne Shell来解释

第二行#   注释中写入脚本名

第三行#   注释中写入脚本功能

cygwin简介---Windows下开发linux程序

软件下载:cygwin的官方网站:www.cygwin.com

推荐下载:http://www.macraigor.com/full_gun.htm

软件安装:在安装的过程中可选择默认安装路径:c:\cygwin。安装完成后要修改cygwin目录下的cygwin.bat文件,在@echo off后面加上set CYGWIN=title ntea,这是因为Cygwin的启动批处理文件需要启动Unix文件系统模拟。

Linux黑洞---/dev/null

是一个虚设的设备,俗称“Linux黑洞”,任何对/dev/null的写入都会成功,但数据会消失的无影无踪,没有任何反馈。所以经常把不想在屏幕显示的信息全部送到/dev/null中,在Shell脚本中用的比较多

如:ls -l> /dev/null

还可以用开清空文件的内容:

cat /dev/null> FileName

 

命令篇

用户管理

新建用户(user add

useraddUserName  新建用户后,会在/home目录下建立一个以UserName命名的文件夹,用户每次登录时自动定位到该文件夹下。

为用户添加密码(password

passwdUserName

删除用户(userdelete

userdelUserName 使用-p选项可以删除用户目录下的文件及与用户相关联的其他文件

新建组群(group add

groupaddGroupName

删除组群(group delete

groupdelGroupName

用户身份

whoami

查看登录用户

who [选项]

       -a显示所有用户的所有信息

       -H 显示列标题

查看用户的操作

w 某一时刻用户的行为

用户间切换(substituteuser

suUserName

目录管理

创建目录(makedirectory)

mkdirDirecName

删除目录(removedirectory

rmdirDirecName

显示工作目录(printworking directory

pwd

显示目录内容

ls -a显示当前目录下的所有文件,包括以.开头的文件

    -l 以长列表的形式显示文件列表

改变当前目录(changedirectory

cdcd ~进入登录时的主目录

cd/  进入根目录

cd..  进入上一级目录

cd/home  进入系统的home目录

cdhome    进入当前目录下的home目录

目录重命名(move

mvSourceDirecName TargetDirecName

目录拷贝(copy

cpSourceDirec TargetDirec

    -r 拷贝目录下的文件、子目录及子目录下的文件

文件管理

新建文件

>FileName  touch FileName   viFileName

删除文件(removefile

rm [选项]FileName

     -i 系统提示是否真要删除该文件

     -f  删除文件之前不提示任何确认信息

     -r  递归删除目录下所有子目录的内容

文件拷贝(copy

cp SourceFileTargetFile

文件链接(link

ln-s SourceFile TargetFile

创建文件链接,用ls -l查看,会看到TargetFile->SourceFile

显示文件内容

moreFileName

lessFileName

catFileName

     cat file1 file2>file3 file1file2的内容写到file3,覆盖file3原内容

     catfile1>>file2       file1的内容追加到file2file2原内容不变

head-n FileName     只显示文件的前n行,没有-n默认是10

tail-n FileName        只显示文件的后n行,没有-n默认是10

nlFileName 以编号的形式一次全部显示文件的内容,忽略空格

文件移动/重命名(move
mv SourceFile TargetFile将一个或多个文件移动到另一个目录下,或者将一个文件重命名为另一个文件

文件查找(find

find[选项] [选项]

find/ -name "Linux" -print

文件内容查找(grep

grep"main" haison.c

文件类型

ll  -rw-r--r--

前缀是文件类型:

-:普通文件

b:块(block)设备文件

c:字符(character)设备文件

d:目录(directory

l :链接(link)文件

p:命令管道(pipe)文件

s:本地套接口(socket

权限管理

文件访问权限

一个文件已经创建,就具有三种访问方式

改变文件/目录的权限(changemode

chmod[u/g/o/a] [+/-/=] [权限] FileName/DirecName

chmod*** FileName/DirecName

改变文件/目录的属主(changeowner

chownOwner FileName/DirecName

改变文件/目录的属组(changegroup

chgrpGroup FileName/DirecName

改变文件/目录的属主和属组

chownowner:group FileName/DirecName

 

变量

  • 变量可以定制用户本身的工作环境,使用变量可以保存有用信息,使系统获知用户相关设置,也用于保存暂时信息。

  • 变量一般都用大写字母表示

  • 使用echo命令可以显示单个变量的取值,要在变量名前面加$

        如:USER="haison"

              echo $USER

  • 如果设置变量时,不想再改变其值,可以将其设置为只读,只要在变量名前加readonly

  • 使用set命令可以显示所有本地定义的shell变量

  • 使用unset变量名 可以清除对变量的定义

    本地变量:用户定义的变量

    环境变量:用于所有用户变量,用于用户进程前,必须用export命令导出

    位置变量:$0(脚本名),$1-$9:脚本参数

    特定变量:脚本运行时的一些相关信息

    示例:假如名字为zz.sh

    #!/bin/sh                               

    #VarTest.sh                             

    #To test the variables                    

    USER=haison                           

    echo "hello,$USER,look:"                

    echo "The name is:'basename$0'"       

    echo "The fist param is :$1"              

    echo "The second param is :$2"          

    echo "All the params are :$*"             

    echo "The number are:$#"               

    echo "The process ID is :$$"              

    echo "The exti status is:$?"               

     

    执行的时候输入:zz.sh zhang wang

    函数

    格式

    函数名()

    命令

    所有函数在使用前必须定义,这意味着必须将函数放在脚本开始的地方,直至shell解释器首次发现它,才可以使用。

    调用函数仅使用其函数名即可,要传给函数的变量跟在函数后面。

    函数里定义的变量以下划线(_)开始

    函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中,文件也必须以#!/bin/sh开头

     

0 0
原创粉丝点击