Linux指令II & vim
專案建置[2]
講師:溫室蔡、乘一、田鼠
Linux指令(2)
ㄟ對,我抄上次簡報
找關鍵字?
grep : "globally search for regex and print it"
可以搜尋關鍵字,並顯示含有該字的句子
-i : 不分大小寫
-n : 標示行號
grep 關鍵字 檔案

但這個不算指令
| : pipe,將左邊的輸出當做右邊的輸入
與grep連用?
|

換關鍵字?
sed : "stream editor"的縮寫,替換字串
用法 : 命令/樣板/取代/旗幟
s/A/B/g : 把所有的A替換成B
sed

文件好長好麻煩?
less : 以分頁形式瀏覽文件
less

你自己試試看就知道了
找檔案?
find : 依要求搜尋檔案
-name : 返回同名檔案列表
-type : 返回與指定檔案類型相同的檔案列表
find 位置 選項 參數

獲取更高的權限
su:獲得root權限但位置不變
su - :獲得root權限並進入根目錄
su


對了用ctrl+d或打exit可以退出
那密碼ㄋ
如何設定root的密碼
- 輸入sudo passwd
- 輸入當前使用者密碼
- 設定root密碼(要重複輸入)
(後面的其他操作是在進入root

但是
在root權限的情況下使用指令可能會把電腦搞爆
所以執行單次指令的sudo是你更好的選擇
安全的使用root權限
su -c:獲得root權限但位置不變
sudo:獲得root權限並進入根目錄
su -c or sudo
那有那些東西會用到root權限ㄋ?
這是其中一個
但其實不是特別重要
useradd
- sudo useradd -m username
- 輸入當前帳號密碼
- sudo passwd username
- 設立新帳戶密碼(重複輸入)

如何進入另一個帳號
su username
su username:切換到username帳號

解釋一下權限的設定

群組相關
groupadd、groupdel
sudo groupadd groupname:創建群組
sudo groupdel groupname:刪除群組
usermod --gid groupname username:加入指定群組
usermod --append --groups groupname username:加入指定副群組
groups username:查詢指定使用者所在群組
範例


改變檔案或資料夾權限
sudo chmod XXX(權限) 檔案名:
設定此檔案對各種對象的權限
chmod
非常模糊對吧
我也這麼覺得
範例

來用剛剛的另一個帳號看看20221102.txtㄅ

chown
改變檔案或資料夾所有權
sudo chown username 檔案或資料夾名

安裝東西~
apt
apt : "advanced package tool",套件管理員
install 套件名稱 : 安裝
remove 套件名稱 : 移除
update : 更新套件清單
upgrade : 更新
範例
neofetch

神奇東東
neofetch

下載東西~
wget 網址
wget : www + get,可以用網址下載東西
-O : 指定檔名
-i : 從檔案中讀取網址

指令好長好麻煩~
alias 別名="指令"
alias : 為指令取別名
-p : 列出所有別名及其對應的指令
unalias 指令 : 移除別名

指令好長好麻煩~
.bashrc
.bashrc : 開終端機時執行的指令們

Vim
傳說中的編輯器


什麼是 Vim
文字編輯器
跟 VS Code 是同類型的東西
沒有圖形介面
在終端機裡面執行
用不到滑鼠
全靠鍵盤快捷鍵來操控
反正先打開 Vim
# 開空檔案
$ vim
# 開啟現有的檔案
$ vim test.cpp
反正先打開 Vim
欸我要怎麼出去

Vim 的四種模式
NORMAL
快捷鍵
INSERT
打字
COMMAND
指令
VISUAL
選取
i
v
:
Esc
Esc
Esc
存檔與退出
" 退出
:q(uit)
" 存檔
:w(rite)
" 存檔並退出
:wq
" 強制退出
:q!
開始使用 Vim
按 i 進入「插入模式」
就可以開始打字
但光是打字不夠
剪下、複製、貼上
都是編輯器重要的功能
選取模式
2. 再按 v 進入選取模式
3. 移動游標以進行選取
接下來,你有兩個選擇……
1. 先按 Esc 回到普通模式
剪下、複製與貼上
1. 按 d 可以刪除(剪下)選取的文字
2. 按 y 可以複製選取的文字
或
按 Esc 回到普通模式
再按 p 可以貼上!
更快的剪下與複製
回到普通模式
按 dd 可以刪除(剪下)一整行
按 yy 可以複製一整行
如果前面加數字(如 2dd、3yy)
則可以一次刪除/複製多行
一樣是按 p 貼上
縮排
按 > 或 < 可以向右或向左縮排

在選取模式下選取多行後
縮排
在選取模式下選取多行後
按 > 或 < 可以向右或向左縮排

縮排
在選取模式下選取多行後
按 > 或 < 可以向右或向左縮排

小技巧:替換(replace)
:%s/舊字串/新字串/g
" 將所有foo都換成bar
:%s/foo/bar/g
沒錯
它就是之前出現的 sed
當你想幫變數改名時很好用
設定檔:.vimrc
當 Vim 開啟的時候
它會到你的家目錄(~)
找一個名為「.vimrc」的檔案
這就是 Vim 的設定檔
是用 Vim 指令寫的
設定檔:.vimrc
沒有設定檔

設定檔:.vimrc
有設定檔

基本設定檔
" 行號
set number
" Tab = 4個空白
set tabstop=4
set shiftwidth=4
set expandtab
" 自動引號/括號
inoremap " ""<left>
inoremap ' ''<left>
inoremap ( ()<left>
inoremap [ []<left>
inoremap { {}<left>
inoremap {<CR> {<CR>}<ESC>O
Vim 也可以裝外掛
但我不會教,原因:
1. 再講下去就離題了
2. 會用到 git 跟 github,而那是……
下一堂課的內容!
picoCTF
但我只會稍稍稍稍稍微提到
CTF
- Capture the flag,奪旗
- 資安攻防賽
- 解謎
題單
這才是重點
今天的課就到這邊
其實這些東西也不一定要記起來
忘記再查就好了