日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux系统运行时参数命令--Linux基础命令和工具

發(fā)布時間:2024/3/24 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系统运行时参数命令--Linux基础命令和工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

1 Linux基礎(chǔ)命令和工具

1.1 grep搜索字符

1.2 find查找文件

1.3 ls顯示文件

1.4 wc命令

1.5 ulimit用戶資源

1.6?scp遠(yuǎn)程拷貝

1.7?dos2unix和unix2dos

1.8?sed 行處理

簡單模式?

替換模式

1.9?awk 列處理


C/C++Linux服務(wù)器開發(fā)/后臺架構(gòu)師【零聲教育】-學(xué)習(xí)視頻教程-騰訊課堂

1 Linux基礎(chǔ)命令和工具

1.1 grep搜索字符

grep 命令用于在文件中執(zhí)行關(guān)鍵詞搜索,并顯示匹配的效果。部分常用選項

參數(shù)

作用

-c

僅顯示找到的行數(shù)

-i

忽略大小寫

-n

顯示行號

-v

反向選擇 – 僅列出沒有關(guān)鍵詞的行。v 是 invert 的縮寫。

-r

遞歸搜索文件目錄

-C n

打印匹配行的前后n行

在指定文件查找,查找login關(guān)鍵字 grep login ImUser.cpp多個文件中搜索 grep login ImUser.cpp MsgConn.cpp在多個文件搜索的時候,可以使用通配符。在以 cpp結(jié)尾的文件中,搜索包含login 的行 grep login *.cpp遞歸搜索目錄下所有文件, 搜索 msg_server目錄下所有文件,打印出包含 login的行。 grep login -r msg_server/反向查找,查找文件中,不包含 CImUser 的行。 grep -v CImUser ImUser.cpp找出文件中包含 login的行,并打印出行號 grep -n login ImUser.cpp找出文件中包含 login的行,打印出行號,并顯示前后3行 grep -C 3 -n login ImUser.cpp找出文件中包含 login的行,打印出行號,并顯示前后3行,并忽略大小寫 grep -C 3 -i -n login ImUser.cpp

1.2 find查找文件

通過文件名查找文件的所在位置,文件名查找支持模糊匹配

find [指定查找目錄] [查找規(guī)則] [查找完后執(zhí)行的action]

常用的操作:

find . -name FILE_NAMEfind . -iname FILE_NAME 忽略文件名稱大小寫find /etc -maxdepth 1 -name passwd ##查找/etc/下名稱中帶有passwd的文件,查找一層find /mnt -size 20K ##查找/mnt文件大小近似20k的文件find /mnt -size +20K ##查找/mnt文件大小大于20k的文件find /mnt -size -20K ##查找/mnt文件大小小于20k的文件find /etc -maxdepth 2 -mindepth 2 -name .conf ##查找/etc/下名稱中帶有.conf的文件,且只查找第二層find /mnt -type d ##按type查找/mnt中目錄find /mnt -type f ##按type查找/mnt中文件find /mnt -cmin 10 ##查找/mnt中十分鐘左右修改的find /mnt -cmin +10 ##查找/mnt中十分鐘以上修改的find /mnt -cmin -10 ##查找/mnt中十分鐘以內(nèi)修改的find /mnt -ctime 10 ##查找/mnt中十天左右修改的find /mnt -ctime +10 ##查找/mnt中十天以上修改的find /mnt -ctime -10 ##查找/mnt中十天以內(nèi)修改的

1.3 ls顯示文件

-t 可以查看最新修改的時間

-l 每行顯示一個條目

-h 可以結(jié)合顯示文件的GB,MB等(human);

-R 遞歸顯示

-n 顯示組id和gid練習(xí):

ls -lt 按最新修改的時間排序,新修改的在前面顯示。

ls -ltR 按最新修改的時間排序,新修改的在前面顯示,并顯示子目錄的文件信息

ls -lh 以單位顯示文件大小

1.4 wc命令

wc命令用于計算字?jǐn)?shù)。利用wc指令我們可以計算文件的Byte數(shù)、字?jǐn)?shù)、或是列數(shù),若不指定文件名稱、或是所給予的文件名為"-",則wc指令會從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù)。

語法

wc [-clw][--help][--version][文件...]

參數(shù):

-c或--bytes或--chars 只顯示Bytes數(shù)。

-l或--lines 只顯示行數(shù)。

-w或--words 只顯示字?jǐn)?shù)。

--help 在線幫助。

--version 顯示版本信息。

練習(xí):

wc testfile # testfile文件的統(tǒng)計信息

7 92 607 testfile # testfile文件的行數(shù)為7、單詞數(shù)92、字節(jié)數(shù)607

wc -l testfile

1.5 ulimit用戶資源

Linux系統(tǒng)對每個登錄的用戶都限制其最大進(jìn)程數(shù)和打開的最大文件句柄數(shù)。為了提高性能,可以根據(jù)硬件資源的具體情況設(shè)置各個用戶的最大進(jìn)程數(shù)和打開的最大文件句柄數(shù)。可以用ulimit -a來顯示當(dāng)前的各種系統(tǒng)對用戶使用資源的限制:

[root@ubuntu~]# ulimit -a core file size ??????????(blocks, -c) 0 data seg size ??????????(kbytes, -d) unlimited scheduling priority ????????????(-e) 0 file size ??????????????(blocks, -f) unlimited pending signals ????????????????(-i) 31558 max locked memory ??????(kbytes, -l) 64 max memory size ????????(kbytes, -m) unlimited open files ?????????????????????(-n) 1024 pipe size ???????????(512 bytes, -p) 8 POSIX message queues ????(bytes, -q) 819200 real-time priority ?????????????(-r) 0 stack size ?????????????(kbytes, -s) 8192 cpu time ??????????????(seconds, -t) unlimited max user processes ?????????????(-u) 31558 virtual memory ?????????(kbytes, -v) unlimited file locks ?????????????????????(-x) unlimited設(shè)置用戶的最大進(jìn)程數(shù): ulimit -u 1024設(shè)置用戶可以打開的最大文件句柄數(shù): ulimit -n 65530

1.6?scp遠(yuǎn)程拷貝

secure copy的縮寫, scp是linux系統(tǒng)下基于ssh登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令。

scp命令是Linux系統(tǒng)中功能強(qiáng)大的文件傳輸命令,可以實現(xiàn)從本地到遠(yuǎn)程,以及從遠(yuǎn)程到本地的雙向文件傳輸,用起來非常方便,常用來在線上定位問題時將線卜的一些文件下載到本地進(jìn)行詳查,或者將本地的修改上傳到服務(wù)器上。

使用方式:sudo apt-get install openssh-serverscp liaoqingfu@122.152.222.180:/home/liaoqingfu/test.txt ?./??//下載122.152.222.180的文件scp mi9.aac liaoqingfu@122.152.222.180:/home/liaoqingfu/ ???//上傳文件到122.152.222.180scp -r liaoqingfu@122.152.222.180:/home/liaoqingfu/test ?./ ??//下載test整個目錄到本地scp -r test liaoqingfu@122.152.222.180:/home/liaoqingfu/?????//上傳本地test整個目錄到122.152.222.180

1.7?dos2unix和unix2dos

用于轉(zhuǎn)換Windows和UNIX的換行符,通常在Windows系統(tǒng)h開發(fā)的腳本和配置,UNIX系統(tǒng)下都需要轉(zhuǎn)換。

使用方式:

dos2unix test.txt
unix2dos test.txt

轉(zhuǎn)換整個目錄

find . -type f -exec dos2unix {} \;
find ./ -type f 此命令是顯示當(dāng)前目錄下所有的文件

1.8?sed 行處理

命令格式1:sed 's/原字符串/新字符串/' 文件

命令格式2:sed 's/原字符串/新字符串/g' 文件

這兩種命令格式的區(qū)別在于是否有個“g”。沒有“g”表示只替換第一個匹配到的字符串,有“g”表示替換所有能匹配到的字符串,“g”可以認(rèn)為是“global”(全局的)的縮寫,沒有“全局的”結(jié)尾就不要替換全部。

sed命令是用來批量修改文本內(nèi)容的,比如批量替換配置中的某個ip。

sed命令在處理時,會先讀取一行,把當(dāng)前處理的行存儲在臨時緩沖區(qū)中,處理完緩沖區(qū)中的內(nèi)容后,打印到屏幕上。然后再讀入下一行,執(zhí)行下一個循環(huán)。不斷的重復(fù),直到文件末尾。

簡單模式?

?一個簡單的sed命令包含三個主要部分:?參數(shù) 、 范圍 、 操作。要操作的文件,可以直接掛在命令行的最后。

參數(shù)

????????-n 這個參數(shù)是 --quiet 或者 --silent 的意思。表明忽略執(zhí)行過程的輸出,只輸出我們的結(jié)果即可。還有另外一個參數(shù) :

????????-i 。使用此參數(shù)后,所有改動將在原文件上執(zhí)行。你的輸出將覆蓋原文件。非常危險,一定要注意。

范圍

2,5 表示找到文件中,2,3,4,5行的內(nèi)容。

這個范圍的指定很有靈性,請看以下示例(請自行替換圖中的范圍部分)。

5 選擇第5行。2,5 選擇2到5行,共4行。1~2 選擇奇數(shù)行。2,5 選擇2到5行,共4行。1~2 選擇奇數(shù)行。2~2 選擇偶數(shù)行。

范圍的選擇還可以使用正則匹配。請看下面示例。

/void/,+3 選擇出現(xiàn)void字樣的行,以及后面的三行。

2\^void/,/mem/ 選擇以void開頭的行,和出現(xiàn)mem字樣行之間的數(shù)據(jù)。

為了直觀,下面的命令一一對應(yīng)上面的介紹,范圍和操作之間是可以有空格的。

sed -n '5p' sed1.cpp

sed -n '2,5 p' sed1.cpp

sed -n '1~2 p' sed1.cpp

sed -n '2~2 p' sed1.cpp

sed -n '2,+3p' sed1.cpp

sed -n '2,$ p' sed1.cpp操作

sed -n '/void/,+3 p' sed1.cpp

sed -n '/^void/,/CLIENT_TYPE_FLAG_BOTH/p' sed1.cpp

sed -n '/^BroadcastPdu/,/CLIENT_TYPE_FLAG_BOTH/p' sed1.cpp

sed -n '/^void CImUserManager::BroadcastPdu/,/CLIENT_TYPE_FLAG_BOTH/p' sed1.cpp

操作
最常用的操作就是 p ,意思就是打印。比如,以下兩個命令就是等同的:

cat file

sed -n 'p' file

除了打印,還有以下操作,我們來說常用的。

p 對匹配內(nèi)容進(jìn)行打印。

d 對匹配內(nèi)容進(jìn)行刪除。這個時候就要去掉 -n

w 將匹配內(nèi)容寫入到其他地方。

sed -n '2,5 p' sed2.cpp

sed '2,5 d' sed2.cpp

sed -n '2,5 w output.txt' sed2.cpp

替換模式

以上是 sed 命令的常用匹配模式,但它還有一個強(qiáng)大的替換模式,意思就是查找替換其中的某些值,并輸出結(jié)果。使用替換模式很少使用 -n 參數(shù)。

?替換模式的參數(shù)有點多,但第一部分和第五部分都是可以省略的。替換后會將整個文本輸出出來。前半部分用來匹配一些范圍,而后半部分執(zhí)行替換的動作。

范圍

這個范圍和上面的范圍語法類似。看下面的例子。

/sys/,+3 選擇出現(xiàn)sys字樣的行,以及后面的三行。/\^sys/,/mem/ 選擇以sys開頭的行,和出現(xiàn)mem字樣行之間的數(shù)據(jù)。

具體命令為:

sed -n '/void/,+3 s/void/int/g' sed2.cpp

sed '/^void/,/CLIENT_TYPE_FLAG_BOTH/s/ImUser/User/g' sed2.cpp

命令

這里的命令是指s。也就是substitute的意思。

查找匹配

查找部分會找到要被替換的字符串。這部分可以接受純粹的字符串,也可以接受正則表達(dá)式。看下面的例子。

a 查找范圍行中的字符串 a

[a,b,c] 從范圍行里查找字符串a(chǎn)或者b或者c。

命令類似:?

sed 's/a/b/g' file

sed 's/[a,b,c]/<&>/g' file

替換

是時候把找出的字符串給替換掉了。本部分的內(nèi)容將替換查找匹配部分找到的內(nèi)容。

可惜的是,這部分不能使用正則。常用的就是精確替換。比如把a(bǔ)替換成b。

但也有高級功能。和java或者python的正則api類似,sed的替換同樣有 Matched Pattern 的含義,同樣可以得到Group,不深究。常用的替位符,就是 & 。

&號,再重復(fù)一遍。當(dāng)它用在替換字符串中的時候,代表的是原始的查找匹配數(shù)據(jù)。

[&] 表明將查找到的數(shù)據(jù)使用[]包圍起來。“&” 表明將查找的數(shù)據(jù)使用””包圍起來。

下面這條命令,將會把文件中的每一行,使用引號包圍起來

sed 's/.*/"&"/' file

flag 參數(shù)

這些參數(shù)可以單個使用,也可以使用多個,僅介紹最常用的。

g 默認(rèn)只匹配行中第一次出現(xiàn)的內(nèi)容,加上g,就可以全文替換了。常用。p 當(dāng)使用了 -n參數(shù), p

將僅輸出匹配行內(nèi)容。w 和上面的w模式類似,但是它僅僅輸出有變換的行。i 這個參數(shù)比較重要,表示忽略大小寫。e 表示將輸出的每一行,執(zhí)行一個命令。不建議使用,可以使用xargs配合完成這種功能。

看兩個命令的語法:

sed -n 's/a/b/gipw output.txt' file

sed 's/^/ls -la/e' file

更進(jìn)一步學(xué)習(xí):

https://github.com/BlackGold/Learn/blob/1ee76ca2a9bbbbfe04850a1ccc9b9658e1eb39de/Linux_man_cn/sed.md

1.9?awk 列處理

awk 同 sed 命令類似,只不過 sed 擅長取行, awk 命令擅長取列。

原理:一般是遍歷一個文件中的每一行,然后分別對文件的每一行進(jìn)行處理

用法:

awk [可選的命令行選項] 'BEGIN{命令 } pattern{ 命令 } END{ 命令 }' 文件名

?打印某幾列

$ echo 'I love you' | awk '{print $3 $2 $1}'

youloveI

我們將字符串 I love you 通過管道傳遞給awk命令,相當(dāng)于awk處理一個文件,該文件的內(nèi)容就是 I?love you ,默認(rèn)通過空格作為分隔符(不管列之間有多少個空格都將當(dāng)作一個空格處理) I love you 就分割成三列了。

假如分割符號為 . ,可以這樣用

$ echo '192.168.1.1' | awk -F "." '{print $2}'

168

條件過濾

我們知道awk的用法是這樣的,那么pattern部分怎么用呢?

awk [可選的命令行選項] 'BEGIN{命令 } pattern{ 命令 } END{ 命令 }' 文件名

$ cat score.txt

tom 60 60 60

kitty 90 95 87

jack 72 84 99

$ awk '$2>=90{print $0}' score.txt

kitty 90 95 87

????????$2>=90 表示如果當(dāng)前行的第2列的值大于90則處理當(dāng)前行,否則不處理。說白了pattern部分是用來從文件中篩選出需要處理的行進(jìn)行處理的,這部分是空的代表全部處理。

????????pattern部分可以是任何條件表達(dá)式的判斷結(jié)果,例如 >,<,==,>=,<=,!= 同時還可以使用 +,-,*,/ 運算與條件表達(dá)式相結(jié)合的復(fù)合表達(dá)式,邏輯 &&,||,! 同樣也可以使用進(jìn)來。另外pattern部分還可以使用 /正則/ 選擇需要處理的行。

判斷語句

判斷語句是寫在 pattern{ 命令 } 命令中的,他具備條件過濾一樣的作用,同時他也可以讓輸出更豐富

$ awk '{if($2>=90 )print $0}' score.txt

kitty 90 95 87

$ awk '{if($2>=90 )print $1,"優(yōu)秀"; else print $1,"良好"}' score.txt

tom 良好

kitty 優(yōu)秀

jack 良好

$ awk '{if($2>=90 )print $0,"優(yōu)秀"; else print $1,"良好"}' score.txt

tom 良好

kitty 90 95 87 優(yōu)秀

jack 良好

BEGIN 定義表頭

awk [可選的命令行選項] 'BEGIN{命令 } pattern{ 命令 } END{ 命令 }' 文件名

使用方法如下:

$ awk 'BEGIN{print "姓名 語文 數(shù)學(xué) 英語"}{printf "%-8s%-5d%-5d%-5d\n",$1,$2,$3,$4}'

score.txt

姓名 語文數(shù)學(xué)英語

tom 60 60 60

kitty 90 95 87

jack 72 84 99

END 添加結(jié)尾符

和BEGIN用法類似

$ echo ok | awk '{print $1}END{print "end"}'

ok

End

數(shù)據(jù)計算

$ awk 'BEGIN{print "姓名 語文 數(shù)學(xué) 英語 總成績"; \

sum1=0;sum2=0;sum3=0;sumall=0} \

{printf "%5s%5d%5d%5d%5d\n",$1,$2,$3,$4,$2+$3+$4;\

sum1+=$2;sum2+=$3;sum3+=$4;sumall+=$2+$3+$4}\

END{printf "%5s%5d%5d%5d%5d\n","總成績",sum1,sum2,sum3,sumall}'\

score.txt

姓名 語文 數(shù)學(xué) 英語 總成績

tom 60 60 60 180

kitty 90 95 87 272

jack 72 84 99 255

總成績 222 239 246 707

因為命令太長,末尾用 \ 符號換行。

BEGIN體里輸出表頭,并給四個變量初始化0

pattern體里輸出每一行,并累加運算

END體里輸出總統(tǒng)計結(jié)果

當(dāng)然了,一個正常人在用linux命令的時候是不會輸入那么多格式化符號來對齊的,所以新命令又來了 column -t (鬼知道我為什么會記得這么多亂七八糟的命令。)

范例:網(wǎng)絡(luò)狀態(tài)統(tǒng)計

????????本小節(jié),采用awk統(tǒng)計netstat命令的一些網(wǎng)絡(luò)狀態(tài),來看一下awk語言的基本要素。netstat的輸出類似于:

?其中,第6列,標(biāo)明了網(wǎng)絡(luò)連接所處于的網(wǎng)絡(luò)狀態(tài)。我們先給出awk命令,看一下統(tǒng)計結(jié)果。

netstat -ant | awk ' \ BEGIN{print "State","Count" } \ /^tcp/ \ { rt[$6]++ } \ END{ for(i in rt){print i,rt[i]} }'netstat -ant | awk ' \ BEGIN{print "State","Count" } \ /^tcp/ \ { if($4=="0.0.0.0:3306" ) rt[$6]++ } \ END{ for(i in rt){print i,rt[i]} }'

輸出結(jié)果為:

State Count

LAST_ACK 1

LISTEN 64

CLOSE_WAIT 43

ESTABLISHED 719

SYN_SENT 5

TIME_WAIT 146

下面這張圖會配合以上命令詳細(xì)說明,希望你能了解awk的精髓。

awk和我們通常的程序不太一樣,它分為四個部分。

1、BEGIN 開頭部分,可選的。用來設(shè)置一些參數(shù),輸出一些表頭,定義一些變量等。上面的命令僅打

印了一行信息而已。

2、END 結(jié)尾部分,可選的。用來計算一些匯總邏輯,或者輸出這些內(nèi)容。上面的命令,使用簡單的for

循環(huán),輸出了數(shù)組rt中的內(nèi)容。

3、Pattern 匹配部分,依然可選。用來匹配一些需要處理的行。上面的命令,只匹配tcp開頭的行,其

他的不進(jìn)入處理。

4、Action 模塊。主要邏輯體,按行處理,統(tǒng)計打印,都可以。

注意點

1、awk的主程序部分使用單引號‘包圍,而不能是雙引號

2、awk的列開始的index是0,而不是1

更進(jìn)一步學(xué)習(xí):

https://github.com/BlackGold/Learn/blob/1ee76ca2a9bbbbfe04850a1ccc9b9658e1eb39de/Linux_man_cn/awk.md

總結(jié)

以上是生活随笔為你收集整理的Linux系统运行时参数命令--Linux基础命令和工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。