Shell基础之Bash的基本功能

Shell基础之Bash的基本功能

  Bash是众多Shell中Linux使用的一个版本,由于早年的 Unix 年代,发展者众,所以由于 shell 依
据发展的不同就有许多的版本,例如常听到的 Bourne SHell (sh) 、在 Sun 里头预设的 C SHell、 
商业上常用的 K SHell、, 还有 TCSH 等等,每一种 Shell 都各有其特点。至于 Linux 使用的这一种
版本就称为『 Bourne Again SHell (简称 bash ) 』,这个 Shell 是 Bourne Shell 的增强版本,也
是基准于 GNU 的架构下发展出来的呦!
  在介绍 shell 的优点之前,先来说一说 shell 的简单历史吧:第一个流行的 shell是由 Steven Bourne 
发展出来的,为了纪念他所以就称为Bourne shell ,或直接简称为 sh !而后来另一个广为流传的 shell 
是由柏克莱大学的 Bill Joy 设计依附于BSD版的Unix系统中的 shell,这个 shell 的语法有点类似
C 语言,所以才得名为 C shell ,简称为 csh 。由于在学术界 Sun 主机势力相当的庞大,而 Sun主要是
BSD 的分支之一,所以 C shell 也是另一个很重要而且流传很广的 shell 之一。
  那么 BASH 是怎么一回事呢?这个 shell 是 GNU 计画中重要的工具软体之一,目前也是 GNU 作业系统中
标准的 shell ,他主要相容于 sh 。所以,可想而知的,目前几乎所有的 Linux distribution 都是使用 
bash 作为管理核心的主要 shell !

BASH 的基本功能

1、命令别名与快捷键

    别名,顾名思义就是小名,指的都是一个命令,作用就是一些较长的命令,我们可以给它起一个简单、易操作的命令,我们就可以使用这个别名进行同样的操作。

    命令 #  alias可以查看系统中默认的拥有别名的命令。


     同时:alias可以设定自己的命令别名,alias 别名 = '原命令'

     ls ='ls --color=never'命令之间不能有空格,ls = 'ls --color = never'是错误的。


 使用alias设定的别名,当系统关机重启后就会失效,要想永久使用,需要写入环境变量配置文件(vi ~/.bashrc)

 # vi /root/.bashrc  配置文件在家目录下的.bashrc,创建好配置文件之后需要重启才能生效,如果想立即生效

使用命令# source .bashrc 把文件中的命令调用一遍即可生效。


    要想删除别名使用命令: # unalias 别名  ,如果要彻底删除,还要在配置文件中删除添加的命令

对于原命令和别名两个命令,他们的执行顺序是什么,这就要用到命令优先级了,介绍如下

命令生效顺序:

第一:执行用绝对路径或相对路径执行的命令

第二:执行别名命令(别名命令优先级高于原始命令)

第三:执行Bash的内部命令

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

下面介绍一些Bash中常见快捷键

Ctrl+C  强制终止当前目录

Ctrl+l  清屏

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

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

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

Ctrl+z  把命令放入后台

Ctrl+r  在历史命令中搜索


2、历史命令

   历史命令就是把我们操作过的命令保存在系统当中,当需要的时候再进行调用(上下箭头键可以切换历史命令)

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

  选项: -c :清空历史命令

         -w : 把缓存中的历史命令写入历史命令保存文件~/.bash_history

    历史命令默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改 HISTSIZE的值


历史命令的调用

* 使用上下箭头调用以前的历史命令

* 使用“!n”重复执行第n条历史命令

* 使用“!!”重复执行上一条历史命令

* 使用“!字符串”重复执行最后一条以该字符串开头的命令

命令与文件补全

* 在Bash中,在输入命令或文件时,按“Tab”键可以自动补全命令或文件目录,不仅加快了速度,还能检查命令是否敲错,错误的命令是不会自动补全的。敲两下Tab键,会输出跟当前命令所有相关的命令。

3、输出重定向

将文件写入电脑是输入,从电脑写出是输出。

标准输入输出

设备设备文件名文件描述符类型
键盘/dev/sdtin0标准输入
显示器/dev/sdout1标准输出
显示器/dev/sdterr2标准错误输出
输出重定向

   就是把输出方向做一个改变,不再输出到显示器上,输出到文件当中。

类型符号作用
标准输出重定向命令 > 文件以覆盖方式,把命令的正确输出,输出到指定的文件或设备当中。
 命令 >> 文件以追加的方式,把命令的正确输出,输出到指定的文件或设备当中。
标准错误输出重定向错误命令2>文件以覆盖方式,把命令的正确输出,输出到指定的文件或设备当中。
 错误命令2>>文件以追加的方式,把命令的正确输出,输出到指定的文件或设备当中。

将log日志保存到test.log文件中。 # cat test.log查看文件内容;这里将输出到屏幕上的日志保存到了test.log文件中。“>”是覆盖文件内容,“>>”是添加到原文件内容的后面。如果是错误的命令需要添加一个2。

注意:正确的输出重定向">"或">>"左右两边有空格,错误的输出重定向"2>"或"2>>"左右两边不能有空格,否则命令不能执行。


然而,一般情况下我们需要将正确的信息和错误的信息同时保存。

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

在Linux中的 /dev/null 文件是一个黑洞一样的文件,丢进去的文件,全部会被系统清理,完全找不到。

命令 >> 文件2>&1;命令&>>文件 ;命令>>文件1 2>>文件2;这是三种常见的重定向命令。


# wc [选项][文件名]

  选项:-c统计字节数

        -w统计单词数

        -l统计行数

命令输入# wc 输入文件字符后Ctrl+d结束。

命令<文件 ;把文件作为命令的输入,wc默认是把键盘作为命令的输入,"<"将输出重定向到了文件。


4、多命令顺序执行

   多命令执行符                  格式                                           作用
               ;         命令1;命令2
多个命令顺序执行,命令之间没有任何逻辑联系
              &&        命令1&&命令2逻辑与
当命令1正确执行,命令2才会执行
当命令1执行不正确,命令2不会执行
               ||        命令1||命令2逻辑或
当命令1执行不正确,命令2才会执行
当命令1正确执行,命令2不会执行
命令# ls && echo Yes || echo No 如果ls命令执行正确,则执行echo Yes,(ls && echo Yes正确)echo No 就不会执行;如果# llss && echo Yes || echo No的 llss执行错误命令,&& echo Yes就不会执行,则会执行 || echo No;



管道符

   命令格式:[root@localhost ~]# 命令1 | 命令2

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

# ls -l /etc | more ; (ls -l /etc)的命令结果作为more的操作对象,将结果分屏显示。

5、通配符

            通配符                                            作用
              ?  匹配任意一个字符
              *  匹配0个或多个任意字符,也就是可以匹配任何内容
              [ ] 匹配中括号中任意一个字符,例如:[abc] 代表一定匹配一个字符,
 或者是a,或者是b,或者是c.
              [-] 匹配中括号中任意一个字符,- 代表一个范围。例如:[a-z]代表
 匹配一个小写字母
              [^] 逻辑非,表示匹配不上中括号内的一个字符,例如:[^0-9]代表
 匹配一个不上数字的字符。

Bash中其它特殊符号

            符号                                                     作用
             ‘ ’单引号;在单引号中所有的特殊符号,如"$"和“ · ”(反引号)都没有特殊含义
            “ ”双引号;在双引号中特殊符号都没有特殊含义,但是“$”和“ · ” 和“ \ ”是例外,
拥有“调用变量的值”、“”引用命令“和”转义符“的特殊含义
            ··反引号;反引号括起来的命令是系统命令,在Bash中会先执行它。和$()作用一样,
不过推荐使用$(),因为反引号非常容易看错。
          $()和反引号命令一样,用来引用系统命令
          #在Shell脚本中,#开头的行代表注释
          $用于调用变量的值,如需要调用变量name的值时,需要使用$name的方式得到变量的值。
          \转义符,跟在 \ 之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出”$“符号,而不是
当做是变量引用



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值