Linux文件系统

一、Linux的文件系统基础

  一切皆文件

a、遍历

b、层级结构

两类数据:

  元数据(metadata):索引

  数据(data):文件内容

/:根

目录:  路径映射   /dev/tty1

例:

路径:/usr/share/doc

    /doc 路径基名

    /usr/share 目录名

basename NAME 获取文件的路径基名

dirname NAME 获取文件的路径目录名


FHS:文件层级系统

LSB定义的Linux发行版基础目录名称命名法则及功能规定

/bin,/sbin:系统自身启动和运行时可能会用到的核心二进制程序

/boot:系统引导启动时要加载的静态文件、内核和ramdisk及grub等

/dev:device的简写,所有设备相关文件文件

/etc:大多数应用程序的配置文件集中存放位置

/home:普通用户的家目录的统一存放位置,每个用户的主目录通常默认为/home/USERNAME

    /root:管理员root用户的主目录

/lib,/lib64:libraries 库文件的存放位置

        /lib/modules/KERNEL_VERSION/:内核模块存放位置

/lost+found:当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损 坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。

/media和/mnt:外部存储设备的挂载路径

/misc:备用目录

/opt:早起用于安装第三方程序       

/proc:伪文件系统,由内核参数映射而来

      内核有很多特性可通过内核参数进行配置,内核也有很多信息如统计数据等可通过内核参数进行       输出

/sys:伪文件系统,由内核中硬件相关信息映射而来

      内核中与设备配置相关的信息

/selinux:Security Enhanced Linux

/srv:services简写,服务类程序用到的中间数据

/tmp:temporary,临时文件存放位置,

/usr:

     /usr/bin,/usr/sbin:系统允许过程中,用户为完成某些操作可能用到的二进制程序

     /usr/lib,/usr/lib64

     /usr/share:共享文件

     /usr/src:sources的简写,程序的源码存放位置

     /usr/local:

     /usr/local/bin,/usr/local/sbin:第三方程序安装的二进制程序存放位置

     /var:various,经常发生变化的文件存放位置


对于计算机来讲,文件是什么?

文件存储在硬盘上是于二进制数据流的形式


路径分隔符:/

相对路径:从当前位置开始定位的路径表示形式

绝对路径:从根开始定位的路径表示形式


特殊目录:

.表示当前目录

..表示当前的上一级目录


文件有两类标识符:

名字:

数字:inode i节点


Linux文件名:

1、严格区分大小写字符

  file,File,FILE

2、文件名可以使用除了/以外的任意字符,建议不使用特殊符号

3、文件名最长255个字符

4、以.开头的文件是隐藏文件



二、文件管理类命令


文本文件的查看

目录管理

文本搜索

文本排序

 

ls:list显示指定目录下的文件及子目录列表

   ls [OPTION]... [FILE]...

常用选项:

-l:长格式显示文件的详细属性信息

drwxr-xr-x.  6 root root 4096 Jun 18 08:27 cache

左起第一位:文件类型

后面9位:文件访问权限  .表示特殊权限

数字:当前文件被硬链接的次数

此文件的所有主

此文件的所有组 

数字:文件大小,单位为字节,

如果是目录,表示该目录大小。注意是目录本身大小,而非目录及其下面的文件的总大小。 

日期时间:当前文内容件最近一次被修改的时间


-a:显示所以文件,包括隐藏文件

-r:逆逆显示

-R:递归显示

-d:常与-l选项一起使用,用于显示目录自身的属性

-S:按文件大小排序,从大到小排序,逆序

-i:显示文件的inode的号码

-n:以ID号显示所有者和所有组


文件类型:

-:普通文件

d:directory目录文件

l:link,符号链接文件

b:block块设备文件,随机访问设备

c:character字符设备文件,线性设备

p:pipe,管道文件

s:socket,套接字文件


文件内容的类型查看:

file /PATH/TO/FILE


2、文件管理之目录管理:


创建:mkdir:make directory

 mkdir [OPTION]... DIRECTORY...
 
-v:verbose 显示创建过程
-p:parent 创建父目录
注意:Linux不以文件后缀名判断文件类型

删除:

rmdir 只能删除空目录

查看:tree

tree -L N DIRECTORY 指明显示层级


bash的特性之三:命令执行状态返回值

               命令执行成功与否的状态,由bash自己追踪,保存在特殊变量“$?”中:

               返回值:0-255   0成功  1-255:失败

bash的特性之四:命令行展开    #Linux运维工程师十大常用技巧之一

               ~:自动展开为当前用户的主目录

               ~USERNAME:自动展开为指定用户的家目录

               {}:(x+y)z=xz+yz

                  (x+y)(m+n)=xm+xn+ym+yn

                   /tmp/{x,y,z}=/tmp/x,/tmp/y,/tmp/z

                   /tmp{x,y}{m,n}


练习:

1、创建/tmp下a_c,a_d,b_c,b_d

2、创建/tmp下

             x 

               y1

                  m

                  n

               y2

                  r

               y3

                 o

                   q

                 p  

 目录  


3、文件管理之文本文件查看命令:

  cat,tac,more,less,head,tail,touch,stat


cat

cat [OPTION]... [FILE]...

   n 列出行号

   E:显示行结束符,非打印字符


tac:逆显示文件内容,


翻屏:shift+pageup/pagedown 缓冲区的内容

分屏文本显示:more,less

more FILENAME

首尾显示:head,tail

  显示文件前N行: head -n N  默认前10行

  显示文件后N行:tail -n N  默认后10行

               -f:follow,常用于手动监控日志  动态显示后10行内容?


stat:查看文件的状态数据信息 

root@localhost ~]# stat /etc/fstab 
  File: "/etc/fstab"
  Size: 1134            Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d      Inode: 260107      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-08-19 11:18:47.307542246 +0800
Modify: 2015-07-02 06:28:17.286227637 +0800
Change: 2015-07-02 06:28:17.286227637 +0800

时间戳:

Access:最近一次被访问的时间

Change:最近一次被改变的时间,即文件属性发生了改变

Modify:最近一次被修改的时间,即文件内容被改变


touch:修改文件的时间戳

-a:仅改变访问时间

-m:仅改变修改时间

-t STAMP:修改指定时间而非当前时间[[CC]YYMMDDhhmm[.ss]]

-c:不创建不存在的文件


程序的组成部分:

  二进制程序、库、配置文件、帮助文件


bash特性之五:命令别名和命令引用

命令别名的定义方式:alias ALIAS='COMMAND'  #重启失效

撤销方式:unalias ALIAS

      unalias -a:撤销所有的定义过的命令别名

命令别名与命令名称相同时,可使用\COMMAND,来调用命令本身,而非命令别名,

另一种方式:使用命令程序的绝对路径


命令引用:

  bash支持三类引用:

     强引用:‘’

     弱引用:“”

     命令引用:``,$()  引用一个命令的执行结果,而非命令本身 


bash特性之六:文件名通配

文本名中可用的通配符:

*:匹配任意长度的任意字符

?:匹配任意单个字符

[]:字符范围,匹配指定字符集合中的任意单个字符

  [a-z],[0-9],[a-z0-9],

[^]:字符范围,匹配除指定字符集合 中的任意单个字符

  [^a-z],[0-9],[^a-z0-9]

   字符集合表示方式:

     所有的小写字母:[:lower:]

     所有的大写字母:[:upper:]

     所有的字母:[:alpha:]

     所有数字[:digit:]

     所有的字母和数字:[:allnum:]

     所有的标点符号:[:punct:]

     所有的空白字符:[:space:]

[^[:lower:]]除小写字母外所有字母


wKiom1XUMkeyC2EqAAFL0-_d49Y000.jpg

echo命令:

echo [OPTIONS]... [STRING]...

-n:关闭自动换行功能

-e:启动转义符

  \t:tab键

  \n:new line 换行

  \b:退格键,删除前一个字符,但是不能放在最后一个位置,WHY?

  \033[NN

     第一个数字:

            3:字体前景色

            4:背景色

     第二个数字:颜色0-7 1红色 2绿色 3绿色

  \033[03m:关闭字体功能

例:

echo -e '\033[31mhello,world.\033[0m'

 详细信息见附1

echo "SHELL" 输出变量的值








附1:linux echo颜色控制

  • echo要变换颜色的时候,要使用参数-e

  • 格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"

    例如:

    echo -e "\033[41;36m something here \033[0m"

    其中41的位置代表底色, 36的位置是代表字的颜色

    那些ascii code 是对颜色调用的始末.

    \033[ ; m …… \033[0m

    让字体变为红色并且不停的闪烁

    #echo -e "\033[31m \033[5m 请确认是否要停止当前的squid进程,输入[Y/N] \033[0m"

    或者

    #echo -e "\033[31m \033[05m 请确认是否要停止当前的squid进程,输入[Y/N] \033[0m"

    字背景颜色范围:40----49

    40:黑

    41:深红

    42:绿

    43:黄色

    44:蓝色

    45:紫色

    46:深绿

    47:白色

    字颜色:30-----------39

    30:黑

    31:红

    32:绿

    33:黄

    34:蓝色

    35:紫色

    36:深绿

    37:白色

    ===============================================ANSI控制码的说明

    \033[0m 关闭所有属性

    \033[1m 设置高亮度

    \033[4m 下划线

    \033[5m 闪烁

    \033[7m 反显

    \033[8m 消隐

    \033[30m -- \33[37m 设置前景色

    \033[40m -- \33[47m 设置背景色

    \033[nA 光标上移n行

    \033[nB 光标下移n行

    \033[nC 光标右移n行

    \033[nD 光标左移n行

    \033[y;xH设置光标位置

    \033[2J 清屏

    \033[K 清除从光标到行尾的内容

    \033[s 保存光标位置

    \033[u 恢复光标位置

    \033[?25l 隐藏光标

    \033[?25h 显示光标


你可能感兴趣的:(linux)