Grep#
grep 我們通常用來從終端輸出 / 文本中過濾字符
基本語法
grep "let's find something" file.[txt,json,js,md,etc]
選項
-i:忽略大小寫
-c:統計匹配的行數
使用 grep 可以方便的進行日誌分析,在應急響應中,通常可以用來分析日誌文件,過濾出指定的內容
-e:指定多個搜索條件
-r:遞歸搜索,搜索指定目錄下的所有文件
-o:打印匹配的內容
grep 可以結合管道符 |
使用,如:
cat /etc/passwd | grep "root"
Man#
man 命令用來查看其他命令的語法手冊信息
Cat#
cat 命令是用來查看文件的內容,內容會全部輸出在當前的終端上
- 合併文件
- 創建文件
cat > newfile.txt
Head#
head 命令用來查看文件的頭部指定行內容,默認查看 10 行
-n:指定行數
Awk#
awk 是強大文本流編輯器,可以用來過濾、提取或轉換數據
Sed#
sed 命令是文本流編輯器,可以用來查找、替換、插入或刪除文件或數據流中的內容
- 替換
# 將5替換成five
echo 'They ate 5 apples' | sed 's/5/five/'
- 打印指定行
# 只展示給定輸入中的第四、五、六和七行
seq 65 78 | sed -n '4,7p'
68
69
70
71
要打印篩選後的行,請使用 p 命令。然而,需要注意的是,默認情況下會打印所有輸入行。所以,通常我們會和 -n 命令行選項一起使用這個命令,來關閉默認的打印功能。
- 正則表達式
BRE:基礎正則表達式,ERE:擴展正則表達式
默認情況下,sed 將搜索模式視為基本正則表達式(BRE)。通過使用 -E 選項可以啟用擴展正則表達式(ERE)。舊版本中使用的是 -r 來表示 ERE,雖然仍然有效,但是 -E 更加通用。在 GNU sed 中,BRE 和 ERE 之間唯一的區別就是元字符的應用方式不同,並且它們的功能沒有差異。
# 打印以sp開頭的行
printf 'spared no one\npar\nspar\n' | sed -n '/^sp/p'
spared no one
spar
# 打印以ar結尾的行
printf 'spared no one\npar\nspar\n' | sed -n '/ar$/p'
par
spar
# 打印所有行並將par替換成PAR
printf 'spared no one\npar\nspar\n' | sed 's/^par$/PAR/'
spared no one
PAR
spar
- 批量重命名文件
Tail#
tail 用來查看文件的末尾幾行的內容
Chmod#
chmod 命令用來更改文件權限,在 linux 下,文件的權限分為三組:屬主、屬組和其它,權限分別為:讀(read)、寫(write)和執行(execute)。
字符表示法即為 rwx,數字表示法即為 755(r:4,w:2,x:1)。
每個文件都有默認的權限,如文件的默認權限是 644
,目錄的默認權限是 755
。
文件默認權限如下 (rw-r--r--
):
目錄默認權限如下(rwxr-xr-x
):
那麼通過 chmod 命令就可以賦予一個文件對應的權限
# 賦予其它用戶執行的權限
chmod +x Test.jar
# 賦予目錄下所有文件所有權限,通常不建議賦值777權限,有些可執行文件如果權限太大,可能會導致安全問題
chmod 777 -R Pentest/
Xargs#
使用其它命令的輸出通過 xargs 來構建和運行命令
find /var/www/html -type f -name "*.php" | xargs grep "eval("
# find命令用於查找所有/var/www/html目錄下的php文件
# xargs用於將查找的文件列表作為參數傳遞給grep進行內容過濾,從每個php文件中过濾eval(字符
# 壓縮多個文件
ls *.log | xargs gzip
Find#
find 命令用來查找文件和目錄
# 查找所有以log結尾的文件
find / -name "*.log"
# 定期清理超過一個月的日誌文件
find /var/log -type f -name "*.log" -mtime +30 -delete
# 備份重要文件
find ~/Documents -name "*.docx" -exec cp {} /path/to/backup/ \;
參考:
https://www.trevorlasn.com/blog/10-essential-terminal-commands-every-developer-should-know