shell基础及Bash的基本功能

shell基础及Bash的基本功能是本站提供的视频讲解笔记,是慕课网的教程,为什么要学习shell,是因为有shell可以很轻松的远程控制Linux主机,只有掌握了shell才能够很好的配合学习Linux课程。

shell基础:
一、shell概述
1、shell :
◆是一个命令行解释器,为用户提供给呢了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以启动、挂起、停止甚至编写一些程序。
◆还是一个功能强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接条用Linux系统命令。


shell命令传导过程图解
 
2、shell分类:
Bourne Shell :1979年起Unix就开始使用,它的主文件名为sh。
C shell :主要在BSD版本的Unix系统中使用,其语法和C语言相类似而得名。
shell的两种主要语法类型彼此不相兼容。Bourne Shell 主要包括sh ksh bash psh zsh ,其中bash是现在使用的标准shell,查看使用的shell版本命令:echo $SHELL  ; C主要包括csh tcsh;
Bash : Bash与sh兼容,现在使用的Linux就是Bash作为用户的基本shell
3、Linux支持的shell
用命令打开文件查看:vi /etc/shells
可以看到支持 sh bash tcsh csh ,输入任意一个即可进入该shell模式,退出用exit命令
 
二、脚本执行方式
1、echo输出命令
   echo [选项] [输出内容]         选项:-e :支持反斜线控制的字符转换,具体如下
   控制字符                    作用
   \a                      输出警告音
   \b                      退格键,也就是向左删除键
   \n                      换行符
   \r                       回车键
   \t                       制表符,也就是Tab键
   \v                      垂直制表符
   \0nnn                   按照八进制ASCLL码表输出字符,其中0为数字0,nnn是三位八进制数
   \xhh                    按照16进制ASCLL码表输出字符,hh是两位16进制数
   例子:echo -e  "\x68\t\x65\t\x6c\n\x6c\t\x6f\t"  #按照16进制ASCLL码输出内容
   注意:输出的内容有空格,所有内容之间需要加引号。
   echo输出颜色
   30m=黑色  31m=红色  32m=绿色  33m=黄色  34m=蓝色  35m= 洋红  36m=青色   37m=白色  例如:echo -e "\e[1;31m 娶人就要娶美女 \e[0m "    \e 代表标准颜色   [1; 代表开启颜色选项  \e[0m  代表关闭颜色和选项
2、第一个脚本(脚本创建)
# vi hello.sh
创建系统脚本
#!/bin/bash           
    加#代表后续内容为注释,但这句话不是;这里声明是Linux标准脚本 ,而且不能省略                
#the first program
这句话是注释,一般好习惯都需要加注释
echo -e "\e[1;34m 天上掉下个林妹妹 ! \e[0m"
输出打印脚本
:wq
保存退出
3、脚本执行(两种方式)
◆赋予执行权限,直接运行
 →chmod 755 hello.sh         #赋予执行权限
 →./hello.sh                 #执行./当前目录下的脚本文件(也可以为绝对路径)
◆通过Bash调用执行脚本
 →bash hello.sh              #用bash来直接执行脚本文件
 
三、Bash的基本功能
1、命令别名(更好适应用户使用习惯,有退出即无效也有用久生效)与快捷键
   ⑴、查看与设定别名命令(暂时生效):
       alias                      #查看系统中所有的命令别名
       alias 别名='原命令'        #设定命令别名
   ⑵、别名用久生效与删除别名(打开配置文件并添加,重新登陆后用久生效)
       vi ~/.bashrc               #写入环境变量配置文件,这个~/.bashrc 是root用户文件位置,配置文件有很多,后面再补充。也可以直接调用source .bashrc文件,不用重新登陆就生效。
       unalias 别名               #删除别名,临时删除。用久删除和添加一样。
   ⑶、命令生效顺序
       第一位:执行用绝对或相对路径执行的命令
       第二位:执行别名
       第三位:执行Bash的内部命令
       第四位:执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
   ⑷、常用快捷键(ctrl+选项)
       ctrl+c       强制终止当前命令
       ctrl+l       清屏,同clear 
       ctrl+a       光标移动到命令行首
       ctrl+e       光标移动到命令行尾
       ctrl+u       从光标所在位置删除到行首
       ctrl+z       把命令放入后台执行
       ctrl+r       在历史命令中搜索
2、历史命令(将使用过的命令进行保存,方便日后使用)
   ⑴、历史命令
       history [选项] [历史命令保存文件](已经有的文件名可以忽略不写)
       选项: -c:清空历史命令  -w:把缓存中的历史命令写入保存 ~/.bash_history
   历史命令默认会保存1000条,可以在配置文件/etc/profile中进行修改
   HISTSIZE=1000  历史命令建议不进行清空,可以查看出错或者查看黑客活动。
   ⑵、历史命令的调用
       ◆、上下箭头调用以前的历史命令
       ◆、使用"!n"重复执行第n条历史命令
       ◆、使用"!!"重复执行上一条命令
       ◆、"!字串"重复执行最后一条以该字串开头的命令,如 !ls
   ⑶、命令与文件的补全
       在Bash中,按Tab键自动补全命令与文件。命令补全依赖echo $PATH,文件补全依赖目录。当命令出错时,按键没有任何反应。
3、输出重定向
   ⑴、标准输入输出
    设备      设备文件名     文件描述符        类型
   键盘      /dev/stidn          0            标准输入
      显示器     /dev/sdtout         1            标准输出
      显示器     /dev/sdterr         2            标准错误输出
   ⑵、输出重定向(把原来输出到显示器的重定向输出到文件)
 输出重定向类型   命令模式   命令用法
 标准正确输出    命令> 文件名 以覆盖方式把命令的正确输出输出到指定文件或设备中
 标准正确输出   命令>> 文件名 以追加方式把命令的正确输出输出到指定文件或设备中
 标准错误输出  错误命令 2>文件 以覆盖方式把命令的错误输出输出到指定文件或设备
 标准错误输出  错误命令 2>>文件 以追加方式把命令的错误输出输出到指定文件或设备
       重定向意义:在无人值守的命令执行过程中,把输出保存到文件中,方便查阅
       例如:ifconfig > test.log      #重定向到文件(正确输出左右都有空格)
             cat test.log             #查阅文件
             datecang 2>>test.log    #重定向错误命令到文件(注意2后面没有空格)
正确输   命令 > 文件 2>&1  以覆盖方式把命令的正确和错误输出输出保存到同一文件
出和错   命令 >> 文件 2>&1 以追加方式把命令的正确和错误输出输出保存到同一文件

shell命令

误输出   命令 &>文件       以覆盖方式把命令的正确和错误输出输出保存到同一文件
同时间   命令 &>>文件      以追加方式把命令的正确和错误输出输出保存到同一文件
         注释:最上面两个命令和上面两个命令效果是一致的
         例如:ls xiaodianying &>>test3.log  ls xiaodianying >> test.log 2>&1
         ls &>/dev/null  /dev/null是系统黑洞文件,保存进去就会消失,视作垃圾袋
保存     命令 >> 文件1 2>>文件2  正确输出追加到文件1,错误输出追加到文件2
         例如:cat xdy >> access.log 2>>error.log
     ⑶、输入重定向
     wc键盘输入统计命令(默认全部统计)
     语法:wc [选项] [文件名]
     选项:-c 统计字节数
           -w 统计单词数
           -l 统计行数
     例如:# wc  然后输入一堆文字保存(CTRL+D),就会显示行数、字节数、单词数
     wc统计命令输入重定向
     ◆命令 < 文件把文件作为命令输入      例如:wc < access.log
     ◆命令 << 标识符                     例如:wc << abc
     ...                                    当输入的内容里面出现abc
     标识符把标识符之间内容作为命令的输入   就会统计之间的行数、字节、字符数
4、多命令顺序执行
 ⑴、多命令执行符      格式                        作用
         ;        命令1; 命令2      多命令顺序执行,命令之间没有任何逻辑联系
        &&      命令1 && 命令2    逻辑与,当命令1正确执行,命令2才会执行;当命令1执行不正确,则命令2不会执行
         ||     命令1 || 命令2     逻辑或,当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行
   例如: date  ;  tar -zcvf etc.tar.gz /tec  ; date 
          ls && echo yes
          ls && echo yes || echo no      如果ls报错,就打印no,正确执行打印yes
     注意:分号 ; 执行的命令比较灵活,运用也不需要考虑命令执行对错,而且就算前面命令出错,也不会影响到后面的命令继续执行。&& 两个命令之间有简单的逻辑关系
 ⑵、管道符(比逻辑与和逻辑或应用更为广泛)
 命令格式: 命令1 | 命令2         #命令1的正确输出作为命令2的操作对象
 more 文件名(对象)                       #分屏查看文件内容
 ls -l /etc | more                 #将/etc里面的详细内容结果用分屏显示
 ll -a/etc/ | more
 netstat -an | grep ESTABLISHED    #查询系统所有的网络连接作为结果去查询匹配字符串ESTABLISHED结果的行,ESTABLISHED(正向连接)代表一个网络客户端  192.168.0.156:22  前面为IP,22为端口
netstat -an | grep ESTABLISHED | wc -l    #[双管道符]将上面匹配结果进行行数统计
       ⑶、通配符(和正则表达式中将的一致)
      通配符            作用
        ?          匹配一个任意字符
        *          匹配0个或者多个任意字符,即匹配任何内容
       []          匹配括号中任意一个字符,[abc],匹配abc中任意一个
       [-]         匹配括号中任意一个字符,-代表一个范围,如[a-z]
       [^]         逻辑非,表示匹配不是括号中內的字符,如[^0-9]匹配非数字的字符
       例子:
       ls dzp [0-9]               结果:dzp3  dzp2
       ls dzp [0-9] [0-9]         结果:dzp34
       ls dzp [^0-9]              结果:dzpb
       ls dzp [^0-9]*             结果:dzpblos dzpcangls
5、shell中特殊符号
   符号                       作用
    '  '      单引号中的所有特殊符号,都没有特殊含义。如$、反引号`
    " "       双引号中的所有特殊符号,都没有特殊含义。$、`、\、例外,分别表示调用变量的值、引用命令、转义符
    ` `        反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错
    $()        引用系统命令
    #         #开头代表注释
    $         用于调用变量的值,如果需要调用变量name的值时,需要用$name的方式得到变量的值
    \         转义符,在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出$符号,而不当做变量引用。
  注释:单引号里面都认为是字符串,包括一些特殊符号。
        双引号里面$、`、\、例外,分别表示调用变量的值、引用命令、转义符
        echo `ls`   echo $(ls)

请按F5,刷新后再评论
  • 全部评论(0
    还没有评论,快来抢沙发吧!