zoukankan      html  css  js  c++  java
  • 🍖Linux文件管理

    引入

    1.Windows与Linux目录结构对比

    • Windows: 以多根的形式组织文件: C:, D:, E:, F:\ ...

    • Linux: 以单根的形式组织文件: /

    2.路径

    • 绝对路径: 完整的路径(从根开始)
    • 相对路径: 不完整的路径(从当前目录开始找)

    例子:

    假设你所处的位置是:地球-->中国-->上海-->青浦区-->华徐公路-->e通世界园-->一间办公室
    那么一个外星人想要找到你,就需要按照上面的路径去寻找你---->绝对路径
    如果一个人他就在华徐公路,那么他就可以直接从华徐公路开始找---->相对路径
    

    3.文件处理

    • 重要思想: 一切皆文件

    • 文件的创建, 复制, 移动, 删除

    • vim文件编辑器常用方法

    一.系统目录介绍

    • 目录就是文件夹--->存放的是具体哪些文件
    • 文件存放的是具体的数据

    1.存放命令相关的目录

    • /bin: 存放普通用户使用的命令, /bin/ls, /bin/date

    • /sbin: 存放管理员使用的命令 , /sbin/useradd(创建用户)

    2.''~''家目录

    • /home: 普通用户的家目录, 默认为 /home/[用户名]
    • /root: 超级管理员的家目录, 普通用户是无法操作的
    • "~": 代表的就是当前用户的家目录

    3.系统文件目录

    • /usr: 相当于C:\Windows
    • /usr/local: 软件安装的目录, 相当于C:\Program
    • /usr/bin: 普通用户使用的应用程序
    • /usr/sbin: 管理员用户使用的应用程序
    • /usr/lib: 库文件 Glibc 32bit
    • /usr/lib64: 库文件 Glibc 64bit

    4.启动目录

    • /boot: 存放启动相关的文件, (kernel, grub)引导装载程序

    5.配置文件目录

    • /etc: 比较重要的目录, 后续所有服务的配置文件都存放在这
    • /etc/hostname: 主机名的配置文件
    • /etc/sysconfig/network-scripts/ifcfg-[网卡名]: 网卡的配置文件
    • /etc/resolv.conf: 指定远程的DNS地址配置文件
    • /etc/hosts: 本机的域名解析文件
    与网络参数优化相关的文件都在该目录下:
    #cd /proc/sys/net/ipv4
    

    6.设备目录文件

    • /dev: 存放设备文件 (硬盘, 硬盘分区, 光驱等)

    • /dev/sr0: 光驱设备名称:The first SCSI ROM

    • /dev/cdrom: 光盘设备: 光盘里存放的内容都在这里

      就比如我们的 VMware 安装 Linux 时是选择最小化安装
      但是完整的配置文件或者许多软件包都还在光盘里面
      以后用来为我们的操作系统补充包--->加油站一样
      
    • /dev/null: 黑洞文件, 只进不出, 把不想要显示的内容丢入黑洞(比如执行一条命令的结果是不想要的/不需要的)

    /dev/null文件使用

    • /dev/random: 生成随机数的设备
    • /dev/zero: 可以源源不断的生成数据, 就像取款机, 随时随地取钱
    • /dev/pts: 虚拟的Bash Shell终端, 提供远程用户使用, 0 代表第一个终端, 1 代表第二个终端, 以此类推

    • /dev/stderr: 标准错误输出
    • /dev/stdin: 标准输入
    • /dev/stdout: 标准输出

    7.挂载目录 (主要指存储设备)

    • /mnt: 手工挂载设备的挂载点
    • /opt: 早期第三方软件存放的目录
    • /media: 移动设备的默认挂载点

    8.临时目录和可变目录

    • /var: 存放一些变化的文件(数据, 日志, 邮件), 比如/var/log下的日志文件

    随便查看一个日志的前4行内容:

    变化文件如下:

    mysql:        /var/lib/mysql
    vsftpd:       /var/ftp
    mail:         /var/spool/mail
    cron:         /var/spool/cron
    log:          /var/log   #系统日志文件存放目录
    	      /var/tmp   #临时文件(主要是程序产生的临时文件)
    
    • /tmp: 系统临时目录(像公共厕所)
    系统会定时的删除该目录下长时间没有访问的文件
    
    • /var/tmp: 进程产生的临时文件

    二.路径

    1.绝对路径 : 路径是从根("/")开始

    • Linux系统: /a/b/c/d/e.txt
    • Windows系统 : C:\a\b\c\d\e.txt

    2.相对路径 : 路径是相对于当前路径开始的

    • Linux系统: b/c/d/e.txt
    • Windows系统: b\c\d\e.txt

    3.每一个目录下都有一个 ... 这两个目录

    • .: 一个点代表的是当前的目录
    • ..: 两个点代表的是上一级目录

    三.文件管理基础命令

    1.切换目录 : cd

    # cd 绝对路径 cd /etc/hostname
    # cd 相对路径 cd test/abc
    
    # cd        #切换目录,例: cd /etc
    # cd -      #切换回上一次所在的目录
    # cd ~      #切换回当前用户的家目录
    # cd .      #代表当前目录, 没有效果
    # cd ..     #切换回当前目录的上级目录
    

    2.查看当前目录 : pwd

    # pwd       #查看当前所在的文件夹
    

    3.ls

    # ls -l [文件]      #查看的文件夹下的子文件与子文件夹的列表信息
    # ls -dl [文件夹]   #查看指定的文件夹的列表信息
    # ls -a [文件夹]    #查看包括隐藏文件在内的所有文件
    
    • 文件类型

    使用 "ls -l" 显示出来的文件:
    以 "-" 开头: 可以是普通文件(文本, 二进制, 压缩包, 图片, 日志等), "ls" 就是一个二进制文件
    以 "d" 开头: 是一个目录或者文件夹
    以 "l" 开头: 是一个软连接
    
    -rwxr-xr-x. 1 root root 117680 10月 31 2018 /bin/ls
    -: 文件类型
    rwx: 属主--->root
    -xr: 属组--->root
    r-x: 其他
    . : 在加载了selinux情况下创建的文件
    1 : 硬链接数
    

    ps: Linux系统不是以文件的后缀名来区分文件类型的,而是以 ls -l 的首位来区分

    4.查看目录树tree

    需要先安装tree命令,执行yum install tree y
    # tree -a [目录]      #显示所有文件,包括隐藏文件
    # tree -d [目录]       #只显示子目录,不显示文件
    # tree -L 1 [目录]    #-L遍历目录下的最大层数,-L后应该是大于0的正整数, 正整数就是最大层
    # tree -F [目录]      # -F在条目后加上文件类型的指示符号
    		      #例如会在显示出的目录后面加上左斜杠/
    

    5.文件创建touch

    # touch file                    #无则创建,有则修改时间
    # touch file2 file3		#同时创建2,3这两个文件
    # touch /home/od/file4 file5    #使用了绝对路径创建
    # touch file{a,b,c}.txt         #{}集合,等价 touch a.txt b.txt c.txt
    # touch file{1..10}		#创建了 1~10 个文件
    # touch file{a..z}		# a~z 个文件
    

    6.目录创建mkdir

    常用选项:-v 显示详细信息  -p 递归创建目录
    # mkdir [目录名]
    # mkdir /home/shawn/dir1 /home/shawn/dir2
    # mkdir -v /home/shawn/{aaa,bbb}           #会显示创建信息
    # mkdir -pv /home/ooo/iii/{ccc,ddd}	   #没有的目录会递归创建
    

    7.复制文件cp

    常用选项: 	-v: 详细显示命令执行的操作 
    		-r: 递归处理目录与子目录 		
    		-a: 保留源文件或目录的属性
                    -f: 强制复制
    
    # cp [源文件] [目标文件]
    # cp name /tmp/name                     #不修改名称
    # cp file /tmp/                         #不修改名称
    # cp -a file /tmp/file_p                #-a保持原文件或目录的所有属性
    # cp -r  /etc/ /tmp/                    #复制目录需要使用-r参数, 递归复制
    # cp -rv /etc/hosts /etc/hostname /tmp  #拷贝多个文件至一个目录
    # cp -rf ...
    

    ⛅"-f" 参数是强制复制
          条件是:1.源文件在目标目录中有同名的文件
                2.用户对目标文件只有读的权限
                3.对目标文件所在的目录具有写和执行的权限
                4.然后就会先删除目标文件,在把源文件复制进去
    ⛅比如你在 "b" 文件夹里面有个文件名叫 "1.txt"
    ⛅然后你把 "c" 文件夹里面的另一个文件名叫 "1.txt" 的复制到 "b" 里面
    ⛅这个时候会照成冲突,然后会提示你要不要继续复制.加上 "-f" 就不会提示你了
    
    如果还是会提醒是因为:
    有的系统在安装的时候,"cp - i"的 alias 就是 cp
    也就是说你在执行cp的时候,其实是执行的cp -i
    取消掉cp的alias就好了:
        可以使用:"unalias"取消
        "\cp"取消
        或者直接使用命令"cp"的绝对路径执行
    

    8.移动或重命名mv

    # mv [源文件] [目标文件]         
    # mv file1 file2               #在当前位置移动就是重命名,将file1命名成file2
    # mv file1 /home               #将 file1 移动到 "/home" 中
    # mv a1 a2 a3 /home            #将多个文件移动到 "/home" 中
    # mv /root/dir1 ./             #将 "/root" 下的 "dir1" 目录移到当前目录下
    # mv dir/ dir2/ dir3/ /root    #将多个目录移动到 "/root" 下
    

    9.删除rm

    常用选项: -r :递归,   -f :force强制,    -v :详细过程
    # rm -rf [任何文件或目录]
    

    四.查看文件内容(文本文件)

    1.查看cat

    # cat 1.txt      #正常查看文件方式
    # cat -n 1.txt   #-n显示文件有多少行
    # cat -A 1.txt   #查看文件的特殊符号,比如文件中存在$
    # tac 1.txt      #倒序查看文件
    

    2.从头部head和从尾部tail查看

    从头部 "head"
    # head 1.txt		#默认查看 10 行
    # head -2 1.txt         #查看前两行(可以自定义)
    
    从尾部 "tail"
    # tail 1.txt            #默认从尾部查看 10 行
    # tail -2 1.txt         #查看尾部两行(可以自定义)
    
    # tail -f 1.txt       #动态查看文件的尾部
      # tailf 1.txt          #效果与上面一样
    

    3.翻页查看moreless

    # less 1.txt        #使用光标上下翻动,空格进行翻页,q退出
    # more 1.txt        #使用回车上下翻动,空格进行翻页,q退出
    # most +40 1.txt    #从第40 行开始查看
    

    4.过滤文件内容grep

    # grep 'song' 1.txt       #匹配有 "song" 的行
    # grep '^shawn' 1.txt     #匹配以 "shawn" 开头的行
    # grep 'xing$' 1.txt      #匹配以 "xing" 结尾的行
    # grep -i 'xing' 1.txt    #不分大小写的匹配有 "xing" 的行
    

  • 相关阅读:
    Java判断字符串是否包含数字
    char 与 String 之间的转换
    hive与hbase整合方式和优劣
    曾经的你-许巍
    Hbase表重命名 表改名
    Eclipse 快键键(持续更新)
    Linux 查看一个端口的连接数
    hbase性能调优(转载)
    Hbase优化记录
    记录下Linux难记实用的命令
  • 原文地址:https://www.cnblogs.com/songhaixing/p/13855128.html
Copyright © 2011-2022 走看看