第11章 认识与学习BASH
--------------------------------------------------------------------------------
shell(壳程序)可以操作其他的一些应用软件————这是狭义的哦
在系统的 /etc/shells 这个文件中,写出了系统上合法的shell
Linux系统默认的是bash哦
bash的优点有:
1.命令编修能力(history)
bash可以记忆使用过的指令!有的distribution里面可以记忆多达1000多个哦。可以作为排错工具,但是一定要防止黑客查看你执行过的指令哦。
2.命令与档案补全功能([tab]键)
[tab]键接在一串指令的第一个字后面,是命令补全;
[tab]键接在一串指令的第二个字后面,是文件补全
3.命令别名设定功能(alias)
比如有一个指令经常用,但是编写起来还是挺麻烦的哦,那么就是这个功能了
alias newname='指令'
4.工作控制、前景背景控制(job control,foreground,background)
第十七章内容
5.程序化脚本(shell scripts)
可以将平时经常需要下达的连续指令写成一个文件,通过它交互式的方式来进行主机的侦测工作。
6.通配符(Wildcard)
支持通配符,比如想要知道/usr/bin下面有多少以X开头的档案,就可以使用 ls -l /usr/bin/X*
-------------------------------------------------------------------
Bash shell的内建命令:
Bash中内置了很多指令,还有关于这些指令的介绍,通过type来查看一个指令是外部指令还是内建命令。
type主要是用来寻找可执行文件而不是一般文件,所以也类似于which指令了。
指令的下达:
关于反斜杠 (\) 来跳脱某个键原来默认的作用:比如指令太长要分行写,那么 \[Enter] 即可,但是如果在反斜杠和回车键中间不小心输入了空格,那么跳脱的就是空格而不是回车键了,所以要注意哦。
--------------------------------------------------------------------------------
Shell的变量功能
小写是指令,大写就是变量名称
变量的取用与设定: echo可以用来取用变量,但是取用时,前面必须加上 “$”才行。
变量的设定规则:
1.变量与变量内容以一个等号【=】来连结
2.等号两边不能直接接空格符
3.变量名称只能是英文字母与数字,但是开头字符不能是数字
4.变量内容若有空格符可以使用双引号或者单引号将变量内容结合起来。双引号的特殊字符如$等可以保持原有特性,单引号内的特殊字符则为一般字符(纯文本)。
5.可用跳脱符号【\】将特殊字符变成一般字符
6.在一串指令中,还需根据其他指令提供的信息,可以使用反单引号或 $(指令)。
7.若该变量为扩增变量内容,可用“$变量名称”或$(变量)累加内容
8.若该变量需要在其他子程序执行,则需要以export来使变量变成环境变量
9.通常大写字符为系统默认变量,自行设定变量可以使用小写字符
10.取消变量的方法使用unset
环境变量的功能——env观察环境变量与常见环境变量说明
HOME 代表根目录;
SHELL 告诉我们使用的shell的版本
HISTSIZE 下达过的指令数目
MAIL 使用它收信时,系统会读取邮箱文件
PATH 执行文件搜寻的路径
LANG 语系数据
RANDOM 随机数生成
用set观察所有变量(含环境变量与自定义变量)
系统内定需要的变量中一些比较重要的:
PS1:命令提示字符
$: 目前Shell的线程代号
?: 代表“上一个执行的指令所回传的值”,如果成功执行,应该回传一个0值,但如果执行错误就会返回错误代码。一般返回非零值就是错误。
OSTYPE,HOSTTYPE,MACHTYPE: 主机硬件与核心的等级
export:将自定义变量变成环境变量
locale:语系问题
----------------------------------------------------------------------
变量的有效范围:
环境变量=全局变量;自定义变量=局部变量
变量键盘读取、数组与宣告: read,array,declare
read
declare / typeset
声明变量的类型,如果declare后面没有接任何参数,就会显示所有变量名称和内容
数组变量类型:读取数组一般使用 ${数组} 比较好
与文件系统及程序的限制关系:ulimit
变量内容的删除、取代与替换
在PATH这个变量的内容中,每个目录都是以冒号“:”隔开的,所以要从头删除掉目录就是介于斜线到冒号之间的数据。但是PATH中不止一个冒号啊,所以#就是符合取代文字“最短的”一个,##就是符合取代文字“最长的”一个
如果想要从后面开始向前删除变量内容呢?就要用到百分比(%)符号
如果只是删掉文件名而保留目录,那么 可以利用通配符 前一个目录+%/*
如果连目录一起删掉,那么 可以用下列方法 前一个目录+##/*/
变量的测试与内容替换
测试某一个变量是否存在 # echo $username,设定后面要等于一个大括号
在测试过程中 大括号内加上冒号,被测试的变量未被设定或者是已被设定为空字符串时,都能用后面啊的内容来替换和设定。
---------------------------------------------------------------------
命令别名设定:alias,unalias
在root身份登录的情况下,因为可以用 rm 移除任何数据,所以害怕出现什么错误的操作么,那就 rm -i
alias可以指定某个特殊的字符串等同于某个指令,unalias可以取消
历史命令: history
--------------------------------------------------------------
Bash Shell 的操作环境
指令执行的顺序一般有:
1.以相对/绝对路径执行指令
2.由alias找到该指令来执行
3.由bash内置的指令来执行
4.通过 $PATH 这个变量的顺序搜寻到的第一个指令来执行
bash的进站和欢迎讯息: /etc/issue , /etc/motd(如果你想要让大家知道你的信息,可以加到这个文件)
bash的环境配置文件
login shell:取得bash时需要完整的登录流程的,比如一些系统文件
non-login shell: 取得bash时不需要重复登录的,比如自己建立的文件
source:读入环境配置文件的指令,直接读取配置文件哦
终端机的环境设定:
查阅按键内容, stty
set也可以给终端机设定一些输入输出环境
bash默认的组合按键总结
通配符与特殊符号
除了通配符,bash中的其他特殊符号