Linux系統命令及Shell指令碼實踐指南筆記

2021-08-10 08:38:57 字數 4348 閱讀 8162

系統執行級別

執行級0:關機

執行級1:單使用者模式,系統出現問題時可使用這種模式進入系統維護,典型的使用場景

就是在忘記root密碼時可進入次模式修改root密碼。

執行級2:多使用者模式,但是沒有網路連線。

執行級3:完全多使用者模式,這也是linux伺服器最常見的執行級。

執行級4:保留未使用。

執行級5:視窗模式,支援多使用者,支援網路。

執行級6:重啟。

系統使用者指的是系統執行時必須有的使用者,比如在redhat或者centos下執行**服務時

,需要使用系統使用者apache來執行httpd程序,而執行mysql資料庫服務時,使用系統用

戶mysql來執行mysqld程序,1-499為系統使用者程序。

id命令 確定自己的uid

finger 調查使用者

groups命令,確認自己所屬的使用者組

at單一時刻執行一次任務 他at  now + 30minutes

atq  查詢at的任務佇列

/etc/passwd和/etc/shadow

grep 搜尋文字

sort 排序 -n採取數字排序 -t指定分隔符 -k指定第幾列 -r 反向排序

cat abc.txt | sort | uniq  刪除重複

uniq -i忽略大小寫 -c 計算重複行數

cut擷取文字  -f 指定的列  -d '分隔符'

cat /etc/passwd | tr '[a-z]' '[a-z]' 小寫替換成大寫

cat /etc/passwd | tr -d ':'

刪除':'

paste b.txt a.txt  文字合併  按行的 

paste -d: a.txt b.txt 使用分隔符合併

ifconfig 網路連線配置命令

host  查詢dns記錄的   host www.baidu.com   出現的位址可以放到瀏覽器上看一下

ps  top  檢視程序

kill 終止程序

基礎的正規表示式

「.」(乙個點)符號

點符號用於匹配除了換行符之外的任意乙個字元

eg: grep 'r..t' /etc/passwd

搜尋出包含r後面帶兩個字元然後是t的字段

「*」符號

星符號用於匹配前乙個字元0次或者任意多次

eg: grep 'r*t' /etc/passwd

搜尋出包含連續零個或幾個r之後接乙個t的字段

eg: grep 'r.*t' /etc/passwd

搜尋出包含r,後緊跟任意長度字元在跟乙個t的字段

「\」符號

\匹配前面字元n次

\匹配前面字元至少n次

eg: grep 'r\' /etc/passwd

「^」符號 尖角號

匹配開頭的字元

eg: grep ^root /etc/passwd

匹配root開頭的行

「$」符號 

匹配尾部字元

eg: grep '^r.*h$' /etc/passwd

匹配r開頭h結尾的

「」符號

集合匹配

eg: grep '^[a-c]' /etc/passwd

匹配a-c開頭的行

「\」符號

轉義字元

[\ \-]就是有空格和短橫槓

\\反斜槓 \.點

「\d」符號

匹配乙個數字等價於[0-9] 是一種perl相容模式表示式

eg: echo 123 | grep [0-9]

eg: echo 123 | grep -p '\d'

「\<」符號和「\>」符號

用於界定單詞的左右邊界

eg: echo "hello" | grep '\'

eg: echo "hellod" | grep '\<\hello>'

「\b」符號

匹配單詞的邊界

eg: echo "hellodd" | grep 'hello\b' 不可匹配

eg: echo "hellodd" | grep '\bhello' 可匹配

「\b」符號

匹配非單詞邊界

eg: echo "hellodd" | grep 'hello\b' 可匹配

「\w」符號

匹配字母數字和下劃線 等價於 [a-za-z0-9]

eg: echo "a" | grep '\w' 匹配

eg: echo "\\" | grep '\w' 不匹配

「\w」符號

匹配非字母、非數字、非下劃線 等價於[^a-za-z0-9]

eg: echo "\\" | grep '\w' 匹配

「\n」符號

匹配乙個換行符

「\r」符號

匹配乙個回車符

「\t」符號

匹配乙個製表符

「\f」符號

匹配乙個換頁符

「\s」符號

匹配任何空白字元

「\s」符號

匹配任何非空白字元

擴充套件的正規表示式

需要使用egrep

「?」符號

用於匹配前乙個字元0次或1次,所以「ro?t」僅能匹配rot或者rt

「+」符號

用於匹配前乙個字元1次以上,所以「ro+t」可以匹配 rot  root

「|」符號

多種可能的羅列,彼此間是分支關係

區號是3、4位的固定**的正規表示式

()與| 

eg: ^0[0-9]\(-| )[0-9]\

021-88888888和0511 88888888 都可以匹配 

^0[0-9]\[\ \-][0-9]\

相同的eg: h(ar|oo|ol)d  可以匹配 hard、hold或hood

eg: grep -c '^$' /etc/passwd

計算檔案中有多少空行

eg: grep '^[^cr].*h$' /etc/passwd

匹配h結尾但是不能用c或r開頭的行(中括號中^用來反選)

執行指令碼示例

chmod +x helloworld.sh

./helloworld.sh

停止指令碼 ctrl + c

陣列定義

declare -a array

陣列賦值

array[0]=0

array[1]=1

陣列建立同時賦值

declare -a name=

增加元素

name[2]='wang'

直接建立

nmae=

跳號賦值

socre=([2]=2 [5]=5 [7]=7)

取值echo $

echo $

echo $

函式是否可以改變量值

vi newtest.sh

#!/bin/bash

var=100

function chvar()

echo "before var:$var"

chvar

echo "after  var:$var"

chmod +x newtest.sh

./newtest.sh 

結果before var:100

after  var:200

當function chvar()

結果before var:100

after  var:100

\轉義字元

全引用 單引號

echo '$var03'

命令替換方式

date11=`date`

date12=$(date)

echo $date11

echo $date12

位置引數 

$0 指令碼名本身

$1-$ 指令碼的第乙個引數--指令碼的第十個引數

$# 變數總數

$@、$* 顯示所有引數

$? 前乙個命令退出的返回值

$! 最後乙個後台程序的id號

對檔案操作

#!/bin/bash

while read line

doname=`echo $line | awk ''

age=`echo $line | awk ''

***=`echo $line | awk ''

echo "my name is $name......."

done < student_info.txt

測試手段  bash -x test.sh

給命令傳入引數

useradd $username

echo $passwd | passwd -- stdin $username

《linux系統命令及shell指令碼》閱讀筆記2

linux系統命令及shell指令碼 閱讀筆記21.6.2 info page 就內容來說,info頁面比man page編寫得要更好 更容易理解,也更友好,但man page使用起來確實要更容易得多。乙個man page只有一頁,而info頁面幾乎總是將它們的內容組織成多個區段 稱為節點 每個區段...

《linux系統命令及shell指令碼》閱讀筆記 5

linux系統命令及shell指令碼 閱讀筆記 5 1,gzip gunzip gzip gunzip是用來壓縮和解壓縮單個檔案的工具,使用方法比較簡單。比如,在 root目錄下壓縮install.log檔案,壓縮後生成的檔案是install.log.gz檔案,然後再使用gunzip檔案將其解壓縮即...

Linux系統命令及shell指令碼實踐指南第二課

嵌入式作業系統第二課 linux的使用 命令 30個命令 1 linux和windows定位 開發人員 普通使用者 命令和滑鼠效率高?2 linux命令 使用者管理 檔案操作 程序管理 網路管理 裝置管理 系統管理 1000多個 120個 root 超級使用者 具有一切許可權 向日葵 ssh xsh...