Linux文件管理基础

一、列出目录内容

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

  • 用法:ls [options] [ files_or_dirs ]

    ls -a 包含隐藏文件

    ls -l 显示额外的信息

    ls -R 目录递归通过

    ls -ld 目录和符号链接信息

    ls -1 文件分行显示

    ls –S 按从大到小排序

    ls –t 按mtime排序

    ls –u 配合-t选项,显示并按atime从新到旧排序

    ls –U 按目录存放顺序显示

    ls –X 按文件后缀排序

示例:

1[root@centos7 ~]# touch Desktop/young //在Desktop文件夹下创建一个新的空文件 2[root@centos7 ~]# ls -R //目录递归显示 3.: 4anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates who.out 5Desktop Downloads Music Public Videos 6 7./Desktop: 8young 9 10./Documents: 11 12./Downloads: 13 14./Music: 15 16./Pictures: 17 18./Public: 19 20./Templates: 21 22./Videos: 23[root@centos7 ~]# 24[root@centos7 ~]# ls -l Desktop //显示的是Desktop目录下的文件的属性 25total 0 26-rw-r--r--. 1 root root 0 Mar 10 21:29 young 27[root@centos7 ~]# ls -ld Desktop //显示Desktop本身的属性 28drwxr-xr-x. 2 root root 19 Mar 10 21:29 Desktop 29[root@centos7 ~]# ls -Sl //按从大到小排序 30total 12 31-rw-r--r--. 1 root root 1953 Mar 6 21:24 initial-setup-ks.cfg 32-rw-------. 1 root root 1922 Mar 6 20:08 anaconda-ks.cfg 33-rw-r--r--. 1 root root 250 Mar 9 10:46 who.out 34drwxr-xr-x. 2 root root 19 Mar 10 21:29 Desktop 35drwxr-xr-x. 2 root root 6 Mar 6 22:34 Documents 36drwxr-xr-x. 2 root root 6 Mar 6 22:34 Downloads 37drwxr-xr-x. 2 root root 6 Mar 6 22:34 Music 38drwxr-xr-x. 2 root root 6 Mar 6 22:34 Pictures 39drwxr-xr-x. 2 root root 6 Mar 6 22:34 Public 40drwxr-xr-x. 2 root root 6 Mar 6 22:34 Templates 41drwxr-xr-x. 2 root root 6 Mar 6 22:34 Videos 42[root@centos7 ~]# ll -S //与上面命令作用相同 43total 12 44-rw-r--r--. 1 root root 1953 Mar 6 21:24 initial-setup-ks.cfg 45-rw-------. 1 root root 1922 Mar 6 20:08 anaconda-ks.cfg 46-rw-r--r--. 1 root root 250 Mar 9 10:46 who.out 47drwxr-xr-x. 2 root root 19 Mar 10 21:29 Desktop 48drwxr-xr-x. 2 root root 6 Mar 6 22:34 Documents 49drwxr-xr-x. 2 root root 6 Mar 6 22:34 Downloads 50drwxr-xr-x. 2 root root 6 Mar 6 22:34 Music 51drwxr-xr-x. 2 root root 6 Mar 6 22:34 Pictures 52drwxr-xr-x. 2 root root 6 Mar 6 22:34 Public 53drwxr-xr-x. 2 root root 6 Mar 6 22:34 Templates 54drwxr-xr-x. 2 root root 6 Mar 6 22:34 Videos 55[root@centos7 ~]# ls -1 56anaconda-ks.cfg 57Desktop 58Documents 59Downloads 60initial-setup-ks.cfg 61Music 62Pictures 63Public 64Templates 65Videos 66who.out

二、查看文件状态

stat

  • 文件:metadata, data 3个时间戳:
  • access time:访问时间,atime,读取文件内容
  • modify time: 修改时间, mtime,改变文件内容(数据)
  • change time: 改变时间, ctime,元数据发生改变

示例:

1[root@centos7 ~]# chown young Music //改变Music文件夹的所有者,用chown命令 2[root@centos7 ~]# ll 3total 12 4-rw-------. 1 root root 1922 Mar 6 20:08 anaconda-ks.cfg 5drwxr-xr-x. 2 root root 19 Mar 10 21:29 Desktop 6drwxr-xr-x. 2 root root 6 Mar 6 22:34 Documents 7drwxr-xr-x. 2 root root 6 Mar 6 22:34 Downloads 8-rw-r--r--. 1 root root 1953 Mar 6 21:24 initial-setup-ks.cfg 9drwxr-xr-x. 2 young root 6 Mar 6 22:34 Music 10drwxr-xr-x. 2 root root 6 Mar 6 22:34 Pictures 11drwxr-xr-x. 2 root root 6 Mar 6 22:34 Public 12drwxr-xr-x. 2 root root 6 Mar 6 22:34 Templates 13drwxr-xr-x. 2 root root 6 Mar 6 22:34 Videos 14-rw-r--r--. 1 root root 250 Mar 9 10:46 who.out 15[root@centos7 ~]# ll --time=ctime //查看元数据改变时间 16total 12 17-rw-------. 1 root root 1922 Mar 6 20:08 anaconda-ks.cfg 18drwxr-xr-x. 2 root root 19 Mar 10 21:29 Desktop 19drwxr-xr-x. 2 root root 6 Mar 6 22:34 Documents 20drwxr-xr-x. 2 root root 6 Mar 6 22:34 Downloads 21-rw-r--r--. 1 root root 1953 Mar 6 21:24 initial-setup-ks.cfg 22drwxr-xr-x. 2 young root 6 Mar 10 21:44 Music #时间与上面的时间不一样了 23drwxr-xr-x. 2 root root 6 Mar 6 22:34 Pictures 24drwxr-xr-x. 2 root root 6 Mar 6 22:34 Public 25drwxr-xr-x. 2 root root 6 Mar 6 22:34 Templates 26drwxr-xr-x. 2 root root 6 Mar 6 22:34 Videos 27-rw-r--r--. 1 root root 250 Mar 9 10:46 who.out 28[root@centos7 ~]# stat Music /三个时间状态一起查看 29 File: ‘Music’ 30 Size: 6 Blocks: 0 IO Block: 4096 directory 31Device: 802h/2050d Inode: 35968019 Links: 2 32Access: (0755/drwxr-xr-x) Uid: ( 1000/ young) Gid: ( 0/ root) 33Context: unconfined_u:object_r:admin_home_t:s0 34Access: 2018-03-10 21:45:31.568590791 +0800 35Modify: 2018-03-06 22:34:44.021897018 +0800 36Change: 2018-03-10 21:44:29.518592258 +0800 37 Birth: -

PS:在网页端上关掉用户的atime-读取时间操作会大大提升服务器的性能

三、文件通配符

   当在使用命令行时,有很多时间都用来查找你所需要的文件,如 ls,find等。shell提供了一系列完整的字符串模式匹配规则,或者称之为元字符,当shell遇到上述字符时,就会把它们当作特殊字符,而不是文件名中的普通字符,这样用户就可以用它们来匹配相应的文件名,这可以称为通配符。

通配符与正则表达式是有区别的,简单来说:通配符是用来通配的,正则表达式是用来匹配字符串的;**在文本过滤工具里,都是用正则表达式,比如像awk,sed,等,是针对文件的内容的。而通配符多用在文件名上,比如查找find,ls,cp,等等。**其次,shell对通配符与正则表达式的出了有不同,“ ”内一般为通配符(是shell本身提取处理),‘ ’内一般为正则表达式(shell会将其中的数据传递给其它命令处理)。

1* 匹配零个或多个字符 2? 匹配任何单个字符 3~ 当前用户家目录 4~mage 用户mage家目录 5~+ 当前工作目录 6~- 前一个工作目录 7[0-9] 匹配数字范围 8[a-z]:字母 9[A-Z]:字母 10[xxx] 匹配列表中的任何的一个字符 11[!xxx] or [^xxx]匹配列表中的所有字符以外的字符 12预定义的字符类:man 7 glob 13[:digit:]:任意数字,相当于0-9 14[:lower:]:任意小写字母 15[:upper:]: 任意大写字母 16[:alpha:]: 任意大小写字母 17[:alnum:]:任意数字或字母 18[:blank:]:水平空白字符 19[:space:]:水平或垂直空白字符 20[:punct:]:标点符号 21[:print:]:可打印字符 22[:cntrl:]:控制(非打印)字符 23[:graph:]:图形字符 24[:xdigit:]:十六进制字符

四、创建空文件 和 刷新时间

1,touch命令:touch [OPTION]... FILE...

  • -a 仅改变 atime和ctime
  • -m 仅改变 mtime和ctime
  • -t [[CC]YY]MMDDhhmm[.ss]
  • 指定atime和mtime的时间戳
  • -c 如果文件不存在,则不予创建 注:当文件已经存在的情况下,再touch一遍只会刷新时间

2,>>命令,与touch命令作用相同,但是比touch要危险一些,在原文件已存在的情况下用>>再创建一边会损坏原先的文件

五、复制文件和目录cp

cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE...

cp SRC DEST

  • SRC是文件: 如果目标不存在:新建DEST,并将SRC中内容填充至DEST中 如果目标存在: 如果DEST是文件:将SRC中的内容覆盖至DEST中,基于安,建议为cp命令使用-i选项
    如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
  • SRC是目录:此时使用选项:-r 如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中; 如果DEST存在:如果DEST是文件:报错;如果DEST是目录:则复制

cp SRC... DEST

SRC...:多个文件

DEST必须存在,且为目录,其它情形均会出错

cp常用选项

1-i:覆盖前提示 –n:不覆盖,注意两者顺序 2 3-r, -R: 递归复制目录及内部的所有内容 4 5-a: 归档,相当于-dR --preserv=all 6 7-d:--no-dereference --preserv=links 不复制原文件,只复制链接名 8 9--preserv[=ATTR_LIST] 10 mode: 权限 11 ownership: 属主属组 12 timestamp: 13 links 14 xattr 15 context 16 all 17 18-p: 等同--preserv=mode,ownership,timestamp 19 20-v: --verbose 21 22-f: --force 23 24-u:--update 只复制源比目标更新文件或目标不存在的文件 25 26--backup=numbered 目标存在,覆盖前先备份加数字后缀 27

六、Inode索引节点

inode(index node)表中包含文件系统所有文件列表 一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包 括:

  • 文件类型,权限,UID,GID

  • 链接数(指向这个文件名路径名称个数)

  • 该文件的大小和不同的时间戳

  • 指向磁盘上文件的数据块指针

  • 有关文件的其他数据

  • 文件引用一个是 inode号

  • 人是通过文件名来引用一个文件,一个目录是目录下的文件名和文件inode号之间的映射

    [root@centos7 ~]# df //查看磁盘存储空间 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 48803552 3407640 45395912 7% / devtmpfs 747420 0 747420 0% /dev tmpfs 762136 0 762136 0% /dev/shm tmpfs 762136 9236 752900 2% /run tmpfs 762136 0 762136 0% /sys/fs/cgroup /dev/sda3 19520512 32944 19487568 1% /data /dev/sda1 508580 154420 354160 31% /boot tmpfs 152428 24 152404 1% /run/user/0 /dev/sr0 8490330 8490330 0 100% /run/media/root/CentOS 7 x86_64 [root@centos7 ~]# df -i //查看磁盘节点数量 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 24413696 120727 24292969 1% / devtmpfs 186855 402 186453 1% /dev tmpfs 190534 1 190533 1% /dev/shm tmpfs 190534 585 189949 1% /run tmpfs 190534 16 190518 1% /sys/fs/cgroup /dev/sda3 9765376 14 9765362 1% /data /dev/sda1 256000 327 255673 1% /boot tmpfs 190534 17 190517 1% /run/user/0 /dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86_64 [root@centos7 ~]#

1、cp和inode

在 CP的 命令: 分配一个空闲的inode号,在inode表中生成新条目 在目录中创建一个目录项,将名称与inode编号关联 拷贝数据生成新的文件

2、rm和inode

rm 命令: 链接数递减,从而释放的inode号可以被重用 把数据块放在空闲列表中 删除目录项 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

3、mv和inode

  • 如果mv命令的目标和源在相同的文件系统,作为mv 命令 用新的文件名创建对应新的目录项 删除旧目录条目对应的旧的文件名 不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
  • 如果目标和源在一个不同的文件系统, mv相当于cp和rm
  • 如果mv命令的目标和源在相同的文件系统,作为mv 命令 用新的文件名创建对应新的目录项 删除旧目录条目对应的旧的文件名 不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动! 如果目标和源在一个不同的文件系统, mv相当于cp和rm

七、硬链接和软连接

1,硬链接

创建硬链接会增加额外的记录项以引用文件

对应于同一文件系统上一个物理文件

每个目录引用相同的inode号

创建时链接数递增

删除文件时:rm 命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除,不能跨越驱动器或分区.

语法: ln filename [linkname ]

2,符号(或软)链接

一个符号链接指向另一个文件

ls - l的 显示链接的名称和引用的文件

一个符号链接的内容是它引用文件的名称

可以对目录进行

可以跨分区

指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减 少目标文件inode的引用计数;

语法:ln -s filename ​ ​ [linkname]

3,区别:

11)跨分区 22)inode number 33)链接数 44)目录 55)删除
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )