Shell命令

来源:https://www.cnblogs.com/xiuercui/archive/2022/09/20/16711927.html
-Advertisement-
Play Games

1.shell命令的執行機制:fork+exec執行命令(任何的shell都會執行) 2.shell中的用戶輸入處理 1 命令行參數:選項、參數 2 運行時輸入 3 read命令: 4 1.基本讀取、 5 2.超時處理-t選項、 6 3.隱藏方式讀取-s選項) 7 4.從文件中讀取 3.shell的 ...


1.shell命令的執行機制:fork+exec執行命令(任何的shell都會執行)

2.shell中的用戶輸入處理

1  命令行參數:選項、參數
2  運行時輸入
3  read命令:
4  1.基本讀取、
5  2.超時處理-t選項、
6  3.隱藏方式讀取-s選項)
7  4.從文件中讀取

3.shell的反引號

1 /*
2 ``反引號在Linux shell命令行中有特殊的含義:反引號間的內容,會被shell先執行。其輸出被放入主命令後,主命令再被執行。命令替換,即完成引用的命令的執行,將其結果替換出來,與變數替換差不多
3 */
4 echo `date '--date=1 hour ago' +%Y-%m-%d-%H`  
5 echo $(date '--date=1 hour ago' +%Y-%m-%d-%H)

4.setuid

 setuid位是讓普通用戶可以以root用戶的角色運行只有root帳號才能運行的程式或命令。
 因此當程式設置了setid許可權位時,普通用戶會臨時變成root許可權,但實際用戶任然是原來的mike。

5.linux文件

 /etc/mtab文件的作用:記載的是現在系統已經裝載的文件系統,包括操作系統建立的虛擬文件等;
/etc/fstab是系統準備裝載的find命令:以遞歸的方式進行搜索文件或文件夾

6.find命令

1 1  --查找當前目錄下所有文件中包含deposit_account的文件 
2 2  -- f 普通文件 l 符號連接 d 目錄 c 字元設備 b 塊設備 s 套接字 p Fifo
3 3  find . -type f -print |xargs grep "deposit_account"
4 4  --查找根目錄下名字為create.txt的文件
5 5  find / -name "create.txt"
6 6  --查找根目錄下文件大小大於100M的文件
7 7  find / -size +100M
8 8  --使用find查找png和jpg的文件 -o 指定多個-name選項
9 9  find . -name '*.png' -o -name '*.jpg' -type f
find

7.for迴圈

 1  1  /*for 變數名 in 取值列表({1..100}--1到100依次執行、{1..100..2} --間隔2個)
 2  2  do
 3  3     命令序列
 4  4  done
 5  5  --舉例*/
 6  6  sum=0
 7  7  for ((i=1;i<100;i++))
 8  8  do
 9  9     sum=$($i+$sum)
10 10  done
11 11     echo "0-100的和為:" $sum
for迴圈

8.正則表達式

 1  1  --行首定位符“^”:用來匹配行首的字元
 2  2  --列出etc目錄下以po開頭的文件
 3  3  str='ls /etc |grep "^po"'
 4  4  echo "$str"
 5  5 6  6  --行尾定位符“$”
 7  7  str='ls /etc |grep "conf$"'
 8  8  echo "$str"
 9  910 10  --單個字元匹配“.”:圓點“.”用來匹配任意單個字元,包括空格,但是不包括換行符“\n”
11 11  --列出所有的包含字元串“13”的文件名
12 12  str=`cat dian.txt | grep "13"`
13 13  echo "$str"
14 14  echo "-------------"
15 15  --列出包含字元串'13'以及另外一個字元的文件名
16 16  str=`cat dian.txt | grep "13."`
17 17  echo "$str"
18 1819 19  --限定符“*”:用來指定其前面的一個字元必須要重覆出現多少次才能滿足匹配
20 20  str=`ls /etc | grep "^sss*"`
21 21  echo "$str"
22 2223 23  --字元集匹配“[]”
24 24  /*"[a-f]”表示匹配字母表中a到f中的任意一個字母。
25 25  “[0-9]”表示匹配任意單個數字
26 26  "[^b-d]” 匹配除了從 b 到 d 範圍內所有的字元  --取反
27 27  */
28 28  --篩選所有以字元r開頭,並且緊跟著1個字元c的文本行
29 29  str='ls /etc |grep "^rc"'
30 30  echo "$str"
31 31  echo "---------------------"
32 32  --篩選所有以字元r開頭,緊跟著1個字元為c,下麵1個字元為單個數字的文本行
33 33  str='ls /etc | grep "^rc[0-9]"'
34 34  echo "$str"
35 3536 3637 37  --字元集不匹配“[^]”:表示不匹配其中列出的任意字元
38 38  "[^b-d]” 匹配除了從 b 到 d 範圍內所有的字元  
39 3940 40  --反斜杠字元 \轉義  使這個字元表示原來字面上的意思
41 41  “\$“表示了原來的字面意思”$”,而不是在正則表達式中表達的匹配行尾的意思.
42 4243 43  --轉義(escape) “尖角號” \<...\>
44 44  用於表示單詞的邊界. 尖角號必須被轉義,因為不這樣做的話它們就表示單純的字面意思而已."\<the\>" 匹配單詞"the",但不匹配"them", “there”, “other”, 等等.
正則表達式

9.擴展正則表達式

 1  1 --限定符“+” :匹配一個或多個前面的字元.和*相似,區別是它不匹配零個字元的情況.
 2  2  --篩選以字元串“ss”開頭,後面至少緊跟著1個字元“s”的文本行
 3  3  str=`ls /etc | egrep "^sss+"`
 4  4  echo "$str"
 5  5  --輸出
 6  6  sssd
 7  7 8  8  --限定符“?”:限定前面的字元最多只出現1次,即前面的字元可以重覆0次或者1次。
 9  9  str=`ls /etc | egrep "^sss?"`
10 10  echo "$str"
11 11  --輸出
12 12  ssh
13 13  ssl
14 14  sssd
15 1516 16  --豎線“|” 和圓括弧“()”:
17 17  --豎線“|” 表示多個正則表達式之間“或”的關係
18 18  --豎線“|” 表示多個正則表達式之間“或”的關係
19 19  #篩選含有字元串“ssh”、“ssl”或者以字元串“yum”開頭的文本行
20 20  #grep -E主要是用來支持擴展正則表達式
21 21  #grep -E =egrep
22 22  str=`ls /etc | egrep "(ssh|ssl|^yum)"`
23 23  echo "$str"
24 2425 2526 26  --轉義“大括弧”{}指示前邊正則表達式匹配的次數,要轉義是因為不轉義的話大括弧只是表示他們字面上的意思
27 27[0-9]\{5\}” --精確匹配 5 個數字 (從 0 到 9 的數字)
擴展正則表達式

10.perl正則表達式

1  --數字匹配\d 符號“\d”匹配從0到9中的任意一個數字字元,等價於表達式“[0-9]”
2  --篩選以字元串rc開頭,緊跟著一個數字的文本行 -P可以讓grep使用perl的正則表達式語法
3  str=`ls /etc | grep -P "^rc\d"`
4  echo "$str"
5 6  --非數字匹配\D  “\D”等價於表達式“[^0-9]”
7  --空白字元匹配\s :匹配任何空白字元,包括空格、製表符以及換頁符=“[\f\n\r\t\v]”。
8  --非空白字元匹配\S:符號“\S”匹配任何非空白字元,等價於表達式“[^\f\n\r\t\v]”
perl正則表達式

處理海量數據的命令:grep、cut、awk、sed

grep、sed命令是對行進行提取

cut、awk命令是對列進行提取

11.grep命令

 1  /*
 2  grep [選項]...[內容]...[file]
 3  -v 對內容進行取反提取
 4  -n 對提取的內容排列,顯示行號
 5  -w 精確匹配
 6  -i 忽略大小寫
 7  ^  匹配行首
 8  -E 正則匹配
 9  */
10  grep 'user' /etc/passwd  --匹配包含user的行
11  grep -n 'user' /etc/passwd --顯示行號
grep

12.awk命令

 1  /*
 2  而awk比較傾向於將一行分成多個"“欄位"然後再進行處理。awk信 息的讀入也是逐行讀取的,在使用awk命令的過程 中,可以使用邏輯操作符”&“表示"與”、"||表示"或"、"!“表示非”;還可以進行簡單的數學運算,如H+、 -、*、/、%、^分別表示加、減、乘、除、取餘和乘方。
 3  awk 選項 '{操作}' 文件名
 4  */
 5  awk '{print}' zz.txt   --預設輸出所有
 6  awk -F: '{print $1}' zz.txt  --分隔符為:輸出第一列
 7  echo 'this is a test' | awk '{print $NF}'  --$NF表示最後一個欄位
 8  awk -F ':' '{ print toupper($1) }' demo.txt  --將輸出的字元轉成大寫
 9  --awk '條件 動作' 文件名  結合正則表達式
10  awk -F ':' '/usr/ {print $1}' demo.txt  --只輸出包含usr的行
11  awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt --輸出奇數行
12  awk -F ':' '$1 == "root" {print $1}' demo.txt --輸出第一個欄位等於指定值的行
awk

13.route命令

 1  /*
 2  在網路中,route命令用來顯示、添加、刪除和修改網路的路由。
 3  route [-f] [-p] [Command] [Destination] [mask Netmask] [Gateway] [metric Metric] [if Interface]
 4  route -f:用於清除路由表
 5  route -p:用於創建永久路由
 6  route Command:主要有print(列印路由)、ADD(添加路由)、DELETE(刪除路由)、CHANGE(修改路由)4個常用命令
 7  route Destination:表示到達的目的IP地址
 8  route MASK:表示子網掩碼的關鍵字
 9  route Netmask:表示具體的子網掩碼,如果不進行設置,系統預設設置成255.255.255.255(單機IP地址),添加掩碼時要註意,特別是要確認添加的是某個IP地址還是IP網段,如果代表全部出口子網掩碼可用0.0.0.0
10  route Gateway:表示出口網關
11  route interface:表示特殊路由的介面數
12  route metric:表示到達目的網路的跳數
13  -net 後面跟的是目標網路,gw就是gateway(網關入口)
14  */
15  --區域網的網路地址192.168.1.0/24,區域網絡連接其它網路的網關地址是192.168.1.1。主機192.168.1.20訪問172.16.1.0/24網路時,其路由設置正確的是
16  route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
route

14.cut命令

1  cut是一個選取命令,就是將一段數據經過分析,取出我們想要的。一般來說,選取信息通常是針對“行”來進行分析的
2  cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]
3  -b :以位元組為單位進行分割。這些位元組位置將忽略多位元組字元邊界,除非也指定了-n標誌。
4  -c :以字元為單位進行分割。
5  -d :自定義分隔符,預設為製表符。
6  -f  :與-d一起使用,指定顯示哪個區域。
7  -n :取消分割多位元組字元。僅和 -b 標誌一起使用。如果字元的最後一個位元組落在由 -b 標誌的 List 參數指示的<br />範圍之內,該字元將被寫出;否則,該字元將被排除。
8
cut

15.sed命令

 1  -n --把匹配到的行輸出列印到屏幕
 2  p  --以行為單位進行查詢,通常與-n一起使用
 3  eg:df -h | sed -n '2p'     --列印第二行
 4  d   --刪除  eg :df -h |sed '2d'  --刪除第二行
 5  a   --在行下邊插入新的內容 eg:sed '2d 122344' 1.txt   
 6  i   --在行上邊插入新的內容 eg:sed '2i 122344' 1.txt   
 7  c   --替換               eg:sed '2c 122344' 1.txt
 8  s/被替換的內容/新的內容/g   --eg: sed s/"//g  1.txt
 9  -i   --對源文件進行修改    --eg: sed -i s/"//g  1.txt
10  -e   --表示可以執行多條動作
11  sed -n '/100%/p' 1.txt   --匹配到100%的列印出來
sed

16.xargs命令

1 /*xargs是給其他命令傳遞參數的一個過濾器,也是組合多個命令的一個工具,它擅長將標準輸入數據轉換成命令行採納數。xargs能夠處理管道或者stdin並將其轉換成特定命令的命令參數。xargs也可以單行或多行文本輸入轉換為其他格式,例如多行轉單行,單行轉多行。xargs的預設命令是echo,空格是預設定界符。
2  */
3  --多行換入單行輸入
4  cat test.txt | xargs
5  ---n 選項多行輸出
6  cat test.txt  | xargs -n3
7  --d 自定義定界符
8  echo "abcadbsbdkvbwwlg" | xargs -db
xargs

17.sort命令

 1 /*
 2 sort命令將文件的每一行作為比較對象,通過將不同行進行相互比較,從而得到最終結果。比較原則是從首字元開始,向後依次按ASCII碼值進行比較,最後將結果按升序輸出
 3 參數:
 4 sort -u  :在輸出行中去除重覆行
 5 sort -r  :sort命令預設的排序方式是升序,如果想改成降序,就需要加上 -r
 6 sort -o  :由於sort預設是把結果輸出到標準輸出,所以需要用到重定向才能將結果寫入文件,形如sort filename > newfile。但是,如果你想把排序結果輸出到原文件中,用重定向可就不行了,需要 
 7 */
 8 sort -n -k 2 -t : facebook.txt  --以冒號分割開,以第二列進行排序
 9 sort -r number.txt -o number.txt --排序後重定向到number.txt
10 cat words.txt|xargs -n 1 |sort -r
View Code

18.uniq命令

 1 /*
 2 uniq 命令用於檢查及刪除文本文件中重覆出現的行列,一般與 sort 命令結合使用。
 3 uniq 可檢查文本文件中重覆出現的行列,直接去重
 4 -c: 在每列旁邊顯示該行重覆出現的次數。
 5 -d: 僅顯示重覆出現的行列,顯示一行。
 6 -D: 顯示所有重覆出現的行列,有幾行顯示幾行。
 7 -u: 僅顯示出一次的行列
 8 -i: 忽略大小寫字元的不同
 9 -f Fields: 忽略比較指定的列數。
10 */
11 --統計words文件裡邊每個單詞出現的次數
12 cat words.txt|xargs -n 1 |sort -r |uniq -c |awk 'print{$2" "$1}'  
13 --忽略第一列的字元
14 uniq -c -f 1 uniq.txt
15 --忽略前邊四個字元
16 uniq -c -s 4 uniq.txt
View Code

 

 

  ------------------歡迎關註秀兒微博--->程式界第一佳麗
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 類型載入器設計(Type Loader Design) 原文:https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/botr/type-loader.md 作者: Ladi Prosek - 2007 翻譯:幾秋 (https ...
  • 最近在項目中啟用了Nullable 可為空的類型,這個特性確實很好用,在 WebAPI 的入參上可以直接採用 ? 來標記一個欄位是否允許為空,但是使用過程中遇到瞭如下一個問題,比如創建部門介面 我們定義入參模型如下: public class DtoDepartment { /// <summary ...
  • .NET 6 EFCore WebApi 使用 JMeter 進行吞吐量測試 開發環境 VS2022 .NET 6 測試環境 測試工具 介面壓力測試工具:JMeter 資料庫 MySQL 5.7 資料庫和WebApi服務在同一臺伺服器上,JMeter在本人筆記本上。 測試設置 200個線程併發,每個 ...
  • 一、 環境準備 本次配置基於DR負載均衡模式,設置一個VIP(Virtual IP)為19.50.67.173,用戶只需要訪問這個IP地址即可獲得後端服務 其中,負載均衡主機為19.50.67.165(LVS1),備機為 19.50.67.169(LVS2)。Web伺服器A為19.50.67.171 ...
  • forklift Mac版是一款強大的文件管理程式,彌補了Finder文件管理比較單一的功能,強大到能遠程連接Ftp,SFTP,Amazon S3,WebDAV,SMB,NIS,AFP等網路共用服務協議。相對其他文件管理器如Path Finder,forklift mac更加小巧快速。 除此之外Fo ...
  • PowerPoint 無法打開文件 出現的問題 今天下載老師放在學習通的ppt,居然不能打開,記錄一下 點擊修複後出現: 這並不是文件損壞了,而是powerpoint出於安全的考慮,為了保護我們的電腦,不能打開其他電腦的文件。 解決辦法 右鍵選擇屬性,進入常規界面,勾選解除鎖定,點擊引用,點擊確 ...
  • 個人超級電腦是一個新概念,目前這個市場類似上世紀70年的PC革命時代。本篇是回答一位用戶提問,LAXCUS分散式操作系統如何成為一臺“個人超級電腦”。 ...
  • mysql二進位安裝腳本部署 單實例 [root@localhost ~]# mkdir mysql //創建存放腳本目錄 [root@localhost ~]# ls anaconda-ks.cfg mysql [root@localhost ~]# cd mysql/ [root@localho ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...