命令行与脚本

本文有三个目的:
1.如何简化命令行
2.创建bash脚本 & 写bash脚本
3.创建js脚本 & 写js脚本

简化命令行

自动运行
目的:打开gitbash自动进入桌面目录
操作: 在 .bashrc里添加cd ~/Desktop

Alias指令别名 (可以缩写指令)
目的:定义一个指令的缩写,如:输入f可以打印fank is awesome
操作:在 .bashrc里添加alias f=”echo ‘frank is awesome’”

Path路径 (把一个文件夹放进path路径,可以用来创建脚本)
目的:把文件夹放进path路径
操作:export PATH=”目录的绝对路径:$PATH”

创建bash脚本

目的:创建一个名为demo的bash脚本
操作:

1
2
3
4
5
6
7
8
9
10
11
cd ~/local
touch demo
start demo
(编辑demo内容为想要的内容)
sh ~/local/demo

//这一步已大致完成了所需内容,不过要简化指令:减去sh与路径//
//在.bashrc内添加以下两句//

export PATH="目录的绝对路径:$PATH"
Source ~/.bashrc

此时只需要输入demo就可以执行demo文件里编辑的内容

如果想把demo改为demo.sh
操作:
mv ~/local/demo ~/local/demo.sh //修改后缀

查询命令的路径:
使用 type demo 可以看到寻找过程
使用 which demo 可以看到寻找结果

写bash脚本

目的:输入demo即可生成名字为demo的目录
操作: 在demo文件里编辑以下内容

1
2
3
4
5
mkdir demo
cd demo
mkdir css js
touch index.html css/style.css js/main.js
exit

目的升级:输入demo + 文件夹名字xxx,生成名字为xxx的目录
操作: 在demo文件里编辑以下内容

1
2
3
4
5
mkdir $1
cd $1
mkdir css js
touch index.html css/style.css js/main.js
Exit

此处:$1的意思为输入的第一个参数

目的二次升级:判断目录是否已存在
操作:在demo文件里编辑以下内容

1
2
3
4
5
6
7
8
9
10
11
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
echo 'success'
exit
Fi

exit 0 表示没有错误
exit 1 表示错误代码为 1

语法规则

demo && echo ‘结束’ 表示只有在 demo 成功时,才会执行 echo ‘结束’
demo || echo ‘结束’ 表示只有在 demo 失败时,才会执行 echo ‘结束’
demo ; echo ‘结束’ 表示执行了demo之后才会执行 echo ‘结束’

创建Js脚本

目的:输入demo即可生成名字为demo的目录
操作:与bash大致相同:

1
2
3
4
5
6
7
8
9
10
cd ~/local
Touch demo
Start demo
编辑demo
node ~/local/demo //此处需要注意: 不能用sh,而是node,因为语言不同

//这一步已大致完成了所需内容,不过要简化指令:减去node与路径//
//在.bashrc内添加以下一句//

#!/usr/bin/env node //shebang,用于指定执行环境

此时只需要输入demo就可以执行demo文件里编辑的内容

写Js脚本

目的升级:输入demo + 文件夹名字xxx,生成名字为xxx的目录
操作: 在demo文件里编辑以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
var fs = require('fs')

var dirName = process.argv[2] // 你传的参数是从第 2 个开始的

fs.mkdirSync("./" + dirName) // mkdir $1
process.chdir("./" + dirName) // cd $1
fs.mkdirSync('css') // mkdir css
fs.mkdirSync('js') // mkdir js
fs.writeFileSync("./index.html", "")
fs.writeFileSync("css/style.css", "")
fs.writeFileSync("./js/main.js", "")

process.exit(0)

Js学习网址:http://nodejs/org/api