bash shell
命令的记录功能:
bash shell总是记录上次登入shell时所执行的命令,这些命令都记录在.bash_history,而这次登入shell后所执行的命令都记录在内存中,当退出shell的时候,将这次登入shell后执行的命令写入.bash_history文件。(默认可以记忆1000个命令)
命令与文件名补全功能:
双击两次tab键就会自动补全文件名或命令。
命令别名设置功能:
例: alias lm='ls -al';那么之后运行lm,相当于执行 ls -al.
程序化脚本:
可以将要运行的命令集合都写在一个文件中,然后交给bash shell运行,这个文件就是shell脚本。
shell的环境变量
当登录进入linux系统,用户就会得到一个bash的应用程序,负责与linux系统进行交互,既然bash是一个应用程序,那么在bash运行之前,需要一些参数,而这些参数就是当前运行bash的环境变量,一般环境变量都使用大写,如PATH,MAIL,SHELL。
自定义变量
1.设定变量
myName=hujingwei //设定了一个值为"hujingwei"的myName变量
注:等号两边不能直接接空格,若变量内容有空格,可以使用单引号或双引号将内容结合起来。
双引号:(特殊字符会保持原有的特性)
var="lang is $LANG"
echo $var //lang is en_US
单引号:(所有的特殊字符都将作为一般字符处理)
var='lang is $LANG'
echo $var //lang is $LANG
2.在一串指令中还需要其他指令提供信息,可使用反单引号或$(指令)。如下:
version=$(uname -r)
echo $version //2.6.18-128.el5
3.可以通过export将自定义变量变成环境变量,供子程序使用。
export myName;
那么myName就会变为当前这个shell程序的环境变量,如果在这个程序中再启动一个shell程序,那么新启动的shell就是之前shell的子shell,那么这个子shell在初始化的时候,环境变量中就直接包含了myName变量。一般情况下,父程序自定义的变量,子程序是无法使用的,但是有了export,父程序定义的变量,子程序也可以使用了。
4.取消变量
如果不想使用myName变量了,如下:
unset myName
在bash中,反单引号的意思是,反单引号内的命令先执行,例如:
ls -l `locate crontab`
locate指令可以列出所有文件的文件名,所以上面的命令就是先使用locate指令列出所有文件的文件名,然后再使用ls指令列出各个文件的权限。
如果想要查看bash的环境变量,就使用env、export命令即可。
set指令用于观察所有的变量(包含环境变量和自定义变量)。
$本身也是一个变量,代表目前这个shell的进程代号,也就是PID。
?代表执行上个指令的回传值,如果执行成功,则会回传一个0值,如果执行后错误,则回传一个非0值。
当登录进入linux并取得一个bash之后,当前bash就是一个独立的程序,接下来在这个bash底下下达的任何指令都是这个bash衍生出来的,那些被下达的指令就是子程序。
命令的执行顺序:
1.以相对路径/绝对路径执行指令,例如[/bin/ls]或[./ls]
2.由alias找到该指令来执行
3.由bash内建的命令来执行
4.通过$PATH这个变量的顺序搜索到第一个指令来执行。
读取配置文件,以下命令是一样的:
source ~/.bashrc
. ~/.bashrc
管道命令:
例: ls -al /etc|less
管道命令由"|"分割,后一个命令只能接收前一个命令执行成功时,本该打印在屏幕上的信息作为自身的输入数据,如果前一个命令执行失败,那么后一个命令的输入就为空。
撷取命令:cut、grep