天天看点

linux目录结构,文件管理

文件和目录被组织成一个单根倒置树结构

文件系统从根目录下开始,用“/”表示

根文件系统(rootfs):root filesystem

对于特定的文件系统,名称大小写敏感

以.开头的文件为隐藏文件

路径分隔符/

文件有两类数据:元数据(metadata)数据(data)

文件系统分层结构:LSB Linux Standard Base

FHS: (Filesystem Hierarchy Standard)

包括路径在内文件名称最长4095个字节,用/分隔的路径不能超过255个字节。

除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们。

标准Linux文件系统(如ext4),文件名称大小写敏感。例如:MAIL,Mail,mail, mAiL

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录

/bin:供所有用户使用的基本命令;不能关联至独立分区,系统启动即会用到的程序

/sbin:管理类的基本命令;不能关联至独立分区,系统启动即会用到的程序

/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)

/lib64:专用于x86_64系统上的辅助共享库文件存放位置

/etc:配置文件目录

/home/USERNAME:普通用户家目录

/root:管理员的家目录

/media:便携式移动设备挂载点

/mnt:临时文件系统挂载点

/dev:设备文件及特殊文件存储位置

    b: block device,随机访问

    c: character device,线性访问

/opt:第三方应用程序的安装位置

/srv:系统上运行的服务用到的数据

/tmp:临时文件存储位置

/usr: universal shared, read-only data

    bin: 保证系统拥有完整功能而提供的应用程序

    sbin:

    lib:32位使用

    lib64:只存在64位系统

    include: C程序的头文件(header files)

    share:结构化独立的数据,例如doc, man等

    local:第三方应用程序的安装位置

           bin, sbin, lib, lib64, etc, share

/var: variable data files

    cache: 应用程序缓存数据目录

    lib: 应用程序状态信息数据

    local:专用于为/usr/local下的应用程序存储可变数据;

    lock: 锁文件

    log: 日志目录及文件

    opt: 专用于为/opt下的应用程序存储可变数据;

    run: 运行中的进程相关数据;通常用于存储进程pid文件

    spool: 应用程序数据池

    tmp: 保存系统两次重启之间产生的临时数据

/proc: 用于输出内核与进程信息相关的虚拟文件系统

/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置

CentOS-7的新特性

/bin-->/usr/bin

/sbin-->/usr/sbin

/lib-->/usr/lib

/lib64-->/usr/lib64

二进制程序:/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

linux目录结构,文件管理

文件类型

-:普通文件(二进制文件、文本文件、数据格式文件)

d: 目录文件

b: 块设备(随机访问的物理设备,有缓存)

c: 字符设备(线性访问的逻辑设备,无缓存)

l: 符号链接文件(软连接文件)

p: 管道文件pipe

s: 套接字文件socket(IP+PORT)

每个shell和系统进程都有一个当前的工作目录

CWD:current work directory

显示当前shell CWD的绝对路径

pwd: printing working directory

相关的环境变量:

PWD:保存了当前目录路径

OLDPWD:上一次所在目录路径

linux目录结构,文件管理

绝对路径

以正斜线开始

完整的文件的位置路径

可用于任何想指定一个文件名的时候

相对路径

不以斜线开始

指定相对于当前工作目录或某目录的位置

可以作为一个简短的形式指定一个文件名

cd 改变目录

到上一级目录:

cd ..

回到用户家目录:

cd 或cd ~

到某个用户的家目录:

cd ~username

到以前的工作目录:

cd -

linux目录结构,文件管理

ls (list)列出当前目录的内容或指定目录

ls [options] [files_or_dirs]

options:

-a显示所有文件(包括隐藏文件)

-A显示除.和..之外的所有文件

-l显示额外的信息(权限、属主属组、文件大小、修改时间等)

-R目录递归显示

-d显示目录自身的信息而不是目录下的文件

-1文件分行显示,

-i显示inode号码

–S按从大到小排序

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

–U不排序按目录存放顺序显示

--color=auto

蓝色-->目录

绿色-->可执行文件

红色-->压缩文件

红色闪烁-->链接文件已损坏

浅蓝色-->链接文件

灰色-->其他文件

glob bash通配符

* 匹配零个或多个字符

? 匹配任何单个字符

~ 当前用户家目录

~username 用户家目录

~+ 当前工作目录

~- 前一个工作目录

[0-9]:匹配一个数字范围

[a-z]:a-z之间的字母

[A-Z]:A-Z之间的字母

[wxc]:匹配列表中的任何的一个字符

[^wxc]:匹配列表中的所有字符以外的字符

字母的排列顺序 a A b B c C ……x X y Y z Z

预定义的字符类:#man 7 glob

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母

[:upper:]: 任意大写字母

[:alpha:]: 任意大小写字母

[:alnum:]:任意数字或字母

[:space:]:空格

[:punct:]:标点符号

1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

ls -d /var/l *[0-9]*[[:lower:]]

2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录

ls -d /etc/[0-9]*[^0-9]

3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录

ls -d /etc/[^[:alpha:]][[:alpha:]]*

4、显示/etc目录下所有以m开头以非数字结尾的文件或目录

ls /etc/m*[^0-9]

5、显示/etc目录下,所有以.d结尾的文件或目录

ls -d /etc/*.d

6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录

ls -d /etc/[mnrp]*.conf

touch命令:

touch [OPTION]... FILE...

-a: 仅改变atime

-m: 仅改变mtime

-t:指定时间修改时间戳 [[CC]YY]MMDDhhmm[.ss]

-c: 如果文件不存在,则不予创建

-d:以描述时间修改时间戳 touch -d '-3 day' FILE

stat 查看文件的元数据

三个时间戳:

access time:访问时间,读取文件内容

modify time: 修改时间, 修改文件内容

change time: 改变时间, 元数据发生改变

(访问一个距atime的记录时间超过24小时,或atime早于mtime的文件时atime才会刷新)

linux目录结构,文件管理

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

cp[OPTION]... SOURCE... DIRECTORY

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

cpSRC DEST

SRC是文件:

如果目标不存在:新建DEST,并将SRC中内容填充至DEST中

如果目标存在:

如果DEST是文件:将SRC中的内容覆盖至DEST中

基于安全,建议为cp命令使用-i选项;

如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中

cpSRC... DEST。

SRC...:多个文件

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

SRC是目录:此时使用选项:-r

如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中;

如果DEST存在:

如果DEST是文件:报错;

如果DEST是目录:将SRC及其内部文件复制至DEST中。

-i:交互式

-r, -R: 递归复制目录及内部的所有内容;

-a: 归档,相当于-dR--preserv=all

-d:仅复制软连接文件,不复制软连接所指向的文件

   mode: 权限

   ownership: 属主属组

   timestamp:时间戳

   links:连接

   xattr:隐藏属性

   context:安全上下文

   all

-p: 保持原有文件的属性信息

-v: --verbose

-f: --force当文件存在且没有权限编辑是,将其删除再重新复制

练习

1、使用别名命令,将/etc/目录下所有文件,备份到/testdir/下独立的新目录下,并要求新目录格式为backupYYYY-mm-dd,备份过程可见

cp -Rv /etc/ /testdir/backup`date +%F`

linux目录结构,文件管理

2、先创建/testdir/rootdir目录,再复制/root所有下文件到该目录内,并要求保留原有权限

cp -Rp /root/ /testdir/rootdir

linux目录结构,文件管理

显示当前shell进程所有可用的命令别名

alias

定义别名NAME,其相当于执行命令VALUE;

alias NAME='VALUE'

当别名中没有空格时,可以不用加引号。单双引号均可,默认使用单引号。

在命令行中定义的别名,仅对当前shell进程有效

如果想永久有效,要定义在配置文件中

仅对当前用户:~/.bashrc

对所有用户有效:/etc/bashrc

编辑配置给出的新配置不会立即生效;

bash进程重新读取配置文件:

source /path/to/config_file或. /path/to/config_file

撤消别名:unalias

unalias [name ...]

-a 撤销所有别名

如果别名同原命令同名,如果要执行原命令,可使用

“\COMMAND”

’COMMAND’

/PATH/COMMAND:外部命令

linux目录结构,文件管理

mv [OPTION]... [-T] SOURCE DEST

mv [OPTION]... SOURCE... DIRECTORY

mv [OPTION]... -t DIRECTORY SOURCE...

常用选项:

-i: 交互式

-f: 强制

rm [OPTION]... FILE...

-f: 强制删除

-r: 递归

--no-preserve-root

例:#rm- rf /

tree 显示目录树

-d: 只显示目录

-L level:指定显示的层级数目

-P pattern: 只显示由指定pattern匹配到的路径

mkdir创建目录

-p: 存在于不报错,且可自动创建所需的各目录;

-v: 显示详细信息

-m MODE: 创建目录时直接指定权限;

rmdir删除空目录

-p: 递归删除父空目录

-r: 递归删除目录树

(1) 如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b

mkdir -p /testdir/dir1/{x,y}/{a,b}

linux目录结构,文件管理

(2) 如何创建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b

mkdir -p /testdir/dir2/{x/{a,b},y}

linux目录结构,文件管理

(3) 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir3, /testdir/dir5/dir4

mkdir -p /testdir/dir{3,4,5/dir{3,4}}

linux目录结构,文件管理

只显示指定目录下的隐藏文件

ls -d /path/.* 或 ls -d /path/.[^.]*

只显示指定目录下的目录(不看其子目录下的文件)

ls -d /path/*/  (当指定目录下没有目录时会出现提示信息)

继续阅读