试试脚本
脚本是啥?
生活中的脚本
“脚本”一词来源于演艺界,指拍摄戏剧、电影所依据的底本
公馆一室内
王妈:(小心翼翼地)小姐,您还是得注意身子,就吃点东西吧。
鸡小姐:(把碗砸在地上)不吃,我就是不吃。
(王妈下)
事先剧组写好脚本,演出时依据脚本内容,设置舞台,演员按照剧本说出台词,做出动作,还有灯光道具等等。
当然,脚本也并不局限于此。
生活中也有许多脚本,领导上台的演讲,什么时候声音大一点,小一点,表情是怎么样的;老师备课,准备预计讲什么内容,什么时候一些提出小问题,答错了怎么引导学生思考,什么时候分享小故事,什么时候刺激学生,提高学生注意……
简而言之,其实就是根据写好的计划,让对象做指定的动作,一切都在把控之中。
计算机中的脚本
计算机是个很复杂的东西,为了让人类来操控它,有最基础的处理器指令集,处理器接受到二进制的机器码,执行指定动作,然而机器码的可读性很差,人类最易理解的是自然语言,汇编就在此产生了,给这些机器码加上了名字,随着计算机能力的提高,能做的越来越多,有了更多的指令,做更多的事,汇编的代码越来越多,但是大量汇编代码在一起,是及其难懂的,为了更好的进行开发并更好的让人类理解,高级语言出现了,也就是我们目前的接触的程序语言。
高级语言的确让开发更简单容易了,但是高级语言始终需要转换成机器码,编译、链接,直到运行,需要大量的时间,这种语言被称为编译型语言,为了解决这个问题(其实还有更多原因,比如跨平台问题),解释性语言出现了,解释型语言并不把整个项目进行全部编译成机器码,而是以行为单位,逐条编译运行,脚本语言也就出现了,只需输入可读的文字命令,就能立即执行动作,所输即所得。
值得注意的是,解释型,编译型,并不是个绝对的概念,解释性语言也并不等于脚本,实际情况中有很多混合的地方,比如java,首先源代码经过编译变成跨平台的字节码(中间码),然后字节码交由java虚拟机进行解析,整个过程既有编译的地方,又有解释的地方。许多脚本语言也可以经过整体编译后再执行,所以这之间的界限并不明确。
自己写一个简单脚本
默认Linux系统
目标:自动根据给出的文件名生成目录,并在其下生成index.html及相关js,css文件夹及文件
├── css
│ └── style.css
├── index.html
└── js
└── main.js
bash脚本
bash是Unix操作系统的纯命令的人机交互界面,也是控制Unix系统的脚本语言,可以通过编写bash脚本来自动控制操作系统。
bash脚本住主要由日常使用的命令组成,很方便
新建一个文件,输入:
1 | if [ -d $1 ]; then |
保存退出
添加执行权限:chmod +x 文件名
sh ./文件名 搞定
nodejs
能在服务器端运行的JavaScript的运行环境
同样新建
1 |
|
同样保存退出,添加执行权限
使用node.js运行它
1 | $ node ./文件名 |
不想每次打开都输入node
?
添加
1 |
这样就指定使用了node运行,实际上不指定,使用的是
1 |
也就是bash解释器(吧?)。
给自己写的脚本添PATH
写了脚本执行却总需要加上路径?
添加进PATH就可以解决
打开~/.bashrc
1
vim ~./bashrc
找个喜欢的位置输入
1
export PATH="脚本所在的绝对路径:$PATH"
保存退出
应用修改
1
source ~./bashrc
ok,现在就可以在任何地方执行脚本啦!
如果要查看你目前的PATH路径
1
echo $PATH
看看我的
1
2echo $PATH
/home/geylnu/bin:/home/geylnu/.local/bin:/home/geylnu/local:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
匹配命令是从PATH路径从前向后找,优先是使用前面的可执行程序。
可以使用type -a 命令
,查询命令匹配的选项,使用which 命令
,查看要最终执行的是哪一个。