Bash shell系列里,由变量谈起,先讲到环境变量的功能与修改的问题, 然后会继续提到历史指令的运用。接下来,就会谈一下『数据流重导向』这个重要概念,
最后就是管线命令的利用!

一  Bash shell简介

管理整个硬件的其实是核心 (kernel),一般使用者 (user) 则是以
shell 来跟核心沟通~

我们常常提到的 shell 其实是比较狭隘的定义,一般来说,在 Linux 里头,所谓的 shell 就是指 BASH 这个文字模式的 shell 。但是,广义的 shell 也可以是 KDE 之类的图形接口控制软件呢! 因为他也可以帮我们与
kernel 进行沟通。

那么我们来了解一下 Linux 使用的是哪一个 shell 呢?检查一下 /etc/shells 这个档案,至少就有底下这几个可以用的 shells:

    /bin/sh (已经被 /bin/bash 所取代)

    /bin/bash (就是 Linux 预设的 shell)

    /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)

    /bin/tcsh (整合 C Shell ,提供更多的功能)

    /bin/csh (已经被 /bin/tcsh 所取代)

    /bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)

我这个使用者预设会取得哪一个 shell 啊?!



还记得我们在 首次进入 Linux -- 以文字方式登入 那个章节当中提到的登入动作吧?当我登入的时候,系统就会给我一个 shell 让我来工作了。 而这个登入取得的 shell 就记录在 /etc/passwd 这个档案内!这个档案的内容是啥?

[root@linux ~]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

.....(中间省略).....

二  Bash shell 功能简介

chap1    BASH 主要的优点有底下几个:



1) 命令编修能力(类似 DOS 的 doskey 功能):

『记忆使用过的指令!』 指令列按『上下键』就可以找到前一个输入的指令!记录的档案在你的家目录的.bash_history ! ~/.bash_history 记录的是前一次登入以前所执行过的指令,
这一次登入所执行的指令都被暂存在暂内存中,当您成功的注销系统后,该指令记忆才会记录到 .bash_history 当中! 



2) 命令与档案补全功能:

    [Tab] 接在一串指令的第一个字的后面,则为命令补全;

    [Tab] 接在一串指令的第二个字以后时,则为『档案补齐』!

    如果我想要知道我的环境中,所有可以执行的指令有几个? 就直接在 bash 的提示字符后面输入两个 [tab][tab] 就能够输出所有的可执行指令了。 



3) 命令别名(alias)设定功能:

    alias lm='ls -al'



4) 工作控制(jobs)、前景背景控制:

    资源管理章节中会再提及



5) Shell scripts 的强大功能:



在 DOS 年代还记得将一堆指令写在一起的所谓的『批次档』吧?在 Linux 底下的 shell scripts 则发挥的更为强大的功能,可以将您日常生活当中常需要下达的连续指令写成一个档案, 该档案并且可以透过对谈交互式的方式来进行主机的侦测工作!整个设计下来几乎就是一个小型的程序语言了!以前在
DOS 底下需要程序语言才能写的东西,在 Linux 底下使用简单的 shell scripts 就可以帮你达成了



6) 万用字符*



举例来说,想要知道 /usr/X11R6/bin 底下有多少以 xt 为开头的档案吗?ls -l /usr/X11R6/bin/xt* 就能够知道啰~此外,还有其它可供利用的万用字符, 这些都能够加快使用者的操作.



chap2  内建命令: type



为了方便 shell 的操作,其实 bash 已经『内建』了很多指令了,例如 cd , 还有例如 umask 等等的指令, 那我怎么知道这个指令是来自于外部指令(指的是其它非 bash 套件所提供的指令) 或是内建在 bash 当中的呢:



[root@linux ~]# type [-tpa] name



参数:

:不加任何参数时,则 type 会显示出那个 name 是外部指令还是 bash 内建的指令!

-t :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义:

file :表示为外部指令;

alias :表示该指令为命令别名所设定的名称;

builtin :表示该指令为 bash 内建的指令功能;

-p :如果后面接的 name 为指令时,会显示完整文件名(外部指令)或显示为内建指令;

-a :会将由 PATH 变量定义的路径中,将所有含有 name 的指令都列出来,包含 alias



范例一:查询一下 ls 这个指令是否为 bash 内建?

[root@linux ~]# type ls

ls is aliased to `ls --color=tty'

# 没有加上任何参数,仅列出 ls 这个指令的最主要使用情况

[root@linux ~]# type -t ls

alias

# -t 参数则仅列出 ls 这个指令的最主要使用情况说明

[root@linux ~]# type -a ls

ls is aliased to `ls --color=tty'

ls is /bin/ls

# 利用所有方法找出来的 ls 相关信息都会被列出来!



范例二:那么 cd 呢?

[root@linux ~]# type cd

cd is a shell builtin

鸟哥的私房菜:Bash shell(一)-Bash shell功能简介的更多相关文章

  1. 鸟哥Linux私房菜基础学习篇学习笔记3

    鸟哥Linux私房菜基础学习篇学习笔记3 第十二章 正则表达式与文件格式化处理: 正则表达式(Regular Expression) 是通过一些特殊字符的排列,用以查找.删除.替换一行或多行文字字符: ...

  2. 鸟哥Linux私房菜基础学习篇学习笔记2

    鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...

  3. 鸟哥Linux私房菜基础学习篇学习笔记1

    鸟哥Linux私房菜基础学习篇学习笔记1 第三章 主导分区(MBR),当系统在开机的时候会主动去读取这个区块的内容,必须对硬盘进行分区,这样硬盘才能被有效地使用. 所谓的分区只是针对64Bytes的分 ...

  4. [Linux]《鸟哥的私房菜》笔记 (缓慢更新)

    暂时不更新了..这几天一看起书来发现内容很多,这样写blog太慢,也没意义.所以现在是每天看书,在笔记本上记笔记,再配合着<操作系统>和 linux内核 加深理解.往后会以心得体会为主写一 ...

  5. linux: 鸟哥的私房菜

    鸟哥的私房菜 http://vbird.dic.ksu.edu.tw/linux_basic/0320bash.php

  6. 鸟哥Linux私房菜知识汇总8至9章

    一看最近<鸟哥Linux私房菜>. 这是一个基本的书,万丈高楼平地起,学. 这是我整理的一些知识点.尽管非常基础. 希望和大家共同交流. 第8章 Linux磁盘与文件系统管理 一.Linu ...

  7. 鸟哥linux私房菜第6章笔记

    鸟哥linux私房菜第6章笔记 文件权限 修改 chgrp [-R] groupname filename //修改文件所属组 chown [-R] ownername[:groupname] fil ...

  8. 学习鸟哥linux私房菜--安装centos5.6(u盘安装,中文乱码)

    题头为"学习鸟哥Linux私房菜"的内容,均为博主在看鸟哥的Linux私房菜第三版的学习经历收获.以下正文: 鸟哥第一部分讲Linux规则与安装,看到第四章正式开始讲实际安装,于是 ...

  9. 鸟哥的私房菜:Bash shell(六)-管道命令

    就如同前面所说的, bash 命令执行的时候有输出的数据会出现! 那么如果这群数据必需要经过几道手续之后才能得到我们所想要的格式,应该如何来设定? 这就牵涉到管线命令的问题了 (pipe) ,管线命令 ...

  10. 鸟哥的私房菜:Bash shell(四)-Bash shell的使用环境

    Bash shell(四)-Bash shell的使用环境   是否记得我们登入主机的时候,屏幕上头会有一些说明文字,告知我们的 Linux 版本啊什么的, 还有,登入的时候,我们还可以给予使用者一些 ...

随机推荐

  1. ECMAScript——(二)

    1.语法 区分大小写 变量是弱类型(定义变量时只用 var 运算符,可以将它初始化为任意值.) 每行结尾的分号可有可无(建议写上) 注释与Java一样 括号表示代码块 2.变量 变量可以不用声明,变量 ...

  2. SQL select语句执行顺序

    sql查询原理和Select执行顺序 关键字: 数据库 一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是 ...

  3. Chapter 4 深入理解Caffe MNIST DEMO中的LeNet网络模型

    明代思想家王阳明提出了"知行合一",谓认识事物的道理与在现实中运用此道理,是密不可分的一回事.我以为这样的中国哲学话语,对于学习者来说,极具启发意义,要细细体会.中华文明源远流长, ...

  4. 2016 最佳 Linux 发行版排行榜【转】

    转自:http://www.linuxstory.org/the-best-linux-distros-of-2016/?utm_source=tuicool&utm_medium=refer ...

  5. 手动实现图片预览-放大缩小全屏支持IE9以上

    #{extends '/Index/index.html' /} #{set title:'意见反馈' /} <script src="/public/mgr/javascripts/ ...

  6. 微信web开发者工具无法打开的解决方法

    参考网址:https://blog.csdn.net/gz506840597/article/details/77915488 我试了上面兄弟说的方法还是无效 下面说说我的方法: 我打开文件所在位置, ...

  7. html5学习之canvas

    Canvas画布 1.绘图方法 ctx.moveTo(x,y) 落笔ctx.lineTo(x,y) 连线ctx.stroke() 描边 ctx.beginPath(): 开启新的图层 演示: stro ...

  8. Shell编程学习1--基础了解

    "#!path"告诉系统path所指的程序为用来解释此脚本文件的Shell程序: 如#!/bin/sh, #!/bin/bash Shell Script的后缀名为.sh; ech ...

  9. No.20 selenium学习之路之文件读写

    1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.tx ...

  10. [android]解析XML文件的方法有三种:PULL,DOM,SAM

    PULL 的工作原理: XML pull提供了开始元素和结束元素.当某个元素开始时,可以调用parser.nextText从XML文档中提取所有字符数据.当解析到一个文档结束时,自动生成EndDocu ...