为了学习命令行,昨天装了linux系统,同时干掉了windows,好心疼正版office,刚刚接触linux一点都不习惯,特别windows里积累的一些小工具都不能用了,感觉像失去了左右手。
我是window7的原住民,没怎么用的xp,所以每次学校上机课都很难受,用不习惯xp。现在用linux也有种那情况,破釜沉舟适应linux。
下面命令行都是在linux下用的,windows某些命令可能不适用。
写一个简单的脚本
新建一个文件
mkdir ~/local cd ~/local touch demo.txt
编辑demo.txt
mkdir demo cd demo mkdir css js touch index.html css/style.css js/main.js exit
- 给
demo.txt
添加可执行权限chmod -x demo.txt
- 在任意位置执行,
sh ~/local/demo.txt
- 一般我在桌面创建,所以先进入桌面
cd ~Desktop
,在执行上面那句。 将
~/local
添加到PATH中cd ~/local pwd //得到local的绝对路径 touch ~/.bashrc xdg-open ~/.bashrc //在最后一行添加 export PATH="local的绝对路 径:$PATH" source ~/.bashrc
- 之前要运行
sh ~/local/demo.txt
, 现在只需要运行demo.txt
后缀在命令行中没什么太大意义,主要是给人看的。
PATH 的作用
- 你每次在 Bash 里面输入一个命令时(比如 ls、cp、demo),Bash 都会去 PATH 列表里面寻找对应的文件,如果找到了就执行。
- 使用 type demo 可以看到寻找过程
- 使用 which demo 可以看到寻找结果
创建一个动态执行目录
按照上面的方式只能创建一个demo
的目录,没有太大的价值,下面动态创建将介绍动态创建。
新建一个文件
mkdir ~/local cd ~/local touch demo
编辑demo
mkdir $1 //$1表示传递的第一个参数,也是最后执行的时候是demo $1,把$1替换成你要创建的名字 cd $1 mkdir css js touch index.html css/style.css js/main.js exit //退出
判断目录是否存在,用法
demo && echo“success”
,只有demo
成功是才会执行echo"succes"
;exit1
表示错误代码为1,exit0
表示没有错误。if [ -d $1 ]; then echo 'error: dir exists' exit 1 else mkdir $1 cd $1 mkdir css js touch index.html css/style.css js/main.js echo 'success' exit 0 fi
命令行里面Ctrl + D
表示退出,Ctrl + C
表示中断。
用Node.js写脚本
命令行用的脚本叫做 Bash Script(Bash 脚本)
JS全称叫做 JavaScript (Java 脚本),要注意和java没关系
Bash 脚本能做的事情,Java 脚本也能做。
JS脚本几个简单的语法
console.log(process.cwd()) //打印当前目录,cnsole.log相当于echo
process.chdir("/home/uccs/Desktop") //JS脚本不认识~目录,所以
process.chdir("~/Desktop") 是不行的
console.log(process.cwd()) //打印当前目录
创建
~/local/jsdemo.js
,内容如下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) //exit(0)
- 为
jsdemo.js
加上可执行权限chmod +x ~/local/jsdemo.js
cd ~/Desktop
-
node ~/local/jsdemo xxx
就可以在桌面看见xxx
目录创建成功。
shebang
在jsdemo.js
第一行加上#!/usr/bin/env node
,每次执行的时候就不用输入node
了。
总结
- 脚本就是给机器一行一行执行的文本
- Bash 脚本有 Bash 脚本的语法,Node.js 脚本有 JS 语法
- 不管是那种脚本,能实现的功能都差不多,只是语法不同