1 CMD 與 PowerShell 常用指令
????????在命令行環境中高效運行程序,掌握終端的基本操作命令至關重要。無論是 Windows 系統下的 CMD(命令提示符)還是 PowerShell,它們都配備了一系列實用的命令,助力我們管理文件、執行程序以及進行系統配置。以下是對 CMD 和 PowerShell 中常用終端指令的詳細解析。
功能描述 | CMD 命令 | PowerShell 命令 | 備注 |
---|---|---|---|
清屏 | cls | Clear-Host 或 clear 或 cls | 在 CMD 中,直接使用 cls 即可清屏; 在 PowerShell 中三者均可,但 Clear-Host 更符合 PowerShell 風格。 |
Tab 補全 | 自動補全(按 Tab 鍵) | 自動補全(按 Tab 鍵) | 在輸入命令、路徑或文件名時,按 Tab 鍵可自動補全或顯示可能的選項; 若存在多個匹配項,多次按下 Tab 鍵可循環顯示這些選項,便于選擇。 |
切換路徑 | cd [路徑] | Set-Location [路徑] 或 cd [路徑] | cd 在兩者中均可使用,但 PowerShell 的 Set-Location 提供了更多功能。 |
查看當前路徑 | cd(無參數) | Get-Location 或 pwd | cd 在 CMD 中無參數時顯示當前路徑; PowerShell 中 pwd 是 Print Working Directory 的縮寫。 |
列出目錄內容 | dir | Get-ChildItem 或 ls | dir 在 CMD 中列出目錄內容; PowerShell 中 ls 是 List 的縮寫,更簡潔。 |
創建目錄 | mkdir [目錄名] | New-Item -ItemType Directory -Name [目錄名] 或 mkdir [目錄名] | mkdir 在兩者中均可使用,但 PowerShell 的 New-Item 提供了更靈活的選項。 |
刪除文件 | del [文件名] | Remove-Item [文件名] | del 在 CMD 中刪除文件; PowerShell 中 Remove-Item 更通用,也可刪除目錄。 |
刪除目錄 | rmdir [目錄名] | Remove-Item [目錄名] -Recurse | rmdir 在 CMD 中刪除空目錄; PowerShell 中需加 -Recurse 參數刪除非空目錄。 |
查看命令幫助 | help [命令名] | Get-Help [命令名] | help 在 CMD 中提供基本幫助; PowerShell 的 Get-Help 提供了更詳細的幫助信息。 |
執行程序 | 直接輸入程序名或路徑 | 需注意路徑問題 | 在 CMD 中,若程序位于當前目錄,可直接輸入程序名運行; 在 PowerShell 中,若當前路徑未加入 PATH 環境變量,需使用?“.\程序名” 的形式運行當前目錄下的程序。 |
執行程序時的路徑問題:
- 在 CMD 中:如果程序位于當前目錄,你可以直接輸入程序名來運行它,即使當前目錄沒有加入 PATH 環境變量。
- 在 PowerShell 中:出于安全考慮,如果當前目錄沒有加入 PATH 環境變量,你需要使用 .\ 程序名 的形式來運行當前目錄下的程序。這里的 .\ 表示當前目錄。
2 在終端中運行 C 程序
????????在終端中運行 C 程序是開發者常見的需求,不同的終端環境(如 CMD、PowerShell 或 VSCode 內置終端)提供了各自的操作方式。接下來,我將詳細講解如何在這些終端中編譯并運行 C 程序,包括具體的命令示例和注意事項,幫助你快速上手。
2.1?定位文件路徑
????????首先,我們需要確定當前源文件的存儲位置。如果你是在 VS Code 中編輯源代碼,可以通過以下簡單步驟快速定位源文件所在的磁盤位置,以便后續在終端中進行編譯和運行操作。
????????具體操作如下:在 VS Code 的文件列表中,將鼠標懸停在目標源文件(例如 main.c)上,然后右鍵單擊該文件。在彈出的右鍵菜單中,選擇 “在文件資源管理器中顯示” 選項。
????????這樣,文件資源管理器將會打開,并直接定位到該文件所在的目錄位置。?
????????若直接在文件資源管理器中雙擊 main.exe 文件,程序運行結束后命令行窗口會立即關閉,導致無法查看程序的輸出結果。這是因為命令行窗口在程序執行完畢后自動退出,未給用戶提供足夠的時間查看信息。
????????為避免此問題,我們建議在終端中運行程序。在終端中執行程序時,窗口會保持打開狀態,直到用戶手動關閉,從而可以完整地查看程序的輸出和調試信息。
2.2 在 PowerShell 中執行程序
????????我們可以在包含 main.exe 文件的文件夾空白處右擊鼠標,從彈出的菜單中選擇 “在終端中打開” 選項,操作如下:
????????請注意,當前使用的終端是 PowerShell。在 PowerShell 中,可通過 ls 命令查看目錄內容。
????????需要特別注意的是,在 PowerShell 中運行程序或執行指令時,必須指定文件的相對路徑,其中 .\ 代表當前目錄。為提升操作效率,在輸入文件名(如 main.exe)后,可按下 Tab 鍵自動補全前面的相對路徑(即 .\)。具體操作示例如下圖所示:
2.3 在?CMD 中執行程序
????????除了使用 PowerShell,你還可以在命令提示符(CMD)中運行程序。以下是具體步驟:
? ? ? ? 1. 打開命令提示符:按下 Win + R 鍵,輸入 cmd,然后按 Enter 鍵。
? ? ? ? 2. 切換到程序所在的磁盤:如果程序位于 D 盤,輸入 d: 并按 Enter 鍵。
????????3. 進入程序所在的文件夾:例如,程序位于 D:\Code_Space\C_Language\Chapter1_HelloWorld,輸入 cd D:\Code_Space\C_Language\Chapter1_HelloWorld
并按 Enter 鍵。
????????4. 查看目錄內容(可選):輸入 dir 命令并按 Enter 鍵,查看當前目錄下的文件和文件夾。
????????5. 運行程序:輸入 main.exe 并按 Enter 鍵,程序將開始執行。?
? ? ? ? 你也可以使用文件的絕對路徑來直接運行程序。具體操作是:在命令提示符中輸入文件的絕對路徑,格式為:盤符:\路徑\文件名.后綴名。為方便操作,你可以在文件資源管理器中右鍵點擊目標文件,選擇 “復制文件地址” 或直接復制文件目錄上方的完整路徑,然后將其粘貼到命令提示符中執行。
2.4?添加 "在此打開 CMD" 右鍵菜單
????????在通過 CMD 方式運行程序時,頻繁切換盤符和路徑可能會帶來不便。為簡化操作,你可以通過修改注冊表,在文件夾的右鍵菜單中添加 “在此打開 CMD” 選項。以下是具體步驟:
? ? ? ? 1. 打開注冊表編輯器:按下 Win + R 鍵,打開 “運行” 窗口。輸入 regedit,點擊 “確定” 按鈕,進入注冊表編輯器。
? ? ? ? 2. 定位到目標路徑:在注冊表編輯器的地址欄中,輸入路徑:計算機\HKEY_CLASSES_ROOT\Directory\Background\shell,然后按 Enter 鍵。
????????3. 新建 “在此打開 CMD” 選項:在 shell 項下,右鍵選擇 “新建” > “項”。將新建的項命名為 open_cmd。
????????雙擊 open_cmd 項的默認值,輸入“在此打開 cmd”,作為該選項的顯示名稱。?
? ? ? ? 4. 獲取 CMD 的路徑:按下 Win 鍵,輸入“cmd” 并搜索,然后選擇 “打開文件位置”。
????????右鍵命令提示符選擇 “打開文件所在的位置”。
????????然后得到 cmd.exe 的路徑為:C:\Windows\system32\cmd.exe??
? ? ? ? 5. 設置圖標(可選):在 open_cmd 項下,右鍵點擊空白處,選擇 “新建” > “字符串值”。
????????將新建的字符串值命名為 Icon。雙擊 Icon 字符串值,輸入 cmd.exe 的路徑(如 C:\Windows\system32\cmd.exe),為選項設置圖標。?
????????6. 配置命令執行路徑:在 open_cmd 項下,右鍵選擇 “新建” > “項”。將新建的項命名為 command。
????????雙擊 command 項的默認值,輸入 cmd.exe 的路徑,如 C:\Windows\system32\cmd.exe。
? ? ? ? 7. 測試右鍵菜單選項:在任意文件夾的空白處,右鍵點擊鼠標。在彈出的右鍵菜單中,選擇 “在此打開 cmd” 選項。此時,CMD 窗口將在當前文件夾中打開,你可以直接輸入可執行文件的名稱來運行程序,無需再手動切換盤符和路徑。?
2.5 在?VS Code 終端中執行程序?
????????除了利用系統自帶的終端(如 PowerShell 或 CMD)運行程序外,你還可以直接在 VS Code 的內置終端中執行程序。以下是具體操作步驟:
- 打開 VS Code 并加載項目:
- 啟動 VS Code,并打開包含您源文件的文件夾或工作區。
- 打開內置終端:
- 在 VS Code 中,你可以通過多種方式打開終端:
- 使用快捷鍵 Ctrl+`(反引號,通常位于鍵盤左上角,與 ~ 鍵共享)。
- 點擊菜單欄中的 “終端” > “新建終端”。
- 使用命令面板(Ctrl+Shift+P),輸入 “終端: 創建新終端” 并選擇。
- 在 VS Code 中,你可以通過多種方式打開終端:
- 導航到程序所在目錄(如果需要):
- 默認情況下,終端會打開在當前工作區的根目錄。
- 如果你的程序位于子目錄中,可以使用 cd 命令切換到相應目錄。例如:cd path/to/your/program
- 編譯程序(如果需要):
- 如果你的程序需要編譯(如 C/C++ 程序),請在終端中使用相應的編譯器命令。
- 運行程序:
????????在 PowerShell 中,若當前路徑未加入 PATH 環境變量,需使用?“.\程序名” 的形式運行當前目錄下的程序。其中 .\ 代表當前目錄。為提升操作效率,在輸入文件名(如 main.exe)后,可按下 Tab 鍵自動補全前面的相對路徑(即 .\)。
????????在 CMD 中,若程序位于當前目錄,可直接輸入程序名運行。
3?字符編碼切換指南
3.1?編碼切換的必要性
????????在計算機系統中,編碼(Encoding)是指將字符(如字母、數字、符號等)轉換為計算機能夠理解和存儲的二進制數據的過程。不同的編碼方式支持不同的字符集,并且可能以不同的方式表示相同的字符。當我們在命令行或腳本中處理文本數據時,如果編碼方式不匹配,就可能導致亂碼問題。
????????在編程和計算機系統中,亂碼問題通常是由于字符編碼不匹配引起的。當你編寫一個包含非 ASCII 字符(如中文)的程序,并在控制臺或終端中運行時,如果控制臺的字符編碼不支持這些字符,就會出現亂碼。
????????以下面這個程序為例:
#include <stdio.h>int main()
{// printf("Hello,World");printf("你好,世界!");return 0;
}
????????這個程序輸出了一句中文:“你好,世界!”。如果你在一個不支持 UTF-8 編碼的控制臺中運行這個程序,比如默認使用 GBK 或其他非 UTF-8 編碼的 Windows CMD,那么輸出的中文可能會顯示為亂碼。?
????????若使用 VS Code 的自動編譯和運行功能,程序運行結果將不會出現亂碼現象。
????????然而,若直接在終端環境中(powershell 或 CMD)運行程序,輸出內容可能會出現亂碼,具體示例如下:
3.2 解決中文亂碼問題
3.2.1 PowerShell 解決方案
????????如果你發現 PowerShell 控制臺輸出亂碼,可能是因為控制臺默認的編碼(通常是 UTF-16)與外部程序或文件的編碼不匹配。你可以嘗試將控制臺的輸出編碼設置為 UTF-8:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
-
[Console]:這是一個 .NET 類型,代表控制臺。在 PowerShell 中,它用于訪問和控制與控制臺相關的屬性和方法。
-
OutputEncoding:這是 [Console] 類型的一個屬性,表示控制臺輸出的文本編碼。默認情況下,PowerShell 控制臺的輸出編碼可能不是 UTF-8,這可能導致在輸出包含非 ASCII 字符的文本時出現亂碼。
-
[System.Text.Encoding]::UTF8:這是一個 .NET 枚舉值,代表 UTF-8 編碼。UTF-8 是一種廣泛使用的字符編碼,能夠表示 Unicode 標準中的任何字符,并且與 ASCII 編碼兼容(即 ASCII 字符在 UTF-8 中使用相同的字節表示)。
????????通過執行這段代碼,將 PowerShell 控制臺的輸出編碼設置為 UTF-8。這樣,當程序或腳本輸出包含非 ASCII 字符的文本時(如中文字符、特殊符號等),這些字符就能以正確的形式顯示在控制臺上,而不會出現亂碼。
3.2.2 CMD 解決方案
????????在 CMD(命令提示符)中,如果你遇到輸出亂碼的問題,通常是因為控制臺的代碼頁設置不正確。默認情況下,CMD 使用的代碼頁可能不支持某些字符集,特別是當你需要處理非 ASCII 字符(如中文、日文或其他國際字符)時。這時就會使用到 chcp 65001 命令。
chcp 65001
- chcp:這是?CMD 中的一個命令,用于更改控制臺的代碼頁。代碼頁(Code Page)是一個字符映射表,它定義了字符與字節序列之間的對應關系。不同的代碼頁支持不同的字符集。
- 65001:這是 UTF-8 的代碼頁編號。通過執行 chcp 65001,你可以將 CMD 控制臺的代碼頁設置為 UTF-8,從而支持更廣泛的字符集,包括中文、日文、韓文等。
3.3?UTF-8 編碼概述
????????UTF-8(Unicode Transformation Format - 8-bit)是一種針對 Unicode 的可變長度字符編碼,它能夠用來表示 Unicode 標準中的任何字符,并且與 ASCII 編碼向后兼容。UTF-8 使用 1 到 4 個字節來編碼一個字符,具體使用多少字節取決于字符的 Unicode 碼點:
- ASCII 字符(U+0000 到 U+007F):使用 1 個字節編碼,與 ASCII 編碼完全相同。
- 常用字符(如拉丁字母、希臘字母、西里爾字母等,大部分在 U+0080 到 U+07FF 范圍內):使用 2 個字節編碼。
- 其他字符(如中文、日文、韓文等大部分在 U+0800 到 U+FFFF 范圍內):使用 3 個字節編碼。
- 特殊字符和補充字符(U+10000 到 U+10FFFF):使用 4 個字節編碼。
3.4 采用 UTF-8 的優勢
-
廣泛支持:UTF-8 是一種國際標準的字符編碼,被廣泛應用于互聯網、操作系統、編程語言和各種軟件中。
-
兼容性:UTF-8 與 ASCII 編碼向后兼容,這意味著所有 ASCII 字符在 UTF-8 中都有相同的編碼。這使得 UTF-8 在處理英文文本時與 ASCII 一樣高效。
-
多語言支持:UTF-8 能夠表示 Unicode 標準中的任何字符,包括中文、日文、韓文、阿拉伯文、希伯來文等各種語言的字符。
-
避免亂碼:通過將控制臺的字符編碼設置為 UTF-8,你可以確保程序輸出的非 ASCII 字符能夠正確顯示,避免出現亂碼。