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. msfpayload反弹shell

    1.前期-- 情景就是当我们获得webshell时,我们想留下我们的后门,这个时候我们可以用到msfpayload与msfconsole结合使用 启动PostgreSQL服务:service post ...

  2. Android Build.VERSION.SDK_INT兼容介绍

    尽管Android向下兼容不好,但是一个程序还是可以在多个平台上跑的.向下兼容不好,接口改变,新的平台上不能用旧的API,旧的平台更不可能用新的API,不等于一个平台需要一个APK.可以在高SDK上开 ...

  3. Deploy Openstack all-in-one Shell Script

    Deploy Openstack all-in-one Shell Script At present(2015/10), the RDO deploment method can only inst ...

  4. 11 The Go Memory Model go语言内置模型

    The Go Memory Model go语言内置模型 Version of May 31, 2014 Introduction 介绍 Advice 建议 Happens Before 在发生之前 ...

  5. 制作macOS10.12系列的系统镜像文件

    制作macOS10.12系列的系统镜像文件步骤,过程也比较简单,十来个命令.以10.12.6为例,首先,在苹果商店下载系统安装包APP,或者网上下载后把安装APP复制到  应用程序  文件夹. 然后打 ...

  6. 通过field:global给子元素添加css样式

    {dede:arclist row=5 typeid=200} <li [field:global runphp=’yes’ name=autoindex](@me==1)?@me=”class ...

  7. ZOJ 3781 Paint the Grid Reloaded(DFS连通块缩点+BFS求最短路)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5268 题目大意:字符一样并且相邻的即为连通.每次可翻转一个连通块X( ...

  8. Effective STL 学习笔记:19 ~ 20

    Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  9. Html5和Css3扁平化风格网页

    前言 扁平化概念的核心意义 去除冗余.厚重和繁杂的装饰效果.而具体表现在去掉了多余的透视.纹理.渐变以及能做出3D效果的元素,这样可以让“信息”本身重新作为核心被凸显出来.同时在设计元素上,则强调了抽 ...

  10. zabbix监控多实例tomcat--不使用JMX

    https://blog.csdn.net/nisan892541/article/details/47727967