zoukankan      html  css  js  c++  java
  • Linux常用命令-文件管理

    Linux文件管理

      文件系统与目录结构

    • 文件和目录被组织成一个单根倒置树结构
    • 文件系统从根开始,用“/”表示
    • 文件名称区分大小写
    • 以.开通的文件为隐藏文件
    • 路径分隔符为 / 

      文件命名规则

    • 文件名最长255个字节
    • 包括路径在内文件名称最长4095个字节
    • 颜色表示
      • 蓝色 —>目录
      • 绿色—>可执行文件
      • 红色—>压缩文件
      • 蓝绿色—>链接文件
      • 灰色—>其他文件
      • 白色 普通的文件
    • 除了斜杠/和NULL,所有的字符都有效
    • 文件名称大小写敏感

      文件系统结构

    • /boot 引导文件存放目录,内核文件、引导加载器都存放在此目录
    • /bin 所有用户使用的基本命令,不能关联至独立分区,系统启动即会用到程序
    • /sbin 管理类的基本命令;不能关联至独立分区,系统启动即会用到程序
    • /lib 启动时程序以来的基本共享库以及内核模块文件
    • /lib64 专用于X86_64系统上的辅助共享库文件存放位置
    • /etc 配置文件目录
    • /home/USERNAME 普通用户家目录
    • /root 管理员的家目录
    • /media 便携式移动设备挂载点
    • /mnt 临时文件系统挂载点
    • /dev 设备文件及特殊文件存储位置
    • /opt 第三方应用程序的安装位置
    • /src 系统上允许的服务用到的数据
    • /tmp 临时文件存储位置
    • /usr 存放安装程序
    • /var 存放经常变化的文件,比如日志
    • /proc 用于输出内核与进程相关的虚拟文件系统
    • /sys 用于输出当前系统上硬件设备相关虚拟文件系统
    • /selinux selinux相关的安全策略等信息的存储位置

      linux上的应用程序组成部分

    • 二进制程序
      • /bin
      • /sbin
      • /usr/bin
      • /usr/sbin
      • /usr/local/bin
      • /usr/local/sbin
    • 库文件
      • /lib
      • /lib64
      • /usr/lib
      • /usr/lib64
      • /usr/local/lib
      • /usr/local/lib64
    • 配置文件
      • /etc
      • /etc/directory
      • /usr/local/etc
    • 帮助文件
      • /usr/share/man
      • /usr/share/doc
      • /usr/local/share/man
      • /usr/local/share/doc

      centos7 目录变化

    • /bin —>/usr/bin
    • /sbin —> /usr/sbin
    • /lib —>/usr/lib
    • /lib64 —> /usr/lib64

      相对和绝对路径

        相对路径

    • 以根开始
    • 完整的文件的位置路径
    • 可用于任何想指定一个文件名

       绝对路径

    • 不以根开始
    • 指定相对于当前工作工作目录或者某目录的位置
    • 可以作为简短的形式指定一个文件名
    • . 当前目录
    • .. 父目录

      获取文件名和文件目录

       basename

    [root@centos network-scripts]#basename /etc/sysconfig/network-scripts/ifcfg-eth0
    ifcfg-eth0
    [root@centos network-scripts]#dirname /etc/sysconfig/network-scripts/ifcfg-eth0
    /etc/sysconfig/network-scripts

      更改目录

      cd 改变目录 (change directory)

    使用绝对或者相对路径

    • cd /etc/sysconfig/network-script
    • cd ifcfg-eth0

    切换至父目录

    [root@centos network-scripts]#cd ..
    [root@centos sysconfig]#

    切换之当前用户主目录

    [root@centos sysconfig]#cd
    [root@centos ~]#

     切换至上一次的工作目录

    [root@centos ~]#cd -
    /etc/sysconfig

      显示当前工作目录

       pwd    (printing working directory)

    [root@localhost etc]#pwd
    /etc
    [root@localhost etc]#cd sysconfig/network-scripts/
    [root@localhost network-scripts]#pwd
    /etc/sysconfig/network-scripts

      列出目录内容

    列出当前目录或者指定目录的内容

    用法 ls [options] [files_or_dirs]

    ls -a 列出所有的文件,包括隐藏文件
    ls -l  使用较长格式列出信息
    ls -R 目录递归显示
    ls -d 显示目录本身 ls
    -ld 显示目录(本身)和符号链接信息 ls -1(数字1) 文件分行显示 ls -S 按从大到小排序
    ls -lSr 升序排序 ls
    -t 按创建时间排序 ls -r 倒序排序 ls -d */ 显示当前目录下的目录 ls -lh 按照人类易读方式显示 l. 显示当前目录下的目录 ls -u 配合-t选项,显示并按照atime从心到旧排序

      文件通配符

    • * 匹配零个或者多个字符
    • ?匹配任意单个字符
    • ~ 当前用户的家目录
    • [0-9] 匹配数字范围
    • [a-z] 字母(有坑)从a-z并且包括A-Y
    • [A-Z] 字母 (有坑)  从A-Z 并且包括b-z
    • [abcdef] 任意一个字符
    • a[^abcdef] 取反
    • [:digit:] 任意数字
    • [:lower:] 任意小写字母
    • [:upper:] 任意大写字母
    • [:alpha:] 任意字母
    • a-zA-Z 所有字母
    • [:alnum:] 任意数字或字母
    • a-zA-Z0-9 任意字母或者数字

      查看文件状态  stat

    [root@localhost etc]#stat a.txt
    File: ‘a.txt’
    Size: 5 Blocks: 8 IO Block: 4096 regular file
    Device: fd00h/64768d Inode: 17645672 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Context: unconfined_u:object_r:etc_t:s0
    Access: 2019-07-31 21:08:58.702394849 +0800
    Modify: 2019-07-31 21:09:40.923395591 +0800
    Change: 2019-07-31 21:09:40.923395591 +0800
    Birth: -


    [root@centos ~]#stat a.txt 文件:"a.txt" 大小:5 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:17645672 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:etc_t:s0 最近访问:2019-07-31 21:08:58.702394849 +0800 最近更改:2019-07-31 21:09:40.923395591 +0800 最近改动:2019-07-31 21:09:40.923395591 +0800 创建时间:- access time 访问时间,atime 读取文件内容 modify time 修改时间,mtime 改变文件内容 change time 改变时间 ctime 原数据发生改变  

      创建空文件和刷新时间

    touch

    • 格式 touch [OPTION]... FILE...
    • -a 仅改变atime 和ctime
    • -m 仅改变mtime和ctime

    如果文件存在的话,则修改时间
    如果不存在,则创建文件

      复制文件和文件夹

    Usage: cp [OPTION]... [-T] SOURCE(源文件) DEST(目标文件)
      or:  cp [OPTION]... SOURCE... DIRECTORY
      or:  cp [OPTION]... -t DIRECTORY SOURCE...
    • 如果source是一个文件的话

      • 如果目标不存在,新建一个目标文件,并将数据写入到目标文件里面

      • 如果目标文件存在

        • 如果目标文件是一个目录,直接在目标目标下面新建一个跟源文件同名的文件,并将数据目标文件写入到文件

        • 如果说目标文件是一个文件,直接就覆盖,为了安全起见,建议cp配合-i使用

    • 如果源文件是多个文件的话

      • 目标文件如果是文件的话,则直接报错

      • 如果目标文件是一个目录的话,则直接复制进目录

    • 如果源文件是目录的话

      • 如果目标不存在,则创建指定的目录,必须-r选项

      • 如果说目录存在

        • 如果目录是一个文件的话,则会报错

        • 如果目标是一个目录的话,则在目录下面创建一个新的同名目录,并把文件复制过去

      常用选项

    -i 覆盖前提示
    -n 不覆盖
    -f 强制
    -r -R 递归复制目录及内部的所有文件
    -a 归档
    -d 不复制源文件,只复制链接名
    -v 显示详细的步骤
    -b 目标存在,覆盖前先备份
    --backup=numbered 目标存在,覆盖前先备份加数字后缀
    -p 保留原来属性

      移动和重命名文件

    Usage: mv [OPTION]... [-T] SOURCE DEST
      or:  mv [OPTION]... SOURCE... DIRECTORY
      or:  mv [OPTION]... -t DIRECTORY SOURCE...
    -i  交互式
    -f  强制
    -b  覆盖前做备份
    -v 显示进度

      删除

    rm [OPTION]... FILE...
    -i 交互式
    -f 强制删除
    -r 递归删除
    rm -rf /* 慎用
    cd /
    rm -rf *

      目录操作

      • tree 显示目录树
    yum install -y tree
    tree name
    -L 控制显示的层数
    -b 只显示目录
      • mkdir 创建目录
    mkdir s21
    mkdir s21-{3..10}
    mkdir -p a/b/c/d
    mkdir -pv {s13,s14}/{ss11,ss12}/{sss11,sss12} 
    -p 递归创建
    -v 显示创建过程
    • rmdir 删除空目录
      • -p 递归删除父空目录
      • -v 显示详细信息
    • rm -r 递归删除目录树

      linux下的文件类型

    • - 普通文件
    • d 目录文件
    • b 块设备
    • c 字符设备
    • l 符号链接文件
    • p 管道文件pipe
    • s 套接字文件socket

     查看文件类型

      file

      链接

      硬链接

      • ln 源文件 目标文件

      • 源文件发生改变,目标会发生改变

      • 将硬盘的引用次数+1

      • 删除

        • 将磁盘上的引用次数-1

        • 源文件删除对目标不会受影响

      • 不能对目录做硬链接

      • 不能跨越分区

      软链接

      • 相当于windows的快捷方式

      • ln -s 可以生成软链接

      • 链接大小就是制定的源文件的字符数

      • 源文件发生改变,目标会发生改变

      • 删除

        • 源文件删除目标会收影响

      • 可以对目录做软链接

      • 可以跨域分区

  • 相关阅读:
    file类和io流
    数组元素的填充与替换、排序和复制
    foreach遍历数组、数组的转置与方阵的迹
    Java小故事(一)
    java杨辉三角和空心菱形(二维数组篇)
    JAVA修饰符、关键字和继承(一)
    JAVA面向对象和类
    JAVA小程序-----买衣服
    JAVA流程控制
    Java包、类、数据类型、表达式和标识符
  • 原文地址:https://www.cnblogs.com/Xiao_Xu/p/11278964.html
Copyright © 2011-2022 走看看