13-(1,2)-bash使用详解

1.shell简单介绍

shell是与人打交道的程序,是连接系统内核api与人之间交互的桥梁。
shell程序又很多种,一般以sh结尾。
linux下有很多shell,放在/bin/目录下。不同的shell有其产生的历时,由不同的公司设计出来,基本相同相通。
如:ash,bsh,csh,ksh,sh等等。想用哪种shell直接输入命令,如:ksh即可。
linux选用bash是因为它是由GNU原创,linux系统与GNU关系密切。另外bash是借鉴别的shell产生的,命令较全。
 

2.bash常用命令

内部命令由bash系统程序自己提供,如bg等等。
外部命令以文件形式存在。
输入which XXX或man bash可以看出是什么命令。
history可以搜索命令操作历史。
 

3.BASH变量

set命令可以看bash里面所有的变量。
变量 $PATH --环境变量。$符号含义为取出环境变量PATH的值。
变量 $HOME --当前用户的主目录
vi ~/.bash_profile ~表示主目录,.bash_profie表示bash的初始化配置文件。在.bash_rc添加文字PATH=$PATH:/tmp/ddd永久将/tmp/ddd目录永久添加到PATH环境变量中。
变量有环境变量(可以被子shell调用)和当前shell的普通变量两种区别。
set命令显示环境变量和普通变量。可以看bash里面所有的变量。
env命令只能看设置的环境变量。
export命令可以将一个普通变量变为环境变量。例如:A=10,export A或export A=10.这样A变量就是全局变量,能被所有shell程序看到。
unset命令可以取消某个变量。用例:unset A.

在执行shell脚本的时候,如果是按默认方式打开,linux都会先打开一个子shell程序来执行。

bash的特性:

bash常用快捷键:

                    

 

4.alias和unalias

例子:
alias h="echo Helloworld!"
unalias h

 

5.Bash中的运算符

通配符:
*       表示任意多的任意字符
?       表示一个任意字符
[abc]   可能是a,b,c字符中的任一个
[^abc]  不是a,b,c字符中的任一个
{a,b,c} {} 表示枚举
其它:
&       把一个程序丢入后台运行
~       用户的主目录
#       表示注释,后面的语句不执行
$       取变量的值
" "     把空格当成一个普通字符,其它运算符字符还是其本身的含义。一般空格表示参数结束。例子1:touch "a b"和touch a b的区别。例子2:echo "a b $USER"
' '     把所有特殊符号都当成普通字符,它们的特殊意义全部去掉。例子:echo "a b $USER"和echo 'a b $USER'的区别。
` `     一般命令放在反引号里面,表示里面的命令结果预先执行出来。例子:echo `which ls`。
\       表示退义符,退掉后面符号的特殊含义。例子1:rm a\ b=rm "a b"。例子2:touch \$。
;       表示一条命令结束。例子:echo ;which ls
=       赋值运算符
()      子shell激活。括号中的内容在在当前shell的子shell中运行,相当于把一堆命令打包。例子:(while true;do `data`>/tmp/time;sleep 1;done)

符号组合:
[ -f /etc/passwd ]  []里面两边有空格,表示判断/etc/passwd文件是否存在,返回的是bool值。
[ -d /oracle ]      表示根目录下oracle目录是否存在。
-l 是否是链接 -b 是否是block类型设备文件 -c 是否为字符型设备文件 -x 是否可以执行 -r 是否可读 -w 是否可写 -f是否是一个普通文件 -d是不是一个目录 -e文件是否存在 -s文件大小不为0 -O文件是属于当前用户的。其实man bash命令可以查-后面字符的用途
&&                  表示前面的命令结果为True时执行后面的。例子[ -f /etc/passwd ] && echo OK
||                  表示前面的命令结果为True不执行,为false才执行后面的命令。例子[ -f /etc/passwd ] || echo OK
[ $USER = root ]       中括号里面=两边加空格,表示判断两边字符串是否相等,判断当前用户是否是root.

-eq                表示判断两边数值是否相等

!                 !加空格表示求反值

$[]                 表示算术运算符,中括号里面的字符会被当成算术表达式。例子:echo $[2+3]显示5。              

数值比较时的运算符:

相同:-eq   =  

不同:-ne != 

大于:-gt  

小于:-lt 

大于或等于: -ge 

小于或等于:-le 

为空:-z 

不为空:-n 

比如比较变量a和b的字符串值是否相等,写作[ $a = $b ]

判断变量是否为空: [ -z $a ]

判断数值变量a是否大于b [ $a -gt $b ]

6.定制你的BASH

bash主要有以下4个文件:
/etc/profile
~/.bash_profile
~/.bashrc
/etc/bashrc
每当打开一个bash的shell时,会按顺序执行这4个配置文件的脚本。可以在这些文件中定义变量,umask,alias等。
当配置为所有用户生效时,在/etc/目录下进行配置。
当配置为当前用户生效时,在~/目录下进行配置。
当要完整初始化shell时即切换成login shell时,执行profile文件,例如su - feifei会执行4个文件包括profile文件。
当简化初始化shell时即新建一个bash时,只执行bashrc文件。例如su feifei只执行bashrc两个文件。

/etc/profile会调用/etc/profile.d里面所有的sh脚本。

所以系统登陆时,完整的执行顺序为:
/etc/profile
  /etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
系统退出exit时,系统会执行
~/.bash_logout

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值