前端學命令列
寫在前面
命令列已經成為前端程式設計師必備的一項基礎技能。如今的前端開發嚴重依賴命令列,通過 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
可以使用預設方式開啟檔案,使用 alias
和 open
配合,可以使用命令列來開啟網頁
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 英文速查
命令列解