摘要:shell基础性了解,包括概念,脚本执行方式,bash的一些简单和相关功能介绍
Shell基础
1 shell概述
1.shell概念
命令行解释器
接收用户命令翻译成二进制传给Linux内核,shell可以启动、挂起、停止甚至编写程序
编程语言
(易编写 易调试 灵活性较强) 解释执行脚本语言,直接调用系统Linux命令
(高级语言有两种类型 编译型语言(C JAVA)和解释性(shell php 执行时即时编译))
Shell与其他语言对比
c,
php和java主要实现复杂功能,
Shell为简化管理操作
2.shell分类
Bourne Shell:1979起Unix开始使用 主文件名为sh
C Shell:在BSD版Unix使用,语法类似C语言
主要语法类型Bourne和C,两者不兼容
Bourne家族:sh、ksh、
Bash
(Linux主要)、psh、zsh
C家族:csh、tscsh
3.Linux支持Shell
"
/etc/shells"
2 脚本执行方式
1.echo输出命令
"-e":支持控制字符
\a输出警告音 \b退格(左删除) \n换行符 \r回车 \t制表符(Tab)
\v垂直制表符
\0nnn 按照八进制ASCII输出字符。(nnn是三位八进制数)
\xhh 按照十六进制ASCII输出字符。(hh是三位十六进制数)
\e[1;31(31-37)m 开启颜色显示 \e[0m关闭颜色显示
2.脚本编写
.sh后缀
#!/bin/bash(标称使用那种命令解释器 不能省略)
3.脚本执行
1.赋予执行权限,直接运行
chmod 755 file.sh ./file.sh
2.通过Bash调用执行脚本
bash file.sh
3 Bash基本功能
1.别名
alias查看系统生效别名
alias 别名=‘原命名' 设置别名(临时生效)(
vi ~/.bashrc
写入环境变量可永久生效
)
unslias删除别名
命令生效顺序(考虑到别名可能原也是命令)
1.绝对路路径或相对路径 2.别名 3.Bash内部命令 4.按照$PATH环境变量定义目录查找顺序找到第一个命令
2.快捷方式
Tab补全命令文件目录
ctrl+l清屏
ctrl+c强制终止当前命令
ctrl+a光标移动行首
ctrl+e光标移动行末
ctrl+u光标删除到行首
ctrl+z命令放在后台
ctrl+r从历史命令搜索
3.历史命令
history[][历史命令保存文件(~./bash_history)](文件默认保存1000条 可在/etc/profile修改)
"-c" 清楚历史命令
"-w" 把本次登录使用命令存入文件
历史命令调用
1.上下箭头 2."!n"(数字)执行第n条命令 3."!!"重复执行上条命令 4."!字串"重复执行最后一条已该字串开头命令
4.重定向
1 标准输入输出
键盘 /dev/stdin 0(文件描述符) 标准输入 显示器 /dev/sdtout 1 标准输出 /dev/sdterr 2 标准错误输出
2 输出重定向
标准输出重定向 命令 >文件(把显示内容记录在文件(覆盖))
命令 >>文件(把显示内容记录在文件(追加))
标准错误输出重定向 错误命令 2>文件(2>>文件)
正确输出和错误输出同时保存 命令 &>文件(&>>文件) 命令 >>文件1(正确) 2>>文件2(错误)
3 输入重定向
wc [] 文件名
"-l" 统计行数
"-w" 统计单词数
"-c" 统计字节
5.管道符
1.多命令顺序执行 命令1 ; 命令2
";" 执行命令1和2
"&&" 执行命令1 若1正确 则执行命令2
"||" 执行命令1 若1不正确 则执行命令2
(判断命令正确与否 (命令
&& echo yes || echo no
))
2.管道符 命令1 | 命令2
命令1的正确输出作为命令2的操作对象(命令2必须操作命令1输出结果)
(查看服务器连接人数 netstat -an |grep ESTABLISHED | wc -l)
6.通配符
1.通配符
?
匹配任意
一
个字符
*
匹配0-n个字符
[]
匹配[]中字符里的
一
个
[-]
匹配[]范围里的
一
个
[^]
匹配不是[]范围里的
一
个
7.其他特殊符号
$
调用变量值 aa=123 echo $aa (输出 123)
''单引号 aa=123 echo '$aa' (输出 $aa(即单引号里特殊符号失效))
""双引号 aa=123 echo "$aa" (输出 123)
``反引号 aa=`ls` echo $aa (输出相当执行命令ls)
$() aa=$(ls) echo $aa (输出相当执行命令ls)
# 注释符
\ 转义符
aa=123 echo \$aa (输出 aa)