美文网首页
作业-第03周--课堂-Day11-linux文件类型及查找命令

作业-第03周--课堂-Day11-linux文件类型及查找命令

作者: MineG | 来源:发表于2019-03-17 12:03 被阅读0次

    Day11 课堂笔记

    1. 文件类型详细介绍

    第二列第一个字符:文件类型

    ~~一切皆文件。Windows用扩展名区分文件,Linux里有自己的文件类型,Linux的里扩展名,兼容windows方便区分文件。

    1.1 "-" 普通文件(regular file)
    图片 视频 文档 都是文件
    创建:touch vim echo cat
    拷贝、移动:cp、mv
    删除:rm
    三种类型:
    a.纯文本文件:字符数字等内容
    b.数据文件:存放命令收集的信息。
    c.二进制文件:可执行的命令。

    [root@oldboyedu ~]# file d.txt 
    d.txt: ASCII text
    [root@oldboyedu ~]# file /var/log/lastlog 
    /var/log/lastlog: data
    [root@oldboyedu ~]# file /bin/cat
    /bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=8ac8b57ae50762a4a0480486839107e87b3c284d, stripped
    

    1.2 d 目录(directory)
    生成: mkdir -p
    复制:cp -a/-r
    删除: rm -fr
    区分:
    a.开头为d
    b.颜色为蓝色
    c.ls -p,目录结尾加斜线,斜线结尾

    1.3 符号链接(symbolic link)文件,软链接(soft link)
    快捷方式:
    ln -s
    rm

    1.4 字符(character)/块(block)设备文件
    以c开头的就是字符设备,猫等串口设备
    以b开头的就是块设备 硬盘、光驱等都属于块设备
    mknod

    1.5 套接口(socket)文件
    以s开头
    .sock文件也是一类特殊的文件,这类文件通常用在网络之间,进行数据连接,如:我们可以启动一个程序来监听客户端的请求,客户端可以通过套接字来进行数据通信。
    用于进程之间通信的文件。

    2. 文件及目录查找命令

    • file:显示文件的类型
    [root@oldboyedu  /data]# file oldboy.txt oldboy.txt_soft_link 
    oldboy.txt:           ASCII text
    oldboy.txt_soft_link: symbolic link to `oldboy.txt'
    
    • which:显示命令的全路径
    [root@oldboyedu ~]# which cp
    alias cp='cp -i'
        /usr/bin/cp
    [root@oldboyedu ~]# which ls
    alias ls='ls --color=auto'
        /usr/bin/ls
    [root@oldboyedu ~]# which ip
    /usr/sbin/ip
    

    重点:
    PATH 变量作用
    命令行执行命令会从PATH 对应的路径中查找命令,
    PATH 对应的路径中没有这个命令就会报command not found

    [root@oldboyedu  /data]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    
    • whereis:显示命令及其相关文件全路径

    常用参数:

    • -b:查看可执行文件
    • -m:查找man帮助文件
    • -s:查找源代码文件
    [root@oldboyedu ~]# whereis -b cp
    cp: /usr/bin/cp
    
    • locate:快速定位文件路径

    查找文件路径,是从数据库A(/var/lib/mlocate/mlocate.db)里查询
    更新A数据库用updatedb命令
    C7默认没安装,不要学了

    查看命令对应的软件包

    [root@oldboyedu ~]#yum provides locate
    
    • updatedb:更新mlocate数据库
    • find:查找目录下的文件

    查找原理:磁盘遍历,速度慢。

    按文件名查找:

    [root@oldboyedu ~]# find ~ -name "oldboy.txt"              
    /root/oldboy.txt
    

    按文件类型查找-type:

    [root@oldboyedu ~]# find / -type f -name "oldboy*"
           -type c
                  File is of type c:
    
                  b      block (buffered) special
    
                  c      character (unbuffered) special
    
                  d      directory
    
                  p      named pipe (FIFO)
    
                  f      regular file
    
                  l      symbolic link; this is never true if the -L option or the -follow 
    
    find / -type d -name "oldboy*"
    这里的类型和名字是取交集,两条件都满足。默认是交集,相当于有个-a
    如果取并集即或者用-o分割查找的项
    find / -type d -o -name "oldboy*"
    ``
    了解:
    -a and 并且
    -o or  或者
    !      取反
    [root@oldboyedu /data]# touch oldboy{1..10}.txt
    [root@oldboyedu /data]# ls
    oldboy10.txt  oldboy2.txt  oldboy4.txt  oldboy6.txt  oldboy8.txt
    oldboy1.txt   oldboy3.txt  oldboy5.txt  oldboy7.txt  oldboy9.txt
    [root@oldboyedu /data]# find /data -type f
    /data/oldboy1.txt
    /data/oldboy2.txt
    /data/oldboy3.txt
    /data/oldboy4.txt
    /data/oldboy5.txt
    /data/oldboy6.txt
    /data/oldboy7.txt
    /data/oldboy8.txt
    /data/oldboy9.txt
    /data/oldboy10.txt
    [root@oldboyedu /data]# find /data ! -type f
    /data
    [root@oldboyedu /data]# mkdir {a..d}
    [root@oldboyedu /data]# find /data ! -type f
    /data
    /data/a
    /data/b
    /data/c
    /data/d
    
    • xargs:将标准输入转换成命令行参数

    常用参数:

    • -n 指定每行最大参数量n,默认以空格分隔。
    • -d 自定义分隔符
    • -i 以{}替代前面的结果
    [root@oldboyedu /data]# echo {1..10} >test.txt
    [root@oldboyedu /data]# cat test.txt
    1 2 3 4 5 6 7 8 9 10
    [root@oldboyedu /data]# xargs -n 3 <test.txt 
    1 2 3
    4 5 6
    7 8 9
    10
    [root@oldboyedu /data]# xargs -n 4 <test.txt 
    1 2 3 4
    5 6 7 8
    9 10
    [root@oldboyedu /data]# xargs -n 5 <test.txt 
    1 2 3 4 5
    6 7 8 9 10
    
    [root@oldboyedu /data]# xargs -d"." -n2 <test.txt 
    a b
    c d
    [root@oldboyedu /data]# xargs -n2 <test.txt 
    a.b.c.d
    [root@oldboyedu /data]# cat test.txt 
    a.b.c.d
    [root@oldboyedu /data]# echo "Oldboy" >test.txt 
    [root@oldboyedu /data]# echo "Oldgirl" >>test.txt 
    [root@oldboyedu /data]# echo "Oldboedu" >>test.txt 
    [root@oldboyedu /data]# echo "Oldboyedu" >>test.txt 
    [root@oldboyedu /data]# cat test.txt
    Oldboy
    Oldgirl
    Oldboedu
    Oldboyedu
    [root@oldboyedu /data]# cat test.txt|grep "boy"
    Oldboy
    Oldboyedu
    [root@oldboyedu /data]# grep "boy" test.txt 
    Oldboy
    Oldboyedu
    
    [root@oldboyedu /data]# find /data -type f|xargs rm -f
    [root@oldboyedu /data]# ll
    total 0
    drwxr-xr-x. 2 root root 6 Mar 14 10:40 a
    drwxr-xr-x. 2 root root 6 Mar 14 10:40 b
    drwxr-xr-x. 2 root root 6 Mar 14 10:40 c
    drwxr-xr-x. 2 root root 6 Mar 14 10:40 d
    [root@oldboyedu /data]# touch oldboy{1..5}.txt
    [root@oldboyedu /data]# ls
    a  b  c  d  oldboy1.txt  oldboy2.txt  oldboy3.txt  oldboy4.txt  oldboy5.txt
    [root@oldboyedu /data]# find /data -type f -exec rm -f {} \;
    [root@oldboyedu /data]# ls
    a  b  c  d
    
    
    find /data -type f -exec rm -f {} \;
    相当于 
    rm -f oldboy1.txt
    rm -f oldboy2.txt
    rm -f oldboy3.txt
    效率低。
    
    find /data -type f|xargs rm -f
    只是一条命令
    rm -f oldboy1.txt oldboy2.txt oldboy3.txt
    效率高
    
    find /data -type f|rm -f 
    相当于:
    find /data -type f
    rm -f
    
    • data:显示与设置系统时间
    [root@oldboyedu /data]# date -s "2020/10/1 00:00:00"
    Thu Oct  1 00:00:00 CST 2020
    [root@oldboyedu /data]# date
    Thu Oct  1 00:00:03 CST 2020
    [root@oldboyedu /data]# clock -w
    
    [root@oldboyedu /data]# date +%F
    2020-10-01
    [root@oldboyedu /data]# date +%Y   #year年
    2020
    [root@oldboyedu /data]# date +%y   #year年
    20
    [root@oldboyedu /data]# date +%m   #month 月
    10
    [root@oldboyedu /data]# date +%d   #day日
    01
    [root@oldboyedu /data]# date +%H   #hour时
    00
    [root@oldboyedu /data]# date +%M   #minute分
    02 
    [root@oldboyedu /data]# date +%S   #second秒
    46
    
    [root@oldboyedu /data]# date +%Y-%m-%d
    2020-10-01
    [root@oldboyedu /data]# date +%F
    2020-10-01
    [root@oldboyedu /data]# date +%H:%M:%S
    00:04:29
    [root@oldboyedu /data]# date
    Thu Oct  1 00:04:38 CST 2020
    
    [root@oldboyedu /data]# date +%F -d "-1day"
    2020-09-30
    [root@oldboyedu /data]# date +%F -d "+1day"
    2020-10-02
    [root@oldboyedu /data]# date +%F -d "+1month"
    2020-11-01
    [root@oldboyedu /data]# date +%F -d "+1Y"
    date: invalid date ‘+1Y’
    [root@oldboyedu /data]# date +%F -d "+1year"
    2021-10-01
    
    - 过去
    + 未来
    
    [root@oldboyedu /data]# date +"%Y-%m-%d %H:%M:%S"
    2020-10-01 00:09:36
    [root@oldboyedu /data]# date +"%F %T"
    2020-10-01 00:09:39
    
    • tar:打包压缩命令

    打包集合参数zcvf:v可以不加
    压缩包名字:data.tar.gz #tar表示打包,gz表示gzip格式压缩。

    例子:

    [root@oldboyedu ~]# mkdir /data
    [root@oldboyedu ~]# cd /data
    [root@oldboyedu /data]# touch {1..5}.txt
    [root@oldboyedu /data]# ls
    1.txt  2.txt  3.txt  4.txt  5.txt
    [root@oldboyedu /data]# cd ..
    [root@oldboyedu /]# tar zcvf /opt/data.tar.gz ./data
    ./data/
    ./data/1.txt
    ./data/2.txt
    ./data/3.txt
    ./data/4.txt
    ./data/5.txt
    

    查看压缩包里的内容:-t

    [root@oldboyedu /]# tar tf /opt/data.tar.gz 
    ./data/
    ./data/1.txt
    ./data/2.txt
    ./data/3.txt
    ./data/4.txt
    ./data/5.txt
    

    解压:

    [root@oldboyedu /opt]# tar zxvf data.tar.gz 
    ./data/
    ./data/1.txt
    ./data/2.txt
    ./data/3.txt
    ./data/4.txt
    ./data/5.txt
    [root@oldboyedu /opt]# ls
    data  data.tar.gz
    [root@oldboyedu /opt]# ls data
    1.txt  2.txt  3.txt  4.txt  5.txt
    [root@oldboyedu /opt]# tar xf data.tar.gz 
    

    打包时指定目录参数:-C

    [root@oldboyedu /opt]# tar xf data.tar.gz -C /tmp/
    [root@oldboyedu /opt]# ls /tmp/data
    1.txt  2.txt  3.txt  4.txt  5.txt
    

    排除打包:

    [root@oldboyedu ~]# cd /data
    [root@oldboyedu /data]# ls
    1.txt  2.txt  3.txt  4.txt  5.txt
    [root@oldboyedu /data]# tar zcvf oldboy.tar.gz ./* --exclude=4.txt --exclude=5.txt
    ./1.txt
    ./2.txt
    ./3.txt
    [root@oldboyedu /data]# tar tf oldboy.tar.gz 
    ./1.txt
    ./2.txt
    ./3.txt
    [root@oldboyedu /data]# rm -f oldboy.tar.gz 
    [root@oldboyedu /data]# tar zcvf oldboy.tar.gz ./* --exclude={4,5}.txt
    ./1.txt
    ./2.txt
    ./3.txt
    [root@oldboyedu /data]# tar zcvf oldboy.tar.gz ./* --exclude={1..4}.txt
    ./5.txt
    ./oldboy.tar.gz
    
    [root@oldboyedu /data]# cat paichu.txt
    1.txt
    2.txt
    3.txt
    [root@oldboyedu /data]# tar zcvfX oldboy.tar.gz paichu.txt ./*
    ./4.txt
    ./5.txt
    ./oldboy.tar.gz
    ./paichu.txt
    

    相关文章

      网友评论

          本文标题:作业-第03周--课堂-Day11-linux文件类型及查找命令

          本文链接:https://www.haomeiwen.com/subject/wvzrmqtx.html