zoukankan      html  css  js  c++  java
  • Linux目录结构&文件管理

    Windows: 以多根的方式组织文件 C: D: E:
    Linux: 以单根的方式组织文件 /

    /目录结构: FSH (Filesystem Hierarchy Standard)

      1 [root@admin ~]# ls /
      2 bin     dev   lib          media  net   root     srv  usr
      3 boot    etc   lib64       misc   opt   sbin     sys  var
      4 cgroup  home  lost+found  mnt    proc  selinux  tmp

    注:下图为Centos7目录结构

    1210730-20180826202113774-1466136100


      1 bin            普通用户使用的命令 /bin/ls, /bin/date
      2 sbin           管理员使用的命令 /sbin/service
      3 dev            设备文件 /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero,/dev/null, /dev/random
      4 root            root用户的HOME
      5 home            存储普通用户家目录
      6 lost+found      fsck修复时,存储没有链接的文件或目录
      7 proc            虚拟的文件系统,反映出来的是内核,进程信息或实时状态


      1 usr               系统文件,相当于C:Windows
      2                      /usr/local     软件安装的目录,相当于C:Program
      3                      /usr/bin      普通用户使用的应用程序
      4                      /usr/sbin     管理员使用的应用程序
      5                      /usr/lib      库文件Glibc
      6                      /usr/lib64   库文件Glibc
      7 
      1 boot                存放的系统启动相关的文件,例如kernel,grub(引导装载程序)
      2 etc                  配置文件(系统相关如网络/etc/sysconfig/network,应用相关配置文件如/etc/ssh/sshd_config...)
      3 lib              库文件Glibc
      4 lib64            库文件Glibc
      5 tmp                临时文件(全局可写:进程产生的临时文件)
      6 var                存放的是一些变化文件,比如数据库,日志,邮件....
      7                     mysql:              /var/lib/mysql
      8                     vsftpd:            /var/ftp
      9                     mail:                /var/spool/mail
     10                     cron:                /var/spool/cron
     11                     log:                /var/log
     12                     临时文件:     /var/tmp(进程产生的临时文件)
    ==设备(主要指存储设备)挂载目录==
        media         移动设备默认的挂载点
        mnt           手工挂载设备的挂载点
        misc          automount进程挂载
        net           automount进程挂载
    命令存储位置:
      1 /bin              普通用户使用的命令 /bin/ls, /bin/date           RHEL7淘汰
      2 /sbin             管理员使用的命令                                RHEL7淘汰
      3 /usr/bin          普通用户使用的应用程序
      4 /usr/sbin         管理员使用的应用程序
    库文件存储位置:
      1 /lib      库文件Glibc RHEL7淘汰
      2 /lib64      库文件Glibc RHEL7淘汰
      3 /usr/lib   库文件Glibc
      4 /usr/lib64   库文件Glibc


    文件时间

    ls -l 文件名 仅看的是文件的修改时间

      Linux文件有四种时间:

    # stat anaconda-ks.cfg //查看文件的详细属性(其中包括文件时间属性)
    访问时间:atime, 查看内容 //RHEL6会延后修改atime
    修改时间:mtime,修改内容
    改变时间:ctime, 文件属性,比如权限
    删除时间:dtime, 文件被删除的时间

      1 [root@root ~]# ls -l install.log
      2 -rw-r--r-- 1 root root 34793 08-23 13:49 install.log
      1 [root@root ~]# stat install.log
      2   File: “install.log”
      3   Size: 34793           Blocks: 80         IO Block: 4096   一般文件
      4 Device: 802h/2050d      Inode: 65282       Links: 1
      5 Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      6 Access: 2020-08-23 16:53:20.000000000 +0800
      7 Modify: 2020-08-23 13:49:46.000000000 +0800
      8 Change: 2020-08-23 13:49:52.000000000 +0800

       注:RHEL6开始relatime,atime延迟修改,必须满足其中一个条件:
            1. 自上次atime修改后,已达到86400秒;
            2. 发生写操作时;

    文件类型:

          通过颜色判断文件的类型是不一定正确的!!!
          Linux系统中文件是没有扩展名!!!

    方法一:
    ls   -l 文件名    //看第一个字符
    -    普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
    d    目录文件(蓝色)
    b    设备文件(块设备)存储设备硬盘,U盘 /dev/sda, /dev/sda1
    c    设备文件(字符设备)打印机,终端 /dev/tty1
    s    套接字文件
    p    管道文件
    l    链接文件(淡蓝色)
      1 [root@root ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
      2 -rwxr-xr-x.  1 root root 117616 Nov 20  2015 /bin/ls
      3 srw-rw-rw-   1 root root      0 Mar 14  2017 /dev/log
      4 brw-rw----   1 root disk   8, 0 Mar 14 09:03 /dev/sda
      5 crw--w----   1 root tty    4, 1 Mar 14 09:03 /dev/tty1
      6 lrwxrwxrwx.  1 root root     22 Dec 21 01:40 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
      7 -rw-r--r--   1 root root    392 Feb 22 15:51 /etc/hosts
      8 drwxr-xr-x. 10 root root   4096 Mar 14 11:00 /home
    方法二:file
      1 [root@localhost ~]# file /etc/hosts
      2 /etc/hosts: ASCII text
      3 
      4 [root@localhost ~]# file /bin/ls
      5 /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]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
      6 
      7 [root@localhost ~]# file /dev/sda
      8 /dev/sda: block special
      9 
     10 [root@localhost ~]# file /dev/tty1
     11 /dev/tty1: character special
     12 
     13 [root@localhost ~]# file /etc/grub2.cfg
     14 /etc/grub2.cfg: broken symbolic link to `../boot/grub2/grub.cfg'
     15 
     16 [root@localhost ~]# file /home
     17 /home: directory
     18 
     19 [root@localhost ~]# file /run/dmeventd-client
     20 /run/dmeventd-client: fifo (named pipe)

    路径 (定位文件)


            /home/alice/file1 和 /home/bob/file1 不是同一文件!!!
           /abc/file5 和 abc/file5 有可能是不一样的!!!

           绝对路径: 从/开始的路径 /home/alice/file1
           相对路径: 相对于当前目录开始 a.txt ./a.txt ../bob/b.txt [假如:此时在目录/home/alice]

    文件管理

          cd 改变目录
      1 cd                  绝对路径    cd /home/alice     cd ~alice
      2 cd                  相对路径    cd Desktop/abc    cd ..   cd .
    

    cd 专用:
    cd -                  返回上次目录   
    cd                      直接回家

    文件管理之:创建/复制/移动/删除
    创建
      1 文件 touch
      2 # touch file1.txt                             //无则创建,有则修改时间
      3 # touch file3 file4
      4 # touch /home/file10.txt
      5 # touch /home/file5 file6
      6 # touch /home/{zhuzhu,gougou}
      7 # touch file{1..20}
      8 # touch file{a..c}
      9 # touch yang{a,b,c}                      //{}集合,等价touch yanga yangb yangc
     10 
     11 目录 mkdir
     12 # mkdir dir1
     13 # mkdir /home/dir2 /home/dir3
     14 # mkdir /home/{dir4,dir5}
     15 # mkdir -v /home/{dir6,dir7}
     16 # mkdir -v /hoem/dir8/111/22
     17 # mkdir -pv /hoem/dir8/111/222    //包括其父母的创建,不会有任何消息输出
     18 # mkdir -pv /home/{yang/{dir1,111},tianyun}
    复制 cp
      1 Usage: cp [OPTION]... [-T] SOURCE DEST
      2 # cd
      3 # mkdir /home/dir{1,2}
      4 # cp -v install.log /home/dir1
      5 # cp -v install.log /home/dir1/yang.txt
      6 # cp -rv /etc /home/dir1
      7 # cp -v install.log /home/dir90       //没有/home/dir90
      8 # cp -v install.log /home/dir2
      9 # cp -v anaconda-ks.cfg !$
     10 # cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /home/dir2            //将多个文件拷贝到同一个目录
     11 # cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts .
     12 # cp -r /etc /tmp
     13 # cp -rf /etc /tmp
     14 # cp -r /etc /tmp
      1 [root@localhost ~]#  type -a cp
      2 cp is aliased to `cp -i'
      3 cp is /bin/cp
      4 
      5 [root@localhost ~]#  cp -rv /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth0.bak}
      6 [root@localhost ~]#  cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0{,-org}
      7 [root@localhost ~]#  cp -rv /etc/sysconfig/network-scripts/{ifcfg-eth0,yang-eth0}
    移动 mv
      1 Usage: mv [OPTION]... [-T] SOURCE DEST
      2 # mv file1 /home/dir3               将file2移动到/home/dir3
      3 # mv file2 /home/dir3/file20      将file2移动到/home/dir3,并改名为file20
      4 # mv file4 file5                          将file4重命名为file5,当前位置的移动就是重命名
    删除 rm
      1 示例1:删除/home/dir1
      2 # cd /home
      3 # rm -rf dir1
      4 -r 递归
      5 -f force强制
      6 -v 详细过程
      7 
      8 示例2:
      9 [root@localhost~]# mkdir /home/dir10
     10 [root@localhost~]# touch /home/dir10/{file2,file3,.file4}
     11 [root@localhost~]# rm -rf /home/dir10/*                                    //不包括隐藏文件
     12 [root@localhost~]# ls /home/dir10/ -a
     13 .  ..  .file4
     14 
     15 示例3:
     16 [root@localhost~]# rm -rf file*
     17 [root@localhost~]# rm -rf *.pdf
    文件管理之:查看文件内容
      1 ==文本文件 (cat tac less more head tail tailf grep ...)
      2 /bin/date
      3 /etc/hosts
      4 /etc/sysconfig/network
      5 /etc/sysconfig/network-scripts/ifcfg-eth0
      6 /etc/passwd
      7 /etc/shadow
      8 /etc/group
      9 /etc/grub2.cfg
     10 /etc/resolv.conf
     11 /etc/profile                            //设置系统环境变量
     12 /etc/bashrc                           //影响bash shell环境
     13 /var/log/messages                   //系统主日志文件
      1 cat
      2 -n  显示行号
      3 -A  包括控制字符(换行符/制表符)
      4      linux $
      5      Windows ^M$
      6 
      7 less  more head  tail  tailf
      8 [root@localhost~]# head  /etc/passwd
      9 [root@localhost~]# head -2 /etc/passwd
     10 [root@localhost~]# tail /etc/passwd
     11 [root@localhost~]# tail -1 /etc/passwd
     12 [root@localhost~]# tail /var/log/messages
     13 [root@localhost~]# tail -20 /var/log/messages
     14 [root@localhost~]# tail -f /var/log/secure              //-f 动态查看文件的尾部
     15 [root@localhost~]# tail -F /var/log/secure              //-F 动态查看文件的尾部
     16 注:vim, gedit编辑文件时,索引号会改变
     17 
     18 grep 针对文件内容进行过滤
     19 # grep 'root' /etc/passwd
     20 # grep '^root' /etc/passwd
     21 # grep 'bash$' /etc/passwd
     22 # grep 'failure' /var/log/secure


    文件管理之:修改文件内容

    [root@localhost~]# ll -a > list.txt
    文件编辑器 gedit
    文件编辑器 vi, vim, nano


      1 命令模式:
      2     a. 光标定位
      3         hjkl
      4         0 $
      5         gg G
      6         3G      进入第三行
      7         /string (n N 可以循环的)  快速定位到某一行
      8         /^d
      9         /txt$
     10 
     11     b. 文本编辑(少量)
     12         y        复制  yy 3yy ygg  yG         (以行为单位)
     13         d        删除 dd 3dd dgg  dG           (以行为单位)
     14         p        粘贴
     15         x        删除光标所在的字符
     16         D        从光标处删除到行尾
     17         u        undo撤销
     18         ^r       redo重做
     19         r        可以用来修改一个字符
     20 
     21     c. 进入其它模式
     22         a        进入插入模式
     23         i        进入插入模式
     24         o        进入插入模式
     25         A        进入插入模式
     26 
     27         :        进入末行模式(扩展命令模式)
     28         v        进入可视模式
     29         ^v       进入可视块模式
     30         V        进入可视行模式
     31         R        进入替换模式
     32 
     33 
     34 插入模式:
     35 
     36 
     37 可视块模式:
     38         块插入(在指定块前加入字符):  选择块,I   在块前插入字符, ESC
     39         块替换:                                       选择块,r   输入替换的字符
     40         块删除:                                       选择块,d | x
     41         块复制:                                       选择块,y
     42 
     43 扩展命令模式:
     44     a. 保存退出
     45         :10     进入第10行
     46         :w      保存
     47         :q      退出
     48         :wq     保存并退出
     49         :w!     强制保存
     50         :q!     不保存并退出
     51         :wq!    强制保存退出
     52         :x      保存并退出   ZZ
     53 
     54 
     55     b. 查找替换
     56         :范围 s/old/new/选项
     57         :1,5 s/root/yang/                     从1-5行的root 替换为yang
     58         :5,$ s/root/yang/                     $表示最后一行
     59         :1,$ s/root/yang/g                    =     :% s/root/yang/g    %表示全文  g表示全局
     60         :% s#/dev/sda#/var/ccc#g
     61         :,8 s/root/yang/                      从当前行到第8行
     62         :4,9 s/^#//                           4-9行的开头#替换为空
     63         :5,10 s/.*/#&/                        5-10前加入#字符  (.*整行   &引用查找的内容)
     64 
     65     c. 读入文件/写文件(另存为)
     66         :w                                    存储到当前文件
     67         :w /tmp/aaa.txt                       另存为/tmp/aaa.txt
     68         :1,3 w /tmp/2.txt
     69         :r /etc/hosts                         读入文件到当前行后
     70         :5 r /etc/hosts                       读入文件到第5行后
     71 
     72     d. 设置环境
     73         临时设置:
     74         :set nu                                设置行号
     75         :set ic                                不区分大小写
     76         :set ai                                自动缩进
     77         :set list                              显示控制字符
     78         :set nonu                              取消设置行号
     79         :set noic
     80 
     81        永久的环境:
     82        /etc/vimrc                             影响所有系统用户
     83        ~/.vimrc                               影响某一个用户
     84 
     85         # vim ~/.vimrc
     86         set ic
     87         set nu



    归类: Linux 学习

  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/lz1996/p/13669011.html
Copyright © 2011-2022 走看看