Shell编程简介

Shell是一种具备特殊功能的程序,它是介于使用者和Linux操作系统之核心之间的一个接口。
Shell的一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。
本质上,shell 脚本是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的command.com。它接收用户命令,然后调用相应的应用程序。
利用vi编辑器编辑脚本,将脚本命名为 脚本功能.sh
Shell脚本不是复杂的程序,它是按行解释的,脚本第一行总是以 #!/bin/sh 开头,它通知系统以下的Shell程序使用系统上的Bourne Shell来解释。第二行注释中写入脚本名,第三行注释开始写入脚本功能——习惯。以下行进入脚本正式编写。编写完后给脚本添加执行权限:chmod u+x ScripName 运行脚本:ScripName 或 ./ScripName

/dev/null 是一个虚设的设备,俗称“Linux黑洞”,任何对/dev/null的写入都会成功,但数据会消失得无影无踪,没有任何反馈。所以经常把不想在屏幕显示的信息全部送到/dev/null中,在shell脚本中用得比较多。如:ls –l > /dev/null。还可以用来清空文件的内容:cat /dev/null > FileName


简单命令:
新建用户(user add)
useradd UserName
新建用户后,会在/home目录下建立一个以UserName命名的文件夹,用户每次登录时自动定位到该文件夹下。

为用户添加密码(password)
passwd UserName

删除用户(user delete)
userdel UserName
使用–p选项可以删除用户目录下的文件及与用户相关联的其他文件。

新建组群(group add)
groupadd GroupName

删除组群(group delete)
groupdel GroupName

用户身份
whoami

查看登录用户
who [选项]
-a 显示所有用户的所有信息
-H 显示列标题

查看用户的操作
w 某一时刻用户的行为

用户间切换(substitute user)
su UserName 如:su 或su root 切换为根用户
su Haison 切换为名为Haison的用户

创建目录(make directory)
mkdir DirecName

删除目录(remove directory)
rmdir DirecName

显示工作目录(print working directory)
pwd

显示目录内容(list)
ls [选项]
选项:-a 显示当前目录下的所有文件,包括以.开头的文件。
-l 以长列表的形式显示文件列表

改变当前目录(change directory)
cd 或 cd ~ 进入登录时的主目录
cd / 进入根目录
cd .. 进入上一级目录
cd /home 进入系统的home目录
cd home 进入当前目录下的home目录

目录重命名(move)
mv SourceDirecName TargetDirecName

目录拷贝(copy)
cp SourceDirec TargetDirec
-r 拷贝目录下的文件、子目录及子目录下的文件

新建文件
>FileName 或 touch FileName 或 vi FileName

删除文件(remove file)
rm [选项] FileName
选项:-i 系统提示是否真要删除该文件
-f 删除文件之前不提示任何确认信息
-r 递归删除目录下所有子目录的内容

文件拷贝(copy)
cp SourceFile TargetFile

文件链接(link)
ln –s SourceFile TargetFile
创建文件链接,用ls –l查看,会看到TargetFile->SourceFile

显示文件内容
more FileName 一次一屏的显示文件内容,空格或回车显示下一屏
less FileName 一次一屏的显示文件内容,空格或回车显示下一屏

cat FileName 一次全部显示文件的内容
cat file1 file2>file3 将file1、file2的内容写到file3,覆盖file3原内容
cat file1>>file2 将file1的内容追加到file2,file2原内容不变

head FileName 只显示文件的前10行
head –n FileName 显示文件的前n行

tail FileName 只显示文件的后10行
tail –n FileName 显示文件的后n行

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

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

文件查找(find)
find [路径] [选项]
如:find / -name “Linux” -print

文件内容查找(grep)
如:grep “main” haison.c

文件类型
命令ls –l以长列表形式显示文件的类型等,如:-rw-r--r--

改变文件/目录的权限(change mode)
chmod [u/g/o/a] [+/-/=] [权限] FileName/DirecName
其中:+:增加指定的权限
-:去掉指定的权限
=:清除所选的权限并将其设置为制定的权限
chmod允许使用八进制符号作为模式,改变权限。
chmod PermissionCode FileName/DirecName

改变文件/目录的属主(change owner)
chown Owner FileName/DirecName
如:chown Dave haison.c
改变文件/目录的属组(change group)
chgrp Group FileName/DirecName
如:chgrp Dave haison.c
改变文件/目录的属主和属组
chown owner:group FileName/DirecName
如:chown Dave:Dave haison.c

变量:
变量可以定制用户本身的工作环境,使用变量可以保存有用信息,使系统获知用户相关设置,也用于保存暂时信息。变量一般都用大写字母表示,使用 echo命令可以显示单个变量的取值,要在变量名前面加$。如果设置变量时,不想再改变其值,可以将其设置为只读,只要在变量名前加readonly。使用set命令可以显示所有本地定义的shell变量;使用unset 变量名可以清除对变量的定义。

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

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

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

特定变量:脚本运行时的一些相关信息。
------------------------------------------------------------------------
$# 传递到脚本的参数个数
$* 传递到脚本的参数,与位置变量不同,此选项参数可超过9个
$$ 脚本运行时当前进程的ID号,常用作临时变量的后缀,如haison.$$
$! 后台运行的(&)最后一个进程的ID号
$@ 与$#相同,使用时加引号,并在引号中返回参数个数
$- 上一个命令的最后一个参数
$? 最后命令的退出状态,0表示没有错误,其他任何值表明有错误
-------------------------------------------------------------------------
示例:
#!/bin/sh
#VarTest.sh
#To test the variables
USER=haison
echo "Hello,$USER,the output of this script are as follows:"
echo "The script name is :`basename $0`"
echo "The first param of the script is :$1"
echo "The second param of the script is :$2"
echo "The tenth param of the script is :$10"
echo "All the params you input are :$*"
echo "The number of the params you input are:$#"
echo "The process ID for this script is :$$"
echo "The exit status of this script is :$?"

逻辑操作符
-a 逻辑与(and),操作符两边均为真,结果为真,否则为假。
-o 逻辑或(or),操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真,反之。
示例: [ -r haison.c –a –w hai.c ]

文件状态测试
------------------------------------------
-d 目录 -r 可读
-f 常规文件 -w 可写
-L 符号连接 -x 可执行
-s 文件长度大于0,非空
-------------------------------------------
示例: [ -s haison.c ]

字符串测试
-----------------------------------------------------
= 两个字符串相等 -z 空串
!= 两个字符串不相等 -n 非空串
------------------------------------------------------
示例:[ -z $SHELL ]

数值测试
---------------------------------------------------------------------------------
-eq 数值相等(equal to) -lt 第一个数小于第二个数(less than)
-ne 数值不相等(not equal to) -le 第一个数小于等于第二个数
-gt 第一个数大于第二个数(greater than) -ge 第一个数大于等于第二个数
---------------------------------------------------------------------------------
示例:[ “10” -eq “12” ]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值