linux文件搜索命令:locate命令 find命令node
locatelinux
updatedb用於生成文件數據庫c++
locate查找文件速度快,但查找前須要事先生成數據庫,沒法對新增文件進行查找正則表達式
find數據庫
相對於locate命令來講速度較慢,可是無需事先生成數據庫,能夠查找實時生成的文件apache
多個或的關係的type選項須要加括號,且括號須要用\轉義vim
搜索層級centos
-maxdepth level 最大搜索目錄深度,指定目錄下的文件爲第1級bash
-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, G,c(byte)
#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,6 從第3行到第6行
#,+# #從#行到+#行,3,+4 表示從3行到第7行
/pat1/,/pat2/
#,/pat/
步進:~
1~2 奇數行
2~2 偶數行
p 打印當前模式空間內容,追加到默認輸出以後
Ip 忽略大小寫輸出
d 刪除模式空間匹配的行,並當即啓用下一輪循環
a [\\]text 在指定行後面追加文本,支持使用\n實現多行追加
i [\\]text 在行前面插入文本
c [\\]text 替換行爲單行或多行文本
w /path/file 保存模式匹配的行至指定文件
r /path/file 讀取指定文件的文本至模式空間中匹配到的行後
= 爲模式空間中的行打印行號
! 模式空間中匹配行取反處理
s/pattern/string/修飾符 查找替換,支持使用其它分隔符,能夠是其它形式:s@@@,s###
替換修飾符:
g 行內全局替換
p 顯示替換成功的行
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"