本文主要叙述以下内容:
- 什么是脚本?
- 一个简单的脚本
- PATH 的作用
- .bashrc的作用
- nodejs脚本创建demo目录
一.脚本是什么?
脚本源自戏剧舞台:
公馆一室内
王妈:(小心翼翼地)小姐,您还是得注意身子,就吃点东西吧。
鸡小姐:(把碗砸在地上)不吃,我就是不吃。
(王妈下)
脚本主要由人物对话和舞台提示组成。演员和道具组只需要按照脚本说的做即可.
计算机编程就是计算机按照脚本写的执行的,脚本就是文本,由英文字母,数字,特殊符号组成一串具有特殊意义的文本,可以一行一行的输入运行,可以写成一个文件.
脚本可以用很多语言写,javeScript, nodejs(本质还是js),VB,bash,C,php..., 每种语言有每种语言的写法(语法),不管是那种语言都可以实现相同的功能,只是用法(语法)上不同,或者说那种语言更适合,最后都是计算机照着执行的,比如 js 虽然是运行在浏览器之上,而浏览器运行在操作系统上(计算机操作系统),很多方面,高级编程语言与脚本语言没有明显的界限。
二.一个简单的脚本
- 新建并进入目录local: mkdir ~/local; cd ~/local
- 新建脚本文件demo: touch demo.txt
- 打开demo.txt : start demo.txt ,并写入内容:
mkdir mydemo
cd mydemo
mkdir css js
touch index.html css/style.css js/main.js
exit
- 任意位置(不是 ~/local)执行: sh ~/local/demo.txt ,
- 你会看到当前目录下 多出 mydemo 文件夹,mydemo 里面有 /css /js index.html
- ok, demo.txt 就是一个脚本,包括几行命令文本,以下为拓展
- 如果需要目录名可变,在步骤3 将mydemo 改为 $1 执行 demo.txt asd , 则会新建名为asd 的目录,$1类似于占位符,1表示第1个参数
- 如果.txt 后缀麻烦, 执行 mv ~/local/demo.txt ~/local/demo ,执行 demo asd 即可
- 文件后缀只是方便区分,命名一个 A.png 的文件就一定是一个图片吗?
- 判断目录是否已经存在,将步骤3的修改如下
if [ -d $1 ]; then
echo 'error: dir exists'
exit
else
mkdir $1
cd $1
mkdir css js
touch index.html css/style.css js/main.js
exit
fi
11.返回值
- exit 0 表示没有错误
- exit 1 表示错误代码为 1
- demo && echo ‘结束’
- 只有在demo成功的时候,才会执行 echo "结束"
三.PATH的作用
你每次在 Bash 里面输入一个命令时(比如 cd cp demo),Bash 都会去 PATH 目录里面寻找对应的文件,如果找到了就执行。
使用 type 可以打开一个命令的路径,
- 所有的命令都是可执行文件,就像执行 缩写的 demo,然后运行里面的脚本
- 所有文件分为可执行文件和不可执行文件,可执行文件有很多种,不可执行文件就是配置
- type demo 查看 demo 的路径
- PATH 里面有很多目录,由 ":" 分隔,当执行 demo 时先在第一个目录找,没有找到就去第二个,第三个..再没有就报错:bash: demo: command not found
- 打印系统命令 如 type ls,不同的操作系统打印的不同,但没关系
使用 which可以看到寻找结果
使用PATH:(如果你想只运行 demo.txt 就能达到 sh ~/lcoal.demo.txt 的作用,就需要将 ~/local 添加到path 里面,分为永久设置PATH 和 临时设置,具体如下)
- 获取 ~/local 的绝对路径 : cd ~/local; pwd
- 临时设置PATH :
- export PATH="local的绝对路径:$PATH"
- 任意位置(不是 ~/local)执行: demo.txt
- 永久设置PATH
- 创建 .bashrc( 理解见下节) : touch ~/.bashrc
- 进入并编辑:start ~/.bashrc
- 写入以下内容: export PATH="local的绝对路径:$PATH"
- 执行 .bashrc : source ~/.bashrc
- 任意位置(不是 ~/local)执行: demo.txt
- 所以 当执行 demo.txt 时,由于已经在 /.bashrc 里面,为PATH添加了一个目录 ~/local,能找到demo.txt,直接执行就好了
四.~/.bashrc
.bashrc 这个文件主要保存个人的一些个性化设置,如命令别名、路径等, 是bash的个人配置文件,在用户目录下,是个隐藏文件.
可以实现 在进入 Git Bash 前执行任何命令,可以进行命令别名进行缩写,可以设置环境变量及PATH
- 新建 .bashrc文件:touch ~/.bashrc
- 自动运行:
- 命令行编辑也可以直接在文件内修改: echo "cd ~/Desktop" >> ~/.bashrc
- 重新打开会发现默认进入桌面目录
- alias
- 命令行新增: touch"alias newTxt = 'touch demo.txt'" >> ~/.bashrc
- 执行 .bashrc : source ~/.bashrc (每次修改.bashrc 都要运行)
- 运行 newTxt
- 在桌面目录新增 demo.txt
- 环境变量
- export SASS_BINARY_SITE="https://npm.taobao.org/mirrors/node-sass"
- 以后安装 node-sass 的时候就不会因为被墙而报错了
- 设置PATH
- export PATH="目录的绝对路径:$PATH",上面已经用过了
五.nodejs脚本创建demo目录
进入node 的 REPL编译器:node
- 打印当前目录: process.cwd()
- 切换目录:process.chdir("/Users/ZhouLiLi/Desktop")
下图为 打印和切换的演示
- 重写demo.txt
- 创建 node脚本:touch ~/jsdemo.js,编辑内容如下
- fs:file system 所有关于文件的操作
- writeFileSync第二个参数可以写入 文本
- cd ~/desktop
- node ~/local/jsdemo.js mydemo 即可在桌面新建 mydemo 目录
- 在js文件第I行添加 #!/usr/bin/env node (指定执行环境)可直接运行 ~/local/jsdemo.js zzz 加入path 可直接 jsdemo.js mv 可直接jsdemo windows测试失败!
在此我们可以得出一个容易理解的结果 :nodejs 可以理解为可以执行 js 的bash