Linux基础学习笔记2 Shell

Linux基础学习笔记2 Shell

本文发布于博客frankwtq

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

参考资料

  • 主要为视频资料:慕课网
  • 辅助书籍:Linux从入门到精通(刘忆智 清华大学出版社)

Shell概述

  • shell是一个命令行解释器,他为用户提供一个Linux内核发送请求以便运行程序的界面系统及程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
  • Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令
  • Shell的两种主要语法类型有Bourne和C,彼此不兼容。Bourne包括:sh、ksh、Bash、psh、zsh;C主要包括:csh、tcsh。我们常使用的是Bash
  • /etc/shells文件中记录了能使用的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"

脚本执行

  • 赋予执行权限,直接运行

    chomd 755 hello.sh
    ./hello.sh

  • 通过Bash调用执行

    bash hello.sh

Bash的基本功能

命令别名与快捷键

查看与设定别名

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

别名永久生效与删除别名

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

历史命令

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

历史命令的调用

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

输出重定向

标准输入输出(stdin stdout stderr)

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

输出重定向

命令 > 文件
命令 >> 文件
错误命令 2> 文件
错误命令 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)    #作用同反引号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,348评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,122评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,936评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,427评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,467评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,785评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,931评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,696评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,141评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,483评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,625评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,291评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,892评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,492评论 2 348

推荐阅读更多精彩内容