一、linux的體系結構
- 體系結構主要分爲用戶態(用戶上層活動)和內核態
- 內核:本質是一段管理計算機硬件設備的程序
- 系統調用:內核的訪問接口,是一種能再簡化的操作
- 公用函數庫:系統調用的組合拳
- 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 可執行。
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 #基本語法
awk '{print $1,$4}' netstat.txt #逐行遍歷 以空格爲分隔符 第一列和第四列
awk '$1=="tcp" && $2==1 {print $0}' netstat.txt #打印proto是tcp,Recv-Q是1的一行全部數據
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 ,流編輯器,適用於對文本的行內容進行處理
例子:
# 將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
# 刪除空行