【查看】
命令格式
查看文件与目录的命令是 ls
命令,在 Linux 文件属性 中,介绍了 ls
基本用法,下面详细地说明一下其具体用法
ls
命令会列出某目录下的文件与目录,且默认会以文件名进行升序排序,其格式为:ls [-选项] [目录名称]
其选项有:
- -a:显示全部文件(包含以 . 开头的隐藏文件)
- -A:显示全部文件,但不包括
..
和.
这两个目录 - -d:仅列出目录本身,不包含目录内的文件
- -l:列出长数据串,包含文件属性与权限
- -h:将文件容量以 KB、MB、GB 等形式列出
- -F:根据文件、目录等信息给予附加的数据结构(
*
代表可执行文件,/
代表目录,=
代表 socket 文件,|
代表FIFO文件) - -i:列出 inode 号
- -n:列出 UID 与 GID
- -R:连同子目录一起列出
- -f:直接列出结果,不进行排序
- -r:将结果按文件名降序排序
- -S:以文件容量大小排序
- -t:以时间排序
- —color=never:不依据文件特性予以颜色显示
- —color=auto:依据文件特性予以颜色显示
- —full-time:以完整时间模式显示(含年、月、日、时、分)
- —time={atime,ctime}:访问时间或改变权限属性时间(默认为内容更改时间)
说明:加粗的选项为常用选项
文件变动时间
在使用 --time={atime,ctime}
命令时,涉及到访问时间、权限属性变动时间、内容变动时间
- mtime:内容更改时间(modification time),当文件内容更改时,会更新该时间
- ctime:权限属性变动时间(status time),当文件权限或属性更改时,会更新该时间
- atime:访问时间(access time),当访问该文件时,会更新该时间
实例
1.使用 ls -al ~
命令,将主文件夹下的所有文件都列出来
如下图,以 .
开头的是隐藏文件,同时目录文件以深蓝色表示
2.使用 ls -alF --color=never ~
命令,将主文件夹下的所有文件列出,同时不显示颜色,但在文件名末显示文件代表的类型
如下图,虽然不显示颜色,但在文件名末,目录文件以 /
表示
3.使用 ls -l --full-time ~
完整呈现文件的修改时间
【复制】
命令格式
cp
命令是复制文件的命令,但除了用于复制一或多个文件外,还可以创建连接文件,对比两文件的新旧而予以更新
其命令格式有以下三种:
cp [选项] 源文件 目标文件
:对比两文件新旧而予以更新cp [选项] 源文件 目录
:将源文件复制到目录下cp [选项] 源文件1 源文件2 ... 源文件n 目录
:将多个源文件复制到目录下
其选项有:
- -u:用于对比两文件新旧,若源文件比目标文件新,则进行更新,常用于文件备份
- -i:互动模式,若目标文件已存在,在覆盖前会进行询问
- -f:强制,若目标文件已存在且无法开启,则删除后再尝试一次
- -p:连通文件属性一起复制过去,而非使用默认属性,常用于文件备份
- -r:递归持续复制,用于目录的复制
- -d:若源文件为连接文件的属性,则复制连接文件属性
- -s:进行软连接的连接文件创建
- -l:进行硬连接的连接文件创建
- -a:相当于
-pdr
说明:加粗的选项为常用选项
实例
1.执行两次复制命令,第一次将 /test/test1 目录下的 test.txt 文件复制到 /test/test2 目录下,第二次同样执行上述操作,但使用 -i
选项,询问是否进行覆盖
如下图,可以看到,当已经存在了一个文件后,要进行覆盖,加上 -i
选项后,会在覆盖前询问用户是否确定,通过输入 n
或 y
来进行二次确认
2.将 /test/test1 目录下的 test1.txt 文件复制到 /test/test2 目录下,同时将其改名为 test.txt
3.将 /test/test1 目录下的 test1.txt、test2.txt、test3.txt 文件批量复制到 /test/test2 目录下
4.对比 /test/test1 目录下的 test1.txt 和 /test/test2 目录下的 test1.txt,当前者比后者新时,进行复制
5.将 test/test1/ 目录下的所有内容复制到 test/test2 下
如下图,加了 -r
参数后,可以复制目录,但是文件和目录的权限可能会被改变
【移动】
命令格式
mv
命令用于移动文件和目录,并且可以在移动之后进行重命名,其命令格式有三种:
mv [选项] 源文件 新文件名
:用于文件重命名mv [选项] 源文件 目录
:将源文件移动到目录mv [选项] 源文件1 源文件2 ... 源文件n 目录
:将多个文件移动到目录
其选项有:
- -f:强制移动,如果目标文件已存在,不会询问,而是直接进行覆盖
- -i:互动模式,若文件已存在,会在移动或重命名前询问用户是否确定进行覆盖
- -u:若文件已存在,且源文件比之前的文件要新,那么就会进行覆盖
实例
1.将 /test 目录下的 test.txt 重命名为 test3.txt
2.将 /test 目录下的 test1.txt 移动到 /test/temp 目录下
2.将 /test 目录下的 test2.txt、test3.txt 全部移动到 /test/temp 目录下
【删除】
命令格式
rm
命令用于删除文件或目录,其命令格式为:rm [选项] 文件或目录
选项有:
- -f:强制删除,不会出现警告信息
- -i:互动模式,在删除前询问用户是否确定进行该操作
- -r:递归删除,用于目录的递归删除
需要说明的是,无论一个目录是否为空,都无法直接用 rm 目录
进行删除,需要加上 -r
参数,但由于该参数十分危险,容易造成误删,因此在实际应用中,常使用 rmdir
命令进行目录删除
实例
1.删除 /test/test1 目录及其下的所有文件
可以看出,在删除目录时,不加 -r
参数无法进行删除
2.删除 /test 目录下所有以 .txt 结尾的文件,并在删除过程中进行询问
如下图,在进行删除时,可以利用通配符和 -i
选项来辅助操作,既可以进行批量删除,还可以防止误删
【文件创建】
命令格式
使用 touch
命令可以创建文件或修改文件时间,其命令格式为:touch [选项] 文件
当有选项时,用于修改文件时间,当无选项时,用于创建文件,选项有:
- -a:仅修改 atime,后接要修改的 12 位日期时间串
- -m:仅修改 mtime,后接要修改的 12 位日期时间串
- -d:修改 mtime 和 atime,后接要修改的日期时间串
- -t:修改 mtime 和 atime,后接要修改的时间
实例
1.在 /test 目录下,创建一个名为 test.txt 的文件,并检查其日期
2.将 test.txt 的 mtime 和 atime 改为 2000/01/01 00:00
3.将 test.txt 的 mtime 和 atime 改为 5 天前
4.将 test.txt 的 atime 改为 2000/01/01 00:00