zoukankan      html  css  js  c++  java
  • Linux基础 -03

    2.2.3 head-tail 命令

    #------head
    #head pass   #查看头部内容,默认前10行
    #head -n5 pass	#查看头部前5行,使用-n指定
    
    #-------tail
    #tail pass
    # tail -20 /var/log/secure
    #tail -f /var/log/messages	#-f查看文件尾部的变化
    # tailf /var/log/messages	# 查看文件尾部的变化
    

    2.2.4 grep 过滤数据

    #----------grep过滤文件内容
    # grep "^root" pass		#匹配以root开头的行
    # grep "bash$" pass 	#匹配以bash结尾的行
    # grep -v "ftp" pass 	#匹配除了包含ftp的内容,其他全部打印
    # grep -i "ftp" pass 	#忽略大小写匹配
    # grep -Ei "sync$|ftp" pass 	#匹配文件中包含sync结尾或ftp字符串   有-E 可以写多个选项
    # grep -n -A 2 "Failed" /var/log/secure #匹配/var/log/secure文件中Failed字符串,并打印它的下2行
    # grep -n -B 2 "Failed" /var/log/secure #匹
    配/var/log/secure文件中Failed字符串,并打印它的上2行
    # grep -n -C 2 "Failed" /var/log/secure #匹
    配/var/log/secure文件中Failed字符串,并打印它的上下2
    行
    

    2.3 文件下载类命令

    2.3.1 wget 命令

    #CentOS7 系统最小化安装默认没有wget命令,需要进行安装
    # yum install wget -y
    
    #下载互联网上的文件至本地
    #wget http://mirrors.aliyun.com/repo/Centos-7.repo
    
    #将阿里云的centos-7.repo下载到/etc/yum.repos.d/并改名为centos-base.repo -O参数指定
    #wget -O /etc/yum.repos.d/Centos-Base.repo
    http://mirrors.aliyun.com/repo/Centos-7.repo
    

    2.3.2 curl命令

    #仅查看这个url地址的文件内容
    #curl http://mirrors.aliyun.com/repo/Centos-
    7.repo
    
    #将阿里云的centos-7.repo下载到/etc/yum.repos.d/并改
    名为CentOS-Base.repo -o参数指定
    # curl -o /etc/yum.repos.d/CentOS-Base.repo
    http://mirrors.aliyun.com/repo/Centos-7.repo
    
    #练习:请下载一个图片至于/opt目录下(不要修改名称),最少使
    用2中方式, URl地址为:
    http://fj.xuliangwei.com/public/ks.jpeg
    
    #1.wget
    [root@www ~]# cd /opt
    [root@www opt]# wget
    http://fj.xuliangwei.com/public/ks.jpeg
    [root@www ~]# wget -O /opt/ks.jpeg
    http://fj.xuliangwei.com/public/ks.jpeg
    
    #2.curl
    [root@www ~]# curl -o /opt/ks2.jpeg
    http://fj.xuliangwei.com/public/ks.jpeg
    
    

    2.3.3 rz-sz命令

    # yum install lrzsz -y #不安装软件则无法执行该命令
    
    # rz	#只能上传文件,不支持上传文件夹,不支持大于4个G上传,也不支持断电续传
    #sz /path/file #只能下载文件,不支持下载文件夹
    

    2.4 文件查找类命令

    2.4.1 which命令

    # which ls		#查找ls命令的绝对路径
    # type -a ls	#查看命令的绝对路径(包括别名)
    

    2.4.2 whereis 命令

    # whereis ls		#查找命令的路径,帮助手册,等
    # whereis -b ls		#仅显示命令虽在的路径
    

    2.5 字符处理类命令

    2.5.1 sort 命令

    在有些情况下,需要对一个无序的文本进行数据的排序,这时就需要使用 sort 进行排序了

    sort [OPTION]...[FILE]...
    # -r :倒序 -n:按数字排序 -t :指定分隔符(默认空格)
    # -k :指定第几列,指定几列几字符(指定1,1 3.1,3.3)
    
    #1.首先创建一个文件,写入一写无序的内容
    [root@www ~]# cat >> file.txt <<EOF
    b:3
    c:2
    a:4
    e:5
    d:1
    f:11
    EOF
    
    #2.使用sort下面对输出的内容进行排序
    [root@www ~]# sort file.txt
    a:4
    b:3
    c:2
    d:1
    e:5
    f:11
    
    #结果并不是按照数字排序,而是按字母排序。
    #可以使用-t指定分隔符, 使用-k指定需要排序的列。
    [root@www ~]# sort -t ":" -k2 sort.txt
    d:1
    f:11 #第二行为什么是11?不应该按照顺序排列?
    c:2
    b:3
    a:4
    e:5
    
    #按照排序的方式, 只会看到第一个字符,11的第一个字符是1,
    按照字符来排序确实比2小。
    #如果想要按照数字的方式进行排序, 需要使用 -n参数。
    [root@www ~]# sort -t ":" -n -k2 p.txt
    d:1
    c:2
    b:3
    a:4
    e:5
    f:11
    
    

    2.5.2 uniq命令

    如果文件中有多行完全相同的内容,当前是希望能删除重复的行,同时还可以统计出完全相同的行的出现总次数,那么就可以使用uniq命令解决(但是必须配合sort使用,先排序再去重)

    uniq [OPTION]... [INPUT [OUTPUT]]
    # 选项 : -c 计算重复的行
    
    #1.创建一个file.txt文件:
    [root@www ~]# cat file.txt
    abc
    123
    abc
    123
    #2.uniq需要和sort一起使用, 先使用sort排序, 让重复内容
    连续在一起
    [root@www ~]# sort file.txt
    123
    123
    abc
    abc
    #3.使用uniq去除相邻重复的行
    [root@www ~]# sort file.txt |uniq
    123
    abc
    #4.-c参数能统计出文件中每行内容重复的次数
    [root@www ~]# sort file.txt |uniq -c
       2 123
       2 abc
    #面试题: 请统计分析如下日志,打印出访问最高前10的IP
    

    2.5.3 cut命令

    cut OPTION... [FILE]...
    #选项: -d 指定分隔符 -f 数字,取第几列 -f3,6三列和6列
    # -c 按字符取(空格也算)
    #echo "Im xlw, is QQ 552408925" >file.txt  #过
    滤出文件里 xlw以及552408925
    #实现上述题目几种思路
    # cut -d " " -f2,5 file.txt
    # cut -d " " -f2,5 file.txt |sed 's#,##g'
    # sed 's#,# #g' file.txt | awk -F " " '{print
    $2 " " $5}'
    # awk '{print $2,$5}' file.txt |awk -F ',' '{print $1,$2}'
    # awk -F "[, ]" '{print $2,$6}' file.txt
    # awk -F '[, ]+' '{print $2,$5}' file.txt
    

    .2.5.4 wc命令

    wc [OPTION]... [FILE]...
    # 选项: -l显示文件行数 -c 显示文件字节 -w显示文件单词
    # wc -l /etc/fstab   #统计/etc/fstab文件有多少行
    # wc -l /etc/services  #统计/etc/services 文件行号
    
    
    #练习题: 过滤出/etc/passwd以nologin结尾的内容,并统计有多少行
    
    # 扩展统计文件行号的方法
    # grep -n ".*" /etc/services | tail -1
    # cat -n /etc/services | tail -1
    # awk '{print NR $0}' /etc/services | tail -1
    

    2.6 课堂练习题

    2.6.1 练习1

    • 分析如下日志,统计每个域名被访问的次数.*
    [root@student tmp]# cat web.log
    http://www.example.com/index.html
    http://www.example.com/1.html
    http://post.example.com/index.html
    http://mp3.example.com/index.html
    http://www.example.com/3.html
    http://post.example.com/2.html
    # awk -F '/' '{print $3}' web.log|sort -rn|uniq –c
    # cut -d / -f3 web.log|sort -rn|uniq –c
    

    2.6.2 练习2

    • 使用awk取出系统ip地址,使用多种方法实现
      • 1.我要取的值在哪里
      • 2.如何缩小取值范围(行)
      • 3.如何精确具体内容(列)

    2.6.4练习3

    • 将/etc/sysconfig/selinux文件中的SELINUX=enforcing替换成SELINUX=disabled

    2.6.3练习4

    • 将/etc/passwd文件中的第一行中的第一列和最后一列位置进行交换

    2.6.4练习5

    • 现在1-100个文件,需要保留75,76,78三个文件,其余全部删除(grep,awk,sed)

    03.文件扩展知识

    3.1 文件属性

    • 当我们使用 ls -l 列目录下所有文件时,通常会以长格式
      的方式显示,其实长格式显示就是我们 Windows 下看到的
      文件详细信息,我们将其称为文件属性,那整个文件的属
      性分为十列。
    [root@oldxu ~]# ls -l ks.cfg
    -rw-------. 1 root root 4434 May 30 13:58
    ks.cfg
    
    
    -rw-------. ①:第一个字符是文件类型,其他则是权限
    1      ②:硬链接次数
    root    ③:文件属于哪个用户
    root    ④:文件属于哪个组
    4434    ⑤:文件大小
    May30 13:58 ⑥⑦⑧:最新修改的时间与日期
    ks.cfg   ⑨:文件或目录名称
    

    3.2 文件类型

    • 通常我们使用颜色或者后缀名称来区分文件类型,但很多
      时候不是很准确; 后缀只是给人看的
    • 所以我们可以通过 ls -l 以长格式显示一个文件的属性,
      通过第一列的第一个字符来近一步的判断文件具体的类
      型。
    [root@oldxu ~]# ll -d /etc/hosts /tmp /bin/ls
    /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log
    /run/dmeventd-client
    -rwxr-xr-x.  1 root root 117656 Jun 30  2016
    /bin/ls
    srw-rw-rw-.  1 root root    0 Jan 20 10:35
    /dev/log
    brw-rw----.  1 root disk  8, 0 Jan 20 10:36
    /dev/sda
    crw--w----.  1 root tty   4, 1 Jan 20 10:36
    /dev/tty1
    lrwxrwxrwx.  1 root root   22 Jan 13 11:31
    /etc/grub2.cfg -> ../boot/grub2/grub.cfg
    -rw-r--r--.  1 root root   199 Jan 20 11:03
    /etc/hosts
    drwxrwxrwt. 61 root root  8192 Jan 21 13:01
    /tmp
    
    • 文件类型说明
      • - 普通文件(文本,二进制压缩,图片,日志等)
      • d 目录文件
      • b 设备文件(块设备)存储设备硬盘/dev/sda,/dev/sr0
      • c 设备文件(字符设备),终端/dev/tty1
      • s 套接字文件,进程与进程间的一种通信方式(socket插座)
      • l 链接文件
    • 但有些情况下,我们无法通过ls -l文件的类型,比如: 一个
      文件,它可能是普通文件、也可能是压缩文件、或者是命
      令文件等,那么此时就需要使用file来更加精准的判断这个
      文件的类型
    [root@oldxu ~]# file /etc/hosts
    /etc/hosts: ASCII text
    [root@oldxu ~]# file /bin/ls
    /bin/ls: ELF 64-bit LSB executable, x86-64,
    version 1 (SYSV), dynamically linked (uses
    shared libs), for GNU/Linux 2.6.32,
    BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3
    c982e06, stripped
    [root@oldxu ~]# file /dev/sda
    /dev/sda: block special
    [root@oldxu ~]# file /dev/tty1
    /dev/tty1: character special
    [root@oldxu ~]# file /etc/grub2.cfg
    /etc/grub2.cfg: broken symbolic link to
    `../boot/grub2/grub.cfg
    [root@oldxu ~]# file /home
    /home: directory
    
    • linux文件扩展名不代表任何含义,仅为了我们人能更好的识别该文件的类型

    3.3 链接文件

    3.3.1 Inode与Block

    • 文件有文件名与数据,在Linux上被分成两个部分:数据
      data 与文件元数据 metadata

      • 1.数据 data block ,数据块是用来记录文件真实内容
        的地方,我们将其称为 Block

      • 2.元数据 metadata ,用来记录文件大小、创建时间、
        所有者等信息,我们将其称为 Inode

      • 3.需要注意: Inode 不包含文件名称, inode 仅包含文
        件的元数据信息,具体来说有以下内容:

        • 文件的字节数
        • 文件的 User ID Group ID
        • 文件的读、写、执行权限
        • 文件的时间戳
        • 链接数,即有多少文件名指向这个 inode
        • 文件数据 block 的位置
      • 每个 inode 都是一个编号,操作系统是通过 Inode 来识
        别不同的文件。

        • 对于系统来说,文件名只是 inode 便于识别的别名,或者绰号。(便于我们人识别。)

        • 表面上,用户是通过文件名打开的文件,实际上系统内部这个过程分为如下三步:

          • 首先,系统找到这个文件名对应的 inode 编号
          • 其次,通过 inode 编号,获取 inode 信息
          • 最后,根据 inode 信息,找到文件数据所在的
            block ,读出数据。

    3.1.2 软连接

    • 什么是软连接:软链接相当于 Windows 的快捷方式;

    • 软链接实现原理:

      • 1、软链接文件会将 inode 指向源文件的 block
      • 2、当我们访问这个软链接文件时,其实访问的是源文
        件本身;
    • 软连接使用场景

      • 软件升级
      • 代码发布

    • 软链接场景实践
    #1.准备网站1.1版本代码
    [root@oldxu ~]# mkdir /data/rainbow-v1.1 -p
    [root@oldxu ~]# echo "123" > /data/rainbow-
    v1.1/index.html
    
    #2.创建软链接
    [root@oldxu ~]# ln -s /data/rainbow-v1.1/
    /data/rainbow
    [root@oldxu ~]# ll /data/
    drwxr-xr-x. 2 root root  6 3月  5 12:23 dir
    lrwxrwxrwx. 1 root root 19 3月  10 12:09 rainbow
    -> /data/rainbow-v1.1/
    drwxr-xr-x. 2 root root 24 3月  10 12:09
    rainbow-v1.1
    
    #3.检查网站程序
    [root@oldxu ~]# cat /data/rainbow/index.html
    123
    
    #4.新更新一个网站的程序代码
    [root@oldxu ~]# mkdir /data/rainbow-v1.2
    [root@oldxu ~]# echo "456" > /data/rainbow-
    v1.2/index.html
    
    #5.升级
    [root@oldxu ~]# rm -f /data/rainbow && ln -s
    /data/rainbow-v1.2/ /data/rainbow
    [root@oldxu ~]# cat /data/rainbow/index.html
    456
    
    #6.回退
    [root@oldxu ~]# rm -f /data/rainbow && ln -s
    /data/rainbow-v1.1/ /data/rainbow
    [root@oldxu ~]# cat /data/rainbow/index.html
    123
    

    3.1.3 硬链接

    • 硬链接类似于超时有多个门,无论丛哪个门进入,看到的
      内容都是一样的。不会影响进入超市

    • 回到系统中,我们对硬链接的解释: 不同的文件名指向同一
      个 inode ,简单的说就是指向同一个真实的数据源。

    • 硬链接与软链接区别

      • 1)ln命令创建硬链接,ln -s命令创建软链接
      • 2)目录不能创建硬链接,并且硬链接不可以跨越分区
        系统;
      • 3)软链接支持对目录创建,同时也支持跨越分区系
        统;
      • 4)硬链接文件与源文件的inode相同,软链接文件与源
        文件inode不同
      • 5)删除软链接文件,对源文件及硬链接文件无任何影
        响;
      • 6)删除文件的硬链接文件,对源文件及链接文件无任
        何影响;
      • 7)删除链接文件的源文件,对硬链接无影响,会导致
        软链接失效;
      • 8)删除源文件及其硬链接文件,整个文件会被真正的
        删除;

      3.4 文件时间[扩展]

      • linux 下文件有3个时间的,分别是 atime,mtime,ctime
    • 硬链接与软链接区别

      • 1)ln命令创建硬链接,ln -s命令创建软链接
      • 2)目录不能创建硬链接,并且硬链接不可以跨越分区
        系统;
      • 3)软链接支持对目录创建,同时也支持跨越分区系
        统;
      • 4)硬链接文件与源文件的inode相同,软链接文件与源
        文件inode不同
      • 5)删除软链接文件,对源文件及硬链接文件无任何影
        响;
      • 6)删除文件的硬链接文件,对源文件及链接文件无任
        何影响;
      • 7)删除链接文件的源文件,对硬链接无影响,会导致
        软链接失效;
      • 8)删除源文件及其硬链接文件,整个文件会被真正的
        删除;

      3.4 文件时间[扩展]

      • linux 下文件有3个时间的,分别是 atime,mtime,ctime
    • 硬链接与软链接区别

      • 1)ln命令创建硬链接,ln -s命令创建软链接
      • 2)目录不能创建硬链接,并且硬链接不可以跨越分区
        系统;
      • 3)软链接支持对目录创建,同时也支持跨越分区系
        统;
      • 4)硬链接文件与源文件的inode相同,软链接文件与源
        文件inode不同
      • 5)删除软链接文件,对源文件及硬链接文件无任何影
        响;
      • 6)删除文件的硬链接文件,对源文件及链接文件无任
        何影响;
      • 7)删除链接文件的源文件,对硬链接无影响,会导致
        软链接失效;
      • 8)删除源文件及其硬链接文件,整个文件会被真正的
        删除;

      3.4 文件时间[扩展]

      • linux 下文件有3个时间的,分别是 atime,mtime,ctime
        • atime 访问时间 文件中的数据最后被访问的时间
        • mtime 修改时间 文件内容被修改的最后时间
        • ctime 变化时间 文件的元数据发生变化。比如权限,所有者等

    3.4.1 环境准备

    • 通过 stat 来查看时间
    [root@oldxu ~]# mount -o remount,strictatime /
    [root@oldxu ~]# echo "hello boy" >> new_file
    [root@oldxu ~]# stat new_file
    File: 'new_file'
    Size: 10    Blocks: 8     IO
    Block: 4096  regular file
    Device: fd00h/64768d Inode: 34724341 
    Links: 1
    Access: (0644/-rw-r--r--) Uid: (   0/ 
    root)  Gid: (   0/  root)
    Access: 2021-07-07 16:24:02.320233640 +0800
    Modify: 2021-07-07 16:24:02.320233640 +0800
    Change: 2021-07-07 16:24:02.320233640 +0800
    Birth: -
    

    3.4.2 atime

    [root@oldxu ~]# cat new_file
    hello boy
    [root@oldxu ~]# stat new_file
    File: 'new_file'
    Size: 10    Blocks: 8     IO
    Block: 4096  regular file
    Device: fd00h/64768d Inode: 34724341 
    Links: 1
    Access: (0644/-rw-r--r--) Uid: (   0/ 
    root)  Gid: (   0/  root)
    Access: 2021-07-07 16:24:56.362408139 +0800  
    # 访问时间发生变化
    Modify: 2021-07-07 16:24:02.320233640 +0800
    Change: 2021-07-07 16:24:02.320233640 +0800
    Birth: -
    

    3.4.2 mtime

    # 写入数据
    [root@oldxu ~]# echo "Hello" >> new_file
    [root@oldxu ~]# stat new_file
    File: 'new_file'
    Size: 16    Blocks: 8     IO
    Block: 4096  regular file
    Device: fd00h/64768d Inode: 34724341 
    Links: 1
    Access: (0644/-rw-r--r--) Uid: (   0/ 
    root)  Gid: (   0/  root)
    Access: 2021-07-07 16:28:35.520036828 +0800
    Modify: 2021-07-07 16:32:36.806358744 +0800 # 内
    容被修改后,mtime会变化
    Change: 2021-07-07 16:32:36.806358744 +0800 # 变
    化
    Birth: -
    # ctime时间发生变化的原因是,内容变化了,innode所记录的
    大小也需要变化,所以时间发生了变化
    

    3.4.3 ctime

    # 修改文件属性
    [root@oldxu ~]# chown adm new_file
    [root@oldxu ~]# stat new_file
    File: 'new_file'
    Size: 16    Blocks: 8     IO
    Block: 4096  regular file
    Device: fd00h/64768d Inode: 34724341 
    Links: 1
    Access: (0644/-rw-r--r--) Uid: (   3/  
    adm)  Gid: (   0/  root)
    Access: 2021-07-07 16:28:35.520036828 +0800
    Modify: 2021-07-07 16:32:36.806358744 +0800
    Change: 2021-07-07 16:36:03.441728857 +0800 # 只
    有ctime变化
    

    本文来自博客园,作者:GaoBeier,转载请注明原文链接:https://www.cnblogs.com/gao0722/p/14992432.html

  • 相关阅读:
    树点涂色
    搜索+DP的一波小水题
    洛谷 P2194 HXY烧情侣
    洛谷 P3119 [USACO15JAN]草鉴定Grass Cownoisseur
    走楼梯升级版(9.8 模拟赛。。。xxy原创)
    洛谷 P2966 [USACO09DEC]牛收费路径Cow Toll Paths
    Tyvj P2207 上学路线route
    cogs 2342. [SCOI2007]kshort
    洛谷 P2740 [USACO4.2]草地排水Drainage Ditches
    洛谷 P1318 积水面积
  • 原文地址:https://www.cnblogs.com/gao0722/p/14992432.html
Copyright © 2011-2022 走看看