一.管道与重定向
1.管道
rpm -qa | grep 'httpd' #查询所有已安装的软件包,过滤包含httpd的包
1.将/etc/passwd中的用户按UID大小排序
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd #以: 分隔,将第三列按字数升序
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd -r #以: 分隔,将第三列按字数降序
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd |head #以: 分隔,将第三列按字数升序看前十行
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd |tail #以: 分隔,将第三列按字数升序看后十行sort 排序,默认升序
-t 指定分隔符
-k 指定列
-n 按数值
-r 降序
head 默认输出前十行
tail 默认输出后十行
netstat -lntp | awk 'NR==3 {print $4}' | awk -F':' '{print $2}'
nerstab -lntp :查看监听端口号
awk:文本分析工具 -F : 指定分隔符
NR==3 :第三行
print $4: 打印第四列
常用小命令 :du -h /etc/ 查看目录及目录中文件大小
du -sh /etc/ 查看目录的总大小
ls /etc/ | wc -l 查看目录中有多少个文件
2.输出重定向
FD: 0,标准输入(键盘)
1,标准输出
2,标准错误,
3+,进程在执行过程中打开的其他文件。
&:表示正确错误混合输出
> ---------覆盖
>> -------追加
正确输出:1> 1>> 等价于>>
错误输出:2> 2>> /dev/null:为垃圾桶黑洞文件
[root@qfedu.com ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt #重定向到不同的位置
正确和错误都输出到相同位置:
[root@qfedu.com ~]# ls /home/ /aaaaaaaaa &>list.txt #混合输出到相同文件
3.输入重定向
标准输入:< 等价 0<
通过输入重定向创建文件
cat > file <<EOF(任何字母都可,结尾处与此处相同即可)
1.例: cat >file1 << EOF
>1111
>EOF
文件file1内容为1111
2.利用重定向建立多行的文件 脚本创建多行文件
[root@qfedu.com ~]# vim create_file.sh
#!/bin/bash
cat >file200.txt <<EOF
111
222
333
yyy
ccc
EOF
[root@qfedu.com ~]# chmod +x create_file.sh
[root@qfedu.com ~]# ./create_file.sh
[root@qfedu.com ~]# cat file200.txt
111
222
333
yyy
ccc
4.参数传递:xargs
对:ls cp rm 管道不能执行。所以通过xargs。
语法:cat a.txt | xargs -i cp {} /目录
{}:前面传过来的内容
-i:为了让大括号生效
目录时 -r
解释:前面传过来的东西交给大括号
二.文件查找
find
语法:find [path..] [options] [expression] [action]
路径 选项 表达式 动作
-a :并且 -o:或者
找到后处理的动作:a 找到后默认是显示文件
b 找到后删除:在后方加上 -delete
c 找到后复制 :find /etc -name “文件名” -ok cp -rvf {} /tmp \;
find /etc -name “文件名” -exec cp {} /tmp \;
find /home/ -name "文件名" | xargs -i cp {} /tmp
1.按文件名
从根开始找文件
[root@qfedu.com ~]# find / -name “file2” #从根开始找文件
/root/file2
/var/tmp/file2
[root@qfedu.com ~]# find /etc -name "ifcfg-ens33" #以名字的方式查找
[root@qfedu.com ~]# find /etc -iname "Ifcfg-ens33" #-i忽略大小写[root@qfedu.com ~]# find /home/ ! -name "test5*" # !--取反
2.按文件大小
[root@qfedu.com ~]# find /etc -size +5M #大于5M
[root@qfedu.com ~]# find /etc -size 5M #等于5M
[root@qfedu.com ~]# find /etc -size -5M #小于5M
[root@qfedu.com ~]# find / -size +3M -a -size -5M #查找/下面大于3M而且小于5M的文件
-a:and
[root@qfedu.com ~]# find / -size -1M -o -size +80M #查找/下面小于1M或者大于80M的文件
-o:or
[root@qfedu.com ~]# find / -size -3M -a -name "*.txt" #查找/ 下面小于3M而且名字是.txt的文件
3.按时间查找
atime = access访问时间
-mtime = modify改变时间 内容修改时间会改变
-ctime = change修改时间 属性修改时间会改变[root@qfedu.com ~]# find /opt -mtime +5 #修改时间5天之前
[root@qfedu.com ~]# find /opt -atime +1 #访问时间1天之前
[root@qfedu.com ~]# find . -mtime -2 #修改时间2天之内[root@qfedu.com ~]# fin . -amin +1 #访问时间在1分钟之前
[root@qfedu.com ~]# find /opt -amin -4 #访问时间在4分钟之内
[root@qfedu.com ~]# find /opt -mmin -2 #修改时间在2分钟之内
4.指定查找目录深度
find / -maxdepth 4 -a name “文件名”
/(仅在根下) -maxdepth:最大目录深度 4:深度几级,以/来分级
5.按文件属主属组查找
find /home -user jack 查找属主为jack的文件
find /home -group hr 查找属组为hr的文件
6.按文件权限查找
find . -perm 644 .代表相对路径当前位置
7.按文件类型查找
find /tmp -type f
类型命令 普通文件
f:普通文件 b:块设备文件 d:目录 p:管道 l:连接
三 . 打包压缩解压
linux打包压缩工具:gzip bzip2 xzip zip
gzip
压缩
gzip filename
解压
gzip -d filename.gz
gunzip filename.gz
bzip2
压缩
bzip2 filename
解压
bzip2 -d filename.bz2
bunzip2 filename.bz2
xzip
tar -cJ[v]f filename.tar.xz filename
zip
压缩
zip -q -r filename.zip filename
解压
unzip filename.zip
解压到指定路径
unzip filename.zip -d 路径
语法:tar 选项 压缩包文件 源文件
c:创建 f:文件 z:压缩 t:测试 v:详情 z:gzip j:bzip -C:指定解包路径
打包:tar -cf etc.tar /etc
打包压缩 : tar -czf etc.gzip.tar.gz /etc
测试 : tar -tf etc.tar
解压 : tar -xf etc.tar
解压解包 :tar xzf 压缩文件 -C 解压路径
tar czf /tmp/`date + %F-%T` -etc.tar.gz /etc
将打包文件放到/tmp目录下,并以当前时间开头命名
tar cvf dir1.tar /home/dir10
打包目录dir10 将包命名为dir1.tar
按时间创建目录或文件 :mkdir `date +%F` upload
touch file -`date+%F`.txt
拓展:发邮件
1.安装:yum -y install mailx
2.编辑配置文件:vim /etc/mail.rc 添加如下内容
set from=88888888@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=8888888@qq.com
set smtp-auth-password=xxxx(qq邮箱开启接受的密钥)
set smtp-auth=login
3.格式:echo “邮件内容” | mail -s “邮件标题” 8888888@qq.com