Shell入门与Bash基本功能

一.Shell入门

1.什么是Shell?

Shell就是一个用户跟操作系统之间的一个命令解释器。如通过echo $SHELL查看当前用的SHELL版本。

2.echo输出方式
  • echo [选项] [输出内容]
    • 选项:-e支持反斜线控制的字符转换。如\a\n\b...
3.第一个Shell脚本
  • 后缀名.sh(如:first_shell.sh)

  • 第一行标注#!/bin/bash(固定格式)

  • 通常第二行注释#当前是什么shell脚本,第三行注释这个脚本是干什么用的,第四行注释这个脚本的作者

  • 写具体的操作信息(echo表示打印的意思)——相当于将命令写到脚本里

  • 实例代码

    #!/bin/bash
    #Filename:first_shell.sh
    #auto echo hello world
    #by authors Jack 2018
    echo "Hello world"
    
  • 直接执行shell脚本需要修改文件的执行权限,且需要切换到管理员用户chmod o+x first_shell.sh

  • 如果用bash自己的环境去执行脚本,则不需要修改对应的执行权限了bash first_shell.sh

  • 执行后命令行打印Hello world

二.Bash的基本功能

1.别名与快捷键
  • alias查看系统当中已经定义的别名
  • alias 别名='原命令'定义别名(重启不生效),如alias vi='vim'以后每次敲vi都会执行vim
  • 别名永久生效vi ~/.bashrc将其写入环境变量配置文件中,并执行source ~/.bashrc保存配置文件的修改
  • unalias 别名删除别名(重启不生效)
  • 命令生效顺序
    • 第一顺位执行用绝对路径或相对路径执行的命令(直接用路径执行shell脚本如./first_shell.sh
    • 第二顺位执行别名(在自定义的别名中找)
    • 第三顺位执行Bash的内部命令(在Bash自己的命令中查找如rm等)
    • 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令(在PATH路径下查找)
    • 故由上可知,如果别名和内部命令相同,则会执行别名而覆盖掉原有内部命令
  • 快捷键
    • ctrl+c强制终止当前命令
    • ctrl+l清屏
    • ctrl+a光标移动到命令行首
    • ctrl+e光标移动到命令行尾
    • ctrl+u光标所在位置删除到行首
    • ctrl+z把命令放入后台
    • ctrl+r在历史命令中搜索
2.历史命令

将操作过的命令存到系统中,以后需要时还可以再次执行

  • history [选项][历史命令保存文件]
    • 选项
      • -c清空历史命令
      • -w把缓存中的历史命令写入历史命令保存文件~/.bash_history
  • 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile修改其中的HISTSIZE=1000
  • 历史命令的调用
    • 使用上下箭头调用以前的历史命令
    • 使用"!n"重复执行第n条历史命令
    • 使用"!!"重复执行上一条命令
    • 使用"!子串"重复执行最后一条以该子串开头的命令
  • 命令与文件补全:在Bash中,命令与文件补全是非常方便与常用的功能,我们只要再输入命令或文件时,按"Tab"键就会自动进行补全
3.输出、输入重定向
  • 标准输入输出

    设备设备文件名文件描述符类型
    键盘/dev/stdin0标准输入
    显示器/dev/sdtout1标准输出
    显示器/dev/sdterr2标准错误输出
  • 输出重定向类型、符号与作用**【注意:错误输出的大于号左右两侧不能有空格】**

    类型符号作用
    标准输出重定向命令 > 文件以覆盖的方式,把命名的正确输出输出到指定的文件或设备当中
    标准输出重定向命令 >> 文件以追加的方式,把命令的正确输出输出到指定的文件或设备当中
    标准错误输出重定向错误命令 2>文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
    标准错误输出重定向错误命令 2>>文件以追加的方式,把命令的错误输出输出到指定的文件或设备当中
    正确输出和错误输出同时保存命令 > 文件 2>&1以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
    正确输出和错误输出同时保存命令 >> 文件 2>&1以追加的方式,把正确输出和错误输出都保存到同一个文件当中
    正确输出和错误输出同时保存命令 &> 文件以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
    正确输出和错误输出同时保存命令 &>> 文件以追加的方式,把正确输出和错误输出都保存到同一个文件当中
    正确输出和错误输出同时保存命令 >>文件1 2>>文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中
    • ls &>/dev/null则意味着将使用ls命令的结果放到Linux定义的黑洞(可以理解成垃圾站)中,常用于在脚本中不记录某些内容
  • wc [选项] [文件名]获得输入的单词数目,行数和字节数

    • 选项
      • -c统计字节数
      • -w统计单词数
      • -l统计行数
    • 使用时输入wc命令,之后随意输出内容(以空格分割),按ctrl+d则会返回总行数,单词数和字节数
  • 输入重定向

    • 命令<文件把文件作为命令的输入。如wc < access.log结果为9 13 147则表示有9行13个单词147字节
    • 命令<<标识符,当输入wc << 标识符,之后输入一些内容,之后再输入标识符时,则会统计两个标识符中间的行数、单词数和字节数
4.管道符
  • 多命令顺序执行

    多命令执行符格式作用
    ;命令1;命令2多个命令顺序执行,命令之间没有任何逻辑联系(不管中间命令是否报错,其余命令仍正常执行)
    &&命令1&&命令2逻辑与。当命令1正确执行,则命令2才会执行。当命令1执行不正确,则命令2不会执行。
    ||命令1||命令2逻辑或。当命令1执行不正确,则命令2才会执行。当命令1正确执行,则命令2不会执行。
    #eg.
    ls && echo yes || echo no
    
  • 管道符

    • 命令格式:命令1 | 命令2
    • 命令1的正确输出结果作为命令2的操作对象;命令1如果没有正确输出,则不会执行命令2
    • ls -l /etc | more
  • 注意:管道符和命令执行符不同,命令执行符只会控制是否执行,但管道符又相互之间操作对象的传递

  • netstat -an查看所有网络连接命令

    #eg.查看当前服务器连接了多少人
    netstat -an | grep ESTABLISHED | wc -l
    
5.通配符
  • 通配符
通配符作用
匹配一个任意字符
*匹配0个或任意多个任意字符,也就是匹配任何内容
[]匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c
[-]匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母
[^]逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符
  • Bash中其他特殊符号
符号作用
‘’单引号。在单引号中所有的特殊符号,如"$“和”`"(反引号)都没有特殊含义
“”双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"`“和”\"是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。
``反引号。反引号括起来的内容是系统命令,在Bash中会先执行它,和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。
$()和反引号作用一样,用来引用系统命令
#在Shell脚本中,#开头的行代表注释
$用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值
\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出"$"符号,而不当做时变量引用
#举例
a=`ls`
b=$(ls)
echo $a#打印当前目录
echo $b#打印当前目录
echo ls#打印 ls
echo \$b#打印$b
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值