Shell编程-基础

1.Shell是什么

  • shell是命令行解释器,将用户语言根据ASCII码表转换成机器语言传给Linux内核。
  • Shell还是功能强大的脚本编程语言,易编写,易调试,灵活性强;在Shell中可以直接调用Linux系统命令。

2.Shell分类

  • 1979年Unix使用的Bourne Shell,主文件名为sh,不支持历史命令;主要包括:sh、ksh、Bash、psh、zsh
  • C Shell 主要在BSD版的Unix系统中使用,与C语言类似;主要包括:csh、tcsh

注意:

  • Unix中主要用的是Cshell,Linux中用的是Bash,也是标准shell
  • 通过echo $SHELL可以查看当前系统用的是哪种shell,结果:/bin/bash;
  • 其中/etc/shells中配置了可兼容的shell。

3.Shell的脚本执行方式

3.1 echo命令

命令格式: echo [选项][输出内容]

作用:将信息显示在显示屏上。

选项:

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

如:\a 输出警告音

        \b 向左删除键

       \n 换行符

       \r 回车键

       \t 制表符,即Tab键

        \v垂直制表符

       \0nnn 按照八进制ASCII码输出字符

       \xhh 按照十六进制ASCII码输出字符。

echo输出可以使用不同颜色,语法:echo -e “\033[字背景颜色;文字颜色m字符串\033[0m”

3.2 shell脚本编写基础认识

  • 文件开头一定加#!/bin/bash,作用:如果调用非shell语言,也作为shell处理!
  • 可以直接调用linux命令,更适合做系统管理。

3.3shell脚本执行

方法一:赋予执行权限,直接运行,如:

           chmod 755 hello.sh

           ./hello.sh

方法二:通过bash调用执行脚本

            bash hello.sh #通过bash直接解释脚本,可以不用赋执行权限。

3.4 Bash基本功能

3.4.1 命令别名及快捷键

命令格式:alias 别名命令名=‘命令‘,如:alias vi=‘vim’

若让别名永久生效,则可以写入.bashrc文件(环境变量配置文件),vi ~/.bashrc,后source .bashrc,立刻生效。

删除别名:unalias 别名

注意:定义了别名后,命令的执行顺序:使用绝对路径或相对路径的命令->别名命令->Bash内部命令->$PATH环境变量定义的目录找到的命令

3.4.2常用快捷键

ctrl+c 强制终止当前命令

ctrl+l 清屏

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

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

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

ctrl+z把命令放到后台

ctrl+r在历史命令中搜索

3.4.3 历史命令

1.history命令

命令格式:history [选项][历史命令保存文件]

-c 清空历史命令

-w 把缓存中的历史命令写入历史命令保存文件~/.bash_history(~用户家目录)

如:直接使用history,不加参数可以查看到本次使用过的和之前的历史命令。使用history -w可以直接把当前的历史命令直接写入.bash_history中。

       使用cat .bash_history查看文件中保存的历史命令。

注意:历史命令默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改:HISSIZE=1000,修改成想要保存的值。

2.历史命令的调用

  • 使用上、下箭头调用以前的历史命令
  • 使用“!n”重复执行第n条历史命令
  • 使用“!!”重复执行上一条命令
  • 使用“!字符串”重复执行最后一条以该字符串开头的命令

注意:调用几调用的history中查出来的命令。

           常用的是第1条和最后1条。

3.命令和文件补全

原理:命令的补全,依赖的是$PATH中的路径去查找命令;

           文件补全,依赖的是目录。

方法:使用tab键补全。

作用:1.加快输入速度;

           2.检查输入是否存在错误。

3.4.4 输出重定向

1.标准输入输出

Shell编程-基础

 

注意:实际使用中“文件描述符”用的更多。

2.输出重定向

含义:默认输出是显示器,改变其输出对象,比如输出到文件中,称为输出重定向。

  • 常用的输出重定向语法:

命令>文件 #把命令输出到指定的文件或设备中,注意是覆盖方式。

命令>>文件 #把命令追加到指定的文件或设备中。

 注意:以上输出的都是正确内容,如果是错误的输出需要使用:

错误命令 2>文件

错误命令 2>>文件

缺点:正确输出和错误输出要单独操作。

  • 正确输出和错误输出一起重定向

命令格式:命令 &>文件,命令 > 文件 2>&1 #两个命令等同

           命令 &>>文件,命令 >> 文件 2>&1

          命令 >>文件1 2>>文件2 #正确的命令输出到文件1,错误的命令输出到文件2,这个命令用的比较多。

3.输入重定向(实际使用少)

  • 命令:wc

作用:统计键盘输入的字符

命令格式:wc [选项][文件名]

-c 统计字节数

-w 统计单词数

-l 统计行数

  • 输入重定向

默认wc命令统计的是键盘输入的字符,可以通过输入重定向可以统计文件中的字符。

如:wc <abc.log,或者wc abc.log

3.4.5 管道符

  • 多命令顺序执行

通过三个运算符进行连接,“;&& ||”,

; #如:date;ls;pwd多个命令顺序执行,命令间没有任何逻辑关系。注意:中间的命令执行错误,不影响其他命令的执行!

&& #命令1&&命令2,命令1正确才执行命令2

|| #命令1||命令2,命令1执行错误才执行命令2

实际应用:如:ls && echo yes || echo no  #命令正确执行输出yes,命令错误输出no

  •  管道符

命令格式:命令1 | 命令2

#命令1的输出作为命令2的输入

如:ls -l /home | more,netstat -an | grep ESTABLISHED,netstat -an | grep ESTABLISHED | wc -l (双管道符)

3.4.6 通配符

Shell编程-基础

 

其他特殊符号:

Shell编程-基础

 

注意:

  • ‘’,""区别,如:aa=111,echo ‘$aa’-->$aa;echo "$aa"-->111
  • ``,里面是系统命令,比如:a=`ls`,echo "$s"-->显示ls查询出来的内容,等同于a=$(ls)

 

Shell编程-基础

上一篇:Mac OS X 系统清理


下一篇:Cisco ASA - Permit/Deny Traffic Domain name FQDN