shell编程基础知识(一)
shell是一个命令解析器,是当前进程的父进程;
1、查看当前linux系统支持的shell类型:
cat /etc/shells
2、查看当前使用的shell
echo $SHELL
直接输入sh
则从当前的bash进入到sh解析器里了。
此时ls 查看发现与bash 中使用ls查看的区别是颜色不同;
此时输入命令后,无法双击tab补齐命令。
小结:不同的shell类似于不同的浏览器,解析后,呈现略有不同。
bash相较sh,类似于vim相较vi,功能更强大一些。写shell脚本二者的区别可以忽略。
3、脚本,我们一般会用后缀.sh 加以区分。
4、第一行是选择使用哪种shell,即上述中的一种shell,,指定解析器。
#! /bin/sh-------------------->!后面有空格,sh和bash 不用刻意强调,二者区别不大。
4、# ---------------->用来注释
5、echo "helloworld" ---------->打印字符串
6、echo ---------------->后面什么不没有,,打印一个空行,等价于 echo ""
7、执行ls命令
/bin/ls------>列出的文件没有标注颜色;
ls--------->列出的文件会有颜色区分;
问题是 输入 :alias会看到:ls 是有别名的;
8、vim file ------------>file默认都是没有可执行权限的
chmod a+x file -------->以下三类都添加可执行权限
chmod u+x file -------->仅用户添加可执行权限
chmod g+x file ------>用户组添加可执行权限
chmod o+x file--------->其他组添加可执行权限
加号 换成减号,就是去掉对应的权限;
9、脚本程序的执行方法:
方法0)加 #! /bin/sh ---->chmod a+x --->./file.sh
方法1)不指定解析器,即不要这句 #! /bin/sh 也是可行的,会自动调用默认的解析器;(需要 chmod a+x)
方法2)/bin/bash file.sh ------>此时都不需要file.sh 有x 可执行权限;
也可以使用 /bin/sh file.sh --->效果同上;
方法3). file.sh ------------------->最简单。。。。----------->不需要有可执行权限
方法4)source file.sh --------------------->不需要有可执行权限
10、命令分为:
一种是常见的普通命令:如 ls, pwd,即如果export PATH= 将PATH置空,ls解析不到了。
另一种是内建命令:man bash-builtins 查看所有的内建命令---->内建命令不需要bash解析也能执行。
如 cd alias 等。
11、小括号的应用;
cd ..;ls -l 目录变化
(cd ..;ls -l)工作目录没有变化