初识Linux------文件管理
初识Linux------文件管理
说明
由于本章的命令比较多,先对命令有一个整体的说明
- 命令的一般格式:命令名[选项][参数1][参数2]……
- 命令名由小写的英文字母构成,往往是表示相应功能的英文单词或单词的缩写。
- 查询命令的使用方法:man 命令;
一、基本命令
- 查看当前目录 pwd
- 新建目录 mkdir 目录路径
- 切换目录 cd 目录路径
- 显示当前的目录下的所有目录 ls
- 创建文件 vi 文件名
- 复制文件 cp -p 源文件名 新文件名
- 删除文件 rm 文件名
- 删除目录 rm -rf 目录名
- 查找文件/目录 which 文件名/目录
- 查看文件 cat 文件名
二、基本概念
1、文件:文件系统中存储数据的一个命名的对象。一个文件可以是空文件(即没有包含用户数据),但是它仍然为操作系统提供了其它信息。
2、文件系统:磁盘上有特定格式的一片区域,操作系统通过文件系统可以方便地查寻和访问其中所包含的磁盘块。
2、文件通配符
(1)定义
- 文件名通配符为了能一次处理多个文件,Shell提供了几个特别字符,称为文件名通配符(也称作扩展字符)。
(2)作用
- 通过使用通配符可以让Shell查询与特别格式相符的文件名;
- 用作命令参数的文件或目录的缩写;
- 以简短的标记访问长文件名;
- 可以用于任意的命令行。
(3)类型
- 星号(*):与0个或多个任意的字符相匹配,例如,le*可以代表letter、lease或le。星号匹配的是当前目录下的所有文件,但以点“.”开头的隐含文件除外。.*只与隐含文件匹配。
- 问号(?):问号只与一个任意的字符匹配,可以使用多个问号。例如,file?与文件file1、file2匹配,但不与file、file10匹配;而name.???与文件name.abc、name.xyz匹配,但不与文件name.ab匹配。
- 方括号([]):与问号相似,只与一个字符匹配。
- 附:问号与方括号的区别
- 问号与任意一个字符匹配
- 而方括号只与括号中列出的字符之一匹配。
3、文件类型
(1)普通文件
- 普通文件也称作常规文件,包含各种长度的字节串。包含数据,核心不对这些数据进行结构化
- 普通用户的类型包含:
- 文本文件,由ASCII字符构成。例如,信件和称作脚本(Script)的命令文本文件,后者由shell解释执行。
- 数据文件,由来自应用程序的数字型和文本型数据构成。例如,电子表格、数据库,以及字处理文档。
- 可执行的二进制程序,由机器指令和数据构成。例如,上面所说的系统提供的命令。
(2)目录文件
- 目录是一类特殊的文件,利用它可以构成文件系统的分层树型结构。
- 目录文件包含数据;并且核心对这些数据加以结构化,它是由成对的“I节点号/文件名”构成的列表。
- I节点号是检索I节点表的下标,I节点中存放有文件的状态信息。
- 在一个指定的目录中,任何两项都不能有同样的名字。
- 每个目录的第一项都表示目录本身,并以“.”作为它的文件名。
- 每个目录的第二项的名字是“..”,表示该目录的父目录。
- 添加文件时,目录的大小会增长。
- 删除文件时,目录的尺寸并不减少。(核心对该目录项做上特殊标记,以便下次添加一个文件时重新使用它。ls命令不会列出这些未被使用的项。)
(3)设备文件
- 设备文件除了存放在文件I节点中的信息外,它们不包含任何数据。用于标识各个设备驱动器,核心使用它们与硬件设备通信。
- 有两类特别设备文件,它们对应不同类型的设备驱动器:
- 字符设备最常用的设备类型,允许I/O传送任意大小的数据,取决于设备本身的容量。使用这种接口的设备包括终端、打印机及鼠标。
- 块设备这类设备利用核心缓冲区的自动缓存机制,缓冲区进行I/O传送总是以1KB为单位。使用这种接口的设备包括硬盘、软盘和RAM盘。
4、目录结构
Linux文件系统采用带链接的树形目录结构,即只有一个根目录(通常用“/”表示),其中含有下级子目录或文件的信息;子目录中又可含有更下级的子目录或者文件的信息。从而构成一棵倒置的树。
5、路径
- 绝对路径:以“/”开头
- 相对路径:以“.”和“..”开头
6、链接文件
(1)定义:为一个文件起多个名字的功能,
(2)存放:
- 如果在同一目录下,链接文件与被链接文件必须有不同的文件名,而不用在硬盘上为同样的数据重复备份;
- 如果在不同的目录下,被链接的文件可以与原文件同名,只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。
(3)分类
- 硬链接
- 定义:在另外的目录或本目录中增加目标文件的一个目录项
- 限制:
- 不能对目录文件做硬链接。
- 不能在不同的文件系统之间做硬链接。也就是说,链接文件和被链接文件必须位于同一个文件系统中
- 符号链接(软链接)
- 定义:将一个路径名链接到一个文件。
- 特点:目录长列表中,第一个字母是l。
- 大小:链接文件的路径名中的字节数。
- 硬链接与软链接的区别
- 符号链接确实是一个新文件,它具有与目标文件不同的I节点号;而硬链接并没有建立新文件。
- 符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。
- 符号链接与源文件或目录之间的区别:
- 删除源文件或目录时,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据。
三、命令
1、目录操作
- pwd:查看当前目录
- cd:改变当前目录
- 格式:cd 【目录】 【目录缩写】
-
ls:显示目录内容
- 语法:ls 【参数】【目录...】
- 参数列表
-
-a:全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来(常用)
-A:全部的档案,连同隐藏档,但不包括 . 与.. 这两个目录
-d:仅列出目录本身,而不是列出目录內的档案资料(常用)
-f:直接列出结果,而不进行排序 (ls 预设会以档案名排序)
-F:根据档案、目录等资讯,给予附加资料结构,例如:
*:代表可执行档; /:代表目录; =:代表 socket 档案; |:代表 FIFO 档案;
-h:将档案容量以人类容易读的方式(例如 GB, KB 等等)列出來;
-i:列出 inode 号码;
-l:将资料串列出,包含档案的属性与权限等等资料;(常用)
-n:列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!)
-r:将排序结果反向输出,例如:原本档案名由小到大,反向则为由大到小;
-R:连同子目录內容一起列出來,等于该目录下的所有档案都会显示出來;
-S:以档案容量大小排序,而不是用档案名排序;
-t:依时间排序,而不是用档案名。
-
- ln:显示目录结构
- ln [选项] 源文件 [目标文件]
- mkdir:创建目录
- 语法:mkdir 【-p】 【-m<目录属性>】 目录名称
-
-p: 如果需要建立的目录的父级目录尚未创建,则一起建立父级目录
-m :建立目录时,同时设置目录的权限
2、文件操作
- file:确定指定文件的类型
- 语法:file文件名[文件名...]
- touch:改变文件或者目录时间
- 语法:Toch 【-am】 【-t<日期时间>】 【-r<参考文件>】 【目录|文件…】
-
-a 更改由 File 变量指定的文件的访问时间。不会更改修改时间,除非也指定了 -m 标志。
- -c 如果文件不存在,则不要进行创建。没有写任何有关此条件的诊断消息。
- -f 尝试强制 touch 运行,而不管文件的读和写许可权。
- -m 更改 File 的修改时间。不会更改访问时间,除非也指定了 -a 标志。
- -r RefFile 使用由 RefFile 变量指定的文件的相应时间,而不用当前时间。
- Time 以 MMDDhhmm[YY] 的格式指定新时间戳记的日期和时间,其中:
- MM 指定一年的哪一月(从 01 到 12)。
- DD 指定一月的哪一天(从 01 到 31)。
- hh 指定一天中的哪一小时(从 00 到 23)。
- mm 指定一小时的哪一分钟(从 00 到 59)。
- YY 指定年份的后两位数字。如果 YY 变量没有被指定,缺省值为当前年份。
- -t Time 使用指定时间而不是当前时间。Time 变量以十进制形式 [[CC]YY]MMDDhhmm[.SS] 指定,其中:
- CC 指定年份的前两位数字。
- YY 指定年份的后两位数字。
- MM 指定一年的哪一月(从 01 到 12)。
- DD 指定一月的哪一天(从 01 到 31)。
- hh 指定一天中的哪一小时(从 00 到 23)。
- mm 指定一小时的哪一分钟(从 00 到 59)。
- SS 指定一分钟的哪一秒(从 00 到 59)。
- cp:复制文件或目录
- 语法:cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>][--help][--spares=<使用时机>][--version][源文件或目录][目标文件或目录] [目的目录]
- 参数
- -a 或 --archive 此参数的效果和同时指定'-dpr'参数相同
- -b或--backup 删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。
- -d或--no-dereference 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -l 或 --link 对源文件建立硬链接,而非复制文件
- -p 或 --preserve 保留源文件或目录的属性,包括所有者、所属组、权限与时间
- -P 或 --parents 保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经存在
- -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
- -R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
- -s 或 --symbolic-link 对源文件建立符号链接,而非复制文件
- -S <备份字尾字符串> 或 --suffix=<备份字尾字符串> 用"-b"参数备份目的文件后,备份文件的字尾会被加上一个备份字符串。默认的备份字尾符串是符号"~"
-
-
- -u 或 --update 使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件
- -v 或 --verbose 显示执行过程
- -V <备份方式> 或 --version-control=<备份方式> 指定当备份文件时,备份文件名的命名方式,有以下3种:
- numbered或t, 将使用备份编号,会在字尾加上~1~字符串,其数字编号依次递增
- simple或never 将使用简单备份,默认的备份字尾字符串是~, 也可通过-S来指定
- existing或nil将使用当前方式,程序会先检查是否存在着备份编号,若有则采用备份编号,若无则采用简单备份
-
-
-
- -x 或 --one-file-system 复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件
- --help 显示在线帮助
- --sparse=<使用时机> 设置保存希疏文件的时机
- --version 显示版本
-
- rm:删除文件或目录
- 格式:rm 【参数】... 文件...
- 参数
- -f, --force 强制删除。忽略不存在的文件,不提示确认
- -i 在删除前需要确认
- -I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提 示内容更少,但同样可以阻止大多数错误发生
- --interactive[=WHEN] 根据指定的WHEN 进行确认提示:never,once (-I), 或者always (-i)。如果此参数不加WHEN 则总是提示
- --one-file-system 递归删除一个层级时,跳过所有不符合命令行参数的文件系统上的文件
- --no-preserve-roo 不特殊对待"/"
- --preserve-root 不允许删除"/"(默认)
- -r, -R, --recursive 递归删除目录及其内容
- -v, --verbose 详细显示进行的步骤
- --help 显示此帮助信息并退出
- --version 显示版本信息并退出
- mv:移动或更名现有的文件或目录
- 格式:mv [参数] 源文件或目录 目标文件或目录。
- 参数
- -I:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。
- -f:禁止交互操作。在mv操作要覆盖某已有的目标文件是不给任何指示,指定此选项后,I选项将不再起作用。
- -b:覆盖文件前先对其进行备份
- -S或--suffix=后缀:不理会通常的备份后缀
- -u或--update:移动或覆盖目的文件时若日期不比目的文件旧,且目的文件已经存在,则不执行覆盖文件命令
- -t或--target-directory=目录:移动所以源参数到指定目录
- -T或--no-target-directory:将DEST作为普通文件
- --help:显示帮助信息
- -v或--version:显示版本帮助信息
- --verbose:显示执行的详细信
3、查找操作命令
- which:命令用于查找文件
- 格式:which [ Name ... ]
- whereis:查找文件
- 格式:whereis [ -s ] [ -b ] [ -m ] [ -u ] [ { { -S | -B | -M } Directory ... }... -f ] File ...
- 参数
- -b 搜索文件的二进制部分。
- -m 搜索文件的手册部分。
- -s 搜索文件的源部分。
- -u 搜索不寻常文件。如果一个文件没有每个请求类型的一个项则认为该文件是不寻常文件。输入 whereis -m -u *,则寻找当前目录中那些没有文档的文件。
- -B、-M 和 -S 标志可以用于更改或限制 whereis 命令搜索的位置。由于该程序为了运行得更快而使用了 chdir 子例程,所以用 -M、-S 和 -B 标志目录列表给出的路径名必须是完整的;例如,它们必须以一个 / 开始。
- -B 与 -b 一样,但是添加了要搜索的目录。更改或限制 whereis 命令搜索二进制文件的位置。
- -M 与 -m 一样,但是添加了要搜索的目录。更改或限定 whereis 命令搜索手册部分的位置。
- -S 与 -s 一样,但是添加了要搜索的目录。更改或限定 whereis 命令搜索源的位置。
- -f 终止最后的 -M、-S 或 -B 目录列表并发文件名起始位置信号。
- find :查找文件和目录
- 格式:find [参数] 文件
- 参数
- -name:照文件名查找文件。
- -perm:照文件权限来查找文件。
- -user:照文件属主来查找文件。
- -group:照文件所属的组来查找文件。
- -mtime -n +n:照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
- -nogroup:找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
- -nouser: 找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
- -newer file1 ! file2 :找更改时间比文件file1新但比文件file2旧的文件。
- -type: 找某一类型的文件,诸如:
- b - 块设备文件。
- d - 目录。
- c - 字符设备文件。
- p - 管道文件。
- l - 符号链接文件。
- f - 普通文件。
- -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
- -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
- -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
- -mount:在查找文件时不跨越文件系统mount点。
- -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
- -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
- -amin n:系统中最后N分钟访问的文件
- -atime n:系统中最后n*24小时访问的文件
- -cmin n:查找系统中最后N分钟被改变文件状态的文件
- -ctime n:查找系统中最后n*24小时被改变文件状态的文件
- -mmin n:查找系统中最后N分钟被改变文件数据的文件
- -mtime n:查找系统中最后n*24小时被改变文件数据的文件
- -print: find命令将匹配的文件输出到标准输出。
- -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
- -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
4、文本查看命令
- cat:显示或者把多个文本文件连接起来
- 语法:cat [-AbeEnstTuv] [--help] [--version] filename
- 参数
- -n 或 --number 由 1 开始对所有输出的行数编号
- -b 或 --number-nonblank 和 -n 相似 只不过对于空白行不编号
- -s 或 --squeeze-blank 当遇到有连续两行以上的空白行 就代换为一行的空白行
- -v 或 --show-nonprinting
- more:逐页显示文件内容
- 语法:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
- 参数
- -d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
- -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
- -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
- -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
- -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
- -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
- -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
- +/ 在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示
- +num 从第 num 行开始显示
- less:逐页显示文件内容
- 语法:less [Option] filename
- 参数:
- -c 从顶部(从上到下)刷新屏幕,并显示文件内容,而不是通过底部滚动完成刷新
- -f 强制打开文件,如果是二进制文件也不提出警告
- -i 搜索是忽略大小写,但搜索串中包含大写字母除外
- -I 搜索是忽略大小写,但搜索串中包含小写字母除外
- -m 显示读取文件的百分比
- -M 显示读取文件的百分比、行号及总行数
- -N 在每行前输入行号
- -p pattern 例如在/etc/user中搜索单词 mine,可以使用 “less -p mine /etc/user”
- -s 把连续多个空白行作为一个空白行显示
- -Q 在终端下不响铃
- grep:查找并显示符合条件的内容
- 语法:grep [-abcfhilLnqrsvVwxy][- <显示行数>] [-d<进行动作>][-e<范本样式>][-f<范本文件>] [文件或目录...]
- 参数
- -a, --text 等价于匹配text,用于(Binary file (standard input) matches)报错
- -b,--byte-offset 打印匹配行前面打印该行所在的块号码。
- -c,--count 只打印匹配的行数,不显示匹配的内容。
- -f File,--file=File 从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。
- -h,--no-filename 当搜索多个文件时,不显示匹配文件名前缀。
- -i,--ignore-case 忽略大小写差别。
- -q,--quiet 取消显示,只返回退出状态。0则表示找到了匹配的行。
- -l,--files-with-matches 打印匹配模板的文件清单。
- -L,--files-without-match 打印不匹配模板的文件清单。
- -n,--line-number 在匹配的行前面打印行号。
- -s,--silent 不显示关于不存在或者无法读取文件的错误信息。
- -v,--revert-match 反检索,只显示不匹配的行。
- -w,--word-regexp 如果被\<和\>引用,就把表达式做为一个单词搜索。
- -R, -r, --recursive 递归的读取目录下的所有文件,包括子目录。 比如 grep -R ‘pattern’test 会在 test 及其子目录下的所有文件中,匹配 pattern。
- -V,--version 显示软件版本信息。
5、压缩与归档命令
- gzip:压缩文件
- 语法:gzip [选项] 压缩(解压缩)的文件名
- 参数
- -c 将输出写到标准输出上,并保留原有文件。
- -d 将压缩文件解压。
- -l 对每个压缩文件,显示下列字段: 压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字
- -r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
- -t 测试,检查压缩文件是否完整。
- -v 对每一个压缩和解压的文件,显示文件名和压缩比。
- -num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),
- -9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。
- tar 压缩备份
- 语法: tar [参数] 文件或目录
- 参数
- -c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
- -r 把要存档的文件追加到档案文件的末尾。
- -t 列出档案文件的内容,查看已经备份了哪些文件。
- -u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
- -x 从档案文件中释放文件。
- -b 该选项是为磁带机设定的,其后跟一数字,用来说明区块的大小,系统预设值为20(20×512 bytes)。
- -f 使用档案文件或设备,这个选项通常是必选的。
- -k 保存已经存在的文件。例如把某个文件还原,在还原的过程中遇到相同的文件,不会进行覆盖。
- -m 在还原文件时,把所有文件的修改时间设定为现在。
- -M 创建多卷的档案文件,以便在几个磁盘中存放。
- -v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
- -w 每一步都要求确认。
- -j 代表使用‘bzip2’程序进行文件的压缩
- -z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。