1. 程式人生 > 其它 >find,正則表示式,linux三劍客之grep

find,正則表示式,linux三劍客之grep

筆記

1、每個月的3號、5號和15號,而且這天是星期六時執行

  00 00 3,5,15 * 6

2、每天的3點到15點,每隔3分鐘執行一次

  */3 3-15 * * *

3、每週六早上2點半執行

  30 02 * * 6

4、每隔兩個月的一號下午10點執行

  00 22 01 */2 *

5、root密碼忘記了的解決辦法

  1、重啟

  2、在啟動選擇系統核心介面,按e鍵進入單使用者模式

  3、找到linux16開頭行,刪除ro,並且在ro處新增rw init=/sysroot/bin/sh

  4、按ctrl+x進行系統重新引導

  5、執行chroot /sysroot

  6、執行passwd root

  7、執行touch /.autorelabel

  8、執行ctrl+D重啟系統

6、yum私有倉庫的搭建步驟

  1、安裝工具

    yum install createrepo yum-utils nginx -y

  2、建立目錄

    mkdir /opt/test

  3、建立包目錄

    mkdir /opt/test/Packages

  4、下載安裝包,下載到Packages目錄中

    https://repo.huaweicloud.com/centos/7/os/x86_64/Packages/zsh-5.0.2-34.el7_8.2.x86_64.rpm

  5、初始化倉庫

    createrepo /opt/test

  6、修改nginx的配置檔案

    [root@localhost /mnt]# vim /etc/nginx/nginx.conf

    # include /etc/nginx/conf.d/*.conf;

    root /opt/test;

    autoindex on;

  7、啟動nginx

    systemctl start nginx

  8、新增yum源

    yum-config-manager --add-repo=http://192.168.15.101

  9、測試

    yum install zsh -y

find

  根據檔案的名稱或者屬性查詢檔案

語法格式:

  find [查詢範圍] [引數]

引數:

  -name:按照檔案的名字查詢檔案

  -iname:按照檔案的名字查詢檔案(忽略大小寫)

  -size:按照檔案的大小查詢檔案

    +:大於  -:小於  沒符號:等於

  -mtime:按照修改時間去查詢

    +(可以省略):n天以前

    -:n天以內

  -atime

  -ctime

  -user:按照使用者的屬主查詢

  -group:按照使用者的屬組查詢

  -type:按照檔案的型別查詢

    d:資料夾

    l:連結檔案

    s:套接字檔案

    p:管道檔案

    c:字元檔案

    b:磁碟檔案

    f:普通檔案

  -perm:按照檔案的許可權查詢

  -inum:根據index node號碼查詢

  -a:並且(可以省略,預設時並且)

  -o:或者

  -maxdepth:查詢的目錄深度(必須放置於第一個引數位)

  -exec:將find處理好的結果交給其它命令繼續處理

知識儲備:

  dd:生成檔案

    if:從什麼地方讀

    of:寫入到什麼檔案

    bs:每次寫入多少內容

    count:寫入多少次

案例:

  案例1:查詢/etc目錄下hosts檔案

    [root@localhost ~]# find /etc/ -name 'hosts'

  案例2:查詢/etc目錄下名稱中包含hosts的檔案

  ·  [root@localhost ~]# find /etc/ -name '*hosts*'

  案例3:要求把/etc目錄下,所有的普通檔案打包壓縮到/tmp目錄

    [root@localhost /tmp]# tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`

知識儲備

  |:前面一個命令的結果交給後面一個命令處理

  xargs:把處理的文字變成以空格分割的一行

  '':提前執行命令,然後將結果交給其它命令來處理

grep

  linux三劍客之一,文字過濾器(根據文字內容過濾檔案)

語法格式:

  grep [引數] [匹配規則] [操作物件]

引數:

  -n:過濾文字時,將過濾出來的內容在檔案內的行號顯示出來

  -A:匹配成功之後,將匹配行的後n行顯示出來

  -B:匹配成功之後,將匹配行的前n行顯示出來

  -C:匹配成功之後,將匹配行的前後各n行顯示出來

  -c:只顯示匹配成功的行數

  -o:只顯示匹配成功的內容

  -v:方向過濾

  -q:靜默輸出

  -i:忽略大小寫

  -l:匹配成功之後,將文字的名稱打印出來

  -R | -r:遞迴匹配

  -E:使用拓展正則,等價於egrep

知識儲備

  $?:上一行命令執行的結果,0代表執行成功,其它數字代表執行失敗

  wc:匹配行數

    -l:列印匹配行數

    -c:列印匹配的位元組數

在/etc目錄下,有多少個檔案包含root

  [root@localhost ~]# grep -rl 'root' /etc/ | wc -l

正則表示式

1、正則表示式的分類(grep)

  1、普通正則表示式

  2、拓展正則表示式

2、普通正則表示式

  ^:以某字元開頭

  $:以某字元結尾

  .:匹配除換行符之外的任意單字元

  *:匹配前導字元的任意個數

  []:某組字串的任意一個字元

  [^]:取反

  [a-z]:匹配小寫字母

  [A-Z]:匹配大寫字母

  [a-zA-Z]:匹配大小寫字母

  [0-9]:匹配數字

  \:取消轉義

  ():分組

  \n:代表第n個分組

3、拓展正則

  {}:匹配的次數

  {n}:匹配n次

  {n,}:至少匹配n次

  {n,m}:匹配n到m次

  {,m}:最多匹配m次

  +:匹配至少有一個前導字元

  ?:匹配一個或零個前導字元

  |:或

案例:

  案例1:在/etc/passwd檔案中,匹配已ftp開頭的行

    [root@localhost ~]# grep '^ftp' /etc/passwd

  案例2:在/etc/passwd檔案中,匹配已bash結尾的行

    [root@localhost ~]# grep 'bash$' /etc/passwd

  案例3:匹配本機中有哪些ip

    [root@localhost ~]# ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'

  案例4:要求將/etc/fstab中的去掉包含#開頭的行,且要求#後至少有一個空格

    [root@localhost ~]# grep -vE '^#\ +' /etc/fstab

  案例5:找出檔案中至少有一個空格的行

    [root@localhost ~]# grep -E '\ +' xxx

  案例6:將nginx.conf 檔案中已# 開頭的行和空行,全部刪除

    [root@localhost ~]# grep -vE '^\ *#|^$' /etc/nginx/nginx.conf