1. 程式人生 > >前端學命令列

前端學命令列

寫在前面

命令列已經成為前端程式設計師必備的一項基礎技能。如今的前端開發嚴重依賴命令列,通過 node 部署前端開發環境,通過 git 實現版本管理,命令列還可以更有效地控制作業系統(mac 尤甚)。熟練地掌握命令列,可以極大地提升工作效率,本文將介紹前端開發所需要的常用命令列操作

 

定義

命令列( command line ) 是一個應用程式,它是一個基於文字(或者說基於命令)的進行檔案操作的應用程式,類似於 mac 中的 Finder 或者 Windows 中的資源管理器,但是沒有圖形介面

一般地,命令列( command line )又代指命令列介面( command line interface ),簡稱為CLI,也稱為字元使用者介面。在 Windows 中稱為 cmd

或者 命令提示符,在 Mac 中稱為 終端 或者 控制檯,在 Linux 中稱為 shell(常見的是 bash )

 

常用命令

DOS 系統和 Linux 系統的命令有些不同,下面主要介紹 Linux 系統下的 bash 命令

 

一般規則

在瞭解命令列常用命令之前,要先了解命令列的一般規則。如果命令列正確執行,則介面不會有任何反饋;如果錯誤執行,則會提示報錯資訊

 

特殊符號

# 代表註釋

\ 代表轉義字元,可以將特殊符號變成一般字元

$ 代表的是目前這個 Shell 的執行緒代號,即是所謂的 PID(process ID),使用echo $$,出現的數字就是 SHELL 的 PID 程式碼

$ echo $$ # 5477

? 是一個特殊的變數,代表上一個執行的命令所回傳的值。如果成功執行該命令,則會回傳一個 0 值,如果執行過程發生錯誤,就會回傳一個非 0 的值

$ echo $?  # 0

 

縮寫

所謂的命令實際上就是單詞的縮寫,有以下幾種常見縮寫方式:

1、最常見的縮寫是取每個單詞的首字母

cd Change Direcroty 切換目錄

2、如果首字母后為h,則保留h

chmod CHange MODe 切換檔案許可權

3、 如果只有一個單詞,通常取每個音節的首字母

cp Copy 檔案拷貝

4、取前幾個字母作為縮寫

diff DIFFerences 比較檔案差異

 

操作命令

clear 清屏
unset 取消變數
$ unset abc # 取消變數 abc

alias 用來設定別名,單獨使用alias,可以檢視當前已經設定的別名;unalias 用來取消設定的別名

$ alias # 檢視當前已經設定的別名
$ alias lm='ls -l | more' # 設定別名 lm
$ unalias lm # 取消別名 lm 的設定

open 可以使用預設方式開啟檔案,使用 aliasopen 配合,可以使用命令列來開啟網頁

alias cnblogs='open https://cnblogs.com'

 

目錄命令

【特殊符號】

.表示當前目錄

..表示上級目錄

-表示前一次目錄

~表示使用者目錄

【顯示目錄】

pwd  # print work directory 顯示當前工作目錄的絕對路徑

【切換目錄】

cd   # change directory 切換工作目錄 
     # 如果不帶任何引數,或使用波浪號(~),切換到使用者目錄

【建立目錄】

mkdir # make directory 建立目錄 
$ mkdir a   # 建立目錄 a
$ mkdir b c # 建立目錄 b 和 c
$ mkdir -p a/b/c # 建立有層級的目錄(a/b/c),需要使用 -p 選項

【刪除目錄】

rmdir # 刪除空目錄
rm -r # 刪除目錄及該目錄下的所有目錄及檔案
$ rm -r a   # 刪除目錄 a
            # 千萬不要使用 rm -rf /,該命令會刪除所有檔案

【複製目錄】

cp # copy 複製檔案(或目錄)
$ cp -r a b # 將目錄 a 複製到目錄 b

【移動目錄】

mv # move 移動檔案(或目錄)),或者重新命名
$ mv a b # 將目錄 a 從當前目錄移動到目錄 b 下
$ mv a b # 如果沒有目錄 b,則目錄 a 重新命名為目錄 b

 

檔案命令

【特殊符號】

> 表示覆蓋

>> 表示累加

【顯示目錄下檔案】

ls  # 顯示該目錄下的所有檔案 list files,預設不顯示以點開頭的檔案
ls -a # 顯示所有檔案,包括隱藏檔案
ls -l # 顯示每個檔案的詳細資訊
ls ./y # 顯示指定路徑 ./y 下的所有檔案

【檢視檔案內容】

open # 使用預設軟體開啟檔案
cat # 顯示檔案內容

其實,更常用的檔案檢視方式是使用 vscode

$ code a.txt # 使用 vscode 開啟 a.txt 檔案

要使用上述命令,需要進行如下設定:執行 vscode 並開啟命令面板(⇧⌘P ),輸入 shell command 找到: Install ‘code' command in PATH,並點選

【新建檔案】

touch # 建立檔案
$ touch a.txt  # 建立空檔案a.txt,如果a.txt已經有內容,則修改檔案最後更新時間
echo # 輸出字串,也可以新建或改寫檔案
$ echo 123 # 輸入字串'123'
$ echo -e '111\n222' # 輸入多行內容,需要使用-e選項
$ echo 123 > 1.txt # 將1.txt的內容改寫為'123'
$ echo abc >> 1.txt # 向1.txt追加內容,則1.txt的內容為'123 \n abc'

【刪除檔案】

rm  # remove 刪除檔案 
rm -f # 強制刪除
rm -i # 刪除檔案之前先詢問確認,使用者回覆y或Y之後,檔案才會真的被刪除
$ rm a.txt # 刪除檔案a.txt

【複製檔案】

cp # copy 複製檔案(或目錄)
$ cp 1.txt 2.txt # 將1.txt的內容複製到2.txt

【移動檔案】

mv # move 移動檔案(或目錄),或者重新命名
$ mv 1.txt 2.txt # 如果在同一目錄下,則將1.txt重新命名為2.txt
$ mv 1.txt a # 如果不在同一目錄下,則將1.txt移動到指定的目錄a下
$ mv 1.txt a/2.txt # 也可以在移動到目錄a的同時,重新命名為2.txt

 

快捷鍵

在 Mac 下,iTerm2 需要設定才能使用 alt 快捷鍵

開啟 Preferences > Profiles > Keys,left Keys 選擇 Esc+

【游標移動】

ctrl + a 移動到命令列最左側(ahead)
ctrl + e 移動到命令列最右側(end)
alt + b 向左移動一個單詞(back)
alt + f 向右移動一個單詞(forward)

【內容剪貼】

ctrl + k 剪下從游標位置到行尾的字元 (kill)
ctrl + u 剪下從游標位置到行首的字元 (undo)
ctrl + w 或 alt + backspace 剪下游標前的單詞(word)
alt + d  剪下游標後的單詞(delete)
ctrl + y 將剪貼簿的內容貼上到游標處

【控制】

ctrl + c 強制終止當前命令
ctrl + l 清屏
一次 tab 補全
兩次 tab 提示

 

命令組合

使用多命令執行符和管道符可以實現命令組合的目的

【多命令執行符】

命令1;命令2 多個命令順序執行,命令之間沒有任何邏輯關係

命令1&&命令2 邏輯與,命令1成功,才會執行命令2

命令1||命令2 邏輯或,命令1不成功,才會執行命令2

【管道符】

命令1 | 命令2 命令1的正確輸出作為命令2的操作物件

$ ls -al /etc | less

上面程式碼中,使用 ls 命令輸出後的內容就能夠被 less 讀取,並利用 less 的功能,就能夠前後翻動相關的資訊了

 

指令碼檔案

指令碼檔案類似於DOS作業系統中的批處理檔案.bat,它可以將不同的命令組合起來,並按確定的順序自動連續地執行

比如,一個常見的需求是把 chrome 的下載目錄中的 excel 檔案儲存到專門的文件資料夾裡

1、新建並開啟指令碼檔案

$ touch mvExl.txt
$ chmod + x mvExl.txt
$ code mvExl.txt

2、修改指令碼檔案,將 Downloads 目錄下所有的 excel 檔案都移動到 backup 目錄下的 xls 目錄中

mv /Users/xiaohuochai/Downloads/*.xls /Users/xiaohuochai/Desktop/backup/xls

3、執行該檔案即可

sh mvExl.txt
# 或者
sh ./mvExl.txt

當然,可以利用傳參,將其他型別的檔案比如 zip 檔案也移動到 backup 目錄下的 zip 目錄中

# 設定變數
basePath=/Users/xiaohuochai
targetPartPath=Desktop/backup

# 如果不存在 $1 資料夾,則新建 $1 資料夾
    # $1 表示第一個引數
    # -d 表示該檔名是否存在且是一個目錄
if [ -d $basePath/$targetPartPath/$1 ]; then
 echo 'exist'
else
 cd $basePath/$targetPartPath
 mkdir $1
fi
# 移動檔案
# 注意,如果加上引號,寫成"$basePath/Downloads/*.$1",則 * 只表示 * 本身,而不表示任意字元
mv $basePath/Downloads/*.$1 $basePath/$targetPartPath/$1
echo 'done'

 

最後

本文只介紹了常用的基本命令,更詳細的命令可檢視下面的文章

Linux 常用命令

Linux 命令大全

bash 中文速查

bash 英文速查

命令列解