shell脚本学习1

在工作的时候接触到了shell脚本,不过我没有自己写过,但是又因为当时对shell有了兴趣,所以我就抽了一点时间,来学习shell脚本的语法结构,这里只是基本的shell语法,更高深的在以后可能会接触。

一    shell分类
1)    Bourne家族:sh,  bash(标准shell),   pshell,  zshell
2)    C shell家族:cshell,  tcshell

不同的shell之间可以进行切换,只要在当前的命令界面输入shell的名字如bash,csh等

二    shell输出命令

echo [选项]  [输出内容]

选项:

-e    支持在输出内容的转义符

在这里只列举常见的转义符:

\\              输出\本身
\a             警告音
\b             退格键,也就是说向左删除键
\n             换行符
\r              回车键
\0nnn       按照八进制ASCII码表输出字符,其中0为数字0,nnn是三位八进制数
\xhh          按照十六进制ASCII码表输出字符,其中hh是两位十六进制数

eg:

echo "hello world!"---->不会换行

echo -e "hello world!\n"---->会换行

三    命令别名
设定别名    alias   别名='原命令'
查询别名    alias
让别名永久生效,在相应的用户名下的.bashrc写下别名
删除别名    unalias

四    bash常用快捷键
ctrl+c    强制终止当前的命令
ctrl+l    清屏,相当于clear命令
ctrl+u    删除或剪切光标之前的内容
ctrl+y    粘贴ctrl+u操作的内容
ctrl+r    在历史命令中搜索
ctrl+d    退出当前终端

五    输出重定向
标准输出重定向:
命令 > 文件---->以覆盖的方式文件
命令 >> 文件---->以追加的方式写入文件
eg:

ls > 1.txt---->将当前目录中的目录名字一行一行的写入到1.txt文件中,是以覆盖的方式写入的。

ls >> 1.txt---->将当前目录中的目录名字一行一行的写入到1.txt文件中,是以追加的方式写入的。

标准错误输出重定向:
错误命令 2> 文件   以覆盖的方式文件
错误命令 2>> 文件  以追加的方式写入文件

这个错误的命令不是linux的系统的命令

eg:

c 2> 1---->c肯定不是系统的命令,这样就把出错的原因写到文件1中

正确输出和错误输出同时保存:
命令 > 文件 2>&1  或者 命令 &> 文件  以覆盖的方式,把正确和错误的输出结果都保存在同一个文件当中
命令 >> 文件 2>&1 或者 命令 &>> 文件  以追加的方式,把正确和错误的输出结果都保存在同一个文件当中
命令 >> 文件1  2>> 文件2   把正确的输出追加到文件1,把错误的输出追加到文件2中

六    输入重定向
wc [选项]  [文件名]
选项:
-c    统计字节数
-w    统计单词数
-l    统计行数

八    grep 命令
grep [选项] “搜索内容” 文件名

选项:

-i ---->忽略大小写
-n---->输出行号
-v---->反向查找
-r---->可以通过目录进行查找
--color=auto---->搜索出的关键字用颜色显示

九    环境变量
export 变量名=变量值---->设置环境变量
env---->查询变量
unset 变量名----> 删除变量

十    接收键盘输入的命令

read  [选项]   [变量名]
选项:
-p “提示信息”  在等待read输入时,输出提示信息
-t 秒数     read命令会一直等待用户输入,使用此选项可以指定等待时间,时间一到就会结束运行
-n  字节数    read命令只接受指定的字节数,就会执行
-s       隐藏输入的数据,适用于机密信息的输入

十一    shell的特殊变量

$0    当前脚本文件名
$n    传递给脚本或函数的参数。 n 是一个数字,表示有几个参数。例如第一个参数是$1,第二个参数是$2
$#    传递给脚本或函数的参数个数
$*    传递给脚本或函数的所有参数
$@  传递给脚本或函数的所有参数,被双引号(" ")包含时,与$*稍有不同
$?    上个命令的退出状态,或函数的返回值
$$    当前shell进程ID

十二    shell的运算符

关系运算符

-eq             检测两个数是否相等,相等返回true。
-ne             检测两个数是否相等,不相等返回true。
-gt              检测左边的数是否大于右边的数,如果是,则返回true。
-lt                检测左边的数是否小于右边的数,如果是,则返回true。
-ge             检测左边的数时候大于或等于右边的数,如果是,则返回true。
-le              检测左边的数是否小于或等于右边的数,如果是,则返回true。

字符串运算
=                 检测两个字符串是否相等,相等返回true。
!=                检测两个字符串是否相等,不相等返回false。
-z                检测字符串长度是否为0,为0返回true。
-n                检测字符串长度是否为0,不为0返回true。
str               检测字符串是否为空,不为空返回true。

文件测试运算
-b file           检测文件是否块设备文件,如果是,则返回true
-c file           检测文件是否字符设备文件,如果是,则返回true
-d file           检测文件是否是目录,如果是,则返回true
-f file           检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true
-g file           检测文件是否设置了SGID位,如果是,则返回true
-k file           检测文件是否设置了粘着位(Sticky Bit),如果是,则返回true
-p file           检测文件是否是命名管道,如果是,则返回true
-u file           检测文件是否设置了SUID位,如果是,则返回true
-r file           检测文件是否可读,如果是,则返回true
-w file           检测文件是否可写,如果是,则返回true
-x file           检测文件是否可执行,如果是,则返回true
-s file           检测文件是否为空(文件大小是否大于0),不为空,则返回true
-e file           检测文件(包括目录)是否存在,如果是,则返回true




发布了15 篇原创文章 · 获赞 0 · 访问量 1803

猜你喜欢

转载自blog.csdn.net/jiankangzhu/article/details/51112586