腳本


Bash腳本


創(chuàng)建一個(gè)腳本

  1. 隨便找個(gè)地方建立個(gè)文件, 假設(shè)在~/local里吧

    1. mkdir ~/local
    2. cd ~/local
    3. touch demo
  2. 編輯demo

mkdir test
cd test
mkdir css js
touch index.html css/style.css js/main.js
exit
  1. 給demo添加執(zhí)行權(quán)限chmod +x demo

  2. 任意位置執(zhí)行sh ~/local/demo即可運(yùn)行腳本

  3. 在PATH中添加~/local

    1. cd ~/local
    2. pwd得到絕對(duì)路徑
    3. 創(chuàng)建~/.bashrc文件并且在里面添加一行export PATH="local的絕對(duì)路徑:$PATH"
    4. source ~/.bashrc 每次設(shè)置完了需要source一下才能生效
  4. 這時(shí)候直接輸入demo就會(huì)運(yùn)行腳本了, 不需要再輸入sh ~/local/demo


PATH作用

我們echo $PATH一下, 會(huì)發(fā)現(xiàn), PATH是保存命令文件的路徑

路徑用:隔開

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 寫腳本


  1. 創(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)
  1. 給 jsdemo.js 加上執(zhí)行權(quán)限chmod +x ~/local/jsdemo.js

  2. node ~/local/jsdemo.js zzz,就可以看到 zzz 目錄創(chuàng)建成功了

  3. 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 了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 理解腳本 打開一本 JavaScript 教程,很可能在第一章就看到這句話: JavaScript 是一門動(dòng)態(tài)類型...
    joker731閱讀 512評(píng)論 0 1
  • 所以說(shuō),腳本就是給計(jì)算機(jī)照著做的。這是我們對(duì)「腳本」的一個(gè)感性認(rèn)識(shí)。接下來(lái)我們寫一個(gè)腳本。 寫一個(gè)腳本 找個(gè)地方新...
    slTrust閱讀 530評(píng)論 0 0
  • .bat腳本基本命令語(yǔ)法 目錄 批處理的常見命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,537評(píng)論 1 19
  • 愿我們都?xì)q月靜好 20160716 二八定律表現(xiàn)在生活的方方面面,比如窮人和富人的區(qū)分,這個(gè)世界上總是那百分之二十...
    桃子在尋找閱讀 461評(píng)論 0 1
  • 很早之前,我就把各個(gè)網(wǎng)站的頭像都改成了自己的照片。 有一天,突然有幾個(gè)老同學(xué)都轉(zhuǎn)給了我一篇文章,問(wèn)我文章里的這個(gè)人...
    新生大學(xué)閱讀 386評(píng)論 0 5

友情鏈接更多精彩內(nèi)容