认识bash 这个shell

338 阅读3分钟

eg:计算机输出自己需要的程序。

  • 硬件:需要硬件能进行发声(声卡)。
  • 核心管理:操作系统的核心可以驱动芯片程序。
  • 应用程序:需要使用者输入程序。 以上为程序工作的简单流程。

操作程序是在操作硬件,防止用户随意操作产生系统崩坏,就出现了应用程序供应用户使用。

Bourne Again SHell

shell 存在多种,bash就为Bourne SHell(简称sh)的增强版.

如果有特殊的shell,那么就需要在etc/shells中进行添加,以便用于识别使用特殊的shell。

功能:主要兼容sh。

优点

命令编修能力

  • 可以使用上下键翻被记住的指令,在很多的distribution默认的指令记忆达到近1000个!这么多的指令记录在.bash_history。
  • 备注:~/.bash_history记录的是前一次登入所执行的命令。而至于这一次登入所执行的指令都被暂存在内存中,当成功注销系统后,该指令才会记录到.bash_history. ---- 作用:有助于查错和知道之前的指令。但是有被人利用的风险。

tab键的使用

  • 第一个字母输入后点击,功能为命令补全。
  • 第二个字母按,为档案补齐。

命令别名设定(alias)

  • 可以将ls -al取代成自己喜欢输入的命令。例:alias lm = 'ls -al',也可输入alias查询设置已有的别名。

工作窗口的背景化

  • 防止程序的停止

程序化脚本

  • shell script可以参考DOS的批处理文件,可以藉由shell提供的环境变量及相关指令来进行设计。

通配符

  • 在bash下使用通配符,即在某种条件下满足的多种文件。例:find *.html 发现当前目录下的所有的html文件。

type

  • 用于指定是否为内部指令。type cd

指令下达

  • 使用 +enter 键跳到下一行,用于指令过长的情况。(这里的\用于跳脱)
  • 注:当登录到终端机上时,会根据/etc/password/档案的设定给我们一个shell,然后根据上面的指令下达

shell 变量功能

linux系统是多人多任务的系统,每个人都有自己的bash。

变量

用一些特定字符来值一些不固定的内容。 注:只有当进入到系统才能使用shell,那么在此之前的一些操作的参数/变量都放在环境变量。如背景色。 查找环境变量:echo PATH;echoHOME.使用 变量名,或{变量名} 设置环境变量:mail=00000000000@qq.com,然后使用echo $mail的方式进行查看

设置变量方法和注意事项
  1. 发量不发量内容以一个等号=连结,如下所示: myname=VBird
  2. 等号两边丌能直接接空格符,如下所示为: myname = VBird或myname=VBird Tsai
  3. 发量名称叧能是英文字母不数字,但是开头字符不能是数字,如下为: 2myname=VBird
  4. 发量内容若有空格符可使用双引号"单引号'将发量内容结合起杢,但 双引号内特殊字符如 等,可以保有原本的特性,如下所示:
var="lang isLANG"则echo var可得lang is en_US o 单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:
var='lang isLANG'则echo var可得lang isLANG
  5. 可用跳脱字符 \ 将特殊符号(如 [Enter], $, , 空格符, '等)发成一般字符;
  6. 在一串指令中,还需要藉由其他的指令提供的信息,可以使用反单引号指令(指令)。特删注意,那个 ` 是键盘上方的数字键 1 左边那个按键,而不是单引号! 例如想要得核心版本的:version=(uname -r)再echo $version可得2.6.18-128.el5
  7. 若该发量为扩增发量内容时,则可用 "发量名称" 或{发量} 累加内容,如下所示: PATH="$PATH":/home/bin
  8. 若该发量需要在其他子程序执行,则需要以 export 使发量发成环境发量: export PATH
  9. 通常大写字符为系统默认发量,自行讴定发量可以使用小写字符,方便判断 (纯粹依照使用者兴趣 不嗜好): 10.删除变量的方法为使用 unset :unset 发量名称,例如取消 myname 的设定: unset myname
子程序

在当前shell下,启动另一个shell。称为子程序。一般情况下父程序的变量不能被子程序使用。但使用export就可以。

每个linux都有多个核心,几乎distribution的和新版本都不相同,可以使用uname -r进行查询。 范例六:如何迚入刡您目前核心癿模块目录? [root@www ~]# cd /lib/modules/uname -r/kernel [root@www ~]# cd /lib/modules/$(uname -r)/kernel

  • 注: 配置变量:name=beck;MyName=$name;
  • 如果常使用一个目录:work=/lib/ee/e/e/e/e/e/e/e/e/e ---> cd $work可以进行简洁跳转
总结:以上为部分bash总结,更加倾向于bash的由来,发展,应用等。