一、find文件查找
#查看命令所述文件:
[root@localhost ~]# which ip
/usr/sbin/ip
# ps: 一些命令的路径都被配置到了环境变量PATH里
echo $PATH
#格式
命令 路径 表达式 动作:
find /etc -mtime 3
#选项
-i #忽略大小写
-a #并且,默认自动加-a选项
-o #或者,多个条件满足一个即可
1>指定查找的目录深度
-maxdepth levels #最大深度
find / -maxdepth 5 -a -name 'ifcfg-eth0' #指定查找路径深度为5层
2>按文件名查找
find /etc -name 'ifcfg-eth0'
find /etc -iname 'ifcfg-eth0' #-i忽略大小写
find /etc -iname 'ifcfg-eth*'
3>按大小查找:
选项
-size
find /etc -size +3M #大于M
find /etc -size 3M #等于3M
find /etc -size -3M #小于3M
find /etc -size +3M -ls #-ls 为找到的处理动作,找到并列出
4>按时间查找
find /etc -mtime +3 #修改时间超过三天
find /etc -mtime 3 #修改时间等于三天
find /etc -mtime -3 #修改时间三天以内
5>按文件属主、属组查找
find /home -user egon #属主是egon的文件
find /home -group it #属组的it的文件
find /home -user egon -group it #属主为egon且属组为it的文件
find /home -user egon -a -group it #属主为egon且属组为it的文件
find /home -user egon -o -group it #属主为egon或属组为it的文件
find /home -nouser #无用户的文件
find /home -nogroup #无组的文件
find /home -nouser -o -nogroup #同上,两者则兼顾一个条件
6>按文件类型查找
find /dev -type f #普通
find /dev -type d #目录
find /dev -type l #连接
find /dev -type b #块设备
find /dev -type c #字符设备
find /dev -type s #套接字
find /dev -type p #管道文件
7>根据inode号查找
find -inum n
命令 -inum 号
find / -inum 1811
8>按文件权限查找
find . -perm 644 -ls #查找当前路径下权限为644的文件,并列出
find . -perm -644 -ls #
find . -perm -600 -ls #
find /sbin -perm -4000 -ls #包含set uid
find /sbin -perm -2000 -ls #包含set gid
find /sbin -perm -1000 -ls #包含sticky
9>找到后处理的动作
#动作
-print #打印
-ls #列出
-delete#删除
-exec #执行
-ok #
#动作用法
find /etc -name 'ifcfg' -print #内容必须加引号
find /etc -name 'ifcfg' -ls
find /etc -name 'ifcfg' -exec cp -rvf {} /tmp \; #非交互
find /etc -name 'ifcfg' -ok cp -rvf {} /tmp \; #交互
find /etc -name 'ifcfg*' -exec rm -rf {} \; #通过-exec交给rm执行
find /etc -name 'ifcfg*' -delete #可不通过动作转交直接删除,效果同上一条
PS特殊选项:
-ok #find的提示,并传递后续命令,需转义(尾部加{} \;)
-exec #find的不提示,并传递,慎用(删除功能),需转义(尾部加{} \;)
-xargs #加管道传递参数,无需转义
10>find结合xargs
#xargs选项
-d #指定分隔符,如xargs -d '|' -n2,则指定分隔符为管道符;
-n #每行显示的列数,如如xargs -d '|' -n2,则指定列数为2;
-I #将前面find的信息传递到后面的{}进行打包,每查到一个文件就会打包一次,所以会重复覆盖;
find . -name 'egon*.txt' |xargs rm -rf #通过xargs交给rm执行
find /etc -name 'ifcfg-eth0' |xargs -I {} cp -rf {} /var/tmp
find /test -name 'ifcfg-ens33' |xargs -I {} mv {} /ttt #
find /ttt/ -name 'ifcfg' |xargs -I {} chmod 666 {} #
二、上传与下载
1、wget命令
#格式
wget -O 本地路径 远程包链接地址 #将远程包下载到本地,-O指定下载位置,可生成-O本地路径;
wget -O /tmp/1.tar.gz ttps://image.baidu.com/search
#PS:如果wget下载提示无法建立SSL连接,则加上选项 --no-check-certificate即可;
wget --no-check-certificate -O 本地路径 远程包链接地址
2、curl命令
curl简介:(主用于做测试压力用)
while true;do curl url地址 ;done #死循环测试,不停刷新
此命令是一个利用URL规则,在命令行下工作的文件传输工具;支持文件上传与下载,是一个综合传输工具;按传统习惯称它为下载工具,curl支持:HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征,做网页处理流程和数据检索自动化,curl可助一臂之力!
#用法:
curl -o 123.png http://www.xxx.com/img/hello.png
#PS:如果遇到下载提示无法建立SSL连接,使用-k选项或--insecure:
curl -k -o 123.png http://www.xxx.com/img/hello.png
PS:#区别
wget 将文件下载到本地
curl 将文件在本地打开预览,不下载
3、lrzsz命令
#安装lrsz命令:yum install -y lrzsz
1>sz下载
#将服务器上选定的文件下载/发送到本机:
sz bak.tar.gz
2>rz上传
#选项
-e 对所有控制字符转义,建议使用
-E 若文件存在,则重命名新上传的文件,以点和数字作为后缀,推荐使用
-b 以二进制方式传输
#输入rz命令,会弹出一个文件选择窗口,可选择需上传的文件,从本地上传到服务器
三、输出与重定向**
1>输出重定向
Linux中:
0 标准输入 #键盘
1 标准正确输出 #显示器
2 标准错误输出 #显示器
输出重定向
> #覆盖
>> #追加
1>以下两个命令作用相同:
echo &>file.log #正确和错误的结果都覆盖到file.log(推荐)
echo >file.log 2>&1 #正确和错误的结果都覆盖到file.log
2>正确日志和错误日志分开保存:
echo >>file1.log 2>>file2.log
PS:0标准正确输入,1标准正确输出,2标准错误输出
ifconfig >1.txt #将命令正确输出的结果覆盖到1.txt
ifconfig 2> 1.txt #将错误输出的结果覆盖到1.txt
ifconfiga 1>1.txt 2>1.txt #将正确和错误都覆盖到1.txt
ifconfig &>1.txt #将正确和错误都覆盖到1.txt
3>系统有个常见用法:
ls &>/dev/null #正确、错误的输出结果都不想要(null可理解为黑洞或垃圾站)
cat > 1.txt < /etc/hostname
#命令 >覆盖,<覆盖内容来源
#命令 >>追加,<<EOF追加内容EOF结尾
2>输入重定向
#没改变输入方向,默认键盘,此时等待输入
[root@egon ~]# tr 'N' 'n'
No
no
[root@egon ~]# tr 'N' 'n' < file.txt
#没改变输入方向,默认键盘,此时等待输入
[root@egon ~]# grep 'root'
oldboy
root
root
[root@egon ~]# grep 'root' < /etc/passwd
root:x:0:0:root:/root:/bin/bash
#读写块设备
[root@egon ~]# dd if=/dev/zero of=/file1.txt bs=1M count=20
[root@egon ~]# dd </dev/zero >/file2.txt bs=1M count=20
#mysql如何备份
[root@qls ~]# mysql -uroot -p123 < bbs.sql