设为首页 收藏本站
查看: 3004|回复: 6

Linux shell之初入门

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-7-22 09:03:24 | 显示全部楼层 |阅读模式

一 、为何要学习 shell

Shell 脚本语言是Linux/UNIX系统上一种重要的脚本语言,在Linux/UNIX领域应用极为广泛,熟练掌握Shell脚本语言是一个优秀的Linux/UNIX开发者和系统管理员的必经之路。利用Shell 脚本语言可以简洁地实现复杂的操作,而且Shell 脚本程序往往可以在不同版本的Linux/UNIX系统上通用。

脚本语言的灵活性是以执行效率为代价的,脚本语言的执行效率通常不如编译型语言。当然,脚本语言一般不适用于大型的项目、计算复杂的工程或有高级需求的应用软件,它适用于系统管理、文本处理等方面完成特定功能的常用的小工具或小程序。

二 、什么是shell

shell就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

三 、shell的分类

基本上shell分两大类:

1 、图形界面shell

应用最为广泛的 Windows Explorer (微软的windows系列制作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manger (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。

2 、命令行式shell

传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。

文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。shell提供了你与操作系统之间通讯的方式。

3 、交互式shell和非交互式shell

交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。

shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

4 、shell的类型

Bourne shell (包括 sh,ksh,and bash)

Bourne shell ( sh)  ,Korn shell ( ksh)

Bourne Again shell ( bash),POSIX shell ( sh)

C shell (包括 csh and tcsh),C shell ( csh)

TENEX/TOPS C shell ( tcsh)

如下我们查看有哪些shell可用

181852499.png


四 、bash shell 的功能及特点

  1 、命令记忆能力(history)

   保存用户曾经执行过的命令操作,linux系统中存放位置:~/.bash_history文件

   a 、查看历史命令 history

182005929.png

   b 、调用历史命令


   c 、!n:执行历史记录中的第n条命令

   d 、!str:执行历史记录中以“str”开头的命令

   e 、设置记录历史命令的条数 /etc/profile

       修改 HISTSIZE 参数(默认为1000条)

   f 、history -c 为清空  ~/.bash_history中的记录

  2 、指令和文件名补全

   按tab键,它可以帮你补全一个指令,也可以帮你补全一个路径或者一个文件名。连续按两次tab键,系统则会把所有的指令或者文件名都列出来。

182152133.png


  3 、命令别名的设置

         alias把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用unalias解除别名功能。直接敲alias会看到目前系统预设的alias,alias 别名 =“正常命令”

182238167.png


  4 、作业控制,前台、后台控制

   当运行一个进程时,你可以使它暂停(按Ctrl+z),然后使用fg命令恢复它,利用bg命令使他到后台运行,你也可以使它终止(按Ctrl+c)。

  5 、通配符

  *:任意长度的任意字符

182320830.png

  ?: 任意单个字符

  []:指定范围内的任意字符;[a-z]

  [0-9]:所有数字,[a-z]:所有小写字母,[A-Z]:所有大写字母

  [a-zA-Z]所有字母

  [^]:脱字符,取反,指定范围外的任意单个字符,[^0-9]

  [^0-9][^0-9]

  6 、输入输出重定向

输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是<,输出重定向的命令是>,另外还有错误重定向2>,以及追加重定向>>。

182404800.png


  7 、管道符

管道符”|”,就是把前面的命令运行的结果丢给后面的命令

182437268.png


五 、bash 的变量

  1 、bash变量类型;

     本地变量:只对当前shell进程有效

     局部变量:local VAR_NAME-Value

     环境变量:export VAR_NAME=Value,对当前shell及其子shell有效

     位置变量; $1,$2...

     特殊变量; $$,$!,$#,$?

  2 、变量的定义与显示及其引用

     定义变量:

     [set] VAR_NAME=Value (set可省略)

     变量显示 :echo

     引用变量 :

      ${VAR_NAME}

182534783.png


  3 、变量的设置及其设置规则

  变量与变量的内容以一个等号“=”来连接,等号两边不能直接使用空格符

  变量内容若有空格符可以使用双引号“”或是单引号‘’将变量内容结合起来,但是双引号内的特殊字符如$可以保持原本的特性,单引号的特殊字符则仅为一般字符(纯文本)。

182612605.png

  4 、取消变量的方法

   为使用“unset 变量名称”例如取消“NAME”的设置

  “unset NAME”

  5 、变量的命名风格

    a:只能包含字母、数字和下划线

    b:不能以数字开头

    c:严格区分大小写

    d:要做到见名知义

    e:命名规范,风格统一

六 、系统环境变量与个人环境变量的配置文件

  1 、bash的环境变量

  使用env(environment)查看环境变量与常见环境变量的说明,当然使用export也会查看到同样的内容。

182656497.png


  2 、环境变量的功能

PATH 决定了shell将到哪些目录中寻找命令或程序

HOME 当前用户主目录

182811516.png

HISTSIZE 历史记录数

LOGNAME 当前用户的登录名

HOSTNAME 指主机的名称

SHELL 前用户Shell类型

LANG 语言相关的环境变量,多语言可以修改此环境变量

MAIL 当前用户的邮件存放目录

PWD 当前目录

182924871.png

  3 、bash的配置文件

(1) 、profile类:交互式登录用户

  文件:/etc/profile:全局,对所有用户有效

/etc/profile.d/*.sh:全局,对所有用户有效

~/.bash_profile:仅对某用户自己有效

  功能:设定环境变量;运行命令或脚本

(2)、 bashrc类:非交互式登录用户

  文件: /etc/bashrc:全局有效

~/.bashrc:仅对某用户自己有效

  功能: 设定环境变量; 定义命令别名;

  4 、在配置文件更新后,新的定义不会立即生效,要想生效,

  有两种方式:

  a,重新登录;

  b,source FILE

七、bash常用的基础命令的应用

1 、数据流的重定向

      将默认数据流改为其他设备,就称为IO重定向

     a 、输出重定向:

      >,覆盖重定向;set -C关闭覆盖,避免覆盖                                                                                                   

      set +C 关闭上述功能,强制覆盖:>|

      >>,追加重定向

      /dev/null;数据黑洞,bit bucket

     b 、错误输出重定向:

       2>;覆盖重定向

      2>>: 追加重定向

     c 、同时重定标准输出和错误输出

     COMMAND >/path/to/stdout  2> /path/to/error

标准输出和错误输出定向至一个文件

     &>  ,&>>

     COMMAND &> /path/to/somewhere

     COMMAND  > /path/to/somewhere 2>&1

     d 、输入重定向:

    <:COMMAND < /from/somewhere

   <<: Here Document ,此处创建文档

  2 、管道

    管道: shell COMMAND1 |

    程序:读入数据,执行结果输出

    cat 重定向:输入重定向,输出重定向

    stdin :Standard Input  (标准输入,默认输出)

    stdout; Standard output (标准输出,默认输出)

  3 、选取命令 grep ,cut

对于grep上期《Linux  grep命令的使用及正则表达式》中详细介绍过,       我们来看看cut命令的使用

语法:cut -d “分隔字符” [-cf] n 这里的n是数字

        -d :后面跟分隔字符,分隔字符要用双引号括起来

        -c :后面接的是第几个字符

        -f :后面接的是第几个区块

183019481.png


  4 、sort:用做排序

   语法:sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2

        -t 分隔符:作用跟cut的-d一个意思

        -n :使用纯数字排序

        -r :反向排序

        -u :去重复

183050689.png

  5 、wc:统计文档的行数、字符数、词数,

   常用的选项为:

         -l :统计行数

       -m :统计字符数

        -w :统计词数

183122780.png


6 、uniq:去重复的行

       -c :统计重复的行数,并把行数写在前面

  -d: 只显示重复的行

  -u:只显示没重复的行

7、tr:替换字符,常用来处理文档中出现的特殊符号,常用的选项有两个:

      -d :删除某个字符,-d 后面跟要删除的字符

      -s :把重复的字符去掉

   最常用的就是把小写变大写:tr ‘[a-z]’ ‘[A-Z]’

183155339.png



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-7677-1-1.html 上篇帖子: shell 脚本编程之for语句、if语句(1 ) 下篇帖子: shell脚本编程之选择控制结构 Linux

尚未签到

发表于 2013-7-23 01:33:12 | 显示全部楼层
写的真的很不错

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-7-24 03:39:01 | 显示全部楼层
有竞争才有进步嘛

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

发表于 2013-7-24 21:48:13 | 显示全部楼层
生活***好玩,因为生活老***玩我!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-8-10 22:03:03 | 显示全部楼层
禽兽尚且有半点怜悯之心,而我一点也没有,所以我不是禽兽。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-8-10 22:44:12 | 显示全部楼层
我抢、我抢、我抢沙发~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-8-10 23:06:41 | 显示全部楼层
只要不下流,我们就是主流!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表