Linux -- 文件处理命令
命令格式与 ls 命令
格式
命令 [-选项] [参数]
- 个别命令可以不遵守此格式
- 比如有的命令
选项
是必选的
- 比如有的命令
- 当有多个选项的时候可以写在一起
ls -la /home
- 简化选项与完整选项
-a
等于--all
(简化选项用一个横杠,完整选项用两个横杠)-S
表示那招文件大小降序排列
- 个别命令可以不遵守此格式
命令的别名
- 但我们使用
which
命令查看命令对应文件的路径时,会将命令的别名一并显示 - 比如
which rm
- 我们发发现
rm
的别名是rm -i
,也就是说我们执行命令行直接使用rm
来删除文件时会 more 使用-i
选项,这个选项的作用是在删除文件的时候询问是否确认删除。在 Linux 系统中,命令其实本身是不带有询问的,其实是 Linux 别名对应的命令中添加了 -i 选项 - 因此,我们如果这样执行 rm 命令
/bin/rm xxx
表示不通过别名来调用 rm 命令,此时没有添加-i
参数,所以删除文件不会被询问
- 我们发发现
[root@host ~]# which rm
alias rm='rm -i'
/bin/rm
[root@host ~]#
ls
- 英文
list
- 语法
ls 选项[-alhdi] 路径/目录
-a
即 "–all" 显示隐藏文件。隐藏文件是为了告诉用户这是一个系统文件,不要轻易动他,在 Linux 中,隐藏文件以点 ".1 开头"-l
即--long
以常格式显示文件及文件的详细信息,包括七个部分- 操作权限
- 引用计数
- 所有者
- 创建文件的人默认就所有者,所有者可以改变,一个文件只有一个所有者
- 所属组
- 只能有一个,定义一组相同类型的用户(包括所有者),所属组中的成员可以通过指定权限对文件及逆行操作
- 文件大小,默认单位为字节
- 最后一次修改时间,没被修改过就是创建时间
- 文件名
-h
显示文件及详细信息人性化显示文件大小,通常和-l
搭配使用-d
表示只针对某一个目录,查看该目录的信息,而不是该目录下的文件,一般和-l
一起使用-i
即每一个文件或文件夹的唯一标识西悉尼,Linux 操作系统就会通过这个 id 找到任何一个文件的 id 节点
- 命令所在路径
/bin/ls
- 特点
- 所有用户都可使用
- 用途
- 显示指定目录下的文件
ls 中的操作权限
-rw-r--r--
- 第一个字符
-
表示这是一个文件,d
表示目录l
表示是一个软连接
- 后面的 9 个字符分成三个部分,分别是“所有者”,“所属组”,“其他”所拥有权限分别对应英文 "u", “g”, “o”
r
表示可读w
表示可写x
执行权限,是文件的最高权限,即使是文件的所有者,赋予权限的时候,文件的最高权限 "x" 也应该有所保留,只有当我们要执行该文件的时候,再开启该权限
- 第一个字符
目录处理命令
- 注意
- 当我们在路径相关命令中不使用绝对路径的时候,比如直接指定文件名,那么操作系统会认为操作的当前目录下的该文件
mv m.log /hom/ziawang
- 简单说,在 Linux 命令中,如果一个命令后的参数没有详细的指定其绝对路径,那么就默认是在当前目录下执行这个命令
- 当我们在路径相关命令中不使用绝对路径的时候,比如直接指定文件名,那么操作系统会认为操作的当前目录下的该文件
创建新的目录 mkdir
- 命令所在路径
/bin/mkdir
- 执行权限:所有用户
- 格式
mkdir [-p] 目录路径
-p
支持我们在创建一个空目录,并在这个新创建的目录下再创建一个新目录- 创建多个目录的时候,将多个目录之间用空格分开
mkdir -p /home/ziawang/python /home/ziawang/linux
- 注意
- 不是用 -p 选项时,如果要递归创建多级新文件夹是会报错的
- 目录一定要做好规划,目录名要有意义
切换目录 cd
- 命令所在路径:shell 内置命令
- 执行权限:所有用户
- 格式
cd [目录路径]
显示当前所在目录 pwd
print working directory
-
显示的是当前目录的绝对路径
-
所在路径
/bin/pwd
-
执行权限:所有用户
-
格式
pwd
- 注意
.
表示当前目录..
表示上级目录
复制文件或目录 cp
copy
- 所在路径:
/bin/cp
- 执行权限:所有用户
- 格式
cp [-rp] [原文件或目录] [目标目录]
-r
复制目录必须要添加此选项-p
保留文件属性- 属性即
ls -l
我们查看到的文件的各种属性,比如创建时间
- 属性即
- 注意
- 同时复制多个文件或路径时,将多个要复制的目标之间用空格隔开,目标路径只能有一个
复制的同时修改名称
- 当我们将一个文件 / 目录复制到一个当前不存在的目标文件或目录路径上时,复制的文件名就会被修改为该不存在的目标文件 / 路径的名称
剪切文件、改名 mv
move
-
路径:
/bin/mv
-
执行权限:所有用户
-
语法
mv 原文件或目录 目标目录
- 注意
- 可以剪切一个或多个目录,并且剪切不需要指定
-r
参数 - 和
cp
命令相同,如果移动的目标目录或文件当前不存在,那么剪切后的目录名就是该不存在的目标文件 / 路径的名称 - 在同一个目录(原路径与目标路径相同)下对一个文件或目录进行移动可以修改其名称
- 可以剪切一个或多个目录,并且剪切不需要指定
删除文件、目录 (危险)
- 路径
/bin/rm
- 执行权限:所有用户
- 格式
rm [-rf] [文件或目录]
-r
删除目录时指定-f
强制执行
rm -rf *
表示删除当前目录下的所有文件
注意
- 删除任何文件或目录之前做好备份,日常养成备份的习惯
- 一旦发现误删除后,不要对硬盘再做过多的读取和写入操作,这回影响回复数据的可能性
删除空目录
remove empty directories
- 所在路径:
/bin/rmdir
- 执行权限:所有用户
- 格式
rmdir 目录路径
- 注意
- 只能用来删除空的目录
文件处理命令
创建空文件 touch
- 所在路径:
/bin/touch
- 执行权限:所有用户
- 格式
touch [文件名/文件路径]
- 直接写文件名是在当前目录下创建文件
- 文件加上路径会在指定的路径下创建文件
文件后缀名
- 在 Linux 的文件命名中,除了根
/
符号不能用于命名之外,其他的字符均可以用来命名,但是我们命名的文件名一定要有实际意义- Windows 中文件名可以用空格,但是在 Linux 中,我们如果使用空格创建空文件,那么就会创建两个文件
touch ziawang haha.log
- Windows 中文件名可以用空格,但是在 Linux 中,我们如果使用空格创建空文件,那么就会创建两个文件
显示文件内容 cat
- 所在路径:
/bin/cat
- 执行权限:所有用户
- 格式
cat [-n] 文件名/文件名路径
-n
, number 在每一行左侧显示行号
反向显示文件内容 tac
- 格式
tac 文件名/文件路径
分页显示文件内容 more
-
苏总爱路径
/bin/more
-
执行权限:所有用户
-
格式
more [文件名]
- 操作
- 空格 space 或 f 实现翻页
- enter 实现换行,即一行一行往下翻
- q 或 Q 退出
分页显示文件内容 less 可以向上翻页
- 所在路径:
/usr/bin/less
- 格式
less 文件名/文件路径
- 操作
page-up
往上翻页- 上箭头可以向上翻一行
- 输入
/
+关键词
再enter
回车可以帮助我们检索出包含关键字的行,按n
(next) 键可以查看下一个 - 其他操作和
more
相同
显示文件前面几行 head
- 所在路径:
/usr/bin/head
- 执行权限:所有用户
- 格式
head [-n 数字] 文件名/文件路径
-n 数字
指定行数- 不指定 -n 时,默认显示前 10 行
显示文件后面几行 tail
- 所在路径:
/usr/bin/head
- 执行权限:所有用户
- 格式
tail [-n 数字] 文件名/文件路径
-n 数字
指定行数,不指定时也是默认 10 行-f
动态显示文件末尾内容- 如果文件发生了变化,那么 tail 显示的内容就会改变
- 应用
- 监控日志
链接命令 ln
生成链接文件 ln
- 所在路径:
/bin/ln
- 执行权限:所有用户
- 格式
ln -s 源文件 目标文件
-s
生成软连接- 目标文件就是将要生成的链接文件的位置及文件名
软连接与硬链接
软连接
-
软连接就类似于 Windows 的快捷方式,方便管理
-
ln -s /etc/issue /tep/issue
- 创建
/etc/issue
的软连接
- 创建
- 特点
- 使用
ls
对比- 第一个字符
l
表示软连接 - 创建的软连接的权限对所有用户开放,即
rwxrwxrwx
- 会有一个
->
指向源文件,当运行软连接时,归根结底它还是会需要找到源文件来执行 - 仅仅是一个链接,占用存储空间很小,约为 10 字节
- 第一个字符
- 使用
- 注意
- 对软连接的操作权限不代表对源文件的操作权限,因此,所有的软链接权限文件的最后操作权限都是取决于其源文件的
- 如果源文件没有了,那么就会提示错误 ,使用 ls -l 的时候,详细信息中包含箭头的指向路径就会变成红色,提醒我们无法找到源文件
- 可以跨分区创建硬链接
硬链接
ln /etc/issue /tep/issue
- 创建
/etc/issue
的硬链接
- 创建
- 特点
- 同样使用
ls -l
进行对比- 除了文件名不同之外,创建的硬链接的所有文件属性与源文件偶都是相同的,包括文件的大小
- 类似于拷贝。但是两个文件之间会同步更新,比如为文件 a 创建一个硬链接 a_hard 之后,我们修改 a_hard 中的内容,那么这个修改会同时作用到源文件,最终硬链接文件和源文件都会被修改
- 不能跨分区
- 比如
/
分区中的文件不能在/boot
中创建硬链接
- 比如
- 同样使用
- 与
cp -p
的区别cp -p
只是单纯的复制,不会由同步更新的效果
- 注意
- 如果源文件被删除了,硬链接文件中的内容一样可以被访问
- 硬链接可以当作一个实时的备份
- 硬链接不能跨分区
- 硬链接不能针对目录使用
判断链接类型
- 使用
ls -i
来查看源文件及其链接的i
节点- 源文件与硬链接文件的 i 节点但是相同的,即一个 i 节点映射到了两个文件,因此可实现同步更新的效果
- 软连接的 i 节点与源文件不同
两种链接的不同
- 分区
- 硬链接不能跨分区操作
- 软连接可以跨分区操作
- 目录
- 硬链接不能指向目录
- 软连接可以指向目录
- 文件属性
- 软连接文件
l
- 硬链接文件
-
- 软连接文件
- 权限
- 软连接文件的操作权限全部开放
- 硬链接的文件操作权限与原链接相同
- i 节点
- 硬链接与源文件的 i 节点相同
- 软连接与源文件的 i 节点不同