Linux使用小記

一、linux的體系結構

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vWy8WMBz-1587958695774)(E:\anotes\複習知識點\linux\Snipaste_2020-03-06_16-06-39.png)]

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

二、指令

1、cd

cd … 是返回上一層目錄, cd - 是返回到上一次的工作目錄,cd ~ 是家目錄。

2、find:查找文件

find  /  -name "some.java"
find  /  -name "*.java"
find  /  -iname "*.java"  #忽略大小寫

3、chown chmod

chown -R runoob:runoobgroup *    
#將目前目錄下的所有文件與子目錄的擁有者皆設爲 runoob,羣體的使用者 runoobgroup:
chmod -R 777 /var/lib/nginx

-c : 若該檔案權限確實已經更改,才顯示其更改動作
-f : 若該檔案權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)

777這個順便了解一下
r 4 可讀,當前用戶可以讀取文件內容
w 2 可寫,當前用戶可以新增或修改文件內容並且刪除、移動目錄或目錄內文件
x 1 可執行。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WKomz0dB-1587958695797)(E:\anotes\複習知識點\linux\Snipaste_2020-03-06_16-45-54.png)]

4、grep

檢索文件內容,查找文件裏符合條件的字符串

grep "haha" *.java   #查找含有haha的某一行


find ~ |grep "*.java"  #查找文件名爲的文件

grep 'abc'  a.log | grep -o 'some\[[0-9a-z]\]'
#grep -o 正則表達式  []裏面數字字母
grep -v 'zz' #去掉信息

5、對文件內容做統計 awk

一次讀取一行文本,按輸入分隔符進行切片,切成多個組成部分

將切片直接保存在內建的變量中,$1,$2…($0 表示行的全部)

支持對單個切片的判斷,支持循環判斷,默認分隔符爲空格

awk [options] 'cmd' file #基本語法

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xOzdvfre-1587958695807)(E:\anotes\複習知識點\linux\Snipaste_2020-03-06_17-25-50.png)]

awk '{print $1,$4}' netstat.txt #逐行遍歷 以空格爲分隔符 第一列和第四列

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xSvVqPkg-1587958695819)(E:\anotes\複習知識點\linux\Snipaste_2020-03-06_17-28-16.png)]

awk '$1=="tcp" && $2==1  {print $0}' netstat.txt #打印proto是tcp,Recv-Q是1的一行全部數據

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-P1JJXIJU-1587958695842)(E:\anotes\複習知識點\linux\Snipaste_2020-03-06_17-29-47.png)]

awk '($1=="tcp" && $2==1) || NR=1  {print $0}' netstat.txt #加上表頭,NR是數據行數

awk默認是空格爲分隔符,可以設定特定的分隔符

awk -F "," '{print $2}' test.txt  #以逗號爲分隔符,打印第二列

統計:

grep 'abc'  a.log | grep -o 'some\[[0-9a-z]\]' | awk '{arr[$1]++} END {for(i in arr) print i "\t" arr[i] }'
# arr[$1] 裏面元素名是第一列的內容,元素的值是次數

6、批量替換文本內容 sed

# 語法
sed [option] 'sed command' filename

全名 stream editor ,流編輯器,適用於對文本的行內容進行處理

例子:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-j8O7mC2b-1587958695857)(E:\anotes\複習知識點\linux\Snipaste_2020-03-06_18-15-37.png)]

# 將str 改成string
sed -i 's/^Str/String' replace.java
#-i表示修改,不加則只會把替換結果輸出到命令行,不會修改
# s 表示字符串的操作
# ^Str 表示以Str開頭的被替換的字符串
# String 表示替換的字符串
# 將末尾的.改成分號
sed -i 's/\.$/\;/' replace.java
# \.  \;  表示轉義
# 所有的Jack轉成me
sed -i 's/Jack/me/g' replace.java
# g表示全局替換
# 刪除符合條件的行
sed -i '/^ *$/d' replace.java
# 刪除空行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章