Java後端面試系列-Linux篇

Linux的體系結構

在這裏插入圖片描述

  • 體系結構主要分爲用戶態(用戶上層活動)和內核態
  • 內核:本質是一段管理計算機硬件設備的程序
  • 系統調用:內核的訪問接口,是一種能再簡化的操作
  • 公用庫函數:系統調用的組合拳
  • Shell:命令解釋器,可編程

如何查找特定的文件?

find

語法 find path [options] params
  • 作用:在指定的目錄下查找文件
// 在當前目錄下查找指定文件名的文件
find -name "target.java"
// 在指定目錄下查找以指定文件名開頭的文件
find / -name "target*"
// 在指定目錄下查找以指定文件名開頭的文件。並忽略大小寫
find / -iname "target*"
// 更多關於find指令的使用說明
man find

檢索文件內容

grep

語法 grep [options] pattern file
  • 全稱:Global Regular Expression Print
  • 作用:查找文件裏符合條件的字符串
// 查找target開頭的文件中含有"stu"的行
grep "stu" target*

管道操作符 |

  • 可將指令連接起來,前一個指令的輸出作爲後一個指令的輸入

在這裏插入圖片描述

// 等同 find ~ -name target*
find ~ | grep "target"
// -o 只匹配一行中的指定內容
grep "stu" tar* | grep -o haha
// -v 過濾到指定內容的行
ps -ef | grep tomcat | grep -v "grep"

使用管道注意的要點:

  • 只處理前一個命令的正確輸出,不處理錯誤輸出
  • 右邊命令必須能夠接受標準輸入流,否則傳遞過程中數據將會被拋棄
  • sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等

對文件內容做統計

awk

語法 awk [options] 'cmd' file
  • 一次讀取一行文本,按輸入分隔符進行切片,切成多個組成部分
  • 將切片直接保存在內建的變量中,$1,$1…($0表示行的全部)
  • 支持對單個切片的判斷。支持循環判斷,默認分隔符爲空格
// 打印每行第1列、第4列
awk '{print $1,$4}' netstatInfo.txt
// 加入條件
awk '$1=="tcp"&&$6=="LISTEN"{print $0}' netstatInfo.txt
// 加入表頭
awk '($1=="tcp"&&$6=="LISTEN")||NR==1{print $0}' netstatInfo.txt
// 按照“,”分隔
awk -F "," '($1=="tcp"&&$6=="LISTEN")||NR==1{print $0}' netstatInfo.txt
// 統計個數
cat target3.txt | awk '{arr[$1]++}END{for(i in arr){print i "\t" arr[i]}}'

批量替換文本內容

sed

語法 sed [option] 'sed command filename'
  • 全名stream editor,流編輯器
  • 適合用於對文本的行內容進行處理
// 將以'play'開頭的字符串替換爲'war',但僅打印出來
sed 's/^play/war/' target3.txt
// -i 將更改保存到文本中
sed -i 's/^play/war/' target3.txt
// 全局替換
sed -i 's/^play/war/g' target3.txt
// 刪掉空行
sed -i '/^ *$/d' target3.txt
// 刪掉指定內容行
sed -i '/war/d' target3.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章