Linux基本功十:bash运算符及启动脚本初步

   shell提供了与操作系统OS之间的通讯方式。由于人不能直接操作硬件,所以用户可以通过shell程序来和计算机进行交互。首先用户将指令告诉shell,然后shell再传给内核,接着内核再去支配计算机做各种操作。
shell只是内核OS与外围之间的一层API
1、shell基础知识小结
 (1)shell编程其中的运算符的意义是十分复杂的,这里需要精确记忆。可以说键盘上的每一个符号都有自己的含义与意义。学习过程中遇到的常用运算符总结如下:
 ! [ -f /ect/passwd ] && echo hello 取反
 !20 运行历史命令的第20行的命令;
 !!  上一条命令;
 ctr+r  来搜索历史命令
 !$  取上一条命令的最后一个参数;
 $AAA  取出变量名AAA的值;
 *  任意多个任意字符;
 echo *;  //所有的文件;
 echo [abc]*;  //以abc开头的文件;
 echo [^abc]; //不是以abc开头的文件 ;
 []  两边加" "可用来判断;
 ?? 任意的两个字符
 {}  touch {a,b,c}-{1,2,3}//创建9个文件,枚举;
 &  把一个程序丢入后台;ls &
 &&  与,同时为真
 | 表示管道
 ||  表示或
 ll==ls -l 显示文件的权限,时间等;
 ~ 主目录:cd ~shrek cd ~[自己的主目录]
 @ email
 # 表示注释 #ls 不运行;
 %1 后台的第一个任务;
 ^ 非[^abc]不是以abc开头的文件名;
()做一个函数;aaa();//执行的时候,直接输入aaa函数名即可;
 ( ls; cd /mnt ) 打包命令在子shell你执行。
 ''会屏蔽所有的特殊的字符的意义,只表示单纯的字符;
 ""表示普通的字符,只屏蔽普通的“ ”的作用,因为" "的作用是字符的结束;
 touch "a b";一个文件;
 touch a b;两个文件;
 ``反引号里是一个命令,表示先执行该命 令;执行的结果再干其他的操作;
 echo `which is`;先执行which is命令,再执行echo;
 \脱义符,如何删除"a b"这个文件呢?如何创建以$开头的文件呢?
 rm a\ b;就可以了。
 touch \$;
 ;表示命令结束;echo;which is;
 = 赋值 
 [ $USER = root ] && echo hello root

 

这里的=不是赋值,字符串相等,不是数值,加" "和不加都一样!

 [1-9]表示这个位置是1,2,3....9这几个数;
 [ 1-9 ]表示真假判断
 例如[ -f /etc/passsword ]//文件存在不存在,真假判断; 
 [ -d /proc/bus/usb ] && aa=1;//目录存不存在;
 echo $?//得到上一个命令是否成功执行;
 0表示成功执行;1表示失败;这和C语言不一样;
 -l 是否为连接;
 -f 是否为文件;
 -b 是否为bolck类型的设备文件;
 -d 是否为目录;
 -c 是否为字符型设备文件;
 -x 是否可以执行;
 -r 是否可读文件;
 -w 是否可写;
 在man bash里可以查找;
 < >输入输出重定向;
 $$ 进程的PID会自动显示出来;
 $[2+3] 计算算术表达式的值;
 $?上一条命令是否成功执行
 $aa 取aa的值
 (while true;do 'date');表示在子shell中执行该命令;
 !!调用上一条命令; 
 !+数字表示第几行的某一个命令;
 alias 设置别名,且总是优先执行。
 unalias 取消别名。
 例如:alias print="echo=aaaaa"
     print//就可以了
    unalias print //取消别名;

2、bash的定制
sh启动的顺序:
  /etc/profile  //所有人,公用的;
     /etc/profile.d/*.sh
    ~/.bash_profile//只对个人的文件;私有的;
    ~/.bashrc
 /etc/bashrc// 所有的;
sh退出时执行的脚本: ~/.bash_logout
如果我们想定制自己的shell,那么可以在~/.bash_profile 和 ~/.bashrc里更改我们想要的属性。
etc/frofile则是对所有的用户有效。
3、修改用户或者系统的语言
这里我们只需要修改两个变量即可: LANG 和LC_ALL
如果是个人的语言设置:则在~/.bashrc文件里将上面的两个变量设置为:
LANG = "zh_CN.UTF-8"
LC_ALL="zh_CN.UTF-8"
如果要修改系统的语言则可以在/etc/sysconfig/i18n里修改以上变量。
4、如果添加的用户有的不能用ifconfig命令,这只是其中的一个小例子,我们可以一次类推。
这里可以在 /etc/profile文件里添加一个PATH变量:
PATH=$PATH:/sbin  //这里只要包含以下sbin这个目录就可以了!
5、set和env的区别(非常重要)
set显示环境变量和普通变量  unset取消变量

env只显示环境变量

但是可以用export将普通变量转换为环境变量

因为普通变量只是在当前shell你有效,而shell在执行一个shell脚本的时候,刚好默认情况下都是打开一个子shell。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值