官方網址:
https://learn.microsoft.com/zh-tw/windows-hardware/drivers/devtest/pnputil
PnPUtil是 Windows下用於管理驅動及設備的命令列工具
/enum-devices
列舉系統中 class name為 USB的裝置
官方網址:
https://learn.microsoft.com/zh-tw/windows-hardware/drivers/devtest/pnputil
PnPUtil是 Windows下用於管理驅動及設備的命令列工具
列舉系統中 class name為 USB的裝置
https://nmap.org/
公司實驗室的機器 IP有時候飄來飄去,這時候就可以靠 nmap來找到需要的機器。
官方網址:
https://learn.microsoft.com/en-us/windows/core-utils/overview
https://github.com/microsoft/coreutils
Coreutils可以在原生Windows上跑 UNIX風格命令列工具,由 Microsoft自己維護。
安裝:
能用的命令可以參考:
https://learn.microsoft.com/en-us/windows/core-utils/commands
記錄一些常用的 Linux指令或工具
將字串或變數輸出到終端機的指令
輸出字串
輸出變數
concatenate,主要功能為將檔案內容輸出到終端機或另一個檔案
| cat command options | |
| -n, --number | 輸出行數。 |
輸出 a.txt的檔案內容
將 a.txt和 b.txt的檔案內容串接輸出到終端機
將 a.txt和 b.txt的檔案內容串接寫到新檔案 ab.txt中
將 b.txt的檔案內容串接寫到 a.txt後
print working directory,輸出當前終端機的目錄
list,用來輸出目錄的內容或資訊
| ls command options | |
| -l | Long format。顯示詳細資訊。 |
| -a | All file。顯示隱藏檔案。 |
| -h | Human-readable。將檔案容量大小顯示為人類可讀格式。 |
| -t | Sort by time。以修改時間來將檔案排序,由新到舊。 |
| -R | Recursive。列出所有包含子目錄中的檔案。 |
change directory,切換目錄
切換到家目錄
切換到根目錄
切換到上一層目錄
切換到上一次所在的目錄
使用絕對路徑切換目錄
切換到當前目錄下的子目錄
make directory,建立目錄
在當前目錄下建立目錄
建立多個層級的目錄
建立目錄並設定權限
建立多個目錄
move,用來重新命名或移動檔案和目錄
| mv command options | |
| -i | interactive。檔案覆蓋前跳出提示。 |
| -f | force。強制覆蓋已存在的檔案。 |
| -n | no-clobber。不覆蓋已存在的檔案。 |
| -u | update。當來源檔案較新或是目的檔案不存在才移動。 |
| -v | verbose。顯示命令執行詳細過程。 |
移動檔案
重新命名檔案
copy,複製檔案和目錄
| cp command options | |
| -r | recursive。遞迴地複製檔案,用來複製目錄。 |
| -i | interactive。檔案覆蓋前跳出提示。 |
| -p | preserve。保留檔案的權限及時間戳。 |
| -u | update。當來源檔案較新或是目的檔案不存在才複製。 |
| -a | preserve all。遞迴地複製檔案,並且保留檔案權限及時間戳。 |
| -v | verbose。顯示命令執行詳細過程。 |
複製檔案
複製檔案到目錄
manual,用來查看命令、系統呼叫、函式庫或設定檔的使用方法。
| man 操作方法 | |
| / | 搜尋關鍵字 |
| q | 離開 |
查詢 ls的使用方法
remove,用來刪除檔案或目錄。
| cp command options | |
| -f | force。強制刪除。 |
| -r | recursive。遞迴地刪除目錄及其中的檔案。 |
| -i | interactive。刪除檔案前跳出提示。 |
| -v | verbose。顯示命令執行詳細過程。 |
刪除檔案
強制刪除目錄及其中檔案
用來建立空檔案或是更新檔案的時間戳。
建立空檔案,如果檔案存在則更新時間戳為現在。
指定更新時間,格式為 [[CC]YY]MMDDhhmm[.ss]。
參考其他檔案的時間來更新。
只更新 atime(access time)。
只更新 mtime(modify time)。
change mode。用來變更檔案或目錄的存取權限。
給予所有人讀寫及執行權限。
給予檔案擁有者所有權限,其他人讀取及執行權限。
給予檔案擁有者讀寫權限,其他人只有讀取權限。
給予所有人執行權限。
給予擁有者寫入權限。
取消群組及其他人的寫入權限。
所有人設定為只能讀取權限。
tape archive。打包及檔案壓縮工具。
| tar command options | |
| -f | 指定要處理的檔名 |
| -v | 列出每一步處理涉及的檔案資訊 |
| -x | 解開 tar檔案 |
| -z | 呼叫 gzip壓縮或解壓縮檔案。 |
| -c | 建立壓縮檔案。 |
解開tar檔案
解開tar.gz檔案
官方網址:
https://github.com/gokcehan/lf
| 最重要的命令 | |
| q | 離開 lf |
| 移動 | |
| j or [↓] | 檔案列表中往下移動 |
| k or [↑] | 檔案列表中往上移動 |
| [Ctrl] + d | 檔案列表中往下移動半頁 |
| [Ctrl] + u | 檔案列表中往上移動半頁 |
| [Ctrl] + b or [PgDn] | 檔案列表中往下移動一頁 |
| [Ctrl] + f or [PgUp] | 檔案列表中往上移動一頁 |
| h or [←] | 移動到上一層目錄 |
| l or [→] | 移動到下一層目錄,或者開啟檔案 |
| gg or [Home] | 移動到最上面的檔案 |
| G or [End] | 移動到最下面的檔案 |
| 檔案操作 | |
| gg or [Home] | 移動到最上面的檔案 |
| G or [End] | 移動到最下面的檔案 |
| [Space] | 選取目前的檔案 |
| v | 取消選取目前的檔案 |
| u | 取消所有選取的檔案 |
| y | 複製目前或者選取的檔案 |
| d | 剪下目前或者選取的檔案 |
| p | 貼上複製或剪下的檔案到當前的目錄 |
| c | 取消貼上複製或剪下的檔案 |
| 命令列 | |
| : | 輸入預設或自定義的命令 |
| $ | 在 shell下執行命令 |
| % | 在 shell下執行命令,並將ui pipe到input,output pipe到ui |
| ! | 在 shell下執行命令,並等待按鍵輸入 |
| & | 在背景執行命令 |
| 搜尋 | |
| / | 搜尋符合pattern的輸入 |
| ? | 反向搜尋符合pattern的輸入 |
| n | 下一個符合pattern的結果 |
| N | 上一個符合pattern的結果 |
| 設定 | |
| z | 更改某些選項的設定 |
| s | 更改 sortby及 info的設定 |
| 開啟 | |
| e | 開啟檔案編輯器 |
| i | 開啟 pager |
| w | 開啟 shell |
Linux
Windows
可以透過修改環境變數來更改 lf的預設指令
| 環境變數 | |
| OPENER | Windows: start Linux: xdg-open |
| EDITOR | Windows: notepad Linux: vi |
| PAGER | Windows: more Linux: less |
| SHELL | Windows: cmd Linux: sh |
官方網址:
https://github.com/yrp604/rappel
rappel提供了一個 assembly的交互式介面環境,可以在執行完指令後馬上看到暫存器狀態的變化,用來嘗試一些指令非常好用。
編譯完後可從./bin/rappel執行,Ctrl + d 退出程序:
可以透過將 .gdbinit檔案放到 home目錄下對 GDB做初始化設定。
設置斷點
執行程式
離開 gdb
顯示下一個所要執行的組合語言指令
確認當前 set disassemble-next-line的設定狀態
顯示暫存器的值
將 rax暫存器的值設為 0x1234
印出 0x402000地址的值
grep是 Linux下用來在檔案中尋找文字的工具。
| grep command options | |
| Matching Control | |
| -e PATTERNS | 指定搜尋的 pattern,可以宣告多次。 |
| -i, --ignore-case | 忽略大小寫。 |
| -v, --invert-match | 印出不符合的結果。 |
| -w | whole word only。 |
| General Output Control | |
| -c, --count | 只印出符合結果的行數。 |
| -l | 只印出符合結果的檔案名稱。 |
| -o | 只印出符合的部分。 |
| Output Line Prefix Control | |
| -h, --no-filename | 只顯示符合的結果,不顯示檔案名稱。 |
| -n, --line-number | 在符合的結果前面加上行號。 |
| Context Line Control | |
| -A NUM | 印出符合的結果後面 NUM行。 |
| -B NUM | 印出符合的結果前面 NUM行。 |
| -C NUM | 印出符合的結果前面及後面 NUM行。 |
| File and Directory Selection | |
| -r, --recursive | 尋找指定目錄下所有檔案的符合結果。 |
在 file.txt中尋找有 abcd字串的行。
在 file.txt中尋找有 abcd字串及有 efgh的行。
在 file.txt和 file2.txt中尋找有 abcd字串及有 efgh的行。
在當前目錄下的所有檔案中尋找有 abcd字串的行。
只列出當前目錄下的所有檔案中有 abcd字串的檔案名稱。
find是 Linux下用來尋找檔案及目錄的命令。
| find command options | |
| -name [pattern] | 搜尋符合 pattern的檔案。 |
| -iname [pattern] | 搜尋符合 pattern的檔案。(case insensitive) |
| -type [type] | 搜尋特定類型的檔案。-type f為只搜尋檔案,-type d為只搜尋目錄。 |
| -maxdepth [levels] | 限制最大的搜尋的目錄層數。 |
| -mindepth [levels] | 限制最小的搜尋的目錄層數。 |
| -exec [command] {} \; | 對於每個找到的檔案執行 [command],帶入 {}為找到的檔案。 |
| -delete | 移除所找到的檔案。 |
在當前目錄尋找名為 file.txt的檔案。
忽略大小寫,在當前目錄尋找名為 file.txt的檔案。(case insensitive)
在當前目錄尋找名稱結尾為 .txt的檔案
在當前目錄尋找名稱帶有 file的目錄
在當前目錄尋找名稱帶有 file的檔案
移除所有帶有 file名稱的檔案
計算用 find所找到檔案的數量
排序用 find所找到的檔案
取得找到檔案的 md5值
tmux是個 Linux下的終端機管理程式,可以在同一個終端 (terminal)下同時操作多個程式, 對於透過 SSH連線來使用機器來說非常方便。
開啟新的 tmux session
開啟名為 <session_name>新的 session
重新命名 session
列出當前的所有的 tmux session
attach到 <session_name>的 tmux session
detach當前的 tmux session
關閉session
| tmux快捷鍵 | |
| [Ctrl]+b : | 進入指令模式 |
| [Ctrl]+b d | detach當前的 tmux session |
| [Ctrl]+b " | 垂直分割兩個 pane |
| [Ctrl]+b % | 水平分割兩個 pane |
| [Ctrl]+b [←/↓/↑/→] | 切換 pane |
| [Ctrl]+b x | 關閉當前的 pane |
| [Ctrl]+b c | 建立新的 window |
| [Ctrl]+b n | 移動到下個 window |
| [Ctrl]+b p | 移動到上個 window |
| [Ctrl]+b <index> | 移動到第<index>個 window |
| [Ctrl]+b & | 關閉當前的 window |
| [Ctrl]+b w | 打開操作面板,可以瀏覽所有 tmux session |
關閉並重啟當前的pane
關閉並重啟當前的windows