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"