充当用户指令与kernel间的媒介,”翻译“。
系统的shell:centos5.5为例,在/etc/shells中:
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
etc/shells功能:系统的服务在运行中,会检查使用者可使用的shell,于是到/etc/shells中查看有哪些shell并决定使用哪个
为系统预设的shell,其主要优点为:
命令编修能力:对使用过的指令的记录,便于查找。登陆后的指令存在于内存中,注销后保存到~/.bash_history中
命令补全功能(tab):【tab】接在一串指令的第一个字后面,则为命令补全。
【tab】接在一串指令的第二个字后面,则为档案补全
连按2个tab则显示所有指令。
命令别名设定(alias):alias cl=‘clear’ 这种形式,注意无空格
通配符(*):ls -l /usr/bin/X* 则显示以x开头的
查看命令是内建的还是来自外部的命令(非bash所提供的命令)type [-tpa] name
2.1 变量的取用与设定:echo, 变量设定规则, unset
变量的读取:echo,变量前面加$或者${变量名},如 $HOME 或${HOME}
变量的设定规则:
变量和变量内容用=连接, 变量=变量内容,且=两边不能有空格
变量名只可为字母和数字,且不可以数字开头
变量内容里包含空格为使用单引号或双引号,且双引号能保证特殊字符原有的含义,而单引号则只作为一般符号。
可使用\符号将特殊字符转化为一般字符
指令中需要其他指令 的信息,则使用反单引号[`指令`]或[$(指令)]。如 version=$(uname -r) echo $version
通常大写字母为系统变量,小写为自定义变量
取消变量的设定用 unset 变量名称
子程序的概念:在一个shell中去启动新的shell,则这个新的shell为子程序,父程序的自定义变量在子程序中无法使用。
若要保证父程序的变量在子程序中使用,则使用export
2.3 环境变量的功能: env, 一些重要的环境变量, set, export
显示设定的环境变量的命令:env,export,set用来显示所有变量,包括环境变量和用户自定义变量。
PS1:命令提示符
例如:产生[root@www /home/dmtsai 16:50 #12]#如此效果,则 PS1='[\u@\h \w \A #\#]\$ ' 则可。
每个shell代表的线程,都有PID来表示,PID变量为$,如echo $$
?:该变量表示上次任务的回传值
export:将自定义变量升级为环境变量。
locale:用以表示系统所支持的语系。
语法:read [-pt] variable
参数意义:p--后可接提示符,read "keyin your name:" name
t--后接等待输入的秒数,超时后返回,read -t 3
declare\typeset:效用为宣告变量的类型
语法:declare [-airx] variable
参数意义:-a 变量的类型为数组
-i 变量的类型为整数
-r 变量设定为只读
-x 将环境变量转换为自定义变量,与explore对应。
数组变量类型:var[index]=content ,例如,var[1]="name", var[2]="age"
限制档案的大小,防止内存崩溃。
变量内容的删除与取代
变量的测试与内容替换:
3.2 历史命令: history, HISTSIZE
历史命令:history [ncraw]
参数说明:-n 列出最近的n个指令
-c 清除目前shell中的history 的内容
-a 将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles , 则预写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
-w :将目前的 history 记忆内容写入 histfiles 中!
!!:执行上个指令
!n:执行第n个指令
![var]:执行以var开头的指令
指令运作癿顺序可以这样看:
1. 以相对/绝对路径执行挃令,例如『 /bin/ls 』或『 ./ls 』;
2. 由 alias 找到该指令来执行;
3. 由 bash 内建的 (builtin) 指令来执行;
4. 透过 $PATH 这个变量的顺序搜寻到的第一个指令来执行。
stty:用来查看设定的按键列表,
set:
万用字符:
特殊符号:
将送往屏幕输出的标准输出或标准错误输出信息进行导向,导向到其他地方,比如文件中。
标准输出:指令执行所回传的正确的信息。
标准错误输出:指令执行失败后,所回传的错误信息。
三种信息的符号表示:
标准输入:(stdin) :代码为0,使用<或<<
标准输出: (stdout):代码为1,使用>或>>
标准错误输出:(stderr): 代码为2,使用2>或2>>
语法表示:
1> :覆盖的方法将正确的数据输出到指定的档案或装置上;
1>>:以追加的方式将、、、、、、、
2>:覆盖、、、将错误的数据、、、、、、、、、、、、
2>>:追加的方式、、、、、、、、、、、、、、、、、、
注意:中间无空格。
有时会存在标准输出和错误输出同时存在,避免混淆,将二者分别重定向:如
分别定向到两个文件:>rightout 2> errout
共同定向到同一文件:2>&1,指将标准信息输出路径指定为错误信息输出路径(也就是都输出在一起)
标准输入(stdin):
<:表示将原本由键盘输入的改由文件输入,如:cat >b < 'a',表示将a中的内容copy到b中。
<<:如''cat >b <<'end',表示由键盘进行输入,且当输入end时,输入结束。
5.2 命令执行的判断依据: ; , &&, ||
当希望几个指令一次执行而不是一个个执行时,除了写shell script,用这些命令可以实现。
cmd;cmd :用;来分割各个命令,则可一次执行多个命令,但当各个命令存在依赖关系时,则这种简单形式不能满足。
&?(指令回传值)与&&或||:
每个管道后面接的必须是命令,且该命令可以接收stdin的数据
sort:
wc:统计文档中有多少行,多少字,多少字符。
uniq:排序后,对于重复的只显示一个。
将数据流分别导向屏幕和文件。