Linux基础学习笔记2 Shell

2017-04-17  本文已影响0人  frankwtq

Linux基础学习笔记2 Shell

本文发布于博客frankwtq

这是Linux基础学习笔记的第二部分,主要介绍Shell。上一部分为Linux基础学习笔记1

参考资料

Shell概述

脚本执行方式

echo输出命令

echo [选项] [输出内容]
    -e  支持反斜杠控制的字符转换
\a  输出警告音
\b  退格键,就是向左删除键
\n  换行符
\r  回车键
\t  制表符,就是Tab键
\v  垂直制表符
\0nnn   按照八进制ASCII码表输出字符
\xhh    按照十六进制ASCII码表输出字符

第一个脚本

vim hello.sh
#!/bin/Bash
#The first program

echo -e "\e[1;34m 天上掉下个林妹妹! \e[0m"

脚本执行

Bash的基本功能

命令别名与快捷键

查看与设定别名

alias
    查看系统中所有的命令别名
alias 别名= ‘原命令’
    设定命令别名  

别名永久生效与删除别名

vi ~/.bashrc
    写入环境变量配置文件
source .bashrc
    重新载入环境变量配置文件,使其立马生效
unalias 别名
    删除别名  

历史命令

history [选项] [历史命令保存文件]
    -c  清空历史命令
    -w  把缓存中的历史命令写入历史命令保存文件~/.bash_history
    历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

历史命令的调用

输出重定向

标准输入输出(stdin stdout stderr)

|设备|设备文件名|文件描述符|类型|
|:---:|:---:|:---:|:---:|
|键盘|/dev/stdin|0|标准输入|
|显示器|/dev/stdout|1|标准输出|
|显示器|/dev/stderr|2|标准错误输出|

输出重定向

命令 > 文件
命令 >> 文件
错误命令 2> 文件
错误命令 2>> 文件  

命令 > 文件 2>&1
命令 >> 文件 2>&1
    # 重要,以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令 &> 文件
命令 &>> 文件
    # 重要,以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令 >> 文件1 2>> 文件2
    # 重要,把正确的输出追加到文件1中,把错误的输出追加到文件2中

输出重定向

wc [选项] [文件名]
    -c  统计字节数
    -w  统计单词数
    -l  统计行数
命令 < 文件把文件作为命令的输入
    例如:wc < abc.log
命令 << 标识符
    标识符把标识符之间内容作为命令的输入
    例如:wc << abc在后面输入任意字符串,当再次遇到abc时会停止输入并显示统计的结果   

多命令顺序执行

命令1 : 命令2
    # 多个命令顺序执行,命令之间没有任何逻辑联系
命令1 && 命令2
    # 逻辑与
    # 当命令1正确执行,则命令2才会执行
    # 当命令1执行不正确,则命令2不会执行
命令1 || 命令2
    # 逻辑或
    # 当命令1执行不正确,命令2才会执行
    # 当命令1正确执行,命令2不会执行

例子:

pwd;touch abc;ls;data
ls anaconda-ks.cfg && echo yes      #运行成功显示yes
ls anaconda-ks.cfg || echo no   #运行失败显示no
命令 && echo yes || echo no   #运行成功显示yes,运行失败显示no

管道符

命令1 | 命令2
    命令1的正确输入作为命令2的操作对象
    例如:
        ll –a /etc/ | more
        netstat –an | grep ESTABLISHED | wc -l  

Shell中特殊符号

通配符

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

Bash中其他特殊符号

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

例如:

aa=123;echo $aa
    输出:123
echo ‘$aa’
    输出:$aa
echo “$aa”
    输出:123
aa=`ls` #反引号 
echo “$aa”
    输出:执行ls的结果
aa=$(ls)    #作用同反引号
上一篇下一篇

猜你喜欢

热点阅读