您的位置:首页 > 运维架构 > Shell

九.Shell基础

2016-04-25 18:15 169 查看
Shell基础:

1-1Shell概述

*Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序

*Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令

*Shell的分类

*Bourne Shell:主文件名为sh

*C Shell:主要是在Unix系统中使用,语法与C语言类似

**Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh

**Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell

**Linux支持的Shell

*/etc/shells

1-2脚本执行方式

1.echo输出命令

*echo [选项] [输出内容]

*选项:

-e:支持反斜线控制的字符转换

2.第一个脚本

*vi hello.sh

#!/bin/bash 表示为此脚本的解释程序

# 表示的是注释符号;如果#位于行首,则整行均为注释,如果#不位于行首,那么#的后面为注释3.脚本执行

*赋予执行权限,直接运行

eg:chmod 755 hello.sh

./hello.sh

*通过Bash调用执行脚本

eg:bash hello.sh

1-3Bash的基本功能

*命令别名与快捷键

*历史命令

*输出重定向

*多命令顺序执行

*Shell中特殊符号

1-3-1别名与快捷键

什么是别名?

*命令别名==人的小名

查看与设定别名

*alias #查看系统中所有的命令别名

*alias 别名='原命令'#设定命令别名

别名永久生效与删除别名

设置别名永久生效:

在.bashrc中设置:alias 别名='原命令',设置永久别名后,其会自动保存到alias中,可以在alias中看到该命令别名,为什么我的设置永久生效别名不成功?????

*vi ~/.bashrc
#写入环境变量配置文件

*unalias 别名
#删除别名

命令生效顺序 ???????

*第一顺位执行用绝对路径或相对路径执行的命令

*第二顺位执行别名

*第三顺位执行Bash的内部命令

*第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

常用快捷键

*ctrl+c
强制终止当前命令

*ctrl+l
清屏

*ctrl+a
光标移动到命令行首

*ctrl+e
光标移动到命令行尾

*ctrl+u
从光标所在位置删除到行首

*ctrl+z
把命令放入后台

*ctrl+r
在历史命令中搜索

1-3-2输出重定向

1.标准输入输出

设备 设备文件名文件描述符类型

键盘 /dev/stdin0标准输入

显示器 /dev/sdtout1标准输出

显示器 /dev/sdterr2标准错误输出

2.输出重定向

类型 符号 作用

标准输出重定向 命令>文件 以覆盖的方式,把命令的正确输出到指定的文件或设备当中

命令>>文件
以追加的方式,把命令的正确输出到指定的文件或设备当中

标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出到指定的文件或设备当中

错误命令 2>>文件 以追加的方式,把命令的错误输出到指定的文件或设备当中

输出重定向:就是本来正常输出,是输出到显示器上,但是现在用了输出重定向将其输出到文件中,因此叫重定向

3.输入重定向

*$ wc [选项] [文件名]

*选项:

-c统计字节数

-w统计单词数

-l统计行数

*命令<文件把文件作为命令的输入

*命令<<标识符

*...

*标识符把标识符之间内容作为命令的输入

1-4管道符

1.多命令顺序执行

多命令执行符
格式 作用

; 命令1 ;命令2 多个命令顺序执行,命令之间没有任何逻辑联系

&&
命令1 && 命令2 逻辑与

当命令1正确执行,则命令2才会执行;

当命令1执行不正确,则命令2不会执行;

||
命令1 || 命令2 逻辑或

当命令1执行不正确,则命令2才会执行;

当命令1正确执行,则命令2不会执行;

2.管道符

*命令格式:

*$命令1 | 命令2

#命令1的正确输出作为命令2的操作对象

1-5通配符

1.通配符

通配符 作用

? 匹配一个任意字符

* 匹配0个或任意多个任意字符,也就是可以匹配任何内容

[] 匹配中括号中任意一个字符。eg:[abc]代表一定匹配一个字符,或者是a,又或者是b,或者是c

[-] 匹配中括号中任意一个字符,-代表一个范围。eg:[a-z]代表匹配一个小写字母

[^] 逻辑非,表示匹配不是中括号中任意一个字符。eg:[^0-9]表示匹配一个不是数字的字符

2.Bash中其它特殊符号

符号 作用

''
单引号。在单引号中所有的特殊符号,如"$"和"'"(反引号)都没有特殊含义。

"" 双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"'"和"\"是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。

$() 和反引号作用一样,用来引用系统命令。

# 在shell脚本中,#开头的行代表注释。

$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。

\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: