前端學命令行


寫在前面

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

 

定義

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

一般地,命令行( command line )又代指命令行界面( command line interface ),簡稱為CLI,也稱為字符用戶界面。在 Windows 中稱為 cmd 或者 命令提示符,在 Mac 中稱為 終端 或者 控制台,在 Linux 中稱為 shell(常見的是 bash )

bash_thumb

 

常用命令

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'

bash_result

 

最后

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

Linux 常用命令

Linux 命令大全

bash 中文速查

bash 英文速查

命令行解釋


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM