Bash腳本
創(chuàng)建一個(gè)腳本
-
隨便找個(gè)地方建立個(gè)文件, 假設(shè)在~/local里吧
mkdir ~/localcd ~/localtouch demo
編輯demo
mkdir test
cd test
mkdir css js
touch index.html css/style.css js/main.js
exit
給demo添加執(zhí)行權(quán)限
chmod +x demo任意位置執(zhí)行
sh ~/local/demo即可運(yùn)行腳本-
在PATH中添加
~/localcd ~/local-
pwd得到絕對(duì)路徑 - 創(chuàng)建~/.bashrc文件并且在里面添加一行
export PATH="local的絕對(duì)路徑:$PATH" -
source ~/.bashrc每次設(shè)置完了需要source一下才能生效
這時(shí)候直接輸入
demo就會(huì)運(yùn)行腳本了, 不需要再輸入sh ~/local/demo
PATH作用
我們echo $PATH一下, 會(huì)發(fā)現(xiàn), PATH是保存命令文件的路徑
路徑用:隔開

Linux命令是文件
首先我們要明確一點(diǎn), 命令實(shí)際是一個(gè)文件, 當(dāng)我們運(yùn)行一個(gè)命令時(shí), 比如ls, 系統(tǒng)會(huì)一次在這些路徑中找是否有l(wèi)s這個(gè)文件, 直到找到為止, 找不到就提示沒有這個(gè)命令,這里介紹幾個(gè)跟環(huán)境變量相關(guān)的命令命令
echo $PATH查看$PATH路徑
chmod -X 文件名給文件添加X權(quán)限
pwd顯示當(dāng)前路徑
type 命令顯示命令路徑
which 命令顯示命令的類型
我們可以用type ls看看我們ls文件在系統(tǒng)的那里存著
參數(shù)
我們可以給腳本傳參, 假設(shè)我們創(chuàng)建了一個(gè)demo腳本
mkdir $1
cd $1
mkdir css js
touch index.html css/style.css js/main.js
exit
$1就表示我們運(yùn)行腳本時(shí)候傳進(jìn)去的第一個(gè)參數(shù)
為什么會(huì)知道呢
Google 出來(lái)的 http://lmgtfy.com/?q=bash+first+param
用百度也行 http://www.baidu-x.com/?q=bash+%E7%AC%AC%E4%B8%80%E4%B8%AA+%E5%8F%82%E6%95%B0
判斷目錄是否存在
if [ -d $1 ]; then
echo '$1 has exist'
exit
else
mkdir $1
cd $1
mkdir css js
touch index.html css/style.css js/main.js
exit
fi
這里面比較難理解, 先說(shuō)一下[-d $1]的意思
-d $1 表示文件$1
bash的判斷通過(guò)下面的語(yǔ)法
if[]; then
...
else
...
fi
我們?cè)趺磿?huì)知道-d $1可以判斷目錄是否存在?
Google出來(lái)的 http://lmgtfy.com/?q=bash+dir+exists
返回值
exit 0表示沒有錯(cuò)誤
exit 1表示錯(cuò)誤代碼為 1
demo && echo '結(jié)束'
只有在 demo 成功時(shí),才會(huì)執(zhí)行echo '結(jié)束'
Node.js 寫腳本
- 創(chuàng)建 ~/local/jsdemo.js,內(nèi)容如下
var fs = require('fs')
var dirName = process.argv[2] // 你傳的參數(shù)是從第 2 個(gè)開始的
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)
給 jsdemo.js 加上執(zhí)行權(quán)限
chmod +x ~/local/jsdemo.jsnode ~/local/jsdemo.js zzz,就可以看到 zzz 目錄創(chuàng)建成功了-
shebang
我們每次執(zhí)行 ~/local/jsdemo.js 都要用 node 來(lái)執(zhí)行,能不能做到不加 node 也能執(zhí)行呢(也就是指定執(zhí)行環(huán)境),可以,在 jsdemo.js 第一行加上這一句即可:#!/usr/bin/env node然后你就可以直接用 ~/local/jsdemo.js zzz 了(省得輸入 node 了)。
如果你已經(jīng)把 ~/local 加入了 PATH,那么甚至可以直接輸入 jsdemo.js zzz 來(lái)執(zhí)行。
如果你再把 jsdemo.js 的后綴 .js 去掉,就可以直接 jsdemo zzz 了。