為了學習命令列,昨天裝了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 語法
- 不管是那種指令碼,能實現的功能都差不多,只是語法不同