馬哥博客做業第四周

linux文件搜索命令:locate命令 find命令node

locatelinux

updatedb用於生成文件數據庫c++

locate查找文件速度快,但查找前須要事先生成數據庫,沒法對新增文件進行查找正則表達式

find數據庫

相對於locate命令來講速度較慢,可是無需事先生成數據庫,能夠查找實時生成的文件apache

多個或的關係的type選項須要加括號,且括號須要用\轉義vim

搜索層級centos

  -maxdepth level 最大搜索目錄深度,指定目錄下的文件爲第1bash

  -mindepth level 最小搜索目錄深度app

先處理目錄內的文件,再處理指定目錄

  -depth

根據文件名和inode查找:

  -name "文件名稱":支持使用glob   *, ?, [], [^]

  -iname "文件名稱":不區分字母大小寫

  -inum n inode號查找

  -samefile name 相同inode號的文件

  -links n 連接數爲n的文件

  -regex PATTERN」:以PATTERN匹配整個文件路徑,而非文件名稱

根據屬主、屬組查找:

  -user USERNAME:查找屬主爲指定用戶(UID)的文件

  -group GRPNAME: 查找屬組爲指定組(GID)的文件

  -uid UserID:查找屬主爲指定的UID號的文件

  -gid GroupID:查找屬組爲指定的GID號的文件

  -nouser:查找沒有屬主的文件

  -nogroup:查找沒有屬組的文件

根據文件類型查找

  -type TYPE

    f: 普通文件

    d: 目錄文件

    l: 符號連接文件

    s:套接字文件

    b: 塊設備文件

    c: 字符設備文件

    p: 管道文件

空文件或目錄

  -empty

組合條件:

與:-a

或:-o

非:-not或 ! 

德·摩根定律:

(A) (B) = (A B)

(A) (B) = (A B)

根據文件大小來查找:

  -size [+|-]#UNIT

    經常使用單位:k, M, Gcbyte

  #UNIT: (#-1, #]

    如:6k 表示(5k,6k]

  -#UNIT[0,#-1]

    如:-6k 表示[0,5k]

  +#UNIT(#,)

    如:+6k 表示(6k,)

 

根據權限查找:

 

  -perm [/|-]MODE

 

  MODE: 精確權限匹配

 

  /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配便可,或關係,centos7開始淘汰

 

  -MODE:每一類對象都必須同時擁有指定權限,與關係 ,0 表示不關注

 

find處理動做

  -print:默認的處理動做,顯示至屏幕

  -ls:相似於對查找到的文件執行「ls -l」命令

  -delete:刪除查找到的文件

  -fls file:查找到的全部文件的長格式信息保存至指定文件中

  -ok COMMAND {} \; 對查找到的每一個文件執行由COMMAND指定的命令,對於每一個文件執行命令以前,都會交互式要求用戶確認

  -exec COMMAND {} \; 對查找到的每一個文件執行由COMMAND指定的命令

  {}: 用於引用查找到的文件名稱自身find傳遞查找到的文件至後面指定的命令時,查找到全部符合條件的文件一次性傳遞給後面的命令

 

 

xargs能夠將前一個命令的標準輸出重定向到不支持標準輸入的命令中

 

壓縮gzip,解壓縮gunzip: .gz,壓縮比最小可是速度最快,消耗資源最少
壓縮bzip2,解壓縮bunzip2: .bz2,相對於xz消耗資源較少,壓縮比適中
壓縮xz,解壓縮unxz: .xz,壓縮比最大可是小號系統資源最多

壓縮比由大到小排序爲xz>bz2>gz

/var/lib/rpm   是rpm軟件包的庫

ldd 能夠查看二進制文件依賴哪些庫表

rpm -qi * 能夠查詢軟件的介紹

rpm -qpl  後面必須跟rpm軟件包的路徑,能夠在安裝前查詢軟件包生成的文件,不加p能夠寫包名

rpm -qf 能夠查詢命令來自於哪一個包

--replacepkgs    --force 強制安裝

rpm2cpio /misc/cd/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm | cpio -tv 能夠將丟失的文件從rpm軟件包找出來

rpm -U 升級或安裝

rpm -F  只升級

rpm -q --scripts * 查詢軟件帶的腳本

rpm -q --provides 查詢軟件的能力

rpm -K 檢查軟件包是否被更改、破壞

導入公鑰並查詢公鑰是否正確導入

 

[21:36:37 root@centos8 ~]#rpm -qa "gpg-pubkey*"
gpg-pubkey-8483c65d-5ccc5b19
[21:38:32 root@centos8 ~]#rpm -qi gpg-pubkey-8483c65d-5ccc5b19
Name        : gpg-pubkey
Version     : 8483c65d
Release     : 5ccc5b19
Architecture: (none)
Install Date: Wed 18 Mar 2020 05:42:51 PM CST
Group       : Public Keys

 

yum history 能夠查詢yum安裝歷史

yum history undo +數字 能夠撤銷安裝,能夠卸載掉新安裝的依賴包

rpm -qi kernel 能夠查詢系統安裝時間

yum -y install autofs;systemctl enable --now autofs 安裝並啓動autofs,而且開機啓動,該命令爲centos7和8的命令,yum -y install autofs;chkconfig autofs on;service autofs start centos6安裝並啓動autofs的命令

 

編譯安裝

最小化安裝系統最好先安裝以下軟件包

yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages

第一步:運行 configure 腳本,生成Makefile 文件

安裝路徑設定:

  --prefix=/PATH:指定默認安裝位置,默認爲/usr/local/

  --sysconfdir=/PATH:配置文件安裝位置

第二步執行make

第三步執行make install

在安裝完畢後建立一個腳本文件,更改PATH變量

  vi /etc/profile.d/httpd24.sh

  PATH=/apps/httpd24/bin:$PATH

而後編輯/etc/man.config或/etc/man_db.conf,添加新裝軟件的man幫助手冊

 

wget+下載連接能夠下載文件,-P能夠指定文件下載路徑

 

文本三劍客之sed命令,逐行對文本進行操做,相較於grep命令佔用內存少,比grep功能強大,缺點是語句更爲複雜

 

經常使用選項

 

  -n 不輸出模式空間內容到屏幕,即不自動打印

 

  -e 多點編輯

 

  -f /PATH/SCRIPT_FILE 從指定文件中讀取編輯腳本

 

  -r, -E 使用擴展正則表達式

 

  -i.bak 備份文件並原處編輯

 

 

 

地址界定

 

  不給地址:對全文進行處理

 

單地址:

 

  #:指定的行,$:最後一行

 

  /pattern/:被此處模式所可以匹配到的每一行

 

地址範圍:

 

  #,# ##行到第#行,3從第3行到第6

 

  #,+# ##行到+#行,3,+4 表示從3行到第7

 

  /pat1/,/pat2/

 

  #,/pat/

 

步進:~

 

  1~2 奇數行

 

  2~2 偶數行

 

 

 

打印當前模式空間內容,追加到默認輸出以後

 

Ip 忽略大小寫輸出

 

刪除模式空間匹配的行,並當即啓用下一輪循環

 

a [\\]text 在指定行後面追加文本,支持使用\n實現多行追加

 

i [\\]text 在行前面插入文本

 

c [\\]text 替換行爲單行或多行文本

 

w /path/file 保存模式匹配的行至指定文件

 

r /path/file 讀取指定文件的文本至模式空間中匹配到的行後

 

爲模式空間中的行打印行號

 

模式空間中匹配行取反處理

 

s/pattern/string/修飾符 查找替換,支持使用其它分隔符,能夠是其它形式:s@@@s###

 

替換修飾符:

 

行內全局替換

 

顯示替換成功的行

 

w /PATH/FILE 將替換成功的行保存至文件中

 

I,i 忽略大小寫

 

自動安裝apache腳本

 

yum -y install gcc make apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config #安裝apache依賴包

wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.43.tar.bz2 #下載apache源碼包

tar xvf httpd-2.4.43.tar.bz2 -C /usr/local/src #解壓源碼包

cd /usr/local/src/httpd-2.4.43/
./configure --prefix=/apps/httpd24 --sysconfdir=/etc/httpd24 --enable-ssl #執行configure腳本生成makefile文件

make -j 4 && make install #同時執行4個編譯程序來編譯安裝apache

echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/httpd24.sh
. /etc/profile.d/httpd24.sh #更改環境變量                                                                                                                                                                                                                                     

useradd -r -s /sbin/nologin -d /var/www -c Apache -u 48 apache #建立沒法登陸uid爲48的apachee帳戶

sed -ri.bak 's/^(User ).*/\1apache/' /etc/httpd24/httpd.conf;sed -ri.bak 's/^(Group ).*/\1apache/' /etc/httpd24/httpd.conf #修改httpd配置文件帳戶

apachectl start #開啓apache服務

 

 

#!/bin/bash                                                                                                                                                                                                                                                                   
#
#********************************************************************
#Author:            rzx
#QQ:                970707452
#Date:              2020-04-05
#FileName:         /data/scripts/reset.sh
#URL:               https://www.cnblogs.com/rzx-006/
#Description:      The test script
#Copyright (C):     2020 All rights reserved
#********************************************************************
NET=`ls /etc/sysconfig/network-scripts/ |head -n 1 | cut -d"-" -f2`

echo '正在進行初始化配置'

if cat /etc/sysconfig/network-scripts/ifcfg-"$NET" | grep dhcp > /dev/null; then
    echo '正在配置IP'
        mv /etc/sysconfig/network-scripts/ifcfg-"$NET" /etc/sysconfig/network-scripts/ifcfg-"$NET".bak #備份原網卡配置文件
cat > /etc/sysconfig/network-scripts/ifcfg-"$NET" <<EOF
DEVICE=$NET
NAME=$NET
IPADDR=10.0.0.88
PREFIX=24
GATEWAY=10.0.0.2
DNS1=180.76.76.76
DNS2=223.6.6.6
BOOTPROTO=static
EOF
echo 'IP配置完成'
fi

if ! cat ~/.bashrc | grep ^alias.*scripts\'$ > /dev/null; then
    echo '正在設置cdnet別名'
    echo alias cdnet=\'cd /etc/sysconfig/network-scripts\' >> ~/.bashrc #設置cdnet別名
    echo 'cdnet別名設置完畢'
fi

if ! cat ~/.bashrc | grep ^alias.*vim\'$ > /dev/null; then
    echo '正在設置vi別名'
    echo alias vi=\'vim\' >> ~/.bashrc #設置vim別名
    echo 'vi別名設置完成'
fi

if ! [ -e /etc/profile.d/env.sh ]; then
    echo '正在更改PS1變量'
    echo 'PS1="\[\e[1;32m\][\[\e[0m\]\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' >> /etc/profile.d/env.sh #設置PS1變量
    echo 'PS1變量設置完成'
fi

echo '正在修改yum倉庫配置文件'

mkdir /etc/yum.repos.d/bak

mv /etc/yum.repos,d/*.repo /etc/yum.repos.d/bak

cat > Centos-Base.repo <<EOF
[AppStream]
name=AppStream
baseurl=http://10.0.0.8/centos/8/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[BaseOs]
name=BaseOs
baseurl=http://10.0.0.8/centos/8/BaseOs/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[extras]
name=extras
baseurl=http://10.0.0.8/centos/8/extras/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[epel]
name=epel
baseurl=http://10.0.0.8/centos/8/epel
gpgkey=http://10.0.0.8/centos/8/epel/RPM-GPG-KEY-EPEL-8
EOF

echo 'yum倉庫配置完成'

echo '正在安裝經常使用軟件包'
yum -y install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages
echo '安裝完畢'

if ! [ -e ~/.vimrc ]; then
    echo '正在生成.vimrc'
cat > ~/.vimrc <<EOF
set ts=4
set expandtab
set ignorecase
set cursorline
set autoindent
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
    if expand("%:e") == 'sh'
    call setline(1,"#!/bin/bash") 
    call setline(2,"#") 
    call setline(3,"#********************************************************************")         
    call setline(4,"#Author:            rzx") 
    call setline(5,"#QQ:                970707452") 
    call setline(6,"#Date:              ".strftime("%Y-%m-%d"))
    call setline(7,"#FileName:         ".expand("%"))
    call setline(8,"#URL:               https://www.cnblogs.com/rzx-006/")
    call setline(9,"#Description:      The test script") 
    call setline(10,"#Copyright (C):    ".strftime("%Y")." All rights reserved")
    call setline(11,"#********************************************************************") 
    call setline(12,". /data/color.sh")
endif                                                               
endfunc
autocmd BufNewFile * normal G
EOF
echo '.vimrc配置完成'
fi

echo '正在關閉selinux'
sed -ri.bak 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config                                                                                                                                                                                                                 
echo '已關閉selinux'

echo '正在關閉防火牆'
chkconfig iptables off || systemctl disable firewalld.service

echo '已關閉防火牆'

echo -e "\E[1;31m"初始化配置已完成,IP地址爲默認IP,請及時修改IP地址"\E[0m"
相關文章
相關標籤/搜索