https://nmap.org/
公司實驗室的機器 IP有時候飄來飄去,這時候就可以靠 nmap來找到需要的機器。
掃描指定機器的常用埠
掃描子網路 (192.168.1.0 to 192.168.1.255)
掃描指定的埠
偵測每個埠上運行的服務
掃描子網路下所有 port 22的狀態為 open的機器
- -T4 加速掃描速度
- --open 只列出狀態為 open的 port
- --oG - 輸出grepable的格式到console
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
列出當前的所有的 tmux session
attach到 <session_name>的 tmux session
detach當前的 tmux session
關閉session
| tmux快捷鍵 | |
| [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 |
一開始認識 vim就要先了解其不同的模式:
其中最常用是一般模式 (Normal Mode)、插入模式 (Insert Mode)及命令列模式 (Command Line Mode)。一開始進入 vim時的模式為普通模式, 其他模式都要經過普通模式進入,透過 Esc鍵返回。
| 游標移動 | |
| h or [←] | 游標向左移動一個字元 |
| j or [↓] | 游標向下移動一個字元 |
| k or [↑] | 游標向上移動一個字元 |
| l or [→] | 游標向右移動一個字元 |
| 可以在指令前加上要執行指令的次數,例如 20l or 20[→],就可以往右移動 20個字元。 | |
| [Ctrl] + b or [PgUp] | 向上移動一頁 (backward) |
| [Ctrl] + f or [PgDn] | 向下移動一頁 (forward) |
| [Ctrl] + u | 向上移動半頁 (upward) |
| [Ctrl] + d | 向下移動半頁 (downward) |
| 0 or [Home] | 移動到此列的起始位置 |
| $ or [End] | 移動到此列最後面非空字元 |
| ^ | 移動到此列最前面非空字元 |
| + | 移動到下一列最前面的非空字元 |
| - | 移動到上一列最前面的非空字元 |
| gg | 移動到檔案的第一行 |
| G | 移動到檔案的最後一行 |
| {number}G 可以移動到第 {number}行,例如 20G,可以移動到檔案第 20行 | |
| H | 移動到目前顯示的第一行首字元 |
| M | 移動到目前顯示的中間一行首字元 |
| L | 移動到目前顯示的最後一行首字元 |
| [Space] | 向右移動一個字元 |
| [Enter] | 移動到下一行 |
| {number}[Space]可以向右移動 {number}個字元,與[→]不同的是,[Space]會移動到下一行。 {number}[Enter]可以向下移動 {number}行。 | |
| 搜尋與取代 | |
| /{string} | 向後搜尋 {string}字串 |
| ?{string} | 向前搜尋 {string}字串 |
| n | 執行上一個搜尋操作 |
| N | 反向執行上一個搜尋操作 |
| s/{string1}/{string2}/g | 將此行的 {string1}取代成 {string2} |
| %s/{string1}/{string2}/g | 將檔案裡的 {string1}取代成 {string2} |
| %s/{string1}/{string2}/gc | 將檔案裡的 {string1}取代成 {string2},取代前需要確認 |
| 編輯 | |
| x | 刪除游標後面的字元 |
| X | 刪除游標前面的字元 |
| dd | 刪除游標所在的這一行 |
| {number}X及 {number}x可以刪除游標前、後 {number}個字元。 {number}dd可以刪除游標往下 {number}行。 | |
| d1G | 刪除游標到第一行中的內容 |
| dG | 刪除游標到最後一行的內容 |
| d0 | 刪除游標前的這一行的內容 |
| d$ | 刪除游標後的這一行的內容 |
| yy | 複製游標所在的這一行 (yank) |
| {number}yy可以複製游標往下 {number}行。 | |
| y1G | 複製游標到第一行中的內容 |
| yG | 複製游標到最後一行的內容 |
| y0 | 複製游標前的這一行的內容 |
| y$ | 複製游標後的這一行的內容 |
| p | 在游標的後一行貼上 |
| P | 在游標的前一行貼上 |
| J | 將此行與下一行合成同一行 |
| u | 回到上一個操作的狀態 (undo) |
| [Ctrl] + r | 回到下一個操作的狀態 (redo) |
| . | 重複上一個操作 |
| 進入插入模式 | |
| i | 在游標字元處前插入 (insert) |
| I | 從此行第一個非空字元前插入 |
| a | 在游標字元處後插入 (append) |
| A | 從此行最後字元後插入 |
| o | 插入新的下面一行 (open) |
| O | 插入新的上面一行 |
| r | 進入取代模式,只取代一個字元 (replace) |
| R | 進入取代模式,直到離開 |
| Command Line Mode指令 | |
| :w | 儲存目前檔案變更 (write) |
| :q | 離開 vim (quit) |
| :w!可以強制寫入唯讀檔案。:q!可以強制不儲存離開。 | |
| :wq | 儲存並離開 |
| ZZ | 若檔案沒有修改,直接離開。若檔案有修改,儲存並離開 |
| ZQ | 不儲存離開 |
| :w {filename} | 將檔案另存到 {filename} |
| :r {filename} | 將另外一個檔案的內容加到游標位置的下一行 |
| :! {command} | 暫時離開 vim並執行 {command} |
| vim 可以同時打開多個檔案進行編輯。ex: vim a.txt b.txt。 | |
| :files | 列出目前 vim所開啟的檔案 |
| :n | 編輯下一個檔案 |
| :N | 編輯上一個檔案 |
| Visual Mode指令 | |
| v | 將游標經過的字元反白選擇 |
| V | 將游標經過的行反白選擇 |
| [Ctrl + v] | 以blcok的方式進行反白選擇 |
| y | 複製選擇的內容 |
| d | 刪除選擇的內容 |
| p | 貼上選擇的內容 |
參考連結:
鳥哥私房菜 第九章、vim程式編輯器