文件目录与基本操作
一、显示文件内容命令
01 cat
- 英文全称:concatenate
- 命令格式:cat [option] filename
- 命令作用:读取文件内容并打印到标准输出设备
- 命令选项(option):
- -n :由 1 开始对所有输出的行数编号
- -b :由 1 开始对所有输出的行数编号,但对空白行不编号
- -s :当遇到有连续两行以上的空白行,就代换为一行的空白行
- -v :用一种特殊形式显示控制字符,LFD 与 TAB 除外
- -T :将 TAB 字符显示为 “^I”,需要搭配-v 一起使用,单独使用该选项将被忽略
- -E :在每行的末尾显示一个 “$”
- -u :输出不经过缓冲区
- -A :等价于-vET ,即显示控制字符(LFD 与 TAB 除外),将 TAB 字符显示为 “^I”,并在每行的末尾显示一个 “$”
- -t :等价于-vT ,即显示控制字符(LFD 与 TAB 除外),将 TAB 字符显示为 “^I”
- -e :等价于-vE ,即显示控制字符(LFD 与 TAB 除外),并在每行的末尾显示一个 “$”
02 more
- 英文全称:more
- 命令格式:more [option] filename
- 命令作用:逐页显示文件内容
- 查看文件的过程中,因为某些文本过于庞大,导致文本在屏幕上快速地闪过,用户来不及看清内容。该命令可以一次显示一屏文本,并在终端底部打印出 “–more–”,系统还将同时显示出已显示文本占全部文本的百分比。若要继续显示,按回车或空格键即可。
- more 只能一直向后翻页,无法向前翻页
- 命令选项(option):
- -num :一次显示num指定的行数
- -p :先清屏再显示下一屏内容
- -c :先显示内容再清除其他旧资料,但在感官上的感知类似 -p
- -d :提示使用者,在每屏的底部显示更友好的提示信息:“ --more–(XX%)[Press space to continue, ‘q’ to quit.] ”;如果使用者按错键,则会显示 “ [Press ‘h’ for instructions.] ” 而不是 ’ 哔 ’ 声
- -s :当遇到有连续两行以上的空白行,就代换为一行的空白行
- +num : 从第 num 行开始显示
- +/pattern :在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
03 less
- 英文全称:less
- 命令格式:less [option] filename
- 命令作用:逐页显示文件内容
less 命令的功能和 more 命令的功能基本相同,也是按页显示文件,但是 less 命令在显示文件的时候,用户既可以向前也可以向后逐行翻阅文件,而 more 命令只能向后翻阅文件,可以将 less 命令看做是 more 命令的加强版
- 命令参数(option):与 more 命令类似,不再举例
04 head
- 英文全称:head
- 命令格式:head -number filename
- 命令作用:只显示文件或标准输入的头几行内容
- 如果用户希望查看一个文件保存的是什么内容,只需要查看文件的头几行,而不必浏览整个文件,便可以使用该命令
- 该命令用来显示每个文件的前面指定的 number 行
- 如果没有给定 number 值,默认设置为 10
- 如果没有指定 filename,则 head 默认从标准输入读取
05 tail
- 英文全称:tail
- 命令格式:tail option filename
- 命令作用:只显示文件或标准输入的末尾几行内容
- 如果用户只需要查看文件的尾部,可以使用该命令
- 该命令用来显示每个文件末尾指定的 number 行
- 如果没有给定 number 值,默认设置为 10
- 如果没有指定 filename,则 tail 默认从标准输入读取
- 命令选项(option):
- -n<行数> :显示文件的尾部 n 行内容
- +num :从第 num 行以后开始显示
- -num :从距文件末尾 num 处开始显示
- -c :以字节为 num 的计数单位,与 +num 或 -num 一起使用时,num 表示要显示的字符数
- ⭐ 参数 -c 可以忽略,系统默认值为 1,即按行计
⭐ 小技巧:
- clear 清屏 (满屏都是命令,头大,clear一键消除烦恼)
二、文件内容查询命令
grep、egrep、fgrep
- 英文全称:global regular expression print
- 命令格式:grep/egrep/fgrep [option] [pattern] [file1, file2, …]
- 命令作用:只显示文件或标准输入的末尾几行内容
- 如果用户只需要查看文件的尾部,可以使用该命令
- 该命令用来显示每个文件末尾指定的 number 行
- 如果没有给定 number 值,默认设置为 10
- 如果没有指定 filename,则 tail 默认从标准输入读取
- 命令选项(option):
- -n<行数> :显示文件的尾部 n 行内容
- +num :从第 num 行以后开始显示
三、文件查找命令
01 find
- 英文全称:find
- 命令格式:find [option] filename
- 命令作用:在指定的目录开始递归的搜索其各个子目录,查找满足寻找条件的文件,并对其采取相关的操作
find 命令提供的寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件,使用如下:
and
:逻辑与,在命令中用 -a 表示,是系统默认的选项,表示只有当所给的条件都满足时,寻找条件才满足or
:逻辑或,在命令中用 -o 表示,表示只要所给的条件有一个满足时,寻找条件就满足not
:逻辑非,在命令中用 ! 表示,表示查找不满足所给的条件的文件find 功能强大但是效率较低
- 命令选项(option):
- -name ‘字串’ :查找文件名匹配所给字串的所有文件(字串内可用通配符*、?、[])
⭐*
表示一个字符串
⭐?
表示一个字符
它们只能通配文件名或扩展名,不能全都表示 - -lname ‘字串’ :查找文件名匹配所给字串的所有符号链接文件(字串内可用通配符*、?、[])
- -empty :查找大小为 0 的目录或文件
- -exec cmd{} :对符合条件的文件执行所给的Linux命令(cmd代指),
并且不询问
用户是否要执行命令- {} :表示命令的参数即为所找到的文件
- ⭐ 命令的末尾必须以 ; 结束
- -ok cmd{} :对符合条件的文件执行所给的Linux命令(cmd代指),
并且询问
用户是否要执行命令- {} :表示命令的参数即为所找到的文件
- ⭐ 命令的末尾必须以 ; 结束
- -ls :详细列出所找到的所有文件
- -print :在标准输出设备上显示查找出的文件名
- -gid n :查找属于ID号为n的用户组的所有文件
- -uid n :查找属于ID号为n的用户的所有文件
- -group string :查找属于用户组名为所给字串的所有文件
- -user string :查找属于用户名为所给字串的所有文件
- -size n[bckw] :查找指定文件大小的文件(n 后面的字符表示单位,默认为 b,代表512字节的块)
- -path string :查找路径名与所给字符串相匹配的所有文件(字串内可用通配符*、?、[])
- -perm permission :查找具有指定权限的文件和目录
- -name ‘字串’ :查找文件名匹配所给字串的所有文件(字串内可用通配符*、?、[])
02 locate
- 英文全称:locate
- 命令格式:locate [option] filename
- 命令作用:查找文件
locate 比 find 的搜索速度快
03 where is
- 英文全称:whereis
- 命令格式:whereis cmd
- 命令作用:查找命令,可以知道命令文件在哪
04 which
- 英文全称:which
- 命令格式:which cmd
- 命令作用:查看命令的位置
四、文件处理命令
01 sort
- 英文全称:sort
- 命令格式:sort [option] filename
- 命令作用:对文件中的各行进行排序
- sort 排序是根据从输入行抽取的一个或多个关键字进行比较来完成的
- 排序关键字定义了用来排序的最小的字符序列
- sort 排序在默认情况下,以整行为关键字按ASCII字符顺序进行排序
- 如果没有给定 number 值,默认设置为 10
- 如果没有指定 filename,则 tail 默认从标准输入读取
- 字段编号从 0 开始计算
- 命令选项(option):
- -c :检查给定文件是否已排好序,如果它们都没有排好序,则打印一个出错信息,并以状态值1退出
- -u :对排序后认为相同的行只保留其中一行,起到去重的作用
- -d :按字典顺序排序,比较时仅字母、数字、空格和制表符有意义
- -r :按逆序(即降序)输出排序结果(默认是升序)
- -n :按照数字大小排序
- +pos1 -pos2 :指定一个或几个字段作为排序关键字,字段位置从 pos1 开始,到 pos2 为止(包括 pos1,不包括 pos2);如不指定 pos2,则关键字为从 pos1 到行尾; 字段和字符的位置从 0 开始
- -t separator :指定字符 separator 作为字段分隔符
- -f :将小写字母与大写字母同等对待
- -I :忽略非打印字符
- -M :作为月份比较,“JAN” < “FEB” < ? < “DEC”
- -b :在每行中寻找排序关键字时忽略前导的空白(空格和制表符)
- -o :输出文件将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort 便将该文件的内容写入一个临时文件,然后再排序和写输出结果
02 uniq
- 英文全称:unique
- 命令格式:uniq [option] filename
- 命令作用:只显示文件或标准输入的末尾几行内容
- 如果用户只需要查看文件的尾部,可以使用该命令
- 该命令用来显示每个文件末尾指定的 number 行
- 如果没有给定 number 值,默认设置为 10
- 如果没有指定 filename,则 tail 默认从标准输入读取
- 命令选项(option):
- -d :只显示重复的行
- -u :只显示文件中不重复的行
- -c :显示输出中,在每行行首加上本行在文件中出现的次数;可用来取代-d和-u
- -n :前n个字段与每个字段前的空白一起被忽略;一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从 0 开始编号)
- +n :前n个字符被忽略,之前的字符被跳过(字符从0开始编号)
- -f n :与-n相同,这里 n 是字段数
- -s n :与-n相同,这里 n 是字符数
五、文件内容统计命令
01 wc
- 英文全称:word count
- 命令格式:wc [option] filename
- 命令作用:统计给定文件中的字节数、字数、行数
- 如果没有给定文件名,则从标准输入中读取
- wc 同时也给出所有指定文件的总统计数
- 字是由空格字符区分开的最大字符串
- 命令选项(option):
- -c :统计字节数
- -l :统计行数
- -w :统计字数
- -L :统计最长行的长度
六、文件比较命令
01 comm
- 英文全称:common
- 命令格式:common [option] filename
- 命令作用:对两个已经排好序的文件进行比较
- 如果文件没有排好序,则先用 sort 对文件进行排序
- comm 读取已经排序好的两个文件file1和file2,然后生成3列输出:仅在 file1 中出现的行;仅在 file2 中出现的行;在两个文件中都存在的行
- 如果文件名用 “-”,则表示从标准输入中读取
- 命令选项(option):
- -1/2/3 :控制comm显示的相应的3列是否显示
02 diff
- 英文全称:different
- 命令格式:diff [option] file1 file2 diff [option] dir1 dir2
- 命令作用:逐行比较两个文本文件,列出其不同之处
diff 对给出的文件进行系统地检查,并显示出两个文件中所有不同的行,
且不要求事先对文件进行排序
- 命令选项(option):
- -b :忽略行尾的空格,对字符串中的一个或多个空格符都视为相等
- -c :采用上下文输出格式(提供 3 行上下文)
- -C n :采用上下文输出格式(提供 n 行上下文)
- -e :产生一个合法的ed脚本作为输出
- -r :当 file1 和 file2 是目录时,递归作用到各文件和目录上
七、文件的复制、移动和删除命令
01 cp
- 英文全称:copy
- 命令格式:cp [option] [src_file|src_dir] [dst_file|dst_dir]
- 命令作用:将给出的文件或目录复制到另一文件或目录中
- 命令选项(option):
- -a :复制目录时使用,保留链接、文件属性,并递归地复制目录
- -d :复制时保留链接
- -f :删除已经存在的目标文件而不提示(类似 ctrl+X)
- -i :交互式复制文件,在覆盖目标文件之前将给出提示要求用户确认,回答 “ y ” 时目标文件将被覆盖
⭐ 有时,用户在不经意的情况下用 cp 命令破坏另一个文件,比如,用户指定的目标文件名是一个已存在的文件名,用 cp 命令复制文件后,这个文件就会被新复制的源文件覆盖。因此,建议用户在使用 cp 命令复制文件时,最好使用参数-i
- -r :若给出的源文件是一个目录文件,此时 cp 将递归复制该目录下所有的子目录和文件,此时目标文件必须为一个目录名
- -p :此时 cp 除复制源文件的内容外,还将其修改时间和访问权限也复制到新文件中
- -l :不做复制,只是链接文件
02 mv
- 英文全称:move
- 命令格式:mv [option] [src_file|src_dir] [dst_file|dst_dir]
- 命令作用:为文件或目录改名或将文件由一个目录移入另一个目录
- 命令选项(option):
- -i :以交互方式进行操作,如果 mv 操作将导致对已存在的目标文件的覆盖,此时系统进行提示要求用户确认,回答 “ y ” 或 “ n ”,避免误覆盖文件
⭐ 为防止用户在不经意的情况下用 mv 命令破坏另一个文件,建议用户在使用 mv 命令移动文件时,最好使用参数-i
- -f :禁止交互操作,在 mv 操作要覆盖某已有的目标文件时将不给任何提示,参数 -i 不再起作用;如果所给目标文件(不是目录)已存在,此时该文件的内容将被新文件覆盖
03 rm
- 英文全称:remove
- 命令格式:rm [option] [files | dirs]
- 命令作用:删除文件
- rm 命令可以删除一个目录中的一个或多个文件,也可以将某个目录及其下的所有文件及子目录均删除
- 对于链接文件,rm 命令只是删除链接,原有文件均保持不变
- ⭐ 使用 rm 命令要格外小心,因为一旦文件被删除,恢复起来相当麻烦。为了避免发生这种情况,可以使用参数-i来确认是否删除文件。当用户输入“y”,文件将被删除,如果输入其他东西,文件将被保留
- 命令选项(option):
- -f :忽略不存在的文件,从不给出提示
- -i :进行交互式删除
- -r :指示 rm 将参数中列出的全部目录和子目录均递归地删除,如果没有使用该参数,则 rm 不会删除目录
八、文件链接命令
01 ln
- 英文全称:link
- 命令格式:ln [option] file link
- 命令作用:在文件之间创建链接
- 链接类型:
- 硬链接(Hard Link)
- 建立硬链接时,链接文件和被链接文纪念必须位于同一个文件系统中,并且不能建立指向目录的硬链接
- 符号链接(Symbolic Link),也称为软链接
- 默认情况下,ln 产生硬链接
- 命令选项:
- -s :建立符号链接
九、目录的创建与删除命令
01 mkdir
- 英文全称:make directory
- 命令格式:mkdir [option] [dirname]
- 命令作用:创建名为 dirname 的目录
mkdir 要求创建目录的用户在当前目录(即 dirname 的父目录)中具有写权限,并且 dirname 不能是当前目录中已有的目录或文件名称
- 命令选项:
- -m :对新建目录设置存取权限(也可用 chmod 命令设置)
- -p :可以一次建立多个目录,使用-p后 dirname 可以是一个路径名称,此时若路径中的某些目录尚未创建,系统将自动创建好这些尚未创建的目录
02 rmdir
- 英文全称:remove directory
- 命令格式:rmdir [option] [dirname]
- 命令作用:删除名为 dirname 的目录
- rmdir 可以从一个目录中删除一个或多个子目录项,需要注意的是
一个目录被删除之前必须是空的
- rmdir 在删除目录时要求必须具有对父目录的写权限
- rm -r dir命令可代替rmdir,但是有很大的危险性
- 命令选项:
- -p :递归删除目录 dirname,当子目录删除后其父目录为空时,也一同被删除,如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息
十、改变工作目录、显示路径及显示目录内容命令
01 cd
- 英文全称:change directory
- 命令格式:cd [directory]
- 命令作用:改变当前工作目录为 directory 所指定的目录
- 注意:
- 若没有指定 directory,则回到用户的主目录。
02 pwd
- 英文全称:print working directory
- 命令格式:pwd
- 命令作用:显示当前工作目录的路径
pwd 命令显示当前工作目录的绝对路径,不是相对路径
03 ls
-
英文全称:list
-
命令格式:ls [option] [dirname | filename]
-
命令作用:列出目录的内容
-
命令选项:
- -a :显示指定目录下所有的子目录与文件,包括隐藏文件
- -A :显示指定目录下所有的子目录与文件,包括隐藏文件,但不列出 “
.
” 和 “..
” - -d :如果参数是目录,只显示其名称而不显示其下的各个文件,常与-l选项一起使用,以得到目录的详细信息
- -l :以长格式来显示文件的详细信息
- 每行列出的信息依次是:
文件类型与权限
、链接数
、文件属主
、文件属组
、文件大小
、文件建立或最近修改的时间
、文件名字
- 对于符号链接文件,显示的文件名之后有 “— >”和引用的文件路径名
- 对于设备文件,其“文件大小”字段显示主、次设备号
- 目录中的总块数显示在长格式列表的开头,其中包含间接块
- ls -l 命令可用 ll 来代替,二者等价
- -n :以长格式来显示文件的详细信息,但在输出中文件属主和属组是用相应的UID号和GID号来表示,而不是实际的名称
- -R :递归式地显示指定目录的各个子目录中的文件
ls -l 命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文件类型,有以下几种:
-
:普通文件d
:目录l
:符号链接b
:块设备文件c
:字符设备文件后面的9个字符表示文件的访问权限,分为3组,每组3位:
- 第一组表示文件属主的权限
- 第二组表示同组用户的权限
- 第三组表示其他用户的权限
每一组的3个字符分别表示对文件的读、写和执行权限,具体如下所示:
字 符 | 文件权限 | 目录权限 |
---|---|---|
r | 可读取 | 可读取 |
w | 可写入 | 可写入 |
x | 可执行 | 可执行 |
s | 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组ID) | 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组ID) |
t | 设置标志位(留在内存,不被换出)。如果该文件是目录,在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果是可执行文件,在该文件执行后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件 | 设置标志位(留在内存,不被换出)。如果该文件是目录,在该目录中的文件只能被超级用户、目录拥有者或文件属主删除。如果是可执行文件,在该文件执行后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件 |
- | 没有设置权限 | 没有设置权限 |