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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell学习之常用命令总结

發布時間:2025/7/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell学习之常用命令总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.find命令

  主要用途:主要用來做文件查找。

  使用方法:查找文件的方式可以基于:文件名,文件時間屬性,文件的所有者和組,文件權限屬性,文件類型屬性,文件大小,另外可以指定 查找目錄的深度,排除指定子目錄,具體使用方法:

  http://www.cnblogs.com/mchina/archive/2012/07/02/2573313.html

  其他:可以通過-exec ,-OK選項對匹配的文件做進一步的處理。-exec選項:對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' {} \;,注意{}和\;之間的空格,同時兩個{}之間沒有空格,-OK: 其主要功能和語法格式與-exec完全相同,唯一的差別是在于該選項更加安全,因為它會在每次執行shell命令之前均予以提示,只有在回答為y的時候, 其后的shell命令才會被繼續執行。-exec使用示例,-OK的使用方法類似:

##刪除匹配查找的文件 find . -name "*.log" -mtime -1 -exec rm -f {} \;

  常用find命令總結:

#!/bin/bashfind?? .?? -size?? +1000000c?? -print??????? #查長度大于1Mb的文件 find?? -name april*????????? ?????????? # 在當前目錄下查找以april開始的文件 find?? /home?? -mtime?? -2???????????????? #在/home下查最近兩天內改動過的文件 find?? ./?? -mtime?? -1?? -type f?? -exec?? ls -l?? {} \; # 查詢當天修改過的文件 find logs -type f -mtime +5 -exec?? -ok?? rm {} \; #刪除查找到得文件

2.xargs命令

  主要功能:從輸入中構建和執行shell命令。

  使用方法:在使用find命令的-exec選項處理匹配到的文件時, find命令將所有匹配到的文件一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鐘之后,就會出現 溢出錯誤。錯誤信息通常是“參數列太長”或“參數列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。? find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續下去。xargs命令使用示例:

##在當面目錄下查找所有普通文件,并用grep命令在搜索到的文件中查找hostname這個詞 find . -type f -print | xargs grep "hostname" ##直接殺掉mysql的進程 pgrep mysql | xargs kill -9  

3.sed命令
  主要功能:對輸入流進行編輯。
  基本知識:sed 基本語法-sed [-n] 'editing command',
sed工作過程:

  • 依次從輸入中讀取每一行放入到模式空間中;
  • 使用 'editing command'對模式空間中的字符串進行處理;
  • 輸出模式空間中處理后的字符串;

  常用選項參數解釋

  • -n:不是模式空間的所有處理后的字符串都打印,而是僅僅顯示以p指定的行;
  • -e:使用多個 editing command時,必須使用這個選項;
  • -i:將對模式空間字符串的修改,直接寫回到輸入中相應的行;
  • -f:指定腳本文件。

  sed常用command:

  • a\  新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)~比如:nl testfile |sed '2a\United States'
  • c\  取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行! 比如:nl testfile |sed '2,5c\No 2-5 number'
  • d  刪除,因為是刪除啊,所以 d 后面通常不接任何咚咚??????????????????????比如:nl testfile |sed '/west/,/north/d'
  • i\  插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行) 比如:sed '/eastern/i\NEW ENGLAND REGION' testfile?
  • p  列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起運作   比如:nl testfile |sed -n '/south/,/east/p'
  • s  取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!比如nl testfile |sed -n 's/Hemenway/Jones/gp'

  sed常用示例:http://www.cnblogs.com/mchina/archive/2012/06/30/2570523.html 

4.grep命令

  主要功能:文本過濾,自一個或多個文件中過濾出具有某個字符串的行,或是從標準輸入過濾出具有某個字符串的行。

  grep退出狀態:

  • 0: 表示成功;
  • 1: 表示在所提供的文件無法找到匹配的pattern;
  • 2: 表示參數中提供的文件不存在。

  grep常用示例:

  http://www.cnblogs.com/mchina/archive/2012/06/29/2570187.html

  使用grep判斷一個文件是否包含指定的模式:

if grep source testfile>/dev/null; then echo match; fi

5.awk命令

  主要功能:awk逐行掃描文件的,從第一行到最后一行,尋找匹配特定模板的行,并在這些行上運行“選擇”動作。如果一個模板沒有指定動作,這些匹配的行就被顯示在屏幕上。如果一個動作沒有模板,所有被動作指定的行都被處理。與sed相比,awd具有單獨把某些列打印出來的功能,sed不具有這種功能,如果想實現需要借助cut。

  使用模板:

  • awk 'pattern' filename?? #將匹配模板的行打印出來。
  • awk '{action}' filename #對所有的行執行action,然后打印出來。
  • awk 'pattern {action}' filename #對匹配pattern的行執行aciton動作。

  示例:

  • awk -F: '/Tom Jones/{print $1,$2}' employees2??#這里-F選項后面的字符表示分隔符。
  • awk -F: '{OFS = "?"};? /Tom/{print $1,$2 }' employees2?#在輸出時,域字段間的分隔符已經是?(問號)了

??? ?對于awk而言,其模式部分將控制這動作部分的輸入,只有符合模式條件的記錄才可以交由動作部分基礎處理,而模式部分不僅可以寫成正則表達式(如上面的例子),awk還支持條件表達式。

  • awk '$3 < 4000 {print}' employees? #模式使用條件判斷語句

??? 在花括號內,用分號分隔的語句稱為動作。如果模式在動作前面,模式將決定什么時候發出動作。動作可以是一個語句或是一組語句。語句之間用分號分隔,也可以用換行符,如:
?? ?pattern { action statement; action statement; etc. } or
?? ?pattern {
?? ??? ?action statement
?? ??? ?action statement
?? ?}

  • awk '$3 < 4000 && /Sally/ {print}' employees
  • awk '$1 ~ /[Bb]ill/' employees??????#顯示所有第一個域匹配Bill或bill的行。
  • awk '$1 !~ /[Bb]ill/' employees?????#顯示所有第一個域不匹配Bill或bill的行,其中!~表示不匹配的意思。
  • ?awk '$3 == "Ann" { $3 = "Christian"; print}' testfile #找到第三個域等于Ann的記錄,然后給該域重新賦值為Christian,之后再打印輸出該記錄。
  • ?awk '/Ann/{$8 += 12; print $8}' testfile?#找到包含Ann的記錄,并將該條記錄的第八個域的值+=12,最后再打印輸出。

 ? 總結: awk命令包括模式pattern和動作action兩個部分,對匹配模式pattern的行執行action動作。模式匹配可以是正則表達式或者是條件表達式,動作部分可以修改域并格式化打印全部或者指定的域。sed+cut完成的功能可以用awk來實現。

  詳細的awk使用示例:http://www.cnblogs.com/mchina/archive/2012/06/30/2571308.html

6.cut命令

  主要功能:剪下文本文件里的數據,文本文件可以是字段類型或是字符類型。

  主要選項:

  • -c list:以字符為主,執行剪下操作。
  • -d delim: 和-f選項配合使用,使用delim作為分隔字段的定界符
  • -f list : 以字段為主,作剪下操作。

  使用示例:

  • ifconfig eth0 | sed -n '2p' | cut -d : -f 2 | cut -d ' ' -f 1 #獲取eth0的IP地址,主要是以字段執行剪下操作,輸出:192.168.91.188
  • ifconfig eth0 | sed -n '2p' | cut -c 21-34 #獲取eth0的IP地址,執行以字符為主的剪下操作,輸出同上。

7.sort命令

? ? 主要功能:排序輸入。

  主要選項:

  • -r:倒置排序的順序為由大至小。
  • -t char:使用單個字符char作為默認的字段分隔字符,取代默認的空白字符。
  • -u:只有唯一的記錄:丟棄所有具有相同鍵值的記錄,只留其中的第一條。
  • -k:定義排序鍵值字段。

8.tr命令

? ? 主要功能:轉換字符,比如將大寫轉換為小寫等。

  命令語法:tr [ options ] source-char-list replace-char-list

  主要選項:

  • -c : 將不在source-char-list中的字符依次轉換為replace-char-list中的字符, 比如:?echo hello | tr -c o v 輸出 vvvvov。
  • -d:刪除source-char-list中的字符。比如:echo hello | tr -d l 輸出:heo。
  • -s:濃縮重復的字符。 比如:echo hello | tr -s l 輸出:helo。

10.read命令

  主要功能:將信息讀入一個或多個shell變量中。

  主要選項:

  • -r:讀入行時,原始讀取,不做任何處理。不將結尾處的反斜杠解釋為序行字符。

  示例:

  • 讀取姓名和年齡,并輸出:
echo "please input name and age";read name age echo "name is $name and age is $age"
  • 讀入passwd文件,并輸出user和homedir列:
#!/bin/bash##IFS定義了將每一行分割成字段的分隔符 while IFS=: read user pass uid gid fullname homedir shell doecho "user is $user, and homedir is $homedir" done < /etc/passwd
  • read從管道中讀入的例子,復制整個目錄樹:
#!/bin/bashfind /home/xuchao -type d -print | #查找所有的目錄sed 's;/home/xuchao;/home/xuchao/bak;' |while read newdir ###read從管道中讀domkdir $newdirdone

?11.locate命令

?  主要功能:基于數據庫的文件查找。locate將文件系統里的所有文件名壓縮成數據庫,以迅速找到匹配類Shell通配字符模式的文件名,不必實際查找整個龐大的目錄結構。 locate *file* 的輸出如下。

/home/shell_learn/dos-file /home/shell_learn/myfile /home/shell_learn/unix-file

?下面介紹兩個任務定時命令:

13.at命令

  主要功能:讓程序在特定的時間執行。at使用示例如下:

at 21:00 < command-file #在下午9點執行 at now < command-file #立刻執行 at now + 10 minutes < command-file #10分鐘后執行 at 0400 tomorrow < command-file #明早上4點執行 at 14 july < command-file #下個國慶日執行(美國) at noon +15 minutes < command-file #在今天中午12::15執行

另外atq可以查詢當前的定時任務,atrm刪除定時任務。

14.crontab命令

  主要功能:周期性的在特定時間執行指定的程序。
  使用方法:crontab -e 修改定時任務配置文件,定時任務配置文件命令格式如下,前5欄分別用于指定程序的執行時間,依次是:分時年月周, crontab -l 顯示當前周期任務。?

* * * * * user-name command to be executed

  使用示例:

#在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup */20 6-12 * 12 * /usr/bin/backup

?

 

  

轉載于:https://www.cnblogs.com/VincentXu/p/3194412.html

總結

以上是生活随笔為你收集整理的shell学习之常用命令总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。