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 可以生成软链接

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

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

    • 删除

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

    • 可以对目录做软链接

    • 可以跨域分区

原文地址:https://www.cnblogs.com/Xiao_Xu/p/11278964.html