主頁 >  其他 > linux常見命令以及shell入門編程(筆記總結記錄)

linux常見命令以及shell入門編程(筆記總結記錄)

2021-03-01 10:21:24 其他

linux常見命令以及shell入門編程(筆記總結記錄)

一、linux常見命令

更多命令參考

1.不常用
man

diff

touch

which

ssh

wc

date

exit

kill

id

ps

sleep

uname

passwd

ping

df

telnet

top

sudo

su

reboot

shutdown

free

rpm

useradd

yum

ip

set

export
2.常用
cd

curl

ls/ll

cat

chmod

chown

cp

find

mv

rm

pwd

head

tail

mkdir

scp

tar

zip

unzip

gzip

xargs

let:是 BASH 中用于變數計算的工具,用于執行一個或多個運算式

eg:
	[root@localhost learn-shell]# a=1
    [root@localhost learn-shell]# b=2
    [root@localhost learn-shell]# let c=a+b
    [root@localhost learn-shell]# echo $c
    3
    [root@localhost learn-shell]# let c++
    [root@localhost learn-shell]# echo $c
    4
    [root@localhost learn-shell]# let c--
    [root@localhost learn-shell]# echo $c
    3
    [root@localhost learn-shell]# let c+=10
    [root@localhost learn-shell]# echo $c
    13
    [root@localhost learn-shell]# let c-=10
    [root@localhost learn-shell]# echo $c
    3
    [root@localhost learn-shell]# let c=c+10
    [root@localhost learn-shell]# echo $c
    13
    [root@localhost learn-shell]# let c=c-10
    [root@localhost learn-shell]# echo $c
    3
    [root@localhost learn-shell]#


3.資料查找處理相關
grep cut awk sed
1.grep
1.語法
	grep OPTION... [PATTERN] [FILE]...
		
	grep option...[查找的內容]...[file]
	grep option...[查找的內容]...[path]	
		// 注意:使用path,option必須加上-r
		// grep -rn zhuyz ./
		// grep -r '\w' ./
		
備注:查找的內容可以是正則運算式
	
2.作用:對資料進行行提取	

3.option
    -v #對內容進行取反提取(列印出不符合條件的內容)
    -n #對提取的內容顯示行號
    -w #精確匹配
    -i #忽略大小寫
    ^ #匹配開頭行首
    -E #正則匹配
    -r 遞回查找檔案(當前目錄以及子目錄下所有所有的檔案)
    
4.eg
	grep zhuyz abc*     // 查找當前路徑下前綴為abc的所有檔案中包含zhuyz字串的檔案,并且列印出該檔案的行
	grep zhuyz *.txt    // 查找當前路徑下后綴為.txt的所有檔案中包含zhuyz字串的檔案,并且列印出該檔案的行
	grep -r zhuyz ./	// 遞回查找當前目錄下以及子目錄下的所有檔案中包含zhuyz字串的檔案,并且列印出該檔案的行
	grep -v zhuyz abc.txt	// 查找abc.txt中不包含有zhuyz字串的行內容,并且答應出這些行
	grep -rn zhuyz *	// 遞回查找當前路徑下以及子路徑下所有檔案 && 顯示行號
	grep '\W' abc.txt	// 正則匹配\W:匹配非字母、數字、下劃線
生產中查看日志:
	grep -n '2021-02-28 12:00:00' *.log | grep -n 'ERROR' *.log | grep -n 'Exception' *.log
    find ./ -type f -name "*.log" | xargs grep "ERROR|Exception" // 匹配找到當前目錄以及子目錄下以.log后綴的檔案,傳遞給grep命令執行,
    
2.cut
1.語法
	cut OPTION... [FILE]...
	
2.作用:對資料進行列的提取

3.option
	-d #指定分割符
	-f #指定截取區域
	-c #以字符為單位進行分割

4.eg
-d和-f
	以':'為分隔符,截取出/etc/passwd的第一列跟第三列
	cut -d ':' -f 1,3 /etc/passwd
	
	以':'為分隔符,截取出/etc/passwd的第一列到第三列
	cut -d ':' -f 1-3 /etc/passwd
	
	以':'為分隔符,截取出/etc/passwd的第二列到最后一列
	cut -d ':' -f 2- /etc/passwd
	
-c
	截取/etc/passwd檔案從第二個字符到第九個字符
	cut -c 2-9 /etc/passwd
3.awk

參考鏈接

1.語法
	awk [option] 'script' var=value file(s)
	或awk [option] -f scriptfile var=value file(s)
	
	awk '{[pattern] action}' {filenames}
	awk -F "分隔符" 'script' {filenames}
	awk -v  # 設定變數
	awk -f {awk腳本} {檔案名}
	
	awk '條件 {執行動作}'檔案名
	awk '條件1 {執行動作} 條件2 {執行動作} ...' 檔案名
	或awk [選項] '條件1 {執行動作} 條件2 {執行動作} ...' 檔案名
	
	
	
2.作用:對資料進行列的提取

3.eg

    printf #格式化輸出,不會自動換行,
    (%ns:字串型,n代表有多少個字符; %ni:整型,n代表輸出幾個數字;%.nf:浮點型,n代表的是小數點后有多少個
    小數)
    
    print #列印出內容,默認會自動換行
    \t #制表符
    \n #換行符
    eg:printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6
    eg:df -h |grep /dev/vda1 | awk '{printf "/dev/vda1的使用率是:"} {print $5}'
    
    小數:echo "scale=2; 0.13 + 0.1" | bc | awk '{printf "%.2f\n", $0}'
    
    $1 #代表第一列
    $2 #代表第二列
    $0 #代表一整行
    eg: df -h | grep /dev/vda1 | awk '{print $5}'
    
    -F #指定分割符
    eg:cat /etc/passwd | awk -F":" '{print $1}'
    
    BEGIN #在讀取所有行內容前就開始執行,常常被用于修改內置變數的值
    FS #BEGIN時定義分割符
    eg:cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'
    
    END #結束的時候 執行
    NR #行號
    eg:df -h | awk 'NR==2 {print $5}'
    awk '(NR>=20 && NR<=30) {print $1}' /etc/passwd
4.sed

參考

1.語法
	sed [選項][動作] 檔案名
	
2.對資料行進行處理(選取,新增,替換,洗掉,搜索)

3.常見的選項與引數:
    -n #把匹配到的行輸出列印到螢屏
    p #以行為單位進行查詢,通常與-n一起使用
    eg:df -h | sed -n '2p'

    d #洗掉
    eg: sed '2d' df.txt	      // 洗掉第二行
    eg: sed '2,5d' df.txt    // 洗掉第二行到第五行
    eg: sed '2,$d' df.txt     // 洗掉第二行到最后一行

    a #在行的下面插入新的內容
    eg: sed '2a 1234567890' df.txt

    i #在行的上面插入新的內容
    eg: sed '2i 1234567890' df.txt
    eg: sed '2,5i 1234567890' df.txt

    c #替換
    eg: sed '2c 1234567890' df.txt
    eg: sed '2,5c 1234567890' df.txt

    s/要被取代的內容/新的字串/g #指定內容進行替換
    eg: sed 's/0%/100%/g' df.txt

    -i #對源檔案進行修改(高危操作,慎用,用之前需要備份源檔案)
    搜索:在檔案中搜索內容
    eg:cat -n df.txt | sed -n '/100%/p'

    -e #表示可以執行多條動作
    eg:cat -n df.txt | sed -n -e 's/100%/100%-----100%/g' -e '/100%-----100%/p
    
備注:如果sed命令想要使用正則匹配,一定要加上/,例如:sed '/[a-z]/' df.txt
4.shell命令相關
1.echo
1.作用:字串的輸出

2.可選引數:
	-n     不輸出跟隨在換行符后的內容
	-e     啟用反斜杠轉義
	-E     不啟用反斜杠轉義(默認)
	如果-e有效,則識別字串中出現的以下:
       \\     反斜杠

       \n     換行

       \r     carriage return

       \t     水平制表符

       \v     垂直制表符
	
3.輸出:
	1.普通字符		echo "Hello zhuyz"           // 輸出:Hello zhuyz
	2.轉義字符		echo "\"Hello zhuyz\""		 // 輸出:"Hello zhuyz"
	3.變數		  user_name=zhuyz;echo "${user_name}" 	// 輸出:zhuyz
	4.換行		  echo -e "Hello \n zhuyz" # -e 開啟轉義  // 換行輸出
	5.不換行		  echo -e "Hello \c zhuyz"
	6.使用單引號      user_name=zhuyz;echo 'Hello ${user_name}' //原樣輸出:Hello ${user_name}
2.read
1.作用:從標準輸入讀取數值

2.可選引數:
    -p:后面跟提示資訊,即在輸入前列印提示資訊,默認不支持"\n"換行
    -s:隱藏輸入的內容
    -t:給出等待的時間,超時會退出read
    -n:限制讀取字符的個數,觸發到臨界值會自動執行
    
3.eg:
	echo "請輸入姓名:"
	read name
	echo "您輸入的姓名是:${name}"
------------------------------------------
	read -p "請輸入姓名:" name            // -p 輸入前列印提示資訊,和其他命令結合,-p一定要放在最后
	echo "您輸入的姓名是:${name}"
------------------------------------------
	read -t 5 -p "請輸入姓名:" name       // -t 超時等待5s
	echo "您輸入的姓名是:${name}"
------------------------------------------
	read -n 3 -p "請輸入姓名:" name       // -n 限制輸入的字符數
	echo "您輸入的姓名是:${name}"
------------------------------------------
##### eg:讀取檔案內容	
	1.test.txt檔案內容為:
        123
        abc
        zhuyz niupi
	
	2.shell腳本內容:
		count=1
		cat test.txt | while read line; do       // 把cat命令的輸出作為read的輸入,通過while回圈read每一行資料
			echo "第${count}行值為:$line"
			$count=$[ $count + 1 ]
		done
		echo "執行完畢"
3.printf
1.作用:格式化輸出字串

2.語法:printf format-string [args...]  // args可為多個,以空格隔開

3.格式化通配符
%s	輸出一個字串	
%d	輸出一個整型
%c	輸出一個字符	
%f	輸出一個浮點數


4.轉義字符
常用:\n \r \v \\ 

eg3:
	[root@localhost learn-shell]# printf "%10s %10s %8s\n" zhuyz is dad        // %10s:右對齊占位顯示10個字符
		zhuyz         is      dad
	[root@localhost learn-shell]# printf "%-10s %-10s %-8s\n" zhuyz is dad     // %-10s:左對齊占位顯示10個字符
	zhuyz      is         dad
	[root@localhost learn-shell]#


eg4:
	[root@localhost learn-shell]# printf "Hello\nzhuyz\n"
	Hello
	zhuyz
	[root@localhost learn-shell]#
	
	


5.常見特殊符號作用
1.	> 覆寫原有內容

2.	>> 追加內容
	
3.	; 命令邊界,常用于一次性執行多條命令	
	
4.	| 管道符,用于將兩條命令隔開,將前面命令的輸出作為后面的輸入

5.	&& 前面的命令執行成功,后面的才可以執行

6.	|| 前面的命令執行失敗,后面的才可以執行
	
7.	"" 會輸出變數值

8.	'' 輸出本身內容

9.	`` 命令替換,將反引號內的Linux命令先執行,然后將執行結果賦予變數

10.	2>/dev/null 錯誤輸出到無底洞

11.	1>/dev/null 正確輸出到無底洞

1.eg:
	cat >abc.txt
	
2.eg:
	cat >>abc.txt
	
3.eg:
	cat -n abc.txt;ll
	
4.eg:
	cat abc.txt | grep 'zhuyz'
	
5.eg:
	[ -f abc.txt ] && echo "abc.txt檔案存在"
	
6.eg:
	[ 1 -gt 2 ] || echo "1不大于2"

7.eg:
	user_name=zhuyz
	echo "${user_name}" // 輸出:zhuyz
	
8.eg:
	usser_name=zhuyz
	echo '${user_name}' // 輸出:${user_name}

9.eg:
	a=`date`;echo ${a}
	
	

二、shell基礎內容

1.變數
1.1.命名規范
命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭,
中間不能有空格,可以使用下劃線(_),
不能使用標點符號,
不能使用bash里的關鍵字(可用help命令查看保留關鍵字),
eg:
a=zhuyz
user_name=zhuyz
userAge=100
1.2.使用變數
1.變數使用以及使用的規范(${})
eg:
    user_name=zhuyz
    echo $user_name
    echo ${user_name} // {}是用來識別變數邊界,最好加上
    echo "${user_name}giao"


2.只讀變數(readonly)
eg:
    user_name=zhuyz
    readonly user_name // 設定變數為只讀,相當于java中的final關鍵字

3.洗掉變數(unset)
eg:
    user_name=zhuyz
    unset user_name

4.變數的作用域(區域/全域/環境)

[參考博客](http://c.biancheng.net/view/773.html)

    4.1.區域變數(變數前加local修飾符,不加則代表為全域變數)
    
    eg:(該例子在sh腳本檔案中展示)
        funciton func() {
            local user_name=zhuyz
        }
        func
        echo ${user_name} // 輸出為空

    4.2.全域變數(作用域:當前shell行程)
    eg:
		user_name=zhuyz
		echo ${user_name}

    4.3.環境變數(作用域:當前shell行程以及子行程)
	eg:
		[root@localhost ~]# user_name=zhuyz       // 定義全域變數user_name
		[root@localhost ~]# echo ${user_name}     // 輸出user_name成功
		zhuyz
		[root@localhost ~]# bash                  // 進入shell子行程
		[root@localhost ~]# echo ${user_name}     // 輸出user_name失敗

		[root@localhost ~]# exit                  // 退出子行程
		exit
		[root@localhost ~]# export user_age=25    // 設定環境變數user_age
		[root@localhost ~]# bash                  // 進入shell子行程         
		[root@localhost ~]# echo ${user_age}      // 輸出user_age成功
		25
		[root@localhost ~]# exit
		exit
		[root@localhost ~]#

1.3.shell字串
1.單引號和雙引號區別
見 一、5.常見特殊符號作用 中說明
補充:雙引號可以有變數和特殊字符
eg:
	user_name=zhuyz
	user_age=24
	echo "${user_name}\t的年齡是\t${user_age}" // 輸出:zhuyz	的年齡是	24
	
	
2.獲取字串長度(${#str})
eg:
	user_name="zhuyz"
	echo ${#user_name} // 輸出:5
	
3.截取字串(${str:start:len})
備注:從start索引位開始截取len個字符(字串索引下標從0開始)
eg:
	user_name="zhuyz"
	echo ${user_name:0:3} // 輸出:zhu
1.4.shell陣列
1.簡要描述:一維陣列,不支持二維

2.定義:
	arr=(v1 v2 v3 v4 ...)
	或者
	arr[0]=v1
	arr[1]=v2
	arr[n]=vn
	
eg:
	stu_name=(zhuyz1 zhuyz2 zhuyz3)
	或者
	stu_name[0]=zhuyz1
	stu_name[1]=zhuyz2
	stu_name[n]=zhuyzn


3.讀取元素
	讀取單個元素:${arr[index]}
	讀取全部元素:${arr[@]}

4.獲取陣列長度
	${#arr[@]} 或者 ${#arr[*]}
2.shell注釋
1.單行注釋:#
eg:
	# by zhuyz
	
	
2.多行注釋:和xml標簽類似,有標簽頭和標簽尾的感覺
eg1:
    :<<EOF
    注釋內容...
    注釋內容...
    ...
    EOF

eg2:
	:<<!
    注釋內容...
    注釋內容...
    ...
	!
備注:eg1中EOF和eg2中的!可以是任意字符,但是需要在開頭和結尾都存在
3.shell傳遞引數
$? #判斷上一條命令執行的是否成功
$0 #回傳腳本的檔案名稱
$1-$9 #回傳對應的引數值
$* #回傳所有的引數值是什么
$# #回傳引數的個數和


eg:
	[root@localhost learn-shell]# vi test.sh
	
    #!/bin/bash

    # by zhuyz

    echo "Shell 傳遞引數實體!";
    echo "執行的檔案名:$0";
    echo "第一個引數為:$1";
    echo "第二個引數為:$2";
    echo "第三個引數為:$3";
    echo "傳遞引數有$#個";
-------------------------------------------------------
    輸出:
    [root@localhost learn-shell]# sh test.sh 1 2 3
    Shell 傳遞引數實體!
    執行的檔案名:test.sh
    第一個引數為:1
    第二個引數為:2
    第三個引數為:3
    傳遞引數有3個
    [root@localhost learn-shell]#
4.運算子
1.算數運算子
+ - \* / % = == !=

==	比較數字是否相等

    eg:(- \* / %和+類似)
        expr $a + $b
        echo $[a+b]
        echo $((a+b))

    eg:
        [ $a==$b ]
	
!=	比較數字是否不等
    eg:
    	[ $a!=$b ]
		
補充:小數的運算(bc計算器)
scale保留多少位小數,scale只對除法,取余數,乘冪 有效,對加減沒有效,
    eg:
        echo "scale=2;(0.2+0.3)/1" | bc // 會省略小數點前的0
        echo "scale=2;(1.2+1.3)/1" | bc
		

2.關系運算子(只支持數字)
-eq	-ne	-gt	-lt	-ge -le

eg:
	[ $a -eq $b ]
	
	
3.布爾運算子
!	非
-o	或(有一個運算式為ture,則為true,反之false,前后命令都會執行)
-a	與(兩個運算式都為ture,則為true,反之false,前后命令都會執行)

    eg:
        [ !false ] // 表示true
    eg:	
        a=10
        b=20
        [ $a -lt 10 -o $b -gt 20 ]
        [ $a -lt 10 -a $b -gt 20 ]
	

4.邏輯運算子(和java中的&& ||一樣,存在短路)
&&	短路與
||	短路或
備注:判斷時需要加兩個括號[[ expr ]]

    eg:
        a=10
        b=20

        if [[ $a -lt 100 && $b -gt 100 ]]
        then
           echo "回傳 true"
        else
           echo "回傳 false"
        fi

        if [[ $a -lt 100 || $b -gt 100 ]]
        then
           echo "回傳 true"
        else
           echo "回傳 false"
        fi



5.字串運算子
=	檢測兩個字串是否相等,相等回傳 true,
!=	檢測兩個字串是否不相等,不相等回傳 true,
-z	檢測字串長度是否為0,為0回傳 true,
-n	檢測字串長度是否不為 0,不為 0 回傳 true,
$	檢測字串是否為空,不為慷訓傳 true,

    eg:
        [ $a=$b ]
        [ $a!=$b ]
        [ -z $a ]
        [ -n $a ]
        [ $a ]
	
	
	
6.檔案相關運算子
-d	是否為目錄(檔案夾)
-f	是否為檔案
-e	檔案/目錄 是否存在,存在檔案/目錄,則為true
-s	檔案大小是否為0,大于0,則為true
-r	檔案是否可讀
-w	檔案是否可寫
-x	檔案是否可執行

    eg:
        [ -d $directory ]
        [ -f $file ]
        [ -e $file ]
        [ -s $file ]
        [ -r $file ]
        [ -w $file ]
        [ -x $file ]
	
5.流程控制陳述句
if for case while break continue

1.if
    單分支判斷:
    
        if [ 條件判斷 ];then
            執行動作
        fi

    單分支判斷:    
    
        if [ 條件判斷 ];then
            執行動作
        else
            執行動作
        fi

    多分支判斷:
    
        if [條件判斷];then
            執行動作
        elif [條件判斷];then
            執行動作
        elif [條件判斷];then
            執行動作
        fi



2.for

template:
	for 變數名 in 值1 值2 值3 ; do
		執行動作
	done
	
eg:
	for i in {1..5} ; do
    	echo $i
	done
-------------------------------------------------	
template:
	for 變數名 in `命令` ; do
		執行動作
	done

eg:
	for i in `seq 1 10` ; do    // seq 1 10 命令是 產生從某個數到另外一個數之間的所有整數的命令(包含起始和結束位置的數字)
		echo $i
	done
-------------------------------------------------
template:
	for (( 條件 )); do
  		執行動作  
	done

eg:
	for (( i = 0; i < 10; i++ )); do
    	echo $i
	done
	
	
	
3.case
和java中的switch case陳述句類似

template:
	case 值 in
	值1)
    	執行動作1
    ;;
	值2)
        執行動作1
    ;;
	esac

eg:
	read -p "請輸入數字: " x
	case $x in
	1)
    	echo "等于1"
	    ;;
	2)
    	echo "等于2"
	    ;;
	esac
	
	
	
4.while

template:
    while [ 條件 ]; do
		執行動作
    done
    
eg:
	i=0
	len=10
	while [ $i -lt $len ]; do
    	echo $i
	    i=$[ $i + 1 ]
	done
-------------------------------------------------
template:
	while(( 條件 )) ; do
    	執行動作
	done
	
eg:
	i=0
	while (( $i<=10 )); do
    	echo "$i"
	    let i++
	done
6.shell函式

shell腳本中也可以定義函式,方法和其他的py、js類似(暫時不記錄)

三、shell練習小案例

(案例百度的,實作代碼有的簡介,有的自己寫的)

1.把一個檔案前五行中包含字母的行刪掉,同時洗掉6到10行包含的所有字母
0.txt檔案內容:
    第1行1234567890不包含字母
    第2行5678asdBBB
    第3行56755AASDDssss
    第4行78asdfDDDDDDD
    第5行123456EEEEEEEE
    第6行1234567ASDF
    第7行56789ASDF
    第8行67890ASDF
    第9行78asdfADSF
    第10行123456AAAA
    第11行67890ASDF
    第12行78asdfADSF
    第13行123456AAAA


實作1:
head -n5 0.txt | sed '/[a-zA-Z]/d' && sed -n '6,10p' 0.txt | sed 's/[a-zA-Z]//g' && sed -n '11,$p' 0.txt


實作2:
sed -n '1,5p' 0.txt | sed '/[a-zA-Z]/d' && sed -n '6,10p' 0.txt | sed 's/[a-zA-Z]//g' && sed -n '11,$p' 0.txt

實作3:撰寫一個sh腳本
#!/bin/bash

line_number=0
cat 0.txt | while read line ; do
    let line_number++
    if [ $line_number -lt 5 ]; then
        echo $line | sed '/[a-zA-Z]/d'
    elif [ $line_number -gt 6 -a $line_number -lt 10 ]; then
        echo $line | sed 's/[a-zA-Z]//g'
    else
        echo $line
    fi
done
---------------------------------------------------------------------
輸出結果都為:
    第1行1234567890不包含字母
    第6行1234567
    第7行56789
    第8行67890
    第9行78
    第10行123456
    第11行67890ASDF
    第12行78asdfADSF
    第13行123456AAAA

2.mysql資料庫查詢
#!/bin/bash

# mysql資料庫查詢

read -p '請輸入您要查詢的學生姓名:' sname
read -p '請輸入資料庫用戶:' user
read -p '請輸入資料庫名:' database
echo -e "\n"
read -p '請輸入資料庫密碼:' password
sql="select * from admin_user.emp where name='$sname';"
host=192.168.0.108
mysql -h $host  -u $user --password=$password --database=$database  -e "$sql"
exit
3.批量創建linux系統用戶
#!/bin/bash

# 批量創建用戶
read -p '請輸入創建的用戶名稱:' name
read -p '請輸入創建用戶的數量:' number

for (( i = 1; i <= $number; i++ )); do
    # 1.查看系統中是否存在用戶
    cat /etc/passwd | grep "$name$i" 1>/dev/null
    exists=`echo $?`
    if [ $exists -eq 1 ]; then
        # 2.創建用戶
        useradd $name$i 2>/dev/null && echo "創建用戶$name$i成功!"
        # 3.給新用戶設定密碼并把用戶名和密碼放在文本中
        password=`head -2 /dev/urandom | md5sum | cut -c 1-8`
        echo $password
        #   需要生成隨機密碼(MD5值),MD5其實是一個演算法,用來加密密碼
        echo $password | passwd --stdin $name$i 1>/dev/null && echo -e "$name$i\t$password">>/usr/local/newuser_password.txt
    else
        echo "$name$i已經存在,無需再次創建!"
    fi

done
4.記憶體使用率
#!/bin/bash

# 記憶體使用率

mem_total=`free -m | sed -n '2p' | awk '{print $2}'`

mem_used=`free -m | sed -n '2p' | awk '{print $3}'`

mem_free=`free -m | sed -n '2p' | awk '{print $4}'`

Percent_mem_used=`echo "scale=2; $mem_used / $mem_total * 100" | bc`

Percent_mem_free=`echo "scale=2; $mem_free / $mem_total * 100" | bc`


now_time=`date +"%Y-%m-%d %H:%M:%S 星期%w"`

echo -e "\n"

echo -e "$now_time\n記憶體的使用率是:$Percent_mem_used%"

echo -e "記憶體還剩:$Percent_mem_free%未使用"

# 檢查負載是否有壓力
# 當已經使用的內容超過1024m
if [ $mem_used -gt 1024 ]; then
    echo -e "\033[31;5m告警:\033[0m"
    echo -e "\033[31;5m記憶體使用率已超過負載能力,目前使用率達到$Percent_mem_used% \033[0m"
else
    echo "目前記憶體負載正常"
fi

echo -e "\n"
5.如何獲取文本檔案的第 10 行
實作1:
	head -10 abc.txt | tail -1

實作2:
	sed -n '10p' abc.txt
6.如何計算本地用戶數目
實作1:
	wc -l /etc/passwd | cut -d " " -f 1

實作解釋:
    wc -l // 統計行數 && 顯示檔案名稱
    cut -d // 以指定內容為列分隔符
    cut -f // 截取哪一列

實作2:
	wc -l /etc/passwd | awk -F " " '{print $1}'

7.寫出輸出數字 0 到 100 中 3 的倍數(0 3 6 9 …)的命令
實作1:
	for i in {0..100..3}; do echo $i; done
實作2:
	for (( i=0; i<=100; i=i+3 )); do echo "Welcome $i times"; done

未待完結

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/264775.html

標籤:其他

上一篇:Linux系統無法啟動問題及解決方案(/etc/fstab檔案損壞,GRUB檔案損壞)

下一篇:IPFS是分布式存盤技術的偉大先驅。

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more