bash入门 – RHCE 3-1 – 《TTLSA出品》

tonyty163 Linuxbash入门 – RHCE 3-1 – 《TTLSA出品》已关闭评论8,007字数 2455阅读8分11秒阅读模式
  • Bash简介

bash 是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并同Version 7 Unix一起发布。bash则在1987年由布莱恩·福克斯创造。

Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell。事实上,还有许多传统UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用。文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

bash是大多数Linux系统以及Mac OS X默认的shell,它能运行于大多数类Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现Windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在bash中执行,只用了Bourne特殊变量或使用了Bourne的内置命令的脚本才需要修改。 bash的命令语法很多来自Korn shell (ksh) 和 C shell (csh), 例如命令行编辑,命令历史,目录栈,$RANDOM 和 $PPID 变量,以及POSIX的命令置换语法: $(...)。作为一个交互式的shell,按下TAB键即可自动补全已部分输入的程序名,文件名,变量名等等。文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

 文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

  • Bash语法

注:这里所说的Bash是指bash环境,而非shell编程,所以本章重点讲的是Bash在linux中是如何运行的。文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

Bash的常用语法包括:命令、选项、参数[必填|可选]文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

举个例子:文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

[root@localhost ~] # date -s “Wed Sep 16 00:21:14 PDT 2015”

以上内容是一个完整的命令行输入,接下来会对命令行内容进行完整讲解文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

root为登录用户文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

@是分隔符文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

localhost为计算机名称文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

~为当前所处目录文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

#表示为超级用户(root)身份运行,如果非超级用户运行会显示’$’符号文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

date是当前执行命令文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

-s是date选项,表示按照特定格式来定义时间文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

“Wed Sep 16 00:21:14 PDT 2015”表示时间显示为当前格式,可以理解为一个赋值操作文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

 文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

  • Bash使用技巧

在开始使用bash之前,我们要去记住这么多命令以及其对应的选项和参数,肯定是不切实际的,那么我们要怎样快速寻找到对应的选项及参数呢?文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

这里就要介绍三个方法,同时这也是Linux中获取命令详解,很重要的命令及参数文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

  • man

在绝大多数情况下,我们使用man都能找到我们想要的答案,man其实是manual的缩写,故名思意,这就是一部手册。所以它里面的内容会讲的很详细,想要学习命令的具体用法,且英文水平能够看懂的人,这其实不失为学习linux命令的一个很好的途径。文章源自运维生存时间-https://www.ttlsa.com/linux/bash-starting-rhce-3-1/

2、--help

实用派的首选,因为它的说明比man要少很多,但是只要你有一定的Linux基础,你可以很直观地看到所有命令的选项及参数简介。

所以说掌握了上面两个命令,基本上所有的Linux命令我们都能轻松掌握。

 

除了帮助选项以外,Linux还提供了强大的历史命令检索功能

最常见的就是history,顾名思义,它的主要作用就是列出最近1000条历史记录(包括远程执行的命令)。

以下是一段history节选

[root@localhost Desktop]# history 
    1  date --help
    2  date
    3  history 
    4  ls
    5  id
    6  date
    7  history 
    8  su - root
    9  ls
   10  history

从上述节选中我们可以看出history给我们列出了最近执行的命令,如果是一些比较复杂的命令,那么此时history就派上了大用场。

那么如果我们没有鼠标可以选择复制,那么该如何来重复执行历史命令呢?

这里给大家介绍两个方法

  • 用’!’带历史序号,如我要重复执行第2条历史记录,那么我要输入的就是
[root@localhost Desktop]# !2
date
Wed Sep 16 01:13:43 PDT 2015

如上,我们执行了历史命令中的第二条

2、还有一个方式是用组合键(Ctrl+r)的形式,快速索引历史记录,如果是一条很长的命令加选项及参数的命令行,那么我们只需要输入前面的命令即可,演示如下。

[root@localhost ~]# history 
    1  history 
    2  exit
    3  date -s "Wed Sep 16 16:17:43 CST 2015"
    4  date
    5  date -s "Wed Sep 16 16:17:43 PDT 2015"
    6  date
    7  history

接下来我们按Ctrl+r会出现如下提示符

(reverse-i-search)`':

此时我们输入date,会提示最后一条date命令,那么我们要倒数第二条命令就要再按一次Ctrl+r即可,如果要继续寻找上一条再按一次即可,以此类推

(reverse-i-search)`date': date -s "Wed Sep 16 16:17:43 PDT 2015"

以上两个小技巧在日常工作中使用频率是非常高的,还希望大家花点时间,多多实践,理解了bash运行的机制,接下来的课程我们讲解的时候就会更容易理解。

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
tonyty163
  • 本文由 发表于 16/09/2015 16:37:28
  • 转载请务必保留本文链接:https://www.ttlsa.com/linux/bash-starting-rhce-3-1/
  • bash
  • shell基础
  • shell编程
  • 入门