脚本

脚本就是给机器一行一行执行的文本,一般脚本的后缀是 .sh

创建一个脚本

  1. mkdir ~/local 创建一个目录
  2. cd ~/local 进入目录
  3. touch demo.sh创建文件
  4. 编辑 demo.sh 文件内容

mkdir demo
cd demo
mkdir css js
touch index.html css/style.css js/main.js
exit

  1. 在任意位置执行 sh ~/local/demo.txt 即可运行此脚本,一次运行cd ~/Desktop sh ~/local/demo.txt即可在桌面看到 demo 目录包括里面的一些文件。这个demo.sh就是一个脚本。

设置PATH

PATH的作用
  • 每次在 Bash 里面输入一个命令时(比如 ls、cp、demo),Bash 都会去 PATH 列表里面寻找对应的文件,如果找到了就执行。
  • 使用 type demo 可以看到寻找过程
  • 使用 which demo 可以看到寻找结果
  1. cd ~/local; pwd得到 local的绝对路径
  2. 临时设置 PATH
  • 运行 export PATH="local的绝对路径:$PATH",这句话是把 local 目录加到 PATH 里,注意替换 local的绝对路径。
  • 这时你只要运行 demo.sh 就相等于运行 sh ~/local/demo.txt 了。
  1. 设置永久PATH,上面的 PATH 在你重启 Bash 之后就会失效,如果你希望 PATH 一直生效,看下面
  • 创建 ~/.bashrc:touch ~/.bashrc
  • 编辑 ~/.bashrc:start ~/.bashrc
  • 在编辑器里添加一行字: export PATH="local的绝对路径:$PATH"
  • 运行 source ~/.bashrc
  • 之前你要运行 sh ~/local/demo.txt,现在你只需要运行demo.sh
  1. 可以修改文件后缀,比如mv ~/local/demo.txt ~/local/demo,之后只要运行demo就可以运行脚本。

参数(改变目录名)

mkdir $1
cd $1
mkdir css js
touch index.html css/style.css js/main.js
exit

$1 表示你传的第一个参数,谷歌搜索答案。

判断目录是否存在

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
可以谷歌搜索得到。

Node.js 写脚本

上面我们写的脚本叫做 Bash Script(Bash脚本)。
JS 的全称叫做 JavaScript(Java脚本),虽然 JS 和 Java 没什么关系,但是 JS 依然是一种脚本。

  1. 我们在 Bash 命令行里输入 Bash 命令,也可以在 Node.js 命令行里输入 JS 命令(Ctrl + D 退出)
  2. Bash 脚本能做的事情,JS 脚本也能做。(sh demo.sh对应 node demo.js
用 JS 切换目录

console.log(process.cwd()) // 打印当前目录
// process.chdir('~/Desktop'); // 这句话不行的,因为 JS 不认识 ~ 目录
process.chdir("/Users/frank/Desktop")
console.log(process.cwd()) // 打印当前目录

console.log 就相当于 echo

用 JS 脚本创建目录

Google 搜索 nodejs create dir

文档:https://nodejs.org/api/fs.html#fs_fs_mkdirsync_path_mode

let fs = require("fs")
fs.mkdirSync("demo")

用 JS 脚本创建文件

Google 搜索 nodejs create file
文档: https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options

let fs = require('fs')
fs.writeFileSync("./index.html", "")

用 JS 脚本来重写 demo.sh

  1. 创建 ~/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)

  1. 运行node ~/local/jsdemo.js 目录名,就可以看到目录创建成功了。
  2. shebang ,在 jsdemo.js 第一行加上这一句即可:#!/usr/bin/env node,就可以省略 node ,可以直接运行 ~/local/jsdemo.js 目录名就可以。
  3. 也可以设置PATH,方法跟之前相同。

你可能感兴趣的:(脚本)