文件和目录被组织成一个单根倒置树结构
文件系统从根目录下开始,用“/”表示根文件系统(rootfs):root filesystem对于特定的文件系统,名称大小写敏感以.开头的文件为隐藏文件路径分隔符/文件有两类数据:元数据(metadata)数据(data)文件系统分层结构:LSB Linux Standard BaseFHS: (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文件类型
-:普通文件(二进制文件、文本文件、数据格式文件)d: 目录文件b: 块设备(随机访问的物理设备,有缓存)c: 字符设备(线性访问的逻辑设备,无缓存)l: 符号链接文件(软连接文件)p: 管道文件pipes: 套接字文件socket(IP+PORT)每个shell和系统进程都有一个当前的工作目录CWD:current work directory显示当前shell CWD的绝对路径pwd: printing working directory相关的环境变量:PWD:保存了当前目录路径OLDPWD:上一次所在目录路径绝对路径
以正斜线开始完整的文件的位置路径可用于任何想指定一个文件名的时候相对路径不以斜线开始指定相对于当前工作目录或某目录的位置可以作为一个简短的形式指定一个文件名cd 改变目录到上一级目录:cd ..回到用户家目录:cd 或cd ~到某个用户的家目录:cd ~username到以前的工作目录:cd - 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/*.d6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录ls -d /etc/[mnrp]*.conftouch命令:touch [OPTION]... FILE...-a: 仅改变atime-m: 仅改变mtime-t:指定时间修改时间戳 [[CC]YY]MMDDhhmm[.ss]-c: 如果文件不存在,则不予创建-d:以描述时间修改时间戳 touch -d '-3 day' FILEstat 查看文件的元数据三个时间戳:access time:访问时间,读取文件内容modify time: 修改时间, 修改文件内容change time: 改变时间, 元数据发生改变(访问一个距atime的记录时间超过24小时,或atime早于mtime的文件时atime才会刷新)cp[OPTION]... [-T] SOURCE DEST
cp[OPTION]... SOURCE... DIRECTORYcp[OPTION]... -t DIRECTORY SOURCE...cpSRC DESTSRC是文件:如果目标不存在:新建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`2、先创建/testdir/rootdir目录,再复制/root所有下文件到该目录内,并要求保留原有权限
cp -Rp /root/ /testdir/rootdir显示当前shell进程所有可用的命令别名
alias定义别名NAME,其相当于执行命令VALUE;alias NAME='VALUE'当别名中没有空格时,可以不用加引号。单双引号均可,默认使用单引号。在命令行中定义的别名,仅对当前shell进程有效如果想永久有效,要定义在配置文件中仅对当前用户:~/.bashrc对所有用户有效:/etc/bashrc编辑配置给出的新配置不会立即生效;bash进程重新读取配置文件:source /path/to/config_file或. /path/to/config_file撤消别名:unaliasunalias [name ...]-a 撤销所有别名如果别名同原命令同名,如果要执行原命令,可使用“\COMMAND”’COMMAND’/PATH/COMMAND:外部命令mv [OPTION]... [-T] SOURCE DESTmv [OPTION]... SOURCE... DIRECTORYmv [OPTION]... -t DIRECTORY SOURCE...常用选项:-i: 交互式-f: 强制rm [OPTION]... FILE...常用选项:-i: 交互式-f: 强制删除-r: 递归--no-preserve-root例:#rm- rf /tree 显示目录树-d: 只显示目录-L level:指定显示的层级数目-P pattern: 只显示由指定pattern匹配到的路径mkdir创建目录-p: 存在于不报错,且可自动创建所需的各目录;-v: 显示详细信息-m MODE: 创建目录时直接指定权限;rmdir删除空目录-p: 递归删除父空目录-v: 显示详细信息-r: 递归删除目录树(1) 如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/bmkdir -p /testdir/dir1/{x,y}/{a,b}(2) 如何创建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b
mkdir -p /testdir/dir2/{x/{a,b},y}(3) 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir3, /testdir/dir5/dir4
mkdir -p /testdir/dir{3,4,5/dir{3,4}}只显示指定目录下的隐藏文件
ls -d /path/.* 或 ls -d /path/.[^.]*
只显示指定目录下的目录(不看其子目录下的文件)
ls -d /path/*/ (当指定目录下没有目录时会出现提示信息)